mirror of
https://github.com/e107inc/e107.git
synced 2025-01-17 20:58:30 +01:00
Private Messenger: Admin UI fixes.
This commit is contained in:
parent
89f6794c53
commit
c8d49ee79c
@ -6198,7 +6198,13 @@ class e_admin_form_ui extends e_form
|
||||
return $text;
|
||||
}
|
||||
|
||||
// TODO - do more
|
||||
|
||||
/**
|
||||
* Render Batch and Filter Dropdown options.
|
||||
* @param string $type
|
||||
* @param string $selected
|
||||
* @return string
|
||||
*/
|
||||
function renderBatchFilter($type='batch', $selected = '') // Common function used for both batches and filters.
|
||||
{
|
||||
$optdiz = array('batch' => LAN_BATCH_LABEL_PREFIX.' ', 'filter'=> LAN_FILTER_LABEL_PREFIX.' ');
|
||||
|
@ -19,6 +19,13 @@ include_lan(e_LANGUAGEDIR.e_LANGUAGE."/lan_user_select.php");
|
||||
|
||||
class user_select
|
||||
{
|
||||
|
||||
/**
|
||||
* @deprecated use e107::getForm()->userlist() instead.
|
||||
* @param $class
|
||||
* @param $form_name
|
||||
* @return string
|
||||
*/
|
||||
function user_list($class, $form_name)
|
||||
{
|
||||
global $sql, $tp;
|
||||
@ -42,14 +49,21 @@ class user_select
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
$text = "<select class='tbox form-control' id='user' name='user' onchange=\"uc_switch('class')\">";
|
||||
$text .= "<option value=''>".US_LAN_1."</option>";
|
||||
$sql ->select("user", "user_name", $where." ORDER BY user_name");
|
||||
|
||||
while ($row = $sql ->fetch())
|
||||
{
|
||||
$text .= "<option value='".$row['user_name']."'>".$row['user_name']."</option>";
|
||||
}
|
||||
|
||||
$text .= "</select>";
|
||||
|
||||
$text .= $where;
|
||||
return $text;
|
||||
}
|
||||
|
||||
@ -57,10 +71,11 @@ class user_select
|
||||
/**
|
||||
* Display selection dropdown of all user classes
|
||||
*
|
||||
* @deprecated
|
||||
* @param int $class - if its e_UC_MEMBER, all classes are shown. Otherwise only the class matching the value is shown.
|
||||
* @return string
|
||||
*/
|
||||
function class_list($class, $form_name)
|
||||
function class_list($class, $form_name) //TODO Find all instances of use and replace.
|
||||
{
|
||||
global $sql;
|
||||
$text = "<select class='tbox' id='class' name='class' onchange=\"uc_switch('user')\">";
|
||||
|
@ -392,6 +392,26 @@ class user_class
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $optlist - comma-separated list of classes/class types to be included in the list
|
||||
It allows selection of the classes to be shown in the dropdown. All or none can be included, separated by comma. Valid options are:
|
||||
public
|
||||
guest
|
||||
nobody
|
||||
member
|
||||
readonly
|
||||
admin
|
||||
main - main admin
|
||||
new - new users
|
||||
bots - search bot class
|
||||
classes - shows all classes
|
||||
matchclass - if 'classes' is set, this option will only show the classes that the user is a member of
|
||||
* @return array
|
||||
*/
|
||||
public function getClassList($optlist)
|
||||
{
|
||||
return $this->uc_required_class_list($optlist);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
@ -9,13 +9,20 @@ if (!getperms('P'))
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
e107::lan('pm',true);
|
||||
// e107::css('inline', "div.tab-content { margin-top:10px } ");
|
||||
|
||||
class pm_admin extends e_admin_dispatcher
|
||||
{
|
||||
|
||||
protected $modes = array(
|
||||
|
||||
'main' => array(
|
||||
'controller' => 'private_msg_ui',
|
||||
'path' => null,
|
||||
'ui' => 'private_msg_form_ui',
|
||||
'uipath' => null
|
||||
),
|
||||
'inbox' => array(
|
||||
'controller' => 'private_msg_ui',
|
||||
'path' => null,
|
||||
@ -41,6 +48,11 @@ class pm_admin extends e_admin_dispatcher
|
||||
|
||||
protected $adminMenu = array(
|
||||
|
||||
'main/prefs' => array('caption'=> LAN_PREFS, 'perm' => 'P'),
|
||||
'main/limits' => array('caption'=> ADLAN_PM_55, 'perm' => 'P'),
|
||||
'main/maint' => array('caption'=> ADLAN_PM_59, 'perm' => 'P'),
|
||||
|
||||
'main/null' => array('divider'=> true),
|
||||
'inbox/list' => array('caption'=> "Inbox", 'perm' => 'P'),
|
||||
'outbox/list' => array('caption'=> "Outbox", 'perm' => 'P'),
|
||||
'outbox/create' => array('caption'=> "Compose", 'perm' => 'P'),
|
||||
@ -48,10 +60,9 @@ class pm_admin extends e_admin_dispatcher
|
||||
// 'block/list' => array('caption'=> LAN_MANAGE, 'perm' => 'P'),
|
||||
// 'block/create' => array('caption'=> LAN_CREATE, 'perm' => 'P'),
|
||||
|
||||
/*
|
||||
'main/prefs' => array('caption'=> LAN_PREFS, 'perm' => 'P'),
|
||||
'main/custom' => array('caption'=> 'Custom Page', 'perm' => 'P')
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
);
|
||||
|
||||
@ -59,7 +70,7 @@ class pm_admin extends e_admin_dispatcher
|
||||
'main/edit' => 'main/list'
|
||||
);
|
||||
|
||||
protected $menuTitle = 'pm';
|
||||
protected $menuTitle = LAN_PLUGIN_PM_NAME;
|
||||
}
|
||||
|
||||
|
||||
@ -69,7 +80,7 @@ class pm_admin extends e_admin_dispatcher
|
||||
class private_msg_ui extends e_admin_ui
|
||||
{
|
||||
|
||||
protected $pluginTitle = 'Private Messaging';
|
||||
protected $pluginTitle = LAN_PLUGIN_PM_NAME;
|
||||
protected $pluginName = 'pm';
|
||||
protected $table = 'private_msg';
|
||||
protected $pid = 'pm_id';
|
||||
@ -96,6 +107,667 @@ class private_msg_ui extends e_admin_ui
|
||||
|
||||
protected $fieldpref = array('pm_id', 'pm_from', 'pm_to', 'pm_sent', 'pm_read', 'pm_subject', 'pm_text');
|
||||
|
||||
protected $preftabs = array(LAN_BASIC, LAN_ADVANCED);
|
||||
|
||||
protected $prefs = array(
|
||||
'title' => array('title'=> ADLAN_PM_16, 'tab'=>0, 'type' => 'text', 'data' => 'str', 'help'=>''),
|
||||
'pm_class' => array('title'=> ADLAN_PM_23, 'tab'=>0, 'type' => 'userclass', 'data' => 'int', 'help'=>'', 'writeParms'=>array('classlist'=>'nobody,member,admin,classes')),
|
||||
'sendall_class' => array('title'=> ADLAN_PM_29, 'tab'=>0, 'type' => 'userclass', 'data' => 'int', 'help'=>'', 'writeParms'=>array('classlist'=>'nobody,member,admin,classes')),
|
||||
'send_to_class' => array('title'=> "'Send to' user selection", 'tab'=>0, 'type' => 'method', 'data' => 'int', 'help'=>''),
|
||||
'opt_userclass' => array('title'=> ADLAN_PM_31, 'tab'=>0, 'type' => 'userclass', 'data' => 'int', 'help'=>'', 'writeParms'=>array('classlist'=>'nobody,member,admin,classes')),
|
||||
'animate' => array('title'=> ADLAN_PM_17, 'tab'=>0, 'type' => 'boolean', 'data' => 'str', 'help'=>''),
|
||||
'dropdown' => array('title'=> ADLAN_PM_18, 'tab'=>0, 'type' => 'boolean', 'data' => 'str', 'help'=>''),
|
||||
'read_timeout' => array('title'=> ADLAN_PM_19, 'tab'=>1, 'type' => 'number', 'data' => 'int', 'help'=>''),
|
||||
'unread_timeout'=> array('title'=> ADLAN_PM_20, 'tab'=>1, 'type' => 'number', 'data' => 'int', 'help'=>''),
|
||||
'popup' => array('title'=> ADLAN_PM_21, 'tab'=>0, 'type' => 'boolean', 'data' => 'int', 'help'=>''),
|
||||
'popup_delay' => array('title'=> ADLAN_PM_22, 'tab'=>0, 'type' => 'number', 'data' => 'int', 'help'=>'', 'writeParms'=>array('post'=>ADLAN_PM_44, 'tdClassRight'=>'form-inline')),
|
||||
'perpage' => array('title'=> ADLAN_PM_24, 'tab'=>0, 'type' => 'number', 'data' => 'int', 'help'=>''),
|
||||
'notify_class' => array('title'=> ADLAN_PM_25, 'tab'=>1, 'type' => 'userclass', 'data' => 'int', 'help'=>'', 'writeParms'=>array('classlist'=>'nobody,member,admin,classes')),
|
||||
'receipt_class' => array('title'=> ADLAN_PM_26, 'tab'=>1, 'type' => 'userclass', 'data' => 'int', 'help'=>'', 'writeParms'=>array('classlist'=>'nobody,member,admin,classes')),
|
||||
'attach_class' => array('title'=> ADLAN_PM_27, 'tab'=>1, 'type' => 'userclass', 'data' => 'int', 'help'=>'', 'writeParms'=>array('classlist'=>'nobody,member,admin,classes')),
|
||||
'attach_size' => array('title'=> ADLAN_PM_28, 'tab'=>1, 'type' => 'number', 'data' => 'int', 'help'=>'', 'writeParms'=>'tdClassRight=form-inline&post=Kb'),
|
||||
'multi_class' => array('title'=> ADLAN_PM_30, 'tab'=>0, 'type' => 'userclass', 'data' => 'int', 'help'=>'', 'writeParms'=>array('classlist'=>'nobody,member,admin,classes')),
|
||||
'pm_max_send' => array('title'=> ADLAN_PM_81, 'tab'=>1, 'type' => 'userclass', 'data' => 'int', 'help'=>'', 'writeParms'=>array('classlist'=>'nobody,member,admin,classes')),
|
||||
);
|
||||
|
||||
|
||||
|
||||
private function limitsPageAdd()
|
||||
{
|
||||
$sql = e107::getDb();
|
||||
$mes = e107::getMessage();
|
||||
|
||||
$id = intval($_POST['newlimit_class']);
|
||||
if($sql->select('generic','gen_id',"gen_type = 'pm_limit' AND gen_datestamp = ".$id))
|
||||
{
|
||||
$mes->addInfo(ADLAN_PM_5); // 'Limit for selected user class already exists'
|
||||
}
|
||||
else
|
||||
{
|
||||
$limArray = array( // Strange field names because we use the 'generic' table. But at least it documents the correlation
|
||||
'gen_type' => 'pm_limit',
|
||||
'gen_datestamp' => intval($_POST['newlimit_class']),
|
||||
'gen_user_id' => intval($_POST['new_inbox_count']),
|
||||
'gen_ip' => intval($_POST['new_outbox_count']),
|
||||
'gen_intdata' => intval($_POST['new_inbox_size']),
|
||||
'gen_chardata' => intval($_POST['new_outbox_size'])
|
||||
);
|
||||
|
||||
if($sql->insert('generic', $limArray))
|
||||
{
|
||||
e107::getLog()->logArrayAll('PM_ADM_05', $limArray);
|
||||
$mes->addSuccess(ADLAN_PM_6);
|
||||
}
|
||||
else
|
||||
{
|
||||
e107::getLog()->log_event('PM_ADM_08', '');
|
||||
$mes->addError(ADLAN_PM_7);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
private function limitsPageUpdate()
|
||||
{
|
||||
$sql = e107::getDb();
|
||||
$mes = e107::getMessage();
|
||||
$pm_prefs = e107::pref('pm');
|
||||
|
||||
$limitVal = intval($_POST['pm_limits']);
|
||||
|
||||
|
||||
if($pm_prefs['pm_limits'] != $limitVal)
|
||||
{
|
||||
$pm_prefs['pm_limits'] = $limitVal;
|
||||
|
||||
$mes->addSuccess(ADLAN_PM_8);
|
||||
}
|
||||
foreach(array_keys($_POST['inbox_count']) as $id)
|
||||
{
|
||||
$id = intval($id);
|
||||
if($_POST['inbox_count'][$id] == '' && $_POST['outbox_count'][$id] == '' && $_POST['inbox_size'][$id] == '' && $_POST['outbox_size'][$id] == '')
|
||||
{
|
||||
//All entries empty - Remove record
|
||||
if($sql->delete('generic','gen_id = '.$id))
|
||||
{
|
||||
e107::getLog()->log_event('PM_ADM_07', 'ID: '.$id);
|
||||
$mes->addSuccess($id.ADLAN_PM_9);
|
||||
}
|
||||
else
|
||||
{
|
||||
e107::getLog()->log_event('PM_ADM_10', '');
|
||||
$mes->addError($id.ADLAN_PM_10);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$limArray = array( // Strange field names because we use the 'generic' table. But at least it documents the correlation
|
||||
'gen_user_id' => intval($_POST['inbox_count'][$id]),
|
||||
'gen_ip' => intval($_POST['outbox_count'][$id]),
|
||||
'gen_intdata' => intval($_POST['inbox_size'][$id]),
|
||||
'gen_chardata' => intval($_POST['outbox_size'][$id])
|
||||
);
|
||||
|
||||
|
||||
if ($sql->update('generic',array('data' => $limArray, 'WHERE' => 'gen_id = '.$id)))
|
||||
{
|
||||
e107::getLog()->logArrayAll('PM_ADM_06', $limArray);
|
||||
$mes->addSuccess($id.ADLAN_PM_11);
|
||||
}
|
||||
else
|
||||
{
|
||||
e107::getLog()->log_event('PM_ADM_09', '');
|
||||
$mes->addError($id.ADLAN_PM_7);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function limitsPage()
|
||||
{
|
||||
|
||||
if(isset($_POST['addlimit']))
|
||||
{
|
||||
$this->limitsPageAdd();
|
||||
}
|
||||
|
||||
if(isset($_POST['updatelimits']))
|
||||
{
|
||||
$this->limitsPageUpdate();
|
||||
}
|
||||
|
||||
// ---------------------
|
||||
|
||||
|
||||
$sql = e107::getDb();
|
||||
$frm = e107::getForm();
|
||||
$pm_prefs = e107::pref('pm');
|
||||
|
||||
if (!isset($pm_prefs['pm_limits'])) { $pm_prefs['pm_limits'] = 0; }
|
||||
|
||||
if($sql->select('generic', "gen_id as limit_id, gen_datestamp as limit_classnum, gen_user_id as inbox_count, gen_ip as outbox_count, gen_intdata as inbox_size, gen_chardata as outbox_size", "gen_type = 'pm_limit'"))
|
||||
{
|
||||
while($row = $sql->fetch())
|
||||
{
|
||||
$limitList[$row['limit_classnum']] = $row;
|
||||
}
|
||||
}
|
||||
|
||||
$txt = "
|
||||
<fieldset id='plugin-pm-showlimits'>
|
||||
<form method='post' action='".e_SELF.'?'.e_QUERY."'>
|
||||
<table class='table adminform'>
|
||||
<colgroup>
|
||||
<col class='col-label' />
|
||||
<col class='col-control' />
|
||||
<col class='col-control' />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>".ADLAN_PM_36."</th>
|
||||
<th>".ADLAN_PM_37."</th>
|
||||
<th>".ADLAN_PM_38."</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan='3' style='text-align:left'>".ADLAN_PM_45."
|
||||
<select name='pm_limits' class='tbox'>
|
||||
";
|
||||
|
||||
|
||||
$sel = ($pm_prefs['pm_limits'] == 0 ? "selected='selected'" : "");
|
||||
$txt .= "<option value='0' {$sel}>".ADLAN_PM_33."</option>\n";
|
||||
|
||||
$sel = ($pm_prefs['pm_limits'] == 1 ? "selected='selected'" : "");
|
||||
$txt .= "<option value='1' {$sel}>".ADLAN_PM_34."</option>\n";
|
||||
|
||||
$sel = ($pm_prefs['pm_limits'] == 2 ? "selected='selected'" : "");
|
||||
$txt .= "<option value='2' {$sel}>".ADLAN_PM_35."</option>\n";
|
||||
|
||||
$txt .= "</select>\n";
|
||||
|
||||
$txt .= ' '.ADLAN_PM_77."
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
";
|
||||
|
||||
if (isset($limitList))
|
||||
{
|
||||
foreach($limitList as $row)
|
||||
{
|
||||
$txt .= "
|
||||
<tr>
|
||||
<td>".e107::getUserClass()->uc_get_classname($row['limit_classnum'])."</td>
|
||||
<td>
|
||||
<div class='row'>
|
||||
<div class='col-md-2'>".ADLAN_PM_39.":</div><div class='col-md-10'><input type='text' class='tbox' size='5' name='inbox_count[{$row['limit_id']}]' value='{$row['inbox_count']}' /></div>
|
||||
<div class='col-md-2'>".ADLAN_PM_40.":</div><div class='col-md-10'><input type='text' class='tbox' size='5' name='outbox_count[{$row['limit_id']}]' value='{$row['outbox_count']}' /></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class='row'>
|
||||
<div class='col-md-2'>".ADLAN_PM_39.":</div><div class='col-md-10'><input type='text' class='tbox' size='5' name='inbox_size[{$row['limit_id']}]' value='{$row['inbox_size']}' /></div>
|
||||
<div class='col-md-2'>".ADLAN_PM_40.":</div><div class='col-md-10'><input type='text' class='tbox' size='5' name='outbox_size[{$row['limit_id']}]' value='{$row['outbox_size']}' /></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$txt .= "
|
||||
<tr>
|
||||
<td colspan='3' style='text-align: center'>".ADLAN_PM_41."</td>
|
||||
</tr>
|
||||
";
|
||||
}
|
||||
|
||||
$txt .= '
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="buttons-bar center">
|
||||
'.$frm->admin_button('updatelimits','no-value','update', LAN_UPDATE).'
|
||||
</div>
|
||||
</form>
|
||||
</fieldset>';
|
||||
|
||||
$tabs = array();
|
||||
$tabs[] = array('caption'=>ADLAN_PM_14, 'text'=>$txt);
|
||||
$tabs[] = array('caption'=>ADLAN_PM_15, 'text'=>$this->addLimitPage());
|
||||
|
||||
return e107::getForm()->tabs($tabs);
|
||||
}
|
||||
|
||||
|
||||
|
||||
function addLimitPage()
|
||||
{
|
||||
$sql = e107::getDb();
|
||||
$frm = e107::getForm();
|
||||
$pm_prefs = e107::pref('pm');
|
||||
|
||||
if($sql->select('generic', "gen_id as limit_id, gen_datestamp as limit_classnum, gen_user_id as inbox_count, gen_ip as outbox_count, gen_intdata as inbox_size, gen_chardata as outbox_size", "gen_type = 'pm_limit'"))
|
||||
{
|
||||
while($row = $sql->fetch())
|
||||
{
|
||||
$limitList[$row['limit_classnum']] = $row;
|
||||
}
|
||||
}
|
||||
|
||||
$txt = "
|
||||
<fieldset id='plugin-pm-addlimit'>
|
||||
<form method='post' action='".e_SELF.'?'.e_QUERY."'>
|
||||
<table class='table adminform'>
|
||||
<colgroup>
|
||||
<col class='col-label' />
|
||||
<col class='col-control' />
|
||||
<col class='col-control' />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>".ADLAN_PM_36."</th>
|
||||
<th>".ADLAN_PM_37."</th>
|
||||
<th>".ADLAN_PM_38."</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
";
|
||||
|
||||
$txt .= "
|
||||
<tr>
|
||||
<td>".e107::getUserClass()->uc_dropdown('newlimit_class', 0, 'guest,member,admin,classes')."</td>
|
||||
<td>
|
||||
<div class='row'>
|
||||
<div class='col-md-2'>".ADLAN_PM_39.":</div><div class='col-md-10'><input type='text' class='tbox' size='5' name='new_inbox_count' value='' /></div>
|
||||
<div class='col-md-2'>".ADLAN_PM_40.":</div><div class='col-md-10'><input type='text' class='tbox' size='5' name='new_outbox_count' value='' /></div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class='row'>
|
||||
<div class='col-md-2'>".ADLAN_PM_39.":</div><div class='col-md-10'><input type='text' class='tbox' size='5' name='new_inbox_size' value='' /></div>
|
||||
<div class='col-md-2'>".ADLAN_PM_40.":</div><div class='col-md-10'><input type='text' class='tbox' size='5' name='new_outbox_size' value='' /></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
";
|
||||
|
||||
$txt .= '
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="buttons-bar center">
|
||||
'.$frm->admin_button('addlimit','no-value','update', LAN_ADD).'
|
||||
</div>
|
||||
</form>
|
||||
</fieldset>';
|
||||
return $txt;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public function mainPageProcess()
|
||||
{
|
||||
$pm_prefs = e107::pref('pm');
|
||||
$mes = e107::getMessage();
|
||||
|
||||
$maintOpts = array();
|
||||
|
||||
if (vartrue($_POST['pm_maint_sent']))
|
||||
{
|
||||
$maintOpts['sent'] = 1;
|
||||
}
|
||||
|
||||
if (vartrue($_POST['pm_maint_rec']))
|
||||
{
|
||||
$maintOpts['rec'] = 1;
|
||||
}
|
||||
|
||||
if (vartrue($_POST['pm_maint_blocked']))
|
||||
{
|
||||
$maintOpts['blocked'] = 1;
|
||||
}
|
||||
|
||||
if (vartrue($_POST['pm_maint_expired']))
|
||||
{
|
||||
$maintOpts['expired'] = 1;
|
||||
}
|
||||
|
||||
if (vartrue($_POST['pm_maint_attach']))
|
||||
{
|
||||
$maintOpts['attach'] = 1;
|
||||
}
|
||||
|
||||
$result = $this->doMaint($maintOpts, $pm_prefs);
|
||||
|
||||
if (is_array($result))
|
||||
{
|
||||
foreach ($result as $k => $ma)
|
||||
{
|
||||
foreach ($ma as $m)
|
||||
{
|
||||
$mes->add($m, $k);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function maintPage()
|
||||
{
|
||||
if(isset($_POST['pm_maint_execute']))
|
||||
{
|
||||
$this->mainPageProcess();
|
||||
}
|
||||
|
||||
|
||||
|
||||
$frm = e107::getForm();
|
||||
$pmPrefs = e107::pref('pm');
|
||||
|
||||
$txt = "
|
||||
<fieldset id='plugin-pm-maint'>
|
||||
<legend>".ADLAN_PM_62."</legend>
|
||||
<form method='post' action='".e_SELF."?maint'>
|
||||
<table class='table adminform'>
|
||||
<colgroup>
|
||||
<col class='col-label' />
|
||||
<col class='col-control' />
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>".ADLAN_PM_63."</td>
|
||||
<td>".$frm->radio_switch('pm_maint_sent', '', LAN_YES, LAN_NO)."</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>".ADLAN_PM_64."</td>
|
||||
<td>".$frm->radio_switch('pm_maint_rec', '', LAN_YES, LAN_NO)."</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>".ADLAN_PM_65."</td>
|
||||
<td>".$frm->radio_switch('pm_maint_blocked', '', LAN_YES, LAN_NO)."</td>
|
||||
</tr>
|
||||
";
|
||||
|
||||
if ($pmPrefs['read_timeout'] || $pmPrefs['unread_timeout'])
|
||||
{
|
||||
$txt .= "
|
||||
<tr>
|
||||
<td>".ADLAN_PM_71."</td>
|
||||
<td>".$frm->radio_switch('pm_maint_expired', '', LAN_YES, LAN_NO)."</td>
|
||||
</tr>";
|
||||
}
|
||||
|
||||
$txt .= "
|
||||
<tr>
|
||||
<td>".ADLAN_PM_78."</td>
|
||||
<td>".$frm->radio_switch('pm_maint_attach', '', LAN_YES, LAN_NO)."</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class='buttons-bar center'>
|
||||
".$frm->admin_button('pm_maint_execute','no-value','delete', LAN_GO)."
|
||||
</div>
|
||||
</form>
|
||||
</fieldset>
|
||||
";
|
||||
|
||||
|
||||
return $txt;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Do PM DB maintenance
|
||||
* @param array $opts of tasks key = sent|rec|blocked|expired (one or more present). ATM value not used
|
||||
* @return array where key is message type (E_MESSAGE_SUCCESS|E_MESSAGE_ERROR|E_MESSAGE_INFO etc), data is array of messages of that type (key = timestamp)
|
||||
*/
|
||||
private function doMaint($opts, $pmPrefs)
|
||||
{
|
||||
if (!count($opts))
|
||||
{
|
||||
return array(E_MESSAGE_ERROR => array(ADLAN_PM_66));
|
||||
}
|
||||
|
||||
|
||||
|
||||
$results = array(E_MESSAGE_INFO => array(ADLAN_PM_67)); // 'Maintenance started' - primarily for a log entry to mark start time
|
||||
$logResults = array();
|
||||
$e107 = e107::getInstance();
|
||||
e107::getLog()->log_event('PM_ADM_04', implode(', ',array_keys($opts)));
|
||||
$pmHandler = new private_message($pmPrefs);
|
||||
$db2 =e107::getDb('sql2'); // Will usually need a second DB object to avoid over load
|
||||
$start = 0; // Use to ensure we get different log times
|
||||
|
||||
|
||||
if (isset($opts['sent'])) // Want pm_from = deleted user and pm_read_del = 1
|
||||
{
|
||||
$cnt = 0;
|
||||
if ($res = $db2->gen("SELECT pm.pm_id FROM `#private_msg` AS pm LEFT JOIN `#user` AS u ON pm.`pm_from` = `#user`.`user_id`
|
||||
WHERE (pm.`pm_read_del = 1) AND `#user`.`user_id` IS NULL"))
|
||||
{
|
||||
while ($row = $db2->fetch())
|
||||
{
|
||||
if ($pmHandler->del($row['pm_id']) !== FALSE)
|
||||
{
|
||||
$cnt++;
|
||||
}
|
||||
}
|
||||
}
|
||||
$start = time();
|
||||
$results[E_MESSAGE_SUCCESS][$start] = str_replace('--COUNT--', $cnt, ADLAN_PM_74);
|
||||
}
|
||||
if (isset($opts['rec'])) // Want pm_to = deleted user and pm_sent_del = 1
|
||||
{
|
||||
$cnt = 0;
|
||||
if ($res = $db2->gen("SELECT pm.pm_id FROM `#private_msg` AS pm LEFT JOIN `#user` AS u ON pm.`pm_to` = `#user`.`user_id`
|
||||
WHERE (pm.`pm_sent_del = 1) AND `#user`.`user_id` IS NULL"))
|
||||
{
|
||||
while ($row = $db2->fetch())
|
||||
{
|
||||
if ($pmHandler->del($row['pm_id']) !== FALSE)
|
||||
{
|
||||
$cnt++;
|
||||
}
|
||||
}
|
||||
}
|
||||
$start = max($start + 1, time());
|
||||
$results[E_MESSAGE_SUCCESS][$start] = str_replace('--COUNT--', $cnt, ADLAN_PM_75);
|
||||
}
|
||||
|
||||
|
||||
if (isset($opts['blocked']))
|
||||
{
|
||||
if ($res = $db2->gen("DELETE `#private_msg_block` FROM `#private_msg_block` LEFT JOIN `#user` ON `#private_msg_block`.`pm_block_from` = `#user`.`user_id`
|
||||
WHERE `#user`.`user_id` IS NULL"))
|
||||
{
|
||||
$start = max($start + 1, time());
|
||||
$results[E_MESSAGE_ERROR][$start] = str_replace(array('--NUM--', '--TEXT--'), array($this->sql->getLastErrorNum, $this->sql->getLastErrorText), ADLAN_PM_70);
|
||||
}
|
||||
else
|
||||
{
|
||||
$start = max($start + 1, time());
|
||||
$results[E_MESSAGE_SUCCESS][$start] = str_replace('--COUNT--', $res, ADLAN_PM_69);
|
||||
}
|
||||
if ($res = $db2->gen("DELETE `#private_msg_block` FROM `#private_msg_block` LEFT JOIN `#user` ON `#private_msg_block`.`pm_block_to` = `#user`.`user_id`
|
||||
WHERE `#user`.`user_id` IS NULL"))
|
||||
{
|
||||
$start = max($start + 1, time());
|
||||
$results[E_MESSAGE_ERROR][$start] = str_replace(array('--NUM--', '--TEXT--'), array($this->sql->getLastErrorNum, $this->sql->getLastErrorText), ADLAN_PM_70);
|
||||
}
|
||||
else
|
||||
{
|
||||
$start = max($start + 1, time());
|
||||
$results[E_MESSAGE_SUCCESS][$start] = str_replace('--COUNT--', $res, ADLAN_PM_68);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (isset($opts['expired']))
|
||||
{
|
||||
$del_qry = array();
|
||||
$read_timeout = intval($pmPrefs['read_timeout']);
|
||||
$unread_timeout = intval($pmPrefs['unread_timeout']);
|
||||
if($read_timeout > 0)
|
||||
{
|
||||
$timeout = time()-($read_timeout * 86400);
|
||||
$del_qry[] = "(pm_sent < {$timeout} AND pm_read > 0)";
|
||||
}
|
||||
if($unread_timeout > 0)
|
||||
{
|
||||
$timeout = time()-($unread_timeout * 86400);
|
||||
$del_qry[] = "(pm_sent < {$timeout} AND pm_read = 0)";
|
||||
}
|
||||
if(count($del_qry) > 0)
|
||||
{
|
||||
$qry = implode(' OR ', $del_qry);
|
||||
$cnt = 0;
|
||||
if($db2->db_Select('private_msg', 'pm_id', $qry))
|
||||
{
|
||||
while ($row = $db2->db_Fetch())
|
||||
{
|
||||
if ($pmHandler->del($row['pm_id']) !== FALSE)
|
||||
{
|
||||
$cnt++;
|
||||
}
|
||||
}
|
||||
}
|
||||
$start = max($start + 1, time());
|
||||
$results[E_MESSAGE_SUCCESS][$start] = str_replace('--COUNT--', $cnt, ADLAN_PM_73);
|
||||
}
|
||||
else
|
||||
{
|
||||
$start = max($start + 1, time());
|
||||
$results[E_MESSAGE_ERROR][$start] = ADLAN_PM_72;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (isset($opts['attach']))
|
||||
{ // Check for orphaned and missing attachments
|
||||
|
||||
$fl = e107::getFile();
|
||||
$missing = array();
|
||||
$orphans = array();
|
||||
$fileArray = $fl->get_files(e_PLUGIN.'pm/attachments'); //FIXME wrong path.
|
||||
if ($db2->select('private_msg', 'pm_id, pm_attachments', "pm_attachments != ''"))
|
||||
{
|
||||
while ($row = $db2->fetch())
|
||||
{
|
||||
$attachList = explode(chr(0), $row['pm_attachments']);
|
||||
foreach ($attachList as $a)
|
||||
{
|
||||
$found = FALSE;
|
||||
foreach ($fileArray as $k => $fd)
|
||||
{
|
||||
if ($fd['fname'] == $a)
|
||||
{
|
||||
$found = TRUE;
|
||||
unset($fileArray[$k]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!$found)
|
||||
{
|
||||
$missing[] = $row['pm_id'].':'.$a;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Any files left in $fileArray now are unused
|
||||
if (count($fileArray))
|
||||
{
|
||||
foreach ($fileArray as $k => $fd)
|
||||
{
|
||||
unlink($fd['path'].$fd['fname']);
|
||||
$orphans[] = $fd['fname'];
|
||||
}
|
||||
}
|
||||
$attachMessage = str_replace(array('--ORPHANS--', '--MISSING--'), array(count($orphans), count($missing)), ADLAN_PM_79);
|
||||
if (TRUE)
|
||||
{ // Mostly for testing - probably disable this
|
||||
if (count($orphans))
|
||||
{
|
||||
$attachMessage .= '[!br!]Orphans:[!br!]'.implode('[!br!]', $orphans);
|
||||
}
|
||||
if (count($missing))
|
||||
{
|
||||
$attachMessage .= '[!br!]Missing:[!br!]'.implode('[!br!]', $missing);
|
||||
}
|
||||
}
|
||||
$start = max($start + 1, time());
|
||||
$results[E_MESSAGE_SUCCESS][$start] = $attachMessage;
|
||||
}
|
||||
|
||||
|
||||
e107::getLog()->logArrayAll('PM_ADM_03', $this->makeLogEntry($results));
|
||||
|
||||
foreach ($results as $k => $r)
|
||||
{
|
||||
foreach ($r as $sk => $s)
|
||||
{
|
||||
$results[$k][$sk] = str_replace('[!br!]','<br />',$s);
|
||||
}
|
||||
}
|
||||
return $results;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Turn the array produced by doMaint for message display into an array of log strings.
|
||||
* Data is sorted into time stamp order
|
||||
*
|
||||
* @param array $results - array of arrays as returned from doMaint()
|
||||
* @param array|boolean $extra - optional additional information which is sorted into the main result according to keys - so use low numbers
|
||||
* to make the entry appear at the beginning, and text strings to add to the end.
|
||||
*/
|
||||
function makeLogEntry($results, $extra = FALSE)
|
||||
{
|
||||
$logPrefixes = array(E_MESSAGE_SUCCESS => 'Pass - ', E_MESSAGE_ERROR => 'Fail - ', E_MESSAGE_INFO => 'Info - ', E_MESSAGE_DEBUG => 'Debug - ');
|
||||
|
||||
$res = array();
|
||||
|
||||
foreach ($results as $k => $ma)
|
||||
{
|
||||
foreach ($ma as $ts => $m)
|
||||
{
|
||||
$res[$ts] = $logPrefixes[$k].$m;
|
||||
}
|
||||
}
|
||||
|
||||
if (is_array($extra))
|
||||
{
|
||||
$res = array_merge($res, $extra);
|
||||
}
|
||||
|
||||
ksort($res); // Sort in ascending order of timestamp
|
||||
|
||||
return $res;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public function init()
|
||||
{
|
||||
@ -138,13 +810,6 @@ class private_msg_ui extends e_admin_ui
|
||||
}
|
||||
|
||||
|
||||
if(vartrue($_GET['iframe']))
|
||||
{
|
||||
define('e_IFRAME', true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -191,6 +856,18 @@ class private_msg_ui extends e_admin_ui
|
||||
class private_msg_form_ui extends e_admin_form_ui
|
||||
{
|
||||
|
||||
function send_to_class($parms, $value, $id)
|
||||
{
|
||||
$list = e107::getUserClass()->getClassList('main,admin,member,classes');
|
||||
$list['matchclass'] = "(Any user with the same class)"; //TODO LAN
|
||||
|
||||
return $this->select('pm_option-send_to_class', $list, vartrue($value, e_UC_MEMBER));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function options($parms, $value, $id, $attributes)
|
||||
{
|
||||
|
||||
|
0
e107_plugins/pm/languages/English_admin_pm.php → e107_plugins/pm/languages/English_admin.php
Executable file → Normal file
0
e107_plugins/pm/languages/English_admin_pm.php → e107_plugins/pm/languages/English_admin.php
Executable file → Normal file
@ -4,7 +4,7 @@
|
||||
<description lan="LAN_PLUGIN_PM_DESCRIPTION">This plugin is a fully featured Private Messaging system.</description>
|
||||
<category>users</category>
|
||||
<adminLinks>
|
||||
<link url='pm_conf.php' description='ADLAN_PM_2' icon='images/pvt_message_32.png' iconSmall='images/pvt_message_16.png' primary='true' />
|
||||
<link url='admin_config.php' description='ADLAN_PM_2' icon='images/pvt_message_32.png' iconSmall='images/pvt_message_16.png' primary='true' />
|
||||
</adminLinks>
|
||||
<pluginPrefs>
|
||||
<pref name="title">PMLAN_PM</pref>
|
||||
|
@ -287,6 +287,30 @@ function show_options($pm_prefs)
|
||||
<td>".ADLAN_PM_16."</td>
|
||||
<td>".$frm->text('pm_option-title', $pm_prefs['title'], '50')."</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>".ADLAN_PM_23."</td>
|
||||
<td>".e107::getUserClass()->uc_dropdown('pm_option-pm_class', $pm_prefs['pm_class'], 'member,admin,classes')."</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>".ADLAN_PM_29."</td>
|
||||
<td>".e107::getUserClass()->uc_dropdown('pm_option-sendall_class', $pm_prefs['sendall_class'], 'nobody,member,admin,classes')."</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>User may send PMs to</td>
|
||||
<td>"; //TODO LAN
|
||||
|
||||
$list = e107::getUserClass()->getClassList('nobody,main,admin,member,classes');
|
||||
$list['matchclass'] = "(Any user with the same class)"; //TODO LAN
|
||||
|
||||
//$txt .= print_a($list,true);
|
||||
$txt .= $frm->select('pm_option-send_to_class', $list, varset($pm_prefs['send_to_class'], e_UC_MEMBER));
|
||||
|
||||
//$text .= ".e107::getUserClass()->uc_dropdown('pm_option-sendall_class', $pm_prefs['sendall_class'], 'nobody,member,admin,classes')."</td>
|
||||
|
||||
$txt .= "</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td>".ADLAN_PM_17."</td>
|
||||
<td>".$frm->radio_switch('pm_option-animate', $pm_prefs['animate'], LAN_YES, LAN_NO)."</td>
|
||||
@ -309,12 +333,9 @@ function show_options($pm_prefs)
|
||||
</tr>
|
||||
<tr>
|
||||
<td>".ADLAN_PM_22."</td>
|
||||
<td>".$frm->text('pm_option-popup_delay', $pm_prefs['popup_delay'], '5', array('class' => 'tbox input-text'))." ".ADLAN_PM_44."</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>".ADLAN_PM_23."</td>
|
||||
<td>".e107::getUserClass()->uc_dropdown('pm_option-pm_class', $pm_prefs['pm_class'], 'member,admin,classes')."</td>
|
||||
<td class='form-inline'>".$frm->text('pm_option-popup_delay', $pm_prefs['popup_delay'], '5', array('class' => 'tbox input-text'))." ".ADLAN_PM_44."</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>".ADLAN_PM_24."</td>
|
||||
<td>".$frm->text('pm_option-perpage', $pm_prefs['perpage'], '5', array('class' => 'tbox input-text'))."</td>
|
||||
@ -333,12 +354,9 @@ function show_options($pm_prefs)
|
||||
</tr>
|
||||
<tr>
|
||||
<td>".ADLAN_PM_28."</td>
|
||||
<td>".$frm->text('pm_option-attach_size', $pm_prefs['attach_size'], '8', array('class' => 'tbox input-text'))." kB</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>".ADLAN_PM_29."</td>
|
||||
<td>".e107::getUserClass()->uc_dropdown('pm_option-sendall_class', $pm_prefs['sendall_class'], 'nobody,member,admin,classes')."</td>
|
||||
<td class='form-inline'>".$frm->text('pm_option-attach_size', $pm_prefs['attach_size'], '8', array('class' => 'tbox input-text'))." kB</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>".ADLAN_PM_30."</td>
|
||||
<td>".e107::getUserClass()->uc_dropdown('pm_option-multi_class', $pm_prefs['multi_class'], 'nobody,member,admin,classes')."</td>
|
||||
@ -349,7 +367,7 @@ function show_options($pm_prefs)
|
||||
</tr>
|
||||
<tr>
|
||||
<td>".ADLAN_PM_81."</td>
|
||||
<td>".$frm->text('pm_option-pm_max_send', $pm_prefs['pm_max_send'], '5', array('class' => 'tbox input-text'))."<span class='field-help'>".ADLAN_PM_82."</span></td>
|
||||
<td class='form-inline'>".$frm->text('pm_option-v', $pm_prefs['pm_max_send'], '5', array('class' => 'tbox input-text'))."<span class='field-help'>".ADLAN_PM_82."</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
Loading…
x
Reference in New Issue
Block a user