inital commit
This commit is contained in:
537
webroot/forum/admin/modules/user/admin_permissions.php
Normal file
537
webroot/forum/admin/modules/user/admin_permissions.php
Normal file
@@ -0,0 +1,537 @@
|
||||
<?php
|
||||
/**
|
||||
* MyBB 1.8
|
||||
* Copyright 2014 MyBB Group, All Rights Reserved
|
||||
*
|
||||
* Website: http://www.mybb.com
|
||||
* License: http://www.mybb.com/about/license
|
||||
*
|
||||
*/
|
||||
|
||||
// Disallow direct access to this file for security reasons
|
||||
if(!defined("IN_MYBB"))
|
||||
{
|
||||
die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
|
||||
}
|
||||
|
||||
$page->add_breadcrumb_item($lang->admin_permissions, "index.php?module=user-admin_permissions");
|
||||
|
||||
if(($mybb->input['action'] == "edit" && $mybb->input['uid'] == 0) || $mybb->input['action'] == "group" || !$mybb->input['action'])
|
||||
{
|
||||
$sub_tabs['user_permissions'] = array(
|
||||
'title' => $lang->user_permissions,
|
||||
'link' => "index.php?module=user-admin_permissions",
|
||||
'description' => $lang->user_permissions_desc
|
||||
);
|
||||
|
||||
$sub_tabs['group_permissions'] = array(
|
||||
'title' => $lang->group_permissions,
|
||||
'link' => "index.php?module=user-admin_permissions&action=group",
|
||||
'description' => $lang->group_permissions_desc
|
||||
);
|
||||
|
||||
$sub_tabs['default_permissions'] = array(
|
||||
'title' => $lang->default_permissions,
|
||||
'link' => "index.php?module=user-admin_permissions&action=edit&uid=0",
|
||||
'description' => $lang->default_permissions_desc
|
||||
);
|
||||
}
|
||||
|
||||
$uid = $mybb->get_input('uid', MyBB::INPUT_INT);
|
||||
|
||||
$plugins->run_hooks("admin_user_admin_permissions_begin");
|
||||
|
||||
if($mybb->input['action'] == "delete")
|
||||
{
|
||||
if(is_super_admin($uid))
|
||||
{
|
||||
flash_message($lang->error_super_admin, 'error');
|
||||
admin_redirect("index.php?module=user-admin_permissions");
|
||||
}
|
||||
|
||||
if($mybb->input['no'])
|
||||
{
|
||||
admin_redirect("index.php?module=user-admin_permissions");
|
||||
}
|
||||
|
||||
if(!trim($mybb->input['uid']))
|
||||
{
|
||||
flash_message($lang->error_delete_no_uid, 'error');
|
||||
admin_redirect("index.php?module=user-admin_permissions");
|
||||
}
|
||||
|
||||
$query = $db->simple_select("adminoptions", "COUNT(uid) as adminoptions", "uid = '{$mybb->input['uid']}'");
|
||||
if($db->fetch_field($query, 'adminoptions') == 0)
|
||||
{
|
||||
flash_message($lang->error_delete_invalid_uid, 'error');
|
||||
admin_redirect("index.php?module=user-admin_permissions");
|
||||
}
|
||||
|
||||
$plugins->run_hooks("admin_user_admin_permissions_delete");
|
||||
|
||||
if($mybb->request_method == "post")
|
||||
{
|
||||
$newperms = array(
|
||||
"permissions" => ''
|
||||
);
|
||||
|
||||
$plugins->run_hooks("admin_user_admin_permissions_delete_commit");
|
||||
|
||||
$db->update_query("adminoptions", $newperms, "uid = '{$uid}'");
|
||||
|
||||
// Log admin action
|
||||
if($uid < 0)
|
||||
{
|
||||
$gid = abs($uid);
|
||||
$query = $db->simple_select("usergroups", "title", "gid='{$gid}'");
|
||||
$group = $db->fetch_array($query);
|
||||
log_admin_action($uid, $group['title']);
|
||||
|
||||
}
|
||||
elseif($uid == 0)
|
||||
{
|
||||
// Default
|
||||
log_admin_action(0, $lang->default);
|
||||
}
|
||||
else
|
||||
{
|
||||
$user = get_user($uid);
|
||||
log_admin_action($uid, $user['username']);
|
||||
}
|
||||
|
||||
flash_message($lang->success_perms_deleted, 'success');
|
||||
admin_redirect("index.php?module=user-admin_permissions");
|
||||
}
|
||||
else
|
||||
{
|
||||
$page->output_confirm_action("index.php?module=user-admin_permissions&action=delete&uid={$mybb->input['uid']}", $lang->confirm_perms_deletion);
|
||||
}
|
||||
}
|
||||
|
||||
if($mybb->input['action'] == "edit")
|
||||
{
|
||||
if(is_super_admin($uid))
|
||||
{
|
||||
flash_message($lang->error_super_admin, 'error');
|
||||
admin_redirect("index.php?module=user-admin_permissions");
|
||||
}
|
||||
|
||||
$plugins->run_hooks("admin_user_admin_permissions_edit");
|
||||
|
||||
if($mybb->request_method == "post")
|
||||
{
|
||||
foreach($mybb->input['permissions'] as $module => $actions)
|
||||
{
|
||||
if(is_array($actions))
|
||||
{
|
||||
$no_access = 0;
|
||||
foreach($actions as $action => $access)
|
||||
{
|
||||
if($access == 0)
|
||||
{
|
||||
++$no_access;
|
||||
}
|
||||
}
|
||||
// User can't access any actions in this module - just disallow it completely
|
||||
if($no_access == count($actions))
|
||||
{
|
||||
unset($mybb->input['permissions'][$module]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Does an options row exist for this admin already?
|
||||
$query = $db->simple_select("adminoptions", "COUNT(uid) AS existing_options", "uid='".$mybb->get_input('uid', MyBB::INPUT_INT)."'");
|
||||
$existing_options = $db->fetch_field($query, "existing_options");
|
||||
if($existing_options > 0)
|
||||
{
|
||||
$db->update_query("adminoptions", array('permissions' => $db->escape_string(my_serialize($mybb->input['permissions']))), "uid = '".$mybb->get_input('uid', MyBB::INPUT_INT)."'");
|
||||
}
|
||||
else
|
||||
{
|
||||
$insert_array = array(
|
||||
"uid" => $mybb->get_input('uid', MyBB::INPUT_INT),
|
||||
"permissions" => $db->escape_string(my_serialize($mybb->input['permissions'])),
|
||||
"notes" => '',
|
||||
"defaultviews" => ''
|
||||
);
|
||||
$db->insert_query("adminoptions", $insert_array);
|
||||
}
|
||||
|
||||
$plugins->run_hooks("admin_user_admin_permissions_edit_commit");
|
||||
|
||||
// Log admin action
|
||||
if($uid > 0)
|
||||
{
|
||||
// Users
|
||||
$user = get_user($uid);
|
||||
log_admin_action($uid, $user['username']);
|
||||
}
|
||||
elseif($uid < 0)
|
||||
{
|
||||
// Groups
|
||||
$gid = abs($uid);
|
||||
$query = $db->simple_select("usergroups", "title", "gid='{$gid}'");
|
||||
$group = $db->fetch_array($query);
|
||||
log_admin_action($uid, $group['title']);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Default
|
||||
log_admin_action(0);
|
||||
}
|
||||
|
||||
flash_message($lang->admin_permissions_updated, 'success');
|
||||
admin_redirect("index.php?module=user-admin_permissions");
|
||||
}
|
||||
|
||||
if($uid > 0)
|
||||
{
|
||||
switch($db->type)
|
||||
{
|
||||
case "pgsql":
|
||||
case "sqlite":
|
||||
$query = $db->query("
|
||||
SELECT u.uid, u.username, g.cancp, g.gid
|
||||
FROM ".TABLE_PREFIX."users u
|
||||
LEFT JOIN ".TABLE_PREFIX."usergroups g ON (((','|| u.additionalgroups|| ',' LIKE '%,'|| g.gid|| ',%') OR u.usergroup = g.gid))
|
||||
WHERE u.uid='$uid'
|
||||
AND g.cancp=1
|
||||
LIMIT 1
|
||||
");
|
||||
break;
|
||||
default:
|
||||
$query = $db->query("
|
||||
SELECT u.uid, u.username, g.cancp, g.gid
|
||||
FROM ".TABLE_PREFIX."users u
|
||||
LEFT JOIN ".TABLE_PREFIX."usergroups g ON (((CONCAT(',', u.additionalgroups, ',') LIKE CONCAT('%,', g.gid, ',%')) OR u.usergroup = g.gid))
|
||||
WHERE u.uid='$uid'
|
||||
AND g.cancp=1
|
||||
LIMIT 1
|
||||
");
|
||||
}
|
||||
|
||||
$admin = $db->fetch_array($query);
|
||||
$permission_data = get_admin_permissions($uid, $admin['gid']);
|
||||
$title = htmlspecialchars_uni($admin['username']);
|
||||
$page->add_breadcrumb_item($lang->user_permissions, "index.php?module=user-admin_permissions");
|
||||
}
|
||||
elseif($uid < 0)
|
||||
{
|
||||
$gid = abs($uid);
|
||||
$query = $db->simple_select("usergroups", "title", "gid='$gid'");
|
||||
$group = $db->fetch_array($query);
|
||||
$permission_data = get_admin_permissions("", $gid);
|
||||
$title = $group['title'];
|
||||
$page->add_breadcrumb_item($lang->group_permissions, "index.php?module=user-admin_permissions&action=group");
|
||||
}
|
||||
else
|
||||
{
|
||||
$query = $db->simple_select("adminoptions", "permissions", "uid='0'");
|
||||
$permission_data = my_unserialize($db->fetch_field($query, "permissions"));
|
||||
$page->add_breadcrumb_item($lang->default_permissions);
|
||||
$title = $lang->default;
|
||||
}
|
||||
|
||||
if($uid != 0)
|
||||
{
|
||||
$page->add_breadcrumb_item($lang->edit_permissions.": {$title}");
|
||||
}
|
||||
|
||||
$page->output_header($lang->edit_permissions);
|
||||
|
||||
if($uid != 0)
|
||||
{
|
||||
$sub_tabs['edit_permissions'] = array(
|
||||
'title' => $lang->edit_permissions,
|
||||
'link' => "index.php?module=user-admin_permissions&action=edit&uid={$uid}",
|
||||
'description' => $lang->edit_permissions_desc
|
||||
);
|
||||
|
||||
$page->output_nav_tabs($sub_tabs, 'edit_permissions');
|
||||
}
|
||||
|
||||
$form = new Form("index.php?module=user-admin_permissions&action=edit", "post", "edit");
|
||||
|
||||
echo $form->generate_hidden_field("uid", $uid);
|
||||
|
||||
// Fetch all of the modules we have
|
||||
$modules_dir = MYBB_ADMIN_DIR."modules";
|
||||
$dir = opendir($modules_dir);
|
||||
$modules = array();
|
||||
while(($module = readdir($dir)) !== false)
|
||||
{
|
||||
if(is_dir($modules_dir."/".$module) && !in_array($module, array(".", "..")) && file_exists($modules_dir."/".$module."/module_meta.php"))
|
||||
{
|
||||
require_once $modules_dir."/".$module."/module_meta.php";
|
||||
$meta_function = $module."_admin_permissions";
|
||||
|
||||
// Module has no permissions, skip it
|
||||
if(function_exists($meta_function) && is_array($meta_function()))
|
||||
{
|
||||
$permission_modules[$module] = $meta_function();
|
||||
$modules[$permission_modules[$module]['disporder']][] = $module;
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir($dir);
|
||||
|
||||
ksort($modules);
|
||||
foreach($modules as $disp_order => $mod)
|
||||
{
|
||||
if(!is_array($mod))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach($mod as $module)
|
||||
{
|
||||
$module_tabs[$module] = $permission_modules[$module]['name'];
|
||||
}
|
||||
}
|
||||
$page->output_tab_control($module_tabs);
|
||||
|
||||
foreach($permission_modules as $key => $module)
|
||||
{
|
||||
echo "<div id=\"tab_{$key}\">\n";
|
||||
$form_container = new FormContainer("{$module['name']}");
|
||||
foreach($module['permissions'] as $action => $title)
|
||||
{
|
||||
$form_container->output_row($title, "", $form->generate_yes_no_radio('permissions['.$key.']['.$action.']', (int)$permission_data[$key][$action], array('yes' => 1, 'no' => 0)), 'permissions['.$key.']['.$action.']');
|
||||
}
|
||||
$form_container->end();
|
||||
echo "</div>\n";
|
||||
}
|
||||
|
||||
$buttons[] = $form->generate_submit_button($lang->update_permissions);
|
||||
$form->output_submit_wrapper($buttons);
|
||||
$form->end();
|
||||
|
||||
$page->output_footer();
|
||||
}
|
||||
|
||||
if($mybb->input['action'] == "group")
|
||||
{
|
||||
$plugins->run_hooks("admin_user_admin_permissions_group");
|
||||
|
||||
$page->add_breadcrumb_item($lang->group_permissions);
|
||||
$page->output_header($lang->group_permissions);
|
||||
|
||||
$page->output_nav_tabs($sub_tabs, 'group_permissions');
|
||||
|
||||
$table = new Table;
|
||||
$table->construct_header($lang->group);
|
||||
$table->construct_header($lang->controls, array("class" => "align_center", "width" => 150));
|
||||
|
||||
// Get usergroups with ACP access
|
||||
$query = $db->query("
|
||||
SELECT g.title, g.cancp, a.permissions, g.gid
|
||||
FROM ".TABLE_PREFIX."usergroups g
|
||||
LEFT JOIN ".TABLE_PREFIX."adminoptions a ON (a.uid = -g.gid)
|
||||
WHERE g.cancp = 1
|
||||
ORDER BY g.title ASC
|
||||
");
|
||||
while($group = $db->fetch_array($query))
|
||||
{
|
||||
if($group['permissions'] != "")
|
||||
{
|
||||
$perm_type = "group";
|
||||
}
|
||||
else
|
||||
{
|
||||
$perm_type = "default";
|
||||
}
|
||||
$uid = -$group['gid'];
|
||||
|
||||
$group['title'] = htmlspecialchars_uni($group['title']);
|
||||
|
||||
$table->construct_cell("<div class=\"float_right\"><img src=\"styles/{$page->style}/images/icons/{$perm_type}.png\" title=\"{$lang->permissions_type_group}\" alt=\"{$perm_type}\" /></div><div><strong><a href=\"index.php?module=user-admin_permissions&action=edit&uid={$uid}\" title=\"{$lang->edit_group}\">{$group['title']}</a></strong><br /></div>");
|
||||
|
||||
if($group['permissions'] != "")
|
||||
{
|
||||
$popup = new PopupMenu("groupperm_{$uid}", $lang->options);
|
||||
$popup->add_item($lang->edit_permissions, "index.php?module=user-admin_permissions&action=edit&uid={$uid}");
|
||||
|
||||
// Check permissions for Revoke
|
||||
$popup->add_item($lang->revoke_permissions, "index.php?module=user-admin_permissions&action=delete&uid={$uid}&my_post_key={$mybb->post_code}", "return AdminCP.deleteConfirmation(this, 'Are you sure you wish to revoke this group\'s permissions?')");
|
||||
$table->construct_cell($popup->fetch(), array("class" => "align_center"));
|
||||
}
|
||||
else
|
||||
{
|
||||
$table->construct_cell("<a href=\"index.php?module=user-admin_permissions&action=edit&uid={$uid}\">{$lang->set_permissions}</a>", array("class" => "align_center"));
|
||||
}
|
||||
$table->construct_row();
|
||||
}
|
||||
|
||||
if($table->num_rows() == 0)
|
||||
{
|
||||
$table->construct_cell($lang->no_group_perms, array("colspan" => "3"));
|
||||
$table->construct_row();
|
||||
}
|
||||
|
||||
$table->output($lang->group_permissions);
|
||||
|
||||
echo <<<LEGEND
|
||||
<br />
|
||||
<fieldset>
|
||||
<legend>{$lang->legend}</legend>
|
||||
<img src="styles/{$page->style}/images/icons/group.png" alt="{$lang->using_custom_perms}" style="vertical-align: middle;" /> {$lang->using_custom_perms}<br />
|
||||
<img src="styles/{$page->style}/images/icons/default.png" alt="{$lang->using_default_perms}" style="vertical-align: middle;" /> {$lang->using_default_perms}</fieldset>
|
||||
LEGEND;
|
||||
|
||||
$page->output_footer();
|
||||
}
|
||||
|
||||
if(!$mybb->input['action'])
|
||||
{
|
||||
$plugins->run_hooks("admin_user_admin_permissions_start");
|
||||
|
||||
$page->add_breadcrumb_item($lang->user_permissions);
|
||||
$page->output_header($lang->user_permissions);
|
||||
|
||||
$page->output_nav_tabs($sub_tabs, 'user_permissions');
|
||||
|
||||
$table = new Table;
|
||||
$table->construct_header($lang->user);
|
||||
$table->construct_header($lang->last_active, array("class" => "align_center", "width" => 200));
|
||||
$table->construct_header($lang->controls, array("class" => "align_center", "width" => 150));
|
||||
|
||||
// Get usergroups with ACP access
|
||||
$usergroups = array();
|
||||
$query = $db->simple_select("usergroups", "*", "cancp = 1");
|
||||
while($usergroup = $db->fetch_array($query))
|
||||
{
|
||||
$usergroups[$usergroup['gid']] = $usergroup;
|
||||
}
|
||||
|
||||
if(!empty($usergroups))
|
||||
{
|
||||
// Get users whose primary or secondary usergroup has ACP access
|
||||
$comma = $primary_group_list = $secondary_group_list = '';
|
||||
foreach($usergroups as $gid => $group_info)
|
||||
{
|
||||
$primary_group_list .= $comma.$gid;
|
||||
switch($db->type)
|
||||
{
|
||||
case "pgsql":
|
||||
case "sqlite":
|
||||
$secondary_group_list .= " OR ','|| u.additionalgroups||',' LIKE '%,{$gid},%'";
|
||||
break;
|
||||
default:
|
||||
$secondary_group_list .= " OR CONCAT(',', u.additionalgroups,',') LIKE '%,{$gid},%'";
|
||||
}
|
||||
|
||||
$comma = ',';
|
||||
}
|
||||
|
||||
$group_list = implode(',', array_keys($usergroups));
|
||||
$secondary_groups = ','.$group_list.',';
|
||||
|
||||
// Get usergroups with ACP access
|
||||
$query = $db->query("
|
||||
SELECT g.title, g.cancp, a.permissions, g.gid
|
||||
FROM ".TABLE_PREFIX."usergroups g
|
||||
LEFT JOIN ".TABLE_PREFIX."adminoptions a ON (a.uid = -g.gid)
|
||||
WHERE g.cancp = 1
|
||||
ORDER BY g.title ASC
|
||||
");
|
||||
while($group = $db->fetch_array($query))
|
||||
{
|
||||
$group_permissions[$group['gid']] = $group['permissions'];
|
||||
}
|
||||
|
||||
$query = $db->query("
|
||||
SELECT u.uid, u.username, u.lastactive, u.usergroup, u.additionalgroups, a.permissions
|
||||
FROM ".TABLE_PREFIX."users u
|
||||
LEFT JOIN ".TABLE_PREFIX."adminoptions a ON (a.uid=u.uid)
|
||||
WHERE u.usergroup IN ({$primary_group_list}) {$secondary_group_list}
|
||||
ORDER BY u.username ASC
|
||||
");
|
||||
while($admin = $db->fetch_array($query))
|
||||
{
|
||||
$perm_type = "default";
|
||||
|
||||
if($admin['permissions'] != "")
|
||||
{
|
||||
$perm_type = "user";
|
||||
}
|
||||
else
|
||||
{
|
||||
$groups = explode(",", $admin['additionalgroups'].",".$admin['usergroup']);
|
||||
foreach($groups as $group)
|
||||
{
|
||||
if($group == "") continue;
|
||||
if($group_permissions[$group] != "")
|
||||
{
|
||||
$perm_type = "group";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$usergroup_list = array();
|
||||
|
||||
// Build a list of group memberships that have access to the Admin CP
|
||||
// Primary usergroup?
|
||||
if($usergroups[$admin['usergroup']]['cancp'] == 1)
|
||||
{
|
||||
$usergroup_list[] = "<i>".htmlspecialchars_uni($usergroups[$admin['usergroup']]['title'])."</i>";
|
||||
}
|
||||
|
||||
// Secondary usergroups?
|
||||
$additional_groups = explode(',', $admin['additionalgroups']);
|
||||
if(is_array($additional_groups))
|
||||
{
|
||||
foreach($additional_groups as $gid)
|
||||
{
|
||||
if($usergroups[$gid]['cancp'] == 1)
|
||||
{
|
||||
$usergroup_list[] = htmlspecialchars_uni($usergroups[$gid]['title']);
|
||||
}
|
||||
}
|
||||
}
|
||||
$usergroup_list = implode($lang->comma, $usergroup_list);
|
||||
|
||||
$username = htmlspecialchars_uni($admin['username']);
|
||||
$table->construct_cell("<div class=\"float_right\"><img src=\"styles/{$page->style}/images/icons/{$perm_type}.png\" title=\"{$lang->perms_type_user}\" alt=\"{$perm_type}\" /></div><div><strong><a href=\"index.php?module=user-admin_permissions&action=edit&uid={$admin['uid']}\" title=\"{$lang->edit_user}\">{$username}</a></strong><br /><small>{$usergroup_list}</small></div>");
|
||||
|
||||
$table->construct_cell(my_date('relative', $admin['lastactive']), array("class" => "align_center"));
|
||||
|
||||
$popup = new PopupMenu("adminperm_{$admin['uid']}", $lang->options);
|
||||
if(!is_super_admin($admin['uid']))
|
||||
{
|
||||
if($admin['permissions'] != "")
|
||||
{
|
||||
$popup->add_item($lang->edit_permissions, "index.php?module=user-admin_permissions&action=edit&uid={$admin['uid']}");
|
||||
$popup->add_item($lang->revoke_permissions, "index.php?module=user-admin_permissions&action=delete&uid={$admin['uid']}&my_post_key={$mybb->post_code}", "return AdminCP.deleteConfirmation(this, '{$lang->confirm_perms_deletion2}')");
|
||||
}
|
||||
else
|
||||
{
|
||||
$popup->add_item($lang->set_permissions, "index.php?module=user-admin_permissions&action=edit&uid={$admin['uid']}");
|
||||
}
|
||||
}
|
||||
$popup->add_item($lang->view_log, "index.php?module=tools-adminlog&uid={$admin['uid']}");
|
||||
$table->construct_cell($popup->fetch(), array("class" => "align_center"));
|
||||
$table->construct_row();
|
||||
}
|
||||
}
|
||||
|
||||
if(empty($usergroups) || $table->num_rows() == 0)
|
||||
{
|
||||
$table->construct_cell($lang->no_user_perms, array("colspan" => "3"));
|
||||
$table->construct_row();
|
||||
}
|
||||
|
||||
$table->output($lang->user_permissions);
|
||||
|
||||
echo <<<LEGEND
|
||||
<br />
|
||||
<fieldset>
|
||||
<legend>{$lang->legend}</legend>
|
||||
<img src="styles/{$page->style}/images/icons/user.png" alt="{$lang->using_individual_perms}" style="vertical-align: middle;" /> {$lang->using_individual_perms}<br />
|
||||
<img src="styles/{$page->style}/images/icons/group.png" alt="{$lang->using_group_perms}" style="vertical-align: middle;" /> {$lang->using_group_perms}<br />
|
||||
<img src="styles/{$page->style}/images/icons/default.png" alt="{$lang->using_default_perms}" style="vertical-align: middle;" /> {$lang->using_default_perms}</fieldset>
|
||||
LEGEND;
|
||||
$page->output_footer();
|
||||
}
|
||||
|
||||
224
webroot/forum/admin/modules/user/awaiting_activation.php
Normal file
224
webroot/forum/admin/modules/user/awaiting_activation.php
Normal file
@@ -0,0 +1,224 @@
|
||||
<?php
|
||||
/**
|
||||
* MyBB 1.8
|
||||
* Copyright 2014 MyBB Group, All Rights Reserved
|
||||
*
|
||||
* Website: http://www.mybb.com
|
||||
* License: http://www.mybb.com/about/license
|
||||
*
|
||||
*/
|
||||
|
||||
// Disallow direct access to this file for security reasons
|
||||
if(!defined("IN_MYBB"))
|
||||
{
|
||||
die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
|
||||
}
|
||||
|
||||
$page->add_breadcrumb_item($lang->awaiting_activation, "index.php?module=user-awaiting_activation");
|
||||
|
||||
$sub_tabs['awaiting_activation'] = array(
|
||||
'title' => $lang->awaiting_activation,
|
||||
'link' => "index.php?module=user-awaiting_activation",
|
||||
'description' => $lang->awaiting_activation_desc
|
||||
);
|
||||
|
||||
$plugins->run_hooks("admin_user_awaiting_activation_begin");
|
||||
|
||||
if($mybb->input['action'] == "activate" && $mybb->request_method == "post")
|
||||
{
|
||||
$plugins->run_hooks("admin_user_awaiting_activation_activate");
|
||||
|
||||
if(!is_array($mybb->input['user']))
|
||||
{
|
||||
$mybb->input['user'] = array();
|
||||
}
|
||||
|
||||
$mybb->input['user'] = array_map('intval', $mybb->input['user']);
|
||||
$user_ids = implode(", ", $mybb->input['user']);
|
||||
|
||||
if(empty($user_ids))
|
||||
{
|
||||
flash_message($lang->no_users_selected, 'error');
|
||||
admin_redirect("index.php?module=user-awaiting_activation");
|
||||
}
|
||||
|
||||
$num_activated = $num_deleted = 0;
|
||||
$users_to_delete = array();
|
||||
if($mybb->input['delete']) // Delete selected user(s)
|
||||
{
|
||||
require_once MYBB_ROOT.'inc/datahandlers/user.php';
|
||||
$userhandler = new UserDataHandler('delete');
|
||||
|
||||
$query = $db->simple_select("users", "uid, usergroup", "uid IN ({$user_ids})");
|
||||
while($user = $db->fetch_array($query))
|
||||
{
|
||||
if($user['usergroup'] == 5)
|
||||
{
|
||||
++$num_deleted;
|
||||
$users_to_delete[] = (int)$user['uid'];
|
||||
}
|
||||
}
|
||||
|
||||
if(!empty($users_to_delete))
|
||||
{
|
||||
$userhandler->delete_user($users_to_delete, 1);
|
||||
}
|
||||
|
||||
$plugins->run_hooks("admin_user_awaiting_activation_activate_delete_commit");
|
||||
|
||||
// Log admin action
|
||||
log_admin_action('deleted', $num_deleted);
|
||||
|
||||
flash_message($lang->success_users_deleted, 'success');
|
||||
admin_redirect("index.php?module=user-awaiting_activation");
|
||||
}
|
||||
else // Activate selected user(s)
|
||||
{
|
||||
$query = $db->simple_select("users", "uid, username, email, usergroup, coppauser", "uid IN ({$user_ids})");
|
||||
while($user = $db->fetch_array($query))
|
||||
{
|
||||
++$num_activated;
|
||||
if($user['coppauser'])
|
||||
{
|
||||
$updated_user = array(
|
||||
"coppauser" => 0
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$db->delete_query("awaitingactivation", "uid='{$user['uid']}'");
|
||||
}
|
||||
|
||||
// Move out of awaiting activation if they're in it.
|
||||
if($user['usergroup'] == 5)
|
||||
{
|
||||
$updated_user['usergroup'] = 2;
|
||||
}
|
||||
|
||||
$db->update_query("users", $updated_user, "uid='{$user['uid']}'");
|
||||
|
||||
$message = $lang->sprintf($lang->email_adminactivateaccount, $user['username'], $mybb->settings['bbname'], $mybb->settings['bburl']); my_mail($user['email'], $lang->sprintf($lang->emailsubject_activateaccount, $mybb->settings['bbname']), $message);
|
||||
}
|
||||
|
||||
$cache->update_awaitingactivation();
|
||||
|
||||
$plugins->run_hooks("admin_user_awaiting_activation_activate_commit");
|
||||
|
||||
// Log admin action
|
||||
log_admin_action('activated', $num_activated);
|
||||
|
||||
flash_message($lang->success_users_activated, 'success');
|
||||
admin_redirect("index.php?module=user-awaiting_activation");
|
||||
}
|
||||
}
|
||||
|
||||
if(!$mybb->input['action'])
|
||||
{
|
||||
$plugins->run_hooks("admin_user_awaiting_activation_start");
|
||||
|
||||
$query = $db->simple_select("users", "COUNT(uid) AS users", "usergroup='5'");
|
||||
$total_rows = $db->fetch_field($query, "users");
|
||||
|
||||
$per_page = 20;
|
||||
|
||||
if($mybb->input['page'] && $mybb->input['page'] > 1)
|
||||
{
|
||||
$mybb->input['page'] = $mybb->get_input('page', MyBB::INPUT_INT);
|
||||
$start = ($mybb->input['page']*$per_page)-$per_page;
|
||||
$pages = ceil($total_rows / $per_page);
|
||||
if($mybb->input['page'] > $pages)
|
||||
{
|
||||
$mybb->input['page'] = 1;
|
||||
$start = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$mybb->input['page'] = 1;
|
||||
$start = 0;
|
||||
}
|
||||
|
||||
$page->output_header($lang->manage_awaiting_activation);
|
||||
|
||||
$page->output_nav_tabs($sub_tabs, 'awaiting_activation');
|
||||
|
||||
$form = new Form("index.php?module=user-awaiting_activation&action=activate", "post");
|
||||
|
||||
$table = new Table;
|
||||
$table->construct_header($form->generate_check_box("allbox", 1, '', array('class' => 'checkall')));
|
||||
$table->construct_header($lang->username, array('width' => '20%'));
|
||||
$table->construct_header($lang->registered, array('width' => '15%', 'class' => 'align_center'));
|
||||
$table->construct_header($lang->last_active, array('width' => '15%', 'class' => 'align_center'));
|
||||
$table->construct_header($lang->email, array('width' => '15%', 'class' => 'align_center'));
|
||||
$table->construct_header($lang->ipaddress, array('width' => '10%', 'class' => 'align_center'));
|
||||
$table->construct_header($lang->type, array('class' => 'align_center'));
|
||||
|
||||
$query = $db->query("
|
||||
SELECT u.uid, u.username, u.regdate, u.regip, u.lastactive, u.email, u.coppauser, a.type AS reg_type, a.validated
|
||||
FROM ".TABLE_PREFIX."users u
|
||||
LEFT JOIN ".TABLE_PREFIX."awaitingactivation a ON (a.uid=u.uid)
|
||||
WHERE u.usergroup='5'
|
||||
ORDER BY u.regdate DESC
|
||||
LIMIT {$start}, {$per_page}
|
||||
");
|
||||
while($user = $db->fetch_array($query))
|
||||
{
|
||||
$trow = alt_trow();
|
||||
$user['username'] = htmlspecialchars_uni($user['username']);
|
||||
$user['profilelink'] = build_profile_link($user['username'], $user['uid'], "_blank");
|
||||
$user['email'] = htmlspecialchars_uni($user['email']);
|
||||
$user['regdate'] = my_date('relative', $user['regdate']);
|
||||
$user['lastactive'] = my_date('relative', $user['lastactive']);
|
||||
|
||||
if($user['reg_type'] == 'r' || $user['reg_type'] == 'b' && $user['validated'] == 0)
|
||||
{
|
||||
$user['type'] = $lang->email_activation;
|
||||
}
|
||||
elseif($user['coppauser'] == 1)
|
||||
{
|
||||
$user['type'] = $lang->admin_activation_coppa;
|
||||
}
|
||||
else
|
||||
{
|
||||
$user['type'] = $lang->administrator_activation;
|
||||
}
|
||||
|
||||
if(empty($user['regip']))
|
||||
{
|
||||
$user['regip'] = $lang->na;
|
||||
}
|
||||
else
|
||||
{
|
||||
$user['regip'] = my_inet_ntop($db->unescape_binary($user['regip']));
|
||||
}
|
||||
|
||||
$table->construct_cell($form->generate_check_box("user[{$user['uid']}]", $user['uid'], ''));
|
||||
$table->construct_cell($user['profilelink']);
|
||||
$table->construct_cell($user['regdate'], array("class" => "align_center"));
|
||||
$table->construct_cell($user['lastactive'], array("class" => "align_center"));
|
||||
$table->construct_cell($user['email'], array("class" => "align_center"));
|
||||
$table->construct_cell($user['regip'], array("class" => "align_center"));
|
||||
$table->construct_cell($user['type'], array("class" => "align_center"));
|
||||
$table->construct_row();
|
||||
}
|
||||
|
||||
if($table->num_rows() == 0)
|
||||
{
|
||||
$table->construct_cell($lang->no_users_awaiting_activation, array('colspan' => 7));
|
||||
$table->construct_row();
|
||||
$table->output($lang->manage_awaiting_activation);
|
||||
}
|
||||
else
|
||||
{
|
||||
$table->output($lang->manage_awaiting_activation);
|
||||
$buttons[] = $form->generate_submit_button($lang->activate_users, array('onclick' => "return confirm('{$lang->confirm_activate_users}');"));
|
||||
$buttons[] = $form->generate_submit_button($lang->delete_users, array('name' => 'delete', 'onclick' => "return confirm('{$lang->confirm_delete_users}');"));
|
||||
$form->output_submit_wrapper($buttons);
|
||||
}
|
||||
|
||||
$form->end();
|
||||
|
||||
echo "<br />".draw_admin_pagination($mybb->input['page'], $per_page, $total_rows, "index.php?module=user-awaiting_activation&page={page}");
|
||||
|
||||
$page->output_footer();
|
||||
}
|
||||
609
webroot/forum/admin/modules/user/banning.php
Normal file
609
webroot/forum/admin/modules/user/banning.php
Normal file
@@ -0,0 +1,609 @@
|
||||
<?php
|
||||
/**
|
||||
* MyBB 1.8
|
||||
* Copyright 2014 MyBB Group, All Rights Reserved
|
||||
*
|
||||
* Website: http://www.mybb.com
|
||||
* License: http://www.mybb.com/about/license
|
||||
*
|
||||
*/
|
||||
|
||||
// Disallow direct access to this file for security reasons
|
||||
if(!defined("IN_MYBB"))
|
||||
{
|
||||
die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
|
||||
}
|
||||
|
||||
$page->add_breadcrumb_item($lang->banning, "index.php?module=user-banning");
|
||||
|
||||
|
||||
$sub_tabs['ips'] = array(
|
||||
'title' => $lang->banned_ips,
|
||||
'link' => "index.php?module=config-banning",
|
||||
);
|
||||
|
||||
$sub_tabs['bans'] = array(
|
||||
'title' => $lang->banned_accounts,
|
||||
'link' => "index.php?module=user-banning",
|
||||
'description' => $lang->banned_accounts_desc
|
||||
);
|
||||
|
||||
$sub_tabs['usernames'] = array(
|
||||
'title' => $lang->disallowed_usernames,
|
||||
'link' => "index.php?module=config-banning&type=usernames",
|
||||
);
|
||||
|
||||
$sub_tabs['emails'] = array(
|
||||
'title' => $lang->disallowed_email_addresses,
|
||||
'link' => "index.php?module=config-banning&type=emails",
|
||||
);
|
||||
|
||||
// Fetch banned groups
|
||||
$query = $db->simple_select("usergroups", "gid,title", "isbannedgroup=1", array('order_by' => 'title'));
|
||||
$banned_groups = array();
|
||||
while($group = $db->fetch_array($query))
|
||||
{
|
||||
$banned_groups[$group['gid']] = $group['title'];
|
||||
}
|
||||
|
||||
// Fetch ban times
|
||||
$ban_times = fetch_ban_times();
|
||||
|
||||
$plugins->run_hooks("admin_user_banning_begin");
|
||||
|
||||
if($mybb->input['action'] == "prune")
|
||||
{
|
||||
// User clicked no
|
||||
if($mybb->input['no'])
|
||||
{
|
||||
admin_redirect("index.php?module=user-banning");
|
||||
}
|
||||
|
||||
$query = $db->simple_select("banned", "*", "uid='{$mybb->input['uid']}'");
|
||||
$ban = $db->fetch_array($query);
|
||||
|
||||
if(!$ban['uid'])
|
||||
{
|
||||
flash_message($lang->error_invalid_ban, 'error');
|
||||
admin_redirect("index.php?module=user-banning");
|
||||
}
|
||||
|
||||
$user = get_user($ban['uid']);
|
||||
|
||||
if(is_super_admin($user['uid']) && ($mybb->user['uid'] != $user['uid'] && !is_super_admin($mybb->user['uid'])))
|
||||
{
|
||||
flash_message($lang->cannot_perform_action_super_admin_general, 'error');
|
||||
admin_redirect("index.php?module=user-banning");
|
||||
}
|
||||
|
||||
$plugins->run_hooks("admin_user_banning_prune");
|
||||
|
||||
if($mybb->request_method == "post")
|
||||
{
|
||||
require_once MYBB_ROOT."inc/class_moderation.php";
|
||||
$moderation = new Moderation();
|
||||
|
||||
$query = $db->simple_select("threads", "tid", "uid='{$user['uid']}'");
|
||||
while($thread = $db->fetch_array($query))
|
||||
{
|
||||
$moderation->delete_thread($thread['tid']);
|
||||
}
|
||||
|
||||
$query = $db->simple_select("posts", "pid", "uid='{$user['uid']}'");
|
||||
while($post = $db->fetch_array($query))
|
||||
{
|
||||
$moderation->delete_post($post['pid']);
|
||||
}
|
||||
|
||||
$plugins->run_hooks("admin_user_banning_prune_commit");
|
||||
|
||||
$cache->update_reportedcontent();
|
||||
|
||||
// Log admin action
|
||||
log_admin_action($user['uid'], $user['username']);
|
||||
|
||||
flash_message($lang->success_pruned, 'success');
|
||||
admin_redirect("index.php?module=user-banning");
|
||||
}
|
||||
else
|
||||
{
|
||||
$page->output_confirm_action("index.php?module=user-banning&action=prune&uid={$user['uid']}", $lang->confirm_prune);
|
||||
}
|
||||
}
|
||||
|
||||
if($mybb->input['action'] == "lift")
|
||||
{
|
||||
// User clicked no
|
||||
if($mybb->input['no'])
|
||||
{
|
||||
admin_redirect("index.php?module=user-banning");
|
||||
}
|
||||
|
||||
$query = $db->simple_select("banned", "*", "uid='{$mybb->input['uid']}'");
|
||||
$ban = $db->fetch_array($query);
|
||||
|
||||
if(!$ban['uid'])
|
||||
{
|
||||
flash_message($lang->error_invalid_ban, 'error');
|
||||
admin_redirect("index.php?module=user-banning");
|
||||
}
|
||||
|
||||
$user = get_user($ban['uid']);
|
||||
|
||||
if(is_super_admin($user['uid']) && ($mybb->user['uid'] != $user['uid'] && !is_super_admin($mybb->user['uid'])))
|
||||
{
|
||||
flash_message($lang->cannot_perform_action_super_admin_general, 'error');
|
||||
admin_redirect("index.php?module=user-banning");
|
||||
}
|
||||
|
||||
$plugins->run_hooks("admin_user_banning_lift");
|
||||
|
||||
if($mybb->request_method == "post")
|
||||
{
|
||||
$updated_group = array(
|
||||
'usergroup' => $ban['oldgroup'],
|
||||
'additionalgroups' => $ban['oldadditionalgroups'],
|
||||
'displaygroup' => $ban['olddisplaygroup']
|
||||
);
|
||||
$db->delete_query("banned", "uid='{$ban['uid']}'");
|
||||
|
||||
$plugins->run_hooks("admin_user_banning_lift_commit");
|
||||
|
||||
$db->update_query("users", $updated_group, "uid='{$ban['uid']}'");
|
||||
|
||||
$cache->update_banned();
|
||||
$cache->update_moderators();
|
||||
|
||||
// Log admin action
|
||||
log_admin_action($ban['uid'], $user['username']);
|
||||
|
||||
flash_message($lang->success_ban_lifted, 'success');
|
||||
admin_redirect("index.php?module=user-banning");
|
||||
}
|
||||
else
|
||||
{
|
||||
$page->output_confirm_action("index.php?module=user-banning&action=lift&uid={$ban['uid']}", $lang->confirm_lift_ban);
|
||||
}
|
||||
}
|
||||
|
||||
if($mybb->input['action'] == "edit")
|
||||
{
|
||||
$query = $db->simple_select("banned", "*", "uid='{$mybb->input['uid']}'");
|
||||
$ban = $db->fetch_array($query);
|
||||
|
||||
$user = get_user($ban['uid']);
|
||||
|
||||
if(!$ban['uid'])
|
||||
{
|
||||
flash_message($lang->error_invalid_ban, 'error');
|
||||
admin_redirect("index.php?module=user-banning");
|
||||
}
|
||||
|
||||
$plugins->run_hooks("admin_user_banning_edit");
|
||||
|
||||
if($mybb->request_method == "post")
|
||||
{
|
||||
if(!$ban['uid'])
|
||||
{
|
||||
$errors[] = $lang->error_invalid_username;
|
||||
}
|
||||
// Is the user we're trying to ban a super admin and we're not?
|
||||
else if(is_super_admin($ban['uid']) && !is_super_admin($ban['uid']))
|
||||
{
|
||||
$errors[] = $lang->error_no_perm_to_ban;
|
||||
}
|
||||
|
||||
if($ban['uid'] == $mybb->user['uid'])
|
||||
{
|
||||
$errors[] = $lang->error_ban_self;
|
||||
}
|
||||
|
||||
// No errors? Update
|
||||
if(!$errors)
|
||||
{
|
||||
// Ban the user
|
||||
if($mybb->input['bantime'] == '---')
|
||||
{
|
||||
$lifted = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
$lifted = ban_date2timestamp($mybb->input['bantime'], $ban['dateline']);
|
||||
}
|
||||
|
||||
$reason = my_substr($mybb->input['reason'], 0, 255);
|
||||
|
||||
if(count($banned_groups) == 1)
|
||||
{
|
||||
$group = array_keys($banned_groups);
|
||||
$mybb->input['usergroup'] = $group[0];
|
||||
}
|
||||
|
||||
$update_array = array(
|
||||
'gid' => $mybb->get_input('usergroup', MyBB::INPUT_INT),
|
||||
'dateline' => TIME_NOW,
|
||||
'bantime' => $db->escape_string($mybb->input['bantime']),
|
||||
'lifted' => $db->escape_string($lifted),
|
||||
'reason' => $db->escape_string($reason)
|
||||
);
|
||||
|
||||
$db->update_query('banned', $update_array, "uid='{$ban['uid']}'");
|
||||
|
||||
// Move the user to the banned group
|
||||
$update_array = array(
|
||||
'usergroup' => $mybb->get_input('usergroup', MyBB::INPUT_INT),
|
||||
'displaygroup' => 0,
|
||||
'additionalgroups' => '',
|
||||
);
|
||||
$db->update_query('users', $update_array, "uid = {$ban['uid']}");
|
||||
|
||||
$plugins->run_hooks("admin_user_banning_edit_commit");
|
||||
|
||||
$cache->update_banned();
|
||||
|
||||
// Log admin action
|
||||
log_admin_action($ban['uid'], $user['username']);
|
||||
|
||||
flash_message($lang->success_ban_updated, 'success');
|
||||
admin_redirect("index.php?module=user-banning");
|
||||
}
|
||||
}
|
||||
$page->add_breadcrumb_item($lang->edit_ban);
|
||||
$page->output_header($lang->edit_ban);
|
||||
|
||||
$sub_tabs = array();
|
||||
$sub_tabs['edit'] = array(
|
||||
'title' => $lang->edit_ban,
|
||||
'description' => $lang->edit_ban_desc
|
||||
);
|
||||
$page->output_nav_tabs($sub_tabs, "edit");
|
||||
|
||||
$form = new Form("index.php?module=user-banning&action=edit&uid={$ban['uid']}", "post");
|
||||
if($errors)
|
||||
{
|
||||
$page->output_inline_error($errors);
|
||||
}
|
||||
else
|
||||
{
|
||||
$mybb->input = array_merge($mybb->input, $ban);
|
||||
}
|
||||
|
||||
$form_container = new FormContainer($lang->edit_ban);
|
||||
$form_container->output_row($lang->ban_username, "", htmlspecialchars_uni($user['username']));
|
||||
$form_container->output_row($lang->ban_reason, "", $form->generate_text_area('reason', $mybb->input['reason'], array('id' => 'reason', 'maxlength' => '255')), 'reason');
|
||||
if(count($banned_groups) > 1)
|
||||
{
|
||||
$form_container->output_row($lang->ban_group, $lang->ban_group_desc, $form->generate_select_box('usergroup', $banned_groups, $mybb->input['usergroup'], array('id' => 'usergroup')), 'usergroup');
|
||||
}
|
||||
|
||||
if($mybb->input['bantime'] == 'perm' || $mybb->input['bantime'] == '' || $mybb->input['lifted'] == 'perm' ||$mybb->input['lifted'] == '')
|
||||
{
|
||||
$mybb->input['bantime'] = '---';
|
||||
$mybb->input['lifted'] = '---';
|
||||
}
|
||||
|
||||
foreach($ban_times as $time => $period)
|
||||
{
|
||||
if($time != '---')
|
||||
{
|
||||
$friendly_time = my_date("D, jS M Y @ {$mybb->settings['timeformat']}", ban_date2timestamp($time));
|
||||
$period = "{$period} ({$friendly_time})";
|
||||
}
|
||||
$length_list[$time] = $period;
|
||||
}
|
||||
$form_container->output_row($lang->ban_time, "", $form->generate_select_box('bantime', $length_list, $mybb->input['bantime'], array('id' => 'bantime')), 'bantime');
|
||||
|
||||
$form_container->end();
|
||||
|
||||
$buttons[] = $form->generate_submit_button($lang->update_ban);
|
||||
$form->output_submit_wrapper($buttons);
|
||||
$form->end();
|
||||
|
||||
$page->output_footer();
|
||||
}
|
||||
|
||||
if(!$mybb->input['action'])
|
||||
{
|
||||
$where_sql_full = $where_sql = '';
|
||||
|
||||
$plugins->run_hooks("admin_user_banning_start");
|
||||
|
||||
if($mybb->request_method == "post")
|
||||
{
|
||||
$options = array(
|
||||
'fields' => array('username', 'usergroup', 'additionalgroups', 'displaygroup')
|
||||
);
|
||||
|
||||
$user = get_user_by_username($mybb->input['username'], $options);
|
||||
|
||||
// Are we searching a user?
|
||||
if(isset($mybb->input['search']))
|
||||
{
|
||||
$where_sql = 'uid=\''.(int)$user['uid'].'\'';
|
||||
$where_sql_full = 'WHERE b.uid=\''.(int)$user['uid'].'\'';
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!$user['uid'])
|
||||
{
|
||||
$errors[] = $lang->error_invalid_username;
|
||||
}
|
||||
// Is the user we're trying to ban a super admin and we're not?
|
||||
else if(is_super_admin($user['uid']) && !is_super_admin($mybb->user['uid']))
|
||||
{
|
||||
$errors[] = $lang->error_no_perm_to_ban;
|
||||
}
|
||||
else
|
||||
{
|
||||
$query = $db->simple_select("banned", "uid", "uid='{$user['uid']}'");
|
||||
if($db->fetch_field($query, "uid"))
|
||||
{
|
||||
$errors[] = $lang->error_already_banned;
|
||||
}
|
||||
|
||||
// Get PRIMARY usergroup information
|
||||
$usergroups = $cache->read("usergroups");
|
||||
if(!empty($usergroups[$user['usergroup']]) && $usergroups[$user['usergroup']]['isbannedgroup'] == 1)
|
||||
{
|
||||
$errors[] = $lang->error_already_banned;
|
||||
}
|
||||
}
|
||||
|
||||
if($user['uid'] == $mybb->user['uid'])
|
||||
{
|
||||
$errors[] = $lang->error_ban_self;
|
||||
}
|
||||
|
||||
// No errors? Insert
|
||||
if(!$errors)
|
||||
{
|
||||
// Ban the user
|
||||
if($mybb->input['bantime'] == '---')
|
||||
{
|
||||
$lifted = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
$lifted = ban_date2timestamp($mybb->input['bantime']);
|
||||
}
|
||||
|
||||
$reason = my_substr($mybb->input['reason'], 0, 255);
|
||||
|
||||
if(count($banned_groups) == 1)
|
||||
{
|
||||
$group = array_keys($banned_groups);
|
||||
$mybb->input['usergroup'] = $group[0];
|
||||
}
|
||||
|
||||
$insert_array = array(
|
||||
'uid' => $user['uid'],
|
||||
'gid' => $mybb->get_input('usergroup', MyBB::INPUT_INT),
|
||||
'oldgroup' => $user['usergroup'],
|
||||
'oldadditionalgroups' => $user['additionalgroups'],
|
||||
'olddisplaygroup' => $user['displaygroup'],
|
||||
'admin' => (int)$mybb->user['uid'],
|
||||
'dateline' => TIME_NOW,
|
||||
'bantime' => $db->escape_string($mybb->input['bantime']),
|
||||
'lifted' => $db->escape_string($lifted),
|
||||
'reason' => $db->escape_string($reason)
|
||||
);
|
||||
$db->insert_query('banned', $insert_array);
|
||||
|
||||
// Move the user to the banned group
|
||||
$update_array = array(
|
||||
'usergroup' => $mybb->get_input('usergroup', MyBB::INPUT_INT),
|
||||
'displaygroup' => 0,
|
||||
'additionalgroups' => '',
|
||||
);
|
||||
|
||||
$db->delete_query("forumsubscriptions", "uid = '{$user['uid']}'");
|
||||
$db->delete_query("threadsubscriptions", "uid = '{$user['uid']}'");
|
||||
|
||||
$plugins->run_hooks("admin_user_banning_start_commit");
|
||||
|
||||
$db->update_query('users', $update_array, "uid = '{$user['uid']}'");
|
||||
|
||||
$cache->update_banned();
|
||||
|
||||
// Log admin action
|
||||
log_admin_action($user['uid'], $user['username'], $lifted);
|
||||
|
||||
flash_message($lang->success_banned, 'success');
|
||||
admin_redirect("index.php?module=user-banning");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$page->output_header($lang->banned_accounts);
|
||||
|
||||
$page->output_nav_tabs($sub_tabs, "bans");
|
||||
|
||||
$query = $db->simple_select("banned", "COUNT(*) AS ban_count", $where_sql);
|
||||
$ban_count = $db->fetch_field($query, "ban_count");
|
||||
|
||||
$per_page = 20;
|
||||
|
||||
if($mybb->input['page'] > 0)
|
||||
{
|
||||
$current_page = $mybb->get_input('page', MyBB::INPUT_INT);
|
||||
$start = ($current_page-1)*$per_page;
|
||||
$pages = $ban_count / $per_page;
|
||||
$pages = ceil($pages);
|
||||
if($current_page > $pages)
|
||||
{
|
||||
$start = 0;
|
||||
$current_page = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$start = 0;
|
||||
$current_page = 1;
|
||||
}
|
||||
|
||||
$pagination = draw_admin_pagination($current_page, $per_page, $ban_count, "index.php?module=user-banning&page={page}");
|
||||
|
||||
$form = new Form("index.php?module=user-banning", "post");
|
||||
if($errors)
|
||||
{
|
||||
$page->output_inline_error($errors);
|
||||
}
|
||||
|
||||
if($mybb->input['uid'] && !$mybb->input['username'])
|
||||
{
|
||||
$user = get_user($mybb->input['uid']);
|
||||
$mybb->input['username'] = $user['username'];
|
||||
}
|
||||
|
||||
$form_container = new FormContainer($lang->ban_a_user);
|
||||
$form_container->output_row($lang->ban_username, $lang->autocomplete_enabled, $form->generate_text_box('username', $mybb->input['username'], array('id' => 'username')), 'username');
|
||||
$form_container->output_row($lang->ban_reason, "", $form->generate_text_area('reason', $mybb->input['reason'], array('id' => 'reason', 'maxlength' => '255')), 'reason');
|
||||
if(count($banned_groups) > 1)
|
||||
{
|
||||
$form_container->output_row($lang->ban_group, $lang->add_ban_group_desc, $form->generate_select_box('usergroup', $banned_groups, $mybb->input['usergroup'], array('id' => 'usergroup')), 'usergroup');
|
||||
}
|
||||
foreach($ban_times as $time => $period)
|
||||
{
|
||||
if($time != "---")
|
||||
{
|
||||
$friendly_time = my_date("D, jS M Y @ {$mybb->settings['timeformat']}", ban_date2timestamp($time));
|
||||
$period = "{$period} ({$friendly_time})";
|
||||
}
|
||||
$length_list[$time] = $period;
|
||||
}
|
||||
$form_container->output_row($lang->ban_time, "", $form->generate_select_box('bantime', $length_list, $mybb->input['bantime'], array('id' => 'bantime')), 'bantime');
|
||||
|
||||
$form_container->end();
|
||||
|
||||
// Autocompletion for usernames
|
||||
echo '
|
||||
<link rel="stylesheet" href="../jscripts/select2/select2.css">
|
||||
<script type="text/javascript" src="../jscripts/select2/select2.min.js?ver=1804"></script>
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
$("#username").select2({
|
||||
placeholder: "'.$lang->search_for_a_user.'",
|
||||
minimumInputLength: 2,
|
||||
multiple: false,
|
||||
ajax: { // instead of writing the function to execute the request we use Select2\'s convenient helper
|
||||
url: "../xmlhttp.php?action=get_users",
|
||||
dataType: \'json\',
|
||||
data: function (term, page) {
|
||||
return {
|
||||
query: term, // search term
|
||||
};
|
||||
},
|
||||
results: function (data, page) { // parse the results into the format expected by Select2.
|
||||
// since we are using custom formatting functions we do not need to alter remote JSON data
|
||||
return {results: data};
|
||||
}
|
||||
},
|
||||
initSelection: function(element, callback) {
|
||||
var query = $(element).val();
|
||||
if (query !== "") {
|
||||
$.ajax("../xmlhttp.php?action=get_users&getone=1", {
|
||||
data: {
|
||||
query: query
|
||||
},
|
||||
dataType: "json"
|
||||
}).done(function(data) { callback(data); });
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
$(\'[for=username]\').on(\'click\', function(){
|
||||
$("#username").select2(\'open\');
|
||||
return false;
|
||||
});
|
||||
// -->
|
||||
</script>';
|
||||
|
||||
$buttons[] = $form->generate_submit_button($lang->ban_user);
|
||||
$buttons[] = $form->generate_submit_button($lang->search_for_a_user, array('name' => 'search'));
|
||||
$form->output_submit_wrapper($buttons);
|
||||
$form->end();
|
||||
|
||||
echo '<br />';
|
||||
|
||||
$table = new Table;
|
||||
$table->construct_header($lang->user);
|
||||
$table->construct_header($lang->ban_lifts_on, array("class" => "align_center", "width" => 150));
|
||||
$table->construct_header($lang->time_left, array("class" => "align_center", "width" => 150));
|
||||
$table->construct_header($lang->controls, array("class" => "align_center", "colspan" => 2, "width" => 200));
|
||||
$table->construct_header($lang->moderation, array("class" => "align_center", "colspan" => 1, "width" => 200));
|
||||
|
||||
// Fetch bans
|
||||
$query = $db->query("
|
||||
SELECT b.*, a.username AS adminuser, u.username
|
||||
FROM ".TABLE_PREFIX."banned b
|
||||
LEFT JOIN ".TABLE_PREFIX."users u ON (b.uid=u.uid)
|
||||
LEFT JOIN ".TABLE_PREFIX."users a ON (b.admin=a.uid)
|
||||
{$where_sql_full}
|
||||
ORDER BY dateline DESC
|
||||
LIMIT {$start}, {$per_page}
|
||||
");
|
||||
|
||||
// Get the banned users
|
||||
while($ban = $db->fetch_array($query))
|
||||
{
|
||||
$profile_link = build_profile_link(htmlspecialchars_uni($ban['username']), $ban['uid'], "_blank");
|
||||
$ban_date = my_date($mybb->settings['dateformat'], $ban['dateline']);
|
||||
if($ban['lifted'] == 'perm' || $ban['lifted'] == '' || $ban['bantime'] == 'perm' || $ban['bantime'] == '---')
|
||||
{
|
||||
$ban_period = $lang->permenantly;
|
||||
$time_remaining = $lifts_on = $lang->na;
|
||||
}
|
||||
else
|
||||
{
|
||||
$ban_period = $lang->for." ".$ban_times[$ban['bantime']];
|
||||
|
||||
$remaining = $ban['lifted']-TIME_NOW;
|
||||
$time_remaining = nice_time($remaining, array('short' => 1, 'seconds' => false))."";
|
||||
|
||||
if($remaining < 3600)
|
||||
{
|
||||
$time_remaining = "<span style=\"color: red;\">{$time_remaining}</span>";
|
||||
}
|
||||
else if($remaining < 86400)
|
||||
{
|
||||
$time_remaining = "<span style=\"color: maroon;\">{$time_remaining}</span>";
|
||||
}
|
||||
else if($remaining < 604800)
|
||||
{
|
||||
$time_remaining = "<span style=\"color: green;\">{$time_remaining}</span>";
|
||||
}
|
||||
|
||||
$lifts_on = my_date($mybb->settings['dateformat'], $ban['lifted']);
|
||||
}
|
||||
|
||||
if(!$ban['adminuser'])
|
||||
{
|
||||
if($ban['admin'] == 0)
|
||||
{
|
||||
$ban['adminuser'] = $lang->mybb_engine;
|
||||
}
|
||||
else
|
||||
{
|
||||
$ban['adminuser'] = $ban['admin'];
|
||||
}
|
||||
}
|
||||
|
||||
$table->construct_cell($lang->sprintf($lang->bannedby_x_on_x, $profile_link, htmlspecialchars_uni($ban['adminuser']), $ban_date, $ban_period));
|
||||
$table->construct_cell($lifts_on, array("class" => "align_center"));
|
||||
$table->construct_cell($time_remaining, array("class" => "align_center"));
|
||||
$table->construct_cell("<a href=\"index.php?module=user-banning&action=edit&uid={$ban['uid']}\">{$lang->edit}</a>", array("class" => "align_center"));
|
||||
$table->construct_cell("<a href=\"index.php?module=user-banning&action=lift&uid={$ban['uid']}&my_post_key={$mybb->post_code}\" onclick=\"return AdminCP.deleteConfirmation(this, '{$lang->confirm_lift_ban}');\">{$lang->lift}</a>", array("class" => "align_center"));
|
||||
$table->construct_cell("<a href=\"index.php?module=user-banning&action=prune&uid={$ban['uid']}&my_post_key={$mybb->post_code}\" onclick=\"return AdminCP.deleteConfirmation(this, '{$lang->confirm_prune}');\">{$lang->prune_threads_and_posts}</a>", array("class" => "align_center"));
|
||||
$table->construct_row();
|
||||
}
|
||||
|
||||
if($table->num_rows() == 0)
|
||||
{
|
||||
$table->construct_cell($lang->no_banned_users, array("colspan" => "6"));
|
||||
$table->construct_row();
|
||||
}
|
||||
$table->output($lang->banned_accounts);
|
||||
echo $pagination;
|
||||
|
||||
$page->output_footer();
|
||||
}
|
||||
775
webroot/forum/admin/modules/user/group_promotions.php
Normal file
775
webroot/forum/admin/modules/user/group_promotions.php
Normal file
@@ -0,0 +1,775 @@
|
||||
<?php
|
||||
/**
|
||||
* MyBB 1.8
|
||||
* Copyright 2014 MyBB Group, All Rights Reserved
|
||||
*
|
||||
* Website: http://www.mybb.com
|
||||
* License: http://www.mybb.com/about/license
|
||||
*
|
||||
*/
|
||||
|
||||
// Disallow direct access to this file for security reasons
|
||||
if(!defined("IN_MYBB"))
|
||||
{
|
||||
die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
|
||||
}
|
||||
|
||||
$page->add_breadcrumb_item($lang->user_group_promotions, "index.php?module=user-group_promotions");
|
||||
|
||||
$sub_tabs['usergroup_promotions'] = array(
|
||||
'title' => $lang->user_group_promotions,
|
||||
'link' => "index.php?module=user-group_promotions",
|
||||
'description' => $lang->user_group_promotions_desc
|
||||
);
|
||||
|
||||
$sub_tabs['add_promotion'] = array(
|
||||
'title' => $lang->add_new_promotion,
|
||||
'link' => "index.php?module=user-group_promotions&action=add",
|
||||
'description' => $lang->add_new_promotion_desc
|
||||
);
|
||||
|
||||
$sub_tabs['promotion_logs'] = array(
|
||||
'title' => $lang->view_promotion_logs,
|
||||
'link' => "index.php?module=user-group_promotions&action=logs",
|
||||
'description' => $lang->view_promotion_logs_desc
|
||||
);
|
||||
|
||||
$plugins->run_hooks("admin_user_group_promotions_begin");
|
||||
|
||||
if($mybb->input['action'] == "disable")
|
||||
{
|
||||
if($mybb->input['no'])
|
||||
{
|
||||
admin_redirect("index.php?module=user-group_promotions");
|
||||
}
|
||||
|
||||
if(!trim($mybb->input['pid']))
|
||||
{
|
||||
flash_message($lang->error_no_promo_id, 'error');
|
||||
admin_redirect("index.php?module=user-group_promotions");
|
||||
}
|
||||
|
||||
$query = $db->simple_select("promotions", "*", "pid='".$mybb->get_input('pid', MyBB::INPUT_INT)."'");
|
||||
$promotion = $db->fetch_array($query);
|
||||
|
||||
if(!$promotion['pid'])
|
||||
{
|
||||
flash_message($lang->error_invalid_promo_id, 'error');
|
||||
admin_redirect("index.php?module=user-group_promotions");
|
||||
}
|
||||
|
||||
$plugins->run_hooks("admin_user_group_promotions_disable");
|
||||
|
||||
if($mybb->request_method == "post")
|
||||
{
|
||||
$update_promotion = array(
|
||||
"enabled" => 0
|
||||
);
|
||||
|
||||
$plugins->run_hooks("admin_user_group_promotions_disable_commit");
|
||||
|
||||
$db->update_query("promotions", $update_promotion, "pid = '{$promotion['pid']}'");
|
||||
|
||||
// Log admin action
|
||||
log_admin_action($promotion['pid'], $promotion['title']);
|
||||
|
||||
flash_message($lang->success_promo_disabled, 'success');
|
||||
admin_redirect("index.php?module=user-group_promotions");
|
||||
}
|
||||
else
|
||||
{
|
||||
$page->output_confirm_action("index.php?module=user-group_promotions&action=disable&pid={$promotion['pid']}", $lang->confirm_promo_disable);
|
||||
}
|
||||
}
|
||||
|
||||
if($mybb->input['action'] == "delete")
|
||||
{
|
||||
if($mybb->input['no'])
|
||||
{
|
||||
admin_redirect("index.php?module=user-group_promotions");
|
||||
}
|
||||
|
||||
if(!trim($mybb->input['pid']))
|
||||
{
|
||||
flash_message($lang->error_no_promo_id, 'error');
|
||||
admin_redirect("index.php?module=user-group_promotions");
|
||||
}
|
||||
|
||||
$query = $db->simple_select("promotions", "*", "pid='".$mybb->get_input('pid', MyBB::INPUT_INT)."'");
|
||||
$promotion = $db->fetch_array($query);
|
||||
|
||||
if(!$promotion['pid'])
|
||||
{
|
||||
flash_message($lang->error_invalid_promo_id, 'error');
|
||||
admin_redirect("index.php?module=user-group_promotions");
|
||||
}
|
||||
|
||||
$plugins->run_hooks("admin_user_group_promotions_delete");
|
||||
|
||||
if($mybb->request_method == "post")
|
||||
{
|
||||
$db->delete_query("promotions", "pid = '{$promotion['pid']}'");
|
||||
|
||||
$plugins->run_hooks("admin_user_group_promotions_delete_commit");
|
||||
|
||||
// Log admin action
|
||||
log_admin_action($promotion['pid'], $promotion['title']);
|
||||
|
||||
flash_message($lang->success_promo_deleted, 'success');
|
||||
admin_redirect("index.php?module=user-group_promotions");
|
||||
}
|
||||
else
|
||||
{
|
||||
$page->output_confirm_action("index.php?module=user-group_promotions&action=delete&pid={$mybb->input['pid']}", $lang->confirm_promo_deletion);
|
||||
}
|
||||
}
|
||||
|
||||
if($mybb->input['action'] == "enable")
|
||||
{
|
||||
if(!verify_post_check($mybb->input['my_post_key']))
|
||||
{
|
||||
flash_message($lang->invalid_post_verify_key2, 'error');
|
||||
admin_redirect("index.php?module=user-group_promotions");
|
||||
}
|
||||
|
||||
if(!trim($mybb->input['pid']))
|
||||
{
|
||||
flash_message($lang->error_no_promo_id, 'error');
|
||||
admin_redirect("index.php?module=user-group_promotions");
|
||||
}
|
||||
|
||||
$query = $db->simple_select("promotions", "*", "pid='".$mybb->get_input('pid', MyBB::INPUT_INT)."'");
|
||||
$promotion = $db->fetch_array($query);
|
||||
|
||||
if(!$promotion['pid'])
|
||||
{
|
||||
flash_message($lang->error_invalid_promo_id, 'error');
|
||||
admin_redirect("index.php?module=user-group_promotions");
|
||||
}
|
||||
|
||||
$plugins->run_hooks("admin_user_group_promotions_enable");
|
||||
|
||||
$update_promotion = array(
|
||||
"enabled" => 1
|
||||
);
|
||||
|
||||
$plugins->run_hooks("admin_user_group_promotions_enable_commit");
|
||||
|
||||
$db->update_query("promotions", $update_promotion, "pid = '{$promotion['pid']}'");
|
||||
|
||||
// Log admin action
|
||||
log_admin_action($promotion['pid'], $promotion['title']);
|
||||
|
||||
flash_message($lang->success_promo_enabled, 'success');
|
||||
admin_redirect("index.php?module=user-group_promotions");
|
||||
}
|
||||
|
||||
if($mybb->input['action'] == "edit")
|
||||
{
|
||||
if(!trim($mybb->input['pid']))
|
||||
{
|
||||
flash_message($lang->error_no_promo_id, 'error');
|
||||
admin_redirect("index.php?module=user-group_promotions");
|
||||
}
|
||||
|
||||
$query = $db->simple_select("promotions", "*", "pid='".$mybb->get_input('pid', MyBB::INPUT_INT)."'");
|
||||
$promotion = $db->fetch_array($query);
|
||||
|
||||
if(!$promotion)
|
||||
{
|
||||
flash_message($lang->error_invalid_promo_id, 'error');
|
||||
admin_redirect("index.php?module=user-group_promotions");
|
||||
}
|
||||
|
||||
$plugins->run_hooks("admin_user_group_promotions_edit");
|
||||
|
||||
if($mybb->request_method == "post")
|
||||
{
|
||||
if(!trim($mybb->input['title']))
|
||||
{
|
||||
$errors[] = $lang->error_no_title;
|
||||
}
|
||||
|
||||
if(!trim($mybb->input['description']))
|
||||
{
|
||||
$errors[] = $lang->error_no_desc;
|
||||
}
|
||||
|
||||
if(empty($mybb->input['requirements']))
|
||||
{
|
||||
$errors[] = $lang->error_no_requirements;
|
||||
}
|
||||
|
||||
if(empty($mybb->input['originalusergroup']))
|
||||
{
|
||||
$errors[] = $lang->error_no_orig_usergroup;
|
||||
}
|
||||
|
||||
if(!trim($mybb->input['newusergroup']))
|
||||
{
|
||||
$errors[] = $lang->error_no_new_usergroup;
|
||||
}
|
||||
|
||||
if(!trim($mybb->input['usergroupchangetype']))
|
||||
{
|
||||
$errors[] = $lang->error_no_usergroup_change_type;
|
||||
}
|
||||
|
||||
if(!$errors)
|
||||
{
|
||||
if(in_array('*', $mybb->input['originalusergroup']))
|
||||
{
|
||||
$mybb->input['originalusergroup'] = '*';
|
||||
}
|
||||
else
|
||||
{
|
||||
$mybb->input['originalusergroup'] = implode(',', array_map('intval', $mybb->input['originalusergroup']));
|
||||
}
|
||||
|
||||
$allowed_operators = array('>', '>=', '=', '<=', '<');
|
||||
$operator_fields = array('posttype', 'threadtype', 'reputationtype', 'referralstype', 'warningstype');
|
||||
|
||||
foreach($operator_fields as $field)
|
||||
{
|
||||
if(!in_array($mybb->get_input($field), $allowed_operators))
|
||||
{
|
||||
$mybb->input[$field] = '=';
|
||||
}
|
||||
}
|
||||
|
||||
$allowed_times = array('hours', 'days', 'weeks', 'months', 'years');
|
||||
$time_fields = array('timeregisteredtype', 'timeonlinetype');
|
||||
|
||||
foreach($time_fields as $field)
|
||||
{
|
||||
if(!in_array($mybb->get_input($field), $allowed_times))
|
||||
{
|
||||
$mybb->input[$field] = 'days';
|
||||
}
|
||||
}
|
||||
|
||||
$update_promotion = array(
|
||||
"title" => $db->escape_string($mybb->input['title']),
|
||||
"description" => $db->escape_string($mybb->input['description']),
|
||||
"posts" => $mybb->get_input('postcount', MyBB::INPUT_INT),
|
||||
"posttype" => $db->escape_string($mybb->input['posttype']),
|
||||
"threads" => $mybb->get_input('threadcount', MyBB::INPUT_INT),
|
||||
"threadtype" => $db->escape_string($mybb->input['threadtype']),
|
||||
"registered" => $mybb->get_input('timeregistered', MyBB::INPUT_INT),
|
||||
"registeredtype" => $db->escape_string($mybb->input['timeregisteredtype']),
|
||||
"online" => $mybb->get_input('timeonline', MyBB::INPUT_INT),
|
||||
"onlinetype" => $db->escape_string($mybb->input['timeonlinetype']),
|
||||
"reputations" => $mybb->get_input('reputationcount', MyBB::INPUT_INT),
|
||||
"reputationtype" => $db->escape_string($mybb->input['reputationtype']),
|
||||
"referrals" => $mybb->get_input('referrals', MyBB::INPUT_INT),
|
||||
"referralstype" => $db->escape_string($mybb->input['referralstype']),
|
||||
"warnings" => $mybb->get_input('warnings', MyBB::INPUT_INT),
|
||||
"warningstype" => $db->escape_string($mybb->input['warningstype']),
|
||||
"requirements" => $db->escape_string(implode(",", $mybb->input['requirements'])),
|
||||
"originalusergroup" => $db->escape_string($mybb->input['originalusergroup']),
|
||||
"newusergroup" => $mybb->get_input('newusergroup', MyBB::INPUT_INT),
|
||||
"usergrouptype" => $db->escape_string($mybb->input['usergroupchangetype']),
|
||||
"enabled" => $mybb->get_input('enabled', MyBB::INPUT_INT),
|
||||
"logging" => $mybb->get_input('logging', MyBB::INPUT_INT)
|
||||
);
|
||||
|
||||
$plugins->run_hooks("admin_user_group_promotions_edit_commit");
|
||||
|
||||
$db->update_query("promotions", $update_promotion, "pid = '{$promotion['pid']}'");
|
||||
|
||||
// Log admin action
|
||||
log_admin_action($promotion['pid'], $mybb->input['title']);
|
||||
|
||||
flash_message($lang->success_promo_updated, 'success');
|
||||
admin_redirect("index.php?module=user-group_promotions");
|
||||
}
|
||||
}
|
||||
|
||||
$page->add_breadcrumb_item($lang->edit_promotion);
|
||||
$page->output_header($lang->user_group_promotions." - ".$lang->edit_promotion);
|
||||
|
||||
$sub_tabs = array();
|
||||
$sub_tabs['edit_promotion'] = array(
|
||||
'title' => $lang->edit_promotion,
|
||||
'link' => "index.php?module=user-group_promotions&action=edit",
|
||||
'description' => $lang->edit_promotion_desc
|
||||
);
|
||||
|
||||
$page->output_nav_tabs($sub_tabs, 'edit_promotion');
|
||||
$form = new Form("index.php?module=user-group_promotions&action=edit", "post", "edit");
|
||||
echo $form->generate_hidden_field("pid", $promotion['pid']);
|
||||
if($errors)
|
||||
{
|
||||
$page->output_inline_error($errors);
|
||||
}
|
||||
else
|
||||
{
|
||||
$mybb->input['title'] = $promotion['title'];
|
||||
$mybb->input['description'] = $promotion['description'];
|
||||
$mybb->input['requirements'] = explode(',', $promotion['requirements']);
|
||||
$mybb->input['reputationcount'] = $promotion['reputations'];
|
||||
$mybb->input['reputationtype'] = $promotion['reputationtype'];
|
||||
$mybb->input['postcount'] = $promotion['posts'];
|
||||
$mybb->input['posttype'] = $promotion['posttype'];
|
||||
$mybb->input['threadcount'] = $promotion['threads'];
|
||||
$mybb->input['threadtype'] = $promotion['threadtype'];
|
||||
$mybb->input['referrals'] = $promotion['referrals'];
|
||||
$mybb->input['referralstype'] = $promotion['referralstype'];
|
||||
$mybb->input['warnings'] = $promotion['warnings'];
|
||||
$mybb->input['warningstype'] = $promotion['warningstype'];
|
||||
$mybb->input['timeregistered'] = $promotion['registered'];
|
||||
$mybb->input['timeregisteredtype'] = $promotion['registeredtype'];
|
||||
$mybb->input['timeonline'] = $promotion['online'];
|
||||
$mybb->input['timeonlinetype'] = $promotion['onlinetype'];
|
||||
$mybb->input['originalusergroup'] = explode(',', $promotion['originalusergroup']);
|
||||
$mybb->input['usergroupchangetype'] = $promotion['usergrouptype'];
|
||||
$mybb->input['newusergroup'] = $promotion['newusergroup'];
|
||||
$mybb->input['enabled'] = $promotion['enabled'];
|
||||
$mybb->input['logging'] = $promotion['logging'];
|
||||
}
|
||||
|
||||
$form_container = new FormContainer($lang->edit_promotion);
|
||||
$form_container->output_row($lang->title." <em>*</em>", "", $form->generate_text_box('title', $mybb->input['title'], array('id' => 'title')), 'title');
|
||||
$form_container->output_row($lang->short_desc." <em>*</em>", "", $form->generate_text_box('description', $mybb->input['description'], array('id' => 'description')), 'description');
|
||||
|
||||
$options = array(
|
||||
"postcount" => $lang->post_count,
|
||||
"threadcount" => $lang->thread_count,
|
||||
"reputation" => $lang->reputation,
|
||||
"referrals" => $lang->referrals,
|
||||
"warnings" => $lang->warning_points,
|
||||
"timeregistered" => $lang->time_registered,
|
||||
"timeonline" => $lang->time_online
|
||||
);
|
||||
|
||||
$form_container->output_row($lang->promo_requirements." <em>*</em>", $lang->promo_requirements_desc, $form->generate_select_box('requirements[]', $options, $mybb->input['requirements'], array('id' => 'requirements', 'multiple' => true, 'size' => 5)), 'requirements');
|
||||
|
||||
$options_type = array(
|
||||
">" => $lang->greater_than,
|
||||
">=" => $lang->greater_than_or_equal_to,
|
||||
"=" => $lang->equal_to,
|
||||
"<=" => $lang->less_than_or_equal_to,
|
||||
"<" => $lang->less_than
|
||||
);
|
||||
|
||||
$form_container->output_row($lang->post_count, $lang->post_count_desc, $form->generate_numeric_field('postcount', $mybb->input['postcount'], array('id' => 'postcount', 'min' => 0))." ".$form->generate_select_box("posttype", $options_type, $mybb->input['posttype'], array('id' => 'posttype')), 'postcount');
|
||||
|
||||
$form_container->output_row($lang->thread_count, $lang->thread_count_desc, $form->generate_numeric_field('threadcount', $mybb->input['threadcount'], array('id' => 'threadcount', 'min' => 0))." ".$form->generate_select_box("threadtype", $options_type, $mybb->input['threadtype'], array('id' => 'threadtype')), 'threadcount');
|
||||
|
||||
$form_container->output_row($lang->reputation_count, $lang->reputation_count_desc, $form->generate_numeric_field('reputationcount', $mybb->input['reputationcount'], array('id' => 'reputationcount', 'min' => 0))." ".$form->generate_select_box("reputationtype", $options_type, $mybb->input['reputationtype'], array('id' => 'reputationtype')), 'reputationcount');
|
||||
|
||||
$options = array(
|
||||
"hours" => $lang->hours,
|
||||
"days" => $lang->days,
|
||||
"weeks" => $lang->weeks,
|
||||
"months" => $lang->months,
|
||||
"years" => $lang->years
|
||||
);
|
||||
|
||||
$form_container->output_row($lang->referral_count, $lang->referral_count_desc, $form->generate_numeric_field('referrals', $mybb->input['referrals'], array('id' => 'referrals', 'min' => 0))." ".$form->generate_select_box("referralstype", $options_type, $mybb->input['referralstype'], array('id' => 'referralstype')), 'referrals');
|
||||
|
||||
$form_container->output_row($lang->warning_points, $lang->warning_points_desc, $form->generate_numeric_field('warnings', $mybb->input['warnings'], array('id' => 'warnings', 'min' => 0))." ".$form->generate_select_box("warningstype", $options_type, $mybb->input['warningstype'], array('id' => 'warningstype')), 'warnings');
|
||||
|
||||
$form_container->output_row($lang->time_registered, $lang->time_registered_desc, $form->generate_numeric_field('timeregistered', $mybb->input['timeregistered'], array('id' => 'timeregistered', 'min' => 0))." ".$form->generate_select_box("timeregisteredtype", $options, $mybb->input['timeregisteredtype'], array('id' => 'timeregisteredtype')), 'timeregistered');
|
||||
|
||||
$form_container->output_row($lang->time_online, $lang->time_online_desc, $form->generate_numeric_field('timeonline', $mybb->input['timeonline'], array('id' => 'timeonline', 'min' => 0))." ".$form->generate_select_box("timeonlinetype", $options, $mybb->input['timeonlinetype'], array('id' => 'timeonlinetype')), 'timeonline');
|
||||
|
||||
$options = array();
|
||||
|
||||
$query = $db->simple_select("usergroups", "gid, title", "gid != '1'", array('order_by' => 'title'));
|
||||
while($usergroup = $db->fetch_array($query))
|
||||
{
|
||||
$options[(int)$usergroup['gid']] = htmlspecialchars_uni($usergroup['title']);
|
||||
}
|
||||
|
||||
$form_container->output_row($lang->orig_user_group." <em>*</em>", $lang->orig_user_group_desc, $form->generate_select_box('originalusergroup[]', $options, $mybb->input['originalusergroup'], array('id' => 'originalusergroup', 'multiple' => true, 'size' => 5)), 'originalusergroup');
|
||||
|
||||
unset($options['*']); // Remove the all usergroups option
|
||||
$form_container->output_row($lang->new_user_group." <em>*</em>", $lang->new_user_group_desc, $form->generate_select_box('newusergroup', $options, $mybb->input['newusergroup'], array('id' => 'newusergroup')), 'newusergroup');
|
||||
|
||||
$options = array(
|
||||
'primary' => $lang->primary_user_group,
|
||||
'secondary' => $lang->secondary_user_group
|
||||
);
|
||||
|
||||
$form_container->output_row($lang->user_group_change_type." <em>*</em>", $lang->user_group_change_type_desc, $form->generate_select_box('usergroupchangetype', $options, $mybb->input['usergroupchangetype'], array('id' => 'usergroupchangetype')), 'usergroupchangetype');
|
||||
|
||||
$form_container->output_row($lang->enabled." <em>*</em>", "", $form->generate_yes_no_radio("enabled", $mybb->input['enabled'], true));
|
||||
|
||||
$form_container->output_row($lang->enable_logging." <em>*</em>", "", $form->generate_yes_no_radio("logging", $mybb->input['logging'], true));
|
||||
$form_container->end();
|
||||
|
||||
$buttons[] = $form->generate_submit_button($lang->update_promotion);
|
||||
|
||||
$form->output_submit_wrapper($buttons);
|
||||
$form->end();
|
||||
|
||||
$page->output_footer();
|
||||
}
|
||||
|
||||
if($mybb->input['action'] == "add")
|
||||
{
|
||||
$plugins->run_hooks("admin_user_group_promotions_add");
|
||||
|
||||
if($mybb->request_method == "post")
|
||||
{
|
||||
if(!trim($mybb->input['title']))
|
||||
{
|
||||
$errors[] = $lang->error_no_title;
|
||||
}
|
||||
|
||||
if(!trim($mybb->input['description']))
|
||||
{
|
||||
$errors[] = $lang->error_no_desc;
|
||||
}
|
||||
|
||||
if(empty($mybb->input['requirements']))
|
||||
{
|
||||
$errors[] = $lang->error_no_requirements;
|
||||
}
|
||||
|
||||
if(empty($mybb->input['originalusergroup']))
|
||||
{
|
||||
$errors[] = $lang->error_no_orig_usergroup;
|
||||
}
|
||||
|
||||
if(!trim($mybb->input['newusergroup']))
|
||||
{
|
||||
$errors[] = $lang->error_no_new_usergroup;
|
||||
}
|
||||
|
||||
if(!trim($mybb->input['usergroupchangetype']))
|
||||
{
|
||||
$errors[] = $lang->error_no_usergroup_change_type;
|
||||
}
|
||||
|
||||
if(!$errors)
|
||||
{
|
||||
if(in_array('*', $mybb->input['originalusergroup']))
|
||||
{
|
||||
$mybb->input['originalusergroup'] = '*';
|
||||
}
|
||||
else
|
||||
{
|
||||
$mybb->input['originalusergroup'] = implode(',', array_map('intval', $mybb->input['originalusergroup']));
|
||||
}
|
||||
|
||||
$allowed_operators = array('>', '>=', '=', '<=', '<');
|
||||
$operator_fields = array('posttype', 'threadtype', 'reputationtype', 'referralstype', 'warningstype');
|
||||
|
||||
foreach($operator_fields as $field)
|
||||
{
|
||||
if(!in_array($mybb->get_input($field), $allowed_operators))
|
||||
{
|
||||
$mybb->input[$field] = '=';
|
||||
}
|
||||
}
|
||||
|
||||
$allowed_times = array('hours', 'days', 'weeks', 'months', 'years');
|
||||
$time_fields = array('timeregisteredtype', 'timeonlinetype');
|
||||
|
||||
foreach($time_fields as $field)
|
||||
{
|
||||
if(!in_array($mybb->get_input($field), $allowed_times))
|
||||
{
|
||||
$mybb->input[$field] = 'days';
|
||||
}
|
||||
}
|
||||
|
||||
$new_promotion = array(
|
||||
"title" => $db->escape_string($mybb->input['title']),
|
||||
"description" => $db->escape_string($mybb->input['description']),
|
||||
"posts" => $mybb->get_input('postcount', MyBB::INPUT_INT),
|
||||
"posttype" => $db->escape_string($mybb->input['posttype']),
|
||||
"threads" => $mybb->get_input('threadcount', MyBB::INPUT_INT),
|
||||
"threadtype" => $db->escape_string($mybb->input['threadtype']),
|
||||
"registered" => $mybb->get_input('timeregistered', MyBB::INPUT_INT),
|
||||
"registeredtype" => $db->escape_string($mybb->input['timeregisteredtype']),
|
||||
"online" => $mybb->get_input('timeonline', MyBB::INPUT_INT),
|
||||
"onlinetype" => $db->escape_string($mybb->input['timeonlinetype']),
|
||||
"reputations" => $mybb->get_input('reputationcount', MyBB::INPUT_INT),
|
||||
"reputationtype" => $db->escape_string($mybb->input['reputationtype']),
|
||||
"referrals" => $mybb->get_input('referrals', MyBB::INPUT_INT),
|
||||
"referralstype" => $db->escape_string($mybb->input['referralstype']),
|
||||
"warnings" => $mybb->get_input('warnings', MyBB::INPUT_INT),
|
||||
"warningstype" => $db->escape_string($mybb->input['warningstype']),
|
||||
"requirements" => $db->escape_string(implode(",", $mybb->input['requirements'])),
|
||||
"originalusergroup" => $db->escape_string($mybb->input['originalusergroup']),
|
||||
"usergrouptype" => $db->escape_string($mybb->input['usergroupchangetype']),
|
||||
"newusergroup" => $mybb->get_input('newusergroup', MyBB::INPUT_INT),
|
||||
"enabled" => $mybb->get_input('enabled', MyBB::INPUT_INT),
|
||||
"logging" => $mybb->get_input('logging', MyBB::INPUT_INT)
|
||||
);
|
||||
|
||||
$pid = $db->insert_query("promotions", $new_promotion);
|
||||
|
||||
$plugins->run_hooks("admin_user_group_promotions_add_commit");
|
||||
|
||||
// Log admin action
|
||||
log_admin_action($pid, $mybb->input['title']);
|
||||
|
||||
flash_message($lang->success_promo_added, 'success');
|
||||
admin_redirect("index.php?module=user-group_promotions");
|
||||
}
|
||||
}
|
||||
$page->add_breadcrumb_item($lang->add_new_promotion);
|
||||
$page->output_header($lang->user_group_promotions." - ".$lang->add_new_promotion);
|
||||
|
||||
$sub_tabs['usergroup_promotions'] = array(
|
||||
'title' => $lang->user_group_promotions,
|
||||
'link' => "index.php?module=user-group_promotions"
|
||||
);
|
||||
|
||||
$sub_tabs['add_promotion'] = array(
|
||||
'title' => $lang->add_new_promotion,
|
||||
'link' => "index.php?module=user-group_promotions&action=add",
|
||||
'description' => $lang->add_new_promotion_desc
|
||||
);
|
||||
|
||||
$sub_tabs['promotion_logs'] = array(
|
||||
'title' => $lang->view_promotion_logs,
|
||||
'link' => "index.php?module=user-group_promotions&action=logs"
|
||||
);
|
||||
|
||||
$page->output_nav_tabs($sub_tabs, 'add_promotion');
|
||||
$form = new Form("index.php?module=user-group_promotions&action=add", "post", "add");
|
||||
if($errors)
|
||||
{
|
||||
$page->output_inline_error($errors);
|
||||
}
|
||||
else
|
||||
{
|
||||
$mybb->input['reputationcount'] = '0';
|
||||
$mybb->input['referrals'] = '0';
|
||||
$mybb->input['warnings'] = '0';
|
||||
$mybb->input['postcount'] = '0';
|
||||
$mybb->input['threadcount'] = '0';
|
||||
$mybb->input['timeregistered'] = '0';
|
||||
$mybb->input['timeregisteredtype'] = 'days';
|
||||
$mybb->input['timeonline'] = '0';
|
||||
$mybb->input['timeonlinetype'] = 'days';
|
||||
$mybb->input['originalusergroup'] = '*';
|
||||
$mybb->input['newusergroup'] = '2';
|
||||
$mybb->input['enabled'] = '1';
|
||||
$mybb->input['logging'] = '1';
|
||||
}
|
||||
$form_container = new FormContainer($lang->add_new_promotion);
|
||||
$form_container->output_row($lang->title." <em>*</em>", "", $form->generate_text_box('title', $mybb->input['title'], array('id' => 'title')), 'title');
|
||||
$form_container->output_row($lang->short_desc." <em>*</em>", "", $form->generate_text_box('description', $mybb->input['description'], array('id' => 'description')), 'description');
|
||||
|
||||
$options = array(
|
||||
"postcount" => $lang->post_count,
|
||||
"threadcount" => $lang->thread_count,
|
||||
"reputation" => $lang->reputation,
|
||||
"referrals" => $lang->referrals,
|
||||
"warnings" => $lang->warning_points,
|
||||
"timeregistered" => $lang->time_registered,
|
||||
"timeonline" => $lang->time_online
|
||||
);
|
||||
|
||||
$form_container->output_row($lang->promo_requirements." <em>*</em>", $lang->promo_requirements_desc, $form->generate_select_box('requirements[]', $options, $mybb->input['requirements'], array('id' => 'requirements', 'multiple' => true, 'size' => 5)), 'requirements');
|
||||
|
||||
$options_type = array(
|
||||
">" => $lang->greater_than,
|
||||
">=" => $lang->greater_than_or_equal_to,
|
||||
"=" => $lang->equal_to,
|
||||
"<=" => $lang->less_than_or_equal_to,
|
||||
"<" => $lang->less_than
|
||||
);
|
||||
|
||||
$form_container->output_row($lang->post_count, $lang->post_count_desc, $form->generate_numeric_field('postcount', $mybb->input['postcount'], array('id' => 'postcount', 'min' => 0))." ".$form->generate_select_box("posttype", $options_type, $mybb->input['posttype'], array('id' => 'posttype')), 'postcount');
|
||||
|
||||
$form_container->output_row($lang->thread_count, $lang->thread_count_desc, $form->generate_numeric_field('threadcount', $mybb->input['threadcount'], array('id' => 'threadcount', 'min' => 0))." ".$form->generate_select_box("threadtype", $options_type, $mybb->input['threadtype'], array('id' => 'threadtype')), 'threadcount');
|
||||
|
||||
$form_container->output_row($lang->reputation_count, $lang->reputation_count_desc, $form->generate_numeric_field('reputationcount', $mybb->input['reputationcount'], array('id' => 'reputationcount', 'min' => 0))." ".$form->generate_select_box("reputationtype", $options_type, $mybb->input['reputationtype'], array('id' => 'reputationtype')), 'reputationcount');
|
||||
|
||||
$options = array(
|
||||
"hours" => $lang->hours,
|
||||
"days" => $lang->days,
|
||||
"weeks" => $lang->weeks,
|
||||
"months" => $lang->months,
|
||||
"years" => $lang->years
|
||||
);
|
||||
|
||||
$form_container->output_row($lang->referral_count, $lang->referral_count_desc, $form->generate_numeric_field('referrals', $mybb->input['referrals'], array('id' => 'referrals', 'min' => 0))." ".$form->generate_select_box("referralstype", $options_type, $mybb->input['referralstype'], array('id' => 'referralstype')), 'referrals');
|
||||
|
||||
$form_container->output_row($lang->warning_points, $lang->warning_points_desc, $form->generate_numeric_field('warnings', $mybb->input['warnings'], array('id' => 'warnings', 'min' => 0))." ".$form->generate_select_box("warningstype", $options_type, $mybb->input['warningstype'], array('id' => 'warningstype')), 'warnings');
|
||||
|
||||
$form_container->output_row($lang->time_registered, $lang->time_registered_desc, $form->generate_numeric_field('timeregistered', $mybb->input['timeregistered'], array('id' => 'timeregistered', 'min' => 0))." ".$form->generate_select_box("timeregisteredtype", $options, $mybb->input['timeregisteredtype'], array('id' => 'timeregisteredtype')), 'timeregistered');
|
||||
|
||||
$form_container->output_row($lang->time_online, $lang->time_online_desc, $form->generate_numeric_field('timeonline', $mybb->input['timeonline'], array('id' => 'timeonline', 'min' => 0))." ".$form->generate_select_box("timeonlinetype", $options, $mybb->input['timeonlinetype'], array('id' => 'timeonlinetype')), 'timeonline');
|
||||
$options = array();
|
||||
|
||||
$query = $db->simple_select("usergroups", "gid, title", "gid != '1'", array('order_by' => 'title'));
|
||||
while($usergroup = $db->fetch_array($query))
|
||||
{
|
||||
$options[(int)$usergroup['gid']] = htmlspecialchars_uni($usergroup['title']);
|
||||
}
|
||||
|
||||
$form_container->output_row($lang->orig_user_group." <em>*</em>", $lang->orig_user_group_desc, $form->generate_select_box('originalusergroup[]', $options, $mybb->input['originalusergroup'], array('id' => 'originalusergroup', 'multiple' => true, 'size' => 5)), 'originalusergroup');
|
||||
|
||||
unset($options['*']);
|
||||
$form_container->output_row($lang->new_user_group." <em>*</em>", $lang->new_user_group_desc, $form->generate_select_box('newusergroup', $options, $mybb->input['newusergroup'], array('id' => 'newusergroup')), 'newusergroup');
|
||||
|
||||
$options = array(
|
||||
'primary' => $lang->primary_user_group,
|
||||
'secondary' => $lang->secondary_user_group
|
||||
);
|
||||
|
||||
$form_container->output_row($lang->user_group_change_type." <em>*</em>", $lang->user_group_change_type_desc, $form->generate_select_box('usergroupchangetype', $options, $mybb->input['usergroupchangetype'], array('id' => 'usergroupchangetype')), 'usergroupchangetype');
|
||||
|
||||
$form_container->output_row($lang->enabled." <em>*</em>", "", $form->generate_yes_no_radio("enabled", $mybb->input['enabled'], true));
|
||||
|
||||
$form_container->output_row($lang->enable_logging." <em>*</em>", "", $form->generate_yes_no_radio("logging", $mybb->input['logging'], true));
|
||||
$form_container->end();
|
||||
|
||||
$buttons[] = $form->generate_submit_button($lang->update_promotion);
|
||||
|
||||
$form->output_submit_wrapper($buttons);
|
||||
$form->end();
|
||||
|
||||
$page->output_footer();
|
||||
}
|
||||
|
||||
if($mybb->input['action'] == "logs")
|
||||
{
|
||||
$plugins->run_hooks("admin_user_group_promotions_logs");
|
||||
|
||||
$query = $db->simple_select("promotionlogs", "COUNT(plid) as promotionlogs");
|
||||
$total_rows = $db->fetch_field($query, "promotionlogs");
|
||||
|
||||
if($mybb->get_input('page', MyBB::INPUT_INT) > 1)
|
||||
{
|
||||
$mybb->input['page'] = $mybb->get_input('page', MyBB::INPUT_INT);
|
||||
$start = ($mybb->input['page']*20)-20;
|
||||
$pages = ceil($total_rows / 20);
|
||||
if($mybb->input['page'] > $pages)
|
||||
{
|
||||
$mybb->input['page'] = 1;
|
||||
$start = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$mybb->input['page'] = 1;
|
||||
$start = 0;
|
||||
}
|
||||
|
||||
$page->add_breadcrumb_item($lang->promotion_logs);
|
||||
$page->output_header($lang->user_group_promotions." - ".$lang->promotion_logs);
|
||||
|
||||
$page->output_nav_tabs($sub_tabs, 'promotion_logs');
|
||||
|
||||
$table = new Table;
|
||||
$table->construct_header($lang->promoted_user, array("class" => "align_center", "width" => '20%'));
|
||||
$table->construct_header($lang->user_group_change_type, array("class" => "align_center", "width" => '20%'));
|
||||
$table->construct_header($lang->orig_user_group, array("class" => "align_center", "width" => '20%'));
|
||||
$table->construct_header($lang->new_user_group, array("class" => "align_center", "width" => '20%'));
|
||||
$table->construct_header($lang->time_promoted, array("class" => "align_center", "width" => '20%'));
|
||||
|
||||
$query = $db->query("
|
||||
SELECT pl.*,u.username
|
||||
FROM ".TABLE_PREFIX."promotionlogs pl
|
||||
LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=pl.uid)
|
||||
ORDER BY dateline DESC
|
||||
LIMIT {$start}, 20
|
||||
");
|
||||
while($log = $db->fetch_array($query))
|
||||
{
|
||||
$log['username'] = "<a href=\"index.php?module=user-view&action=edit&uid={$log['uid']}\">".htmlspecialchars_uni($log['username'])."</a>";
|
||||
|
||||
if($log['type'] == "secondary" || (!empty($log['oldusergroup']) && strstr(",", $log['oldusergroup'])))
|
||||
{
|
||||
$log['oldusergroup'] = "<i>".$lang->multiple_usergroups."</i>";
|
||||
$log['newusergroup'] = htmlspecialchars_uni($groupscache[$log['newusergroup']]['title']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$log['oldusergroup'] = htmlspecialchars_uni($groupscache[$log['oldusergroup']]['title']);
|
||||
$log['newusergroup'] = htmlspecialchars_uni($groupscache[$log['newusergroup']]['title']);
|
||||
}
|
||||
|
||||
if($log['type'] == "secondary")
|
||||
{
|
||||
$log['type'] = $lang->secondary;
|
||||
}
|
||||
else
|
||||
{
|
||||
$log['type'] = $lang->primary;
|
||||
}
|
||||
|
||||
$log['dateline'] = my_date('relative', $log['dateline']);
|
||||
$table->construct_cell($log['username']);
|
||||
$table->construct_cell($log['type'], array('style' => 'text-align: center;'));
|
||||
$table->construct_cell($log['oldusergroup'], array('style' => 'text-align: center;'));
|
||||
$table->construct_cell($log['newusergroup'], array('style' => 'text-align: center;'));
|
||||
$table->construct_cell($log['dateline'], array('style' => 'text-align: center;'));
|
||||
$table->construct_row();
|
||||
}
|
||||
|
||||
if($table->num_rows() == 0)
|
||||
{
|
||||
$table->construct_cell($lang->no_promotion_logs, array("colspan" => "5"));
|
||||
$table->construct_row();
|
||||
}
|
||||
|
||||
$table->output($lang->promotion_logs);
|
||||
|
||||
echo "<br />".draw_admin_pagination($mybb->input['page'], "20", $total_rows, "index.php?module=user-group_promotions&action=logs&page={page}");
|
||||
|
||||
$page->output_footer();
|
||||
}
|
||||
|
||||
if(!$mybb->input['action'])
|
||||
{
|
||||
$plugins->run_hooks("admin_user_group_promotions_start");
|
||||
|
||||
$page->output_header($lang->promotion_manager);
|
||||
|
||||
$page->output_nav_tabs($sub_tabs, 'usergroup_promotions');
|
||||
|
||||
$table = new Table;
|
||||
$table->construct_header($lang->promotion);
|
||||
$table->construct_header($lang->controls, array("class" => "align_center", "width" => 150));
|
||||
|
||||
$query = $db->simple_select("promotions", "*", "", array("order_by" => "title", "order_dir" => "asc"));
|
||||
while($promotion = $db->fetch_array($query))
|
||||
{
|
||||
$promotion['title'] = htmlspecialchars_uni($promotion['title']);
|
||||
$promotion['description'] = htmlspecialchars_uni($promotion['description']);
|
||||
if($promotion['enabled'] == 1)
|
||||
{
|
||||
$icon = "<img src=\"styles/{$page->style}/images/icons/bullet_on.png\" alt=\"({$lang->alt_enabled})\" title=\"{$lang->alt_enabled}\" style=\"vertical-align: middle;\" /> ";
|
||||
}
|
||||
else
|
||||
{
|
||||
$icon = "<img src=\"styles/{$page->style}/images/icons/bullet_off.png\" alt=\"({$lang->alt_disabled})\" title=\"{$lang->alt_disabled}\" style=\"vertical-align: middle;\" /> ";
|
||||
}
|
||||
|
||||
$table->construct_cell("<div>{$icon}<strong><a href=\"index.php?module=user-group_promotions&action=edit&pid={$promotion['pid']}\">{$promotion['title']}</a></strong><br /><small>{$promotion['description']}</small></div>");
|
||||
|
||||
$popup = new PopupMenu("promotion_{$promotion['pid']}", $lang->options);
|
||||
$popup->add_item($lang->edit_promotion, "index.php?module=user-group_promotions&action=edit&pid={$promotion['pid']}");
|
||||
if($promotion['enabled'] == 1)
|
||||
{
|
||||
$popup->add_item($lang->disable_promotion, "index.php?module=user-group_promotions&action=disable&pid={$promotion['pid']}&my_post_key={$mybb->post_code}", "return AdminCP.deleteConfirmation(this, '{$lang->confirm_promo_disable}')");
|
||||
}
|
||||
else
|
||||
{
|
||||
$popup->add_item($lang->enable_promotion, "index.php?module=user-group_promotions&action=enable&pid={$promotion['pid']}&my_post_key={$mybb->post_code}");
|
||||
}
|
||||
$popup->add_item($lang->delete_promotion, "index.php?module=user-group_promotions&action=delete&pid={$promotion['pid']}&my_post_key={$mybb->post_code}", "return AdminCP.deleteConfirmation(this, '{$lang->confirm_promo_deletion}')");
|
||||
$table->construct_cell($popup->fetch(), array("class" => "align_center"));
|
||||
$table->construct_row();
|
||||
}
|
||||
|
||||
if($table->num_rows() == 0)
|
||||
{
|
||||
$table->construct_cell($lang->no_promotions_set, array("colspan" => "2"));
|
||||
$table->construct_row();
|
||||
}
|
||||
|
||||
$table->output($lang->user_group_promotions);
|
||||
|
||||
$page->output_footer();
|
||||
}
|
||||
1564
webroot/forum/admin/modules/user/groups.php
Normal file
1564
webroot/forum/admin/modules/user/groups.php
Normal file
File diff suppressed because it is too large
Load Diff
8
webroot/forum/admin/modules/user/index.html
Normal file
8
webroot/forum/admin/modules/user/index.html
Normal file
@@ -0,0 +1,8 @@
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
1668
webroot/forum/admin/modules/user/mass_mail.php
Normal file
1668
webroot/forum/admin/modules/user/mass_mail.php
Normal file
File diff suppressed because it is too large
Load Diff
97
webroot/forum/admin/modules/user/module_meta.php
Normal file
97
webroot/forum/admin/modules/user/module_meta.php
Normal file
@@ -0,0 +1,97 @@
|
||||
<?php
|
||||
/**
|
||||
* MyBB 1.8
|
||||
* Copyright 2014 MyBB Group, All Rights Reserved
|
||||
*
|
||||
* Website: http://www.mybb.com
|
||||
* License: http://www.mybb.com/about/license
|
||||
*
|
||||
*/
|
||||
|
||||
// Disallow direct access to this file for security reasons
|
||||
if(!defined("IN_MYBB"))
|
||||
{
|
||||
die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool true
|
||||
*/
|
||||
function user_meta()
|
||||
{
|
||||
global $page, $lang, $plugins;
|
||||
|
||||
$sub_menu = array();
|
||||
$sub_menu['10'] = array("id" => "users", "title" => $lang->users, "link" => "index.php?module=user-users");
|
||||
$sub_menu['20'] = array("id" => "awaiting_activation", "title" => $lang->awaiting_activation, "link" => "index.php?module=user-awaiting_activation");
|
||||
$sub_menu['30'] = array("id" => "groups", "title" => $lang->groups, "link" => "index.php?module=user-groups");
|
||||
$sub_menu['40'] = array("id" => "titles", "title" => $lang->user_titles, "link" => "index.php?module=user-titles");
|
||||
$sub_menu['50'] = array("id" => "banning", "title" => $lang->banning, "link" => "index.php?module=user-banning");
|
||||
$sub_menu['60'] = array("id" => "admin_permissions", "title" => $lang->admin_permissions, "link" => "index.php?module=user-admin_permissions");
|
||||
$sub_menu['70'] = array("id" => "mass_mail", "title" => $lang->mass_mail, "link" => "index.php?module=user-mass_mail");
|
||||
$sub_menu['80'] = array("id" => "group_promotions", "title" => $lang->group_promotions, "link" => "index.php?module=user-group_promotions");
|
||||
|
||||
$sub_menu = $plugins->run_hooks("admin_user_menu", $sub_menu);
|
||||
|
||||
$page->add_menu_item($lang->users_and_groups, "user", "index.php?module=user", 30, $sub_menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $action
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function user_action_handler($action)
|
||||
{
|
||||
global $page, $lang, $plugins;
|
||||
|
||||
$page->active_module = "user";
|
||||
|
||||
$actions = array(
|
||||
'awaiting_activation' => array('active' => 'awaiting_activation', 'file' => 'awaiting_activation.php'),
|
||||
'group_promotions' => array('active' => 'group_promotions', 'file' => 'group_promotions.php'),
|
||||
'admin_permissions' => array('active' => 'admin_permissions', 'file' => 'admin_permissions.php'),
|
||||
'titles' => array('active' => 'titles', 'file' => 'titles.php'),
|
||||
'banning' => array('active' => 'banning', 'file' => 'banning.php'),
|
||||
'groups' => array('active' => 'groups', 'file' => 'groups.php'),
|
||||
'mass_mail' => array('active' => 'mass_mail', 'file' => 'mass_mail.php'),
|
||||
'users' => array('active' => 'users', 'file' => 'users.php')
|
||||
);
|
||||
|
||||
$actions = $plugins->run_hooks("admin_user_action_handler", $actions);
|
||||
|
||||
if(isset($actions[$action]))
|
||||
{
|
||||
$page->active_action = $actions[$action]['active'];
|
||||
return $actions[$action]['file'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$page->active_action = "users";
|
||||
return "users.php";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
function user_admin_permissions()
|
||||
{
|
||||
global $lang, $plugins;
|
||||
|
||||
$admin_permissions = array(
|
||||
"users" => $lang->can_manage_users,
|
||||
"awaiting_activation" => $lang->can_manage_awaiting_activation,
|
||||
"groups" => $lang->can_manage_user_groups,
|
||||
"titles" => $lang->can_manage_user_titles,
|
||||
"banning" => $lang->can_manage_user_bans,
|
||||
"admin_permissions" => $lang->can_manage_admin_permissions,
|
||||
"mass_mail" => $lang->can_send_mass_mail,
|
||||
"group_promotions" => $lang->can_manage_group_promotions
|
||||
);
|
||||
|
||||
$admin_permissions = $plugins->run_hooks("admin_user_permissions", $admin_permissions);
|
||||
|
||||
return array("name" => $lang->users_and_groups, "permissions" => $admin_permissions, "disporder" => 30);
|
||||
}
|
||||
280
webroot/forum/admin/modules/user/titles.php
Normal file
280
webroot/forum/admin/modules/user/titles.php
Normal file
@@ -0,0 +1,280 @@
|
||||
<?php
|
||||
/**
|
||||
* MyBB 1.8
|
||||
* Copyright 2014 MyBB Group, All Rights Reserved
|
||||
*
|
||||
* Website: http://www.mybb.com
|
||||
* License: http://www.mybb.com/about/license
|
||||
*
|
||||
*/
|
||||
|
||||
// Disallow direct access to this file for security reasons
|
||||
if(!defined("IN_MYBB"))
|
||||
{
|
||||
die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
|
||||
}
|
||||
|
||||
$page->add_breadcrumb_item($lang->user_titles, "index.php?module=user-titles");
|
||||
|
||||
if($mybb->input['action'] == "add" || !$mybb->input['action'])
|
||||
{
|
||||
$sub_tabs['manage_titles'] = array(
|
||||
'title' => $lang->user_titles,
|
||||
'link' => "index.php?module=user-titles",
|
||||
'description' => $lang->user_titles_desc
|
||||
);
|
||||
$sub_tabs['add_title'] = array(
|
||||
'title' => $lang->add_new_user_title,
|
||||
'link' => "index.php?module=user-titles&action=add",
|
||||
'description' => $lang->add_new_user_title_desc
|
||||
);
|
||||
}
|
||||
|
||||
$plugins->run_hooks("admin_user_titles_begin");
|
||||
|
||||
if($mybb->input['action'] == "add")
|
||||
{
|
||||
$plugins->run_hooks("admin_user_titles_add");
|
||||
|
||||
if($mybb->request_method == "post")
|
||||
{
|
||||
if(!trim($mybb->input['title']))
|
||||
{
|
||||
$errors[] = $lang->error_missing_title;
|
||||
}
|
||||
|
||||
if(!isset($mybb->input['posts']))
|
||||
{
|
||||
$errors[] = $lang->error_missing_posts;
|
||||
}
|
||||
|
||||
$query = $db->simple_select("usertitles", "utid", "posts= '".$mybb->get_input('posts', MyBB::INPUT_INT)."'");
|
||||
if($db->num_rows($query))
|
||||
{
|
||||
$errors[] = $lang->error_cannot_have_same_posts;
|
||||
}
|
||||
|
||||
if(!$errors)
|
||||
{
|
||||
$new_title = array(
|
||||
"title" => $db->escape_string($mybb->input['title']),
|
||||
"posts" => $mybb->get_input('posts', MyBB::INPUT_INT),
|
||||
"stars" => $mybb->get_input('stars', MyBB::INPUT_INT),
|
||||
"starimage" => $db->escape_string($mybb->input['starimage'])
|
||||
);
|
||||
|
||||
$utid = $db->insert_query("usertitles", $new_title);
|
||||
|
||||
$plugins->run_hooks("admin_user_titles_add_commit");
|
||||
|
||||
$cache->update_usertitles();
|
||||
|
||||
// Log admin action
|
||||
log_admin_action($utid, $mybb->input['title'], $mybb->input['posts']);
|
||||
|
||||
flash_message($lang->success_user_title_created, 'success');
|
||||
admin_redirect("index.php?module=user-titles");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$mybb->input = array_merge($mybb->input, array(
|
||||
'stars' => '1',
|
||||
'starimage' => '{theme}/star.png',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$page->add_breadcrumb_item($lang->add_new_user_title);
|
||||
$page->output_header($lang->user_titles." - ".$lang->add_new_user_title);
|
||||
|
||||
$page->output_nav_tabs($sub_tabs, 'add_title');
|
||||
$form = new Form("index.php?module=user-titles&action=add", "post");
|
||||
|
||||
|
||||
if($errors)
|
||||
{
|
||||
$page->output_inline_error($errors);
|
||||
}
|
||||
|
||||
$form_container = new FormContainer($lang->add_new_user_title);
|
||||
$form_container->output_row($lang->title_to_assign."<em>*</em>", $lang->title_to_assign_desc, $form->generate_text_box('title', $mybb->input['title'], array('id' => 'title')), 'title');
|
||||
$form_container->output_row($lang->minimum_posts, $lang->minimum_posts_desc, $form->generate_numeric_field('posts', $mybb->input['posts'], array('id' => 'posts', 'min' => 0)), 'posts');
|
||||
$form_container->output_row($lang->number_of_stars, $lang->number_of_stars_desc, $form->generate_numeric_field('stars', $mybb->input['stars'], array('id' => 'stars', 'min' => 0)), 'stars');
|
||||
$form_container->output_row($lang->star_image, $lang->star_image_desc, $form->generate_text_box('starimage', $mybb->input['starimage'], array('id' => 'starimage')), 'starimage');
|
||||
$form_container->end();
|
||||
|
||||
$buttons[] = $form->generate_submit_button($lang->save_user_title);
|
||||
|
||||
$form->output_submit_wrapper($buttons);
|
||||
$form->end();
|
||||
|
||||
$page->output_footer();
|
||||
}
|
||||
|
||||
if($mybb->input['action'] == "edit")
|
||||
{
|
||||
$query = $db->simple_select("usertitles", "*", "utid='".$mybb->get_input('utid', MyBB::INPUT_INT)."'");
|
||||
$usertitle = $db->fetch_array($query);
|
||||
|
||||
if(!$usertitle['utid'])
|
||||
{
|
||||
flash_message($lang->error_invalid_user_title, 'error');
|
||||
admin_redirect("index.php?module=user-titles");
|
||||
}
|
||||
|
||||
$plugins->run_hooks("admin_user_titles_edit");
|
||||
|
||||
if($mybb->request_method == "post")
|
||||
{
|
||||
if(!trim($mybb->input['title']))
|
||||
{
|
||||
$errors[] = $lang->error_missing_title;
|
||||
}
|
||||
|
||||
if(!isset($mybb->input['posts']))
|
||||
{
|
||||
$errors[] = $lang->error_missing_posts;
|
||||
}
|
||||
|
||||
$query = $db->simple_select("usertitles", "utid", "posts= '".$mybb->get_input('posts', MyBB::INPUT_INT)."' AND utid!= '".$mybb->get_input('utid', MyBB::INPUT_INT)."'");
|
||||
if($db->num_rows($query))
|
||||
{
|
||||
$errors[] = $lang->error_cannot_have_same_posts;
|
||||
}
|
||||
|
||||
if(!$errors)
|
||||
{
|
||||
$updated_title = array(
|
||||
"title" => $db->escape_string($mybb->input['title']),
|
||||
"posts" => $mybb->get_input('posts', MyBB::INPUT_INT),
|
||||
"stars" => $mybb->get_input('stars', MyBB::INPUT_INT),
|
||||
"starimage" => $db->escape_string($mybb->input['starimage'])
|
||||
);
|
||||
|
||||
$plugins->run_hooks("admin_user_titles_edit_commit");
|
||||
|
||||
$db->update_query("usertitles", $updated_title, "utid='{$usertitle['utid']}'");
|
||||
|
||||
$cache->update_usertitles();
|
||||
|
||||
// Log admin action
|
||||
log_admin_action($usertitle['utid'], $mybb->input['title'], $mybb->input['posts']);
|
||||
|
||||
flash_message($lang->success_user_title_updated, 'success');
|
||||
admin_redirect("index.php?module=user-titles");
|
||||
}
|
||||
}
|
||||
|
||||
$page->add_breadcrumb_item($lang->edit_user_title);
|
||||
$page->output_header($lang->user_titles." - ".$lang->edit_user_title);
|
||||
|
||||
$sub_tabs['edit_title'] = array(
|
||||
'title' => $lang->edit_user_title,
|
||||
'link' => "index.php?module=user-titles&action=edit&utid=".$usertitle['utid'],
|
||||
'description' => $lang->edit_user_title_desc
|
||||
);
|
||||
|
||||
$page->output_nav_tabs($sub_tabs, 'edit_title');
|
||||
$form = new Form("index.php?module=user-titles&action=edit&utid={$usertitle['utid']}", "post");
|
||||
|
||||
|
||||
if($errors)
|
||||
{
|
||||
$page->output_inline_error($errors);
|
||||
}
|
||||
else
|
||||
{
|
||||
$mybb->input = array_merge($mybb->input, $usertitle);
|
||||
}
|
||||
|
||||
$form_container = new FormContainer($lang->edit_user_title);
|
||||
$form_container->output_row($lang->title_to_assign."<em>*</em>", $lang->title_to_assign_desc, $form->generate_text_box('title', $mybb->input['title'], array('id' => 'title')), 'title');
|
||||
$form_container->output_row($lang->minimum_posts, $lang->minimum_posts_desc, $form->generate_numeric_field('posts', $mybb->input['posts'], array('id' => 'posts', 'min' => 0)), 'posts');
|
||||
$form_container->output_row($lang->number_of_stars, $lang->number_of_stars_desc, $form->generate_numeric_field('stars', $mybb->input['stars'], array('id' => 'stars', 'min' => 0)), 'stars');
|
||||
$form_container->output_row($lang->star_image, $lang->star_image_desc, $form->generate_text_box('starimage', $mybb->input['starimage'], array('id' => 'starimage')), 'starimage');
|
||||
$form_container->end();
|
||||
|
||||
$buttons[] = $form->generate_submit_button($lang->save_user_title);
|
||||
|
||||
$form->output_submit_wrapper($buttons);
|
||||
$form->end();
|
||||
|
||||
$page->output_footer();
|
||||
|
||||
}
|
||||
|
||||
if($mybb->input['action'] == "delete")
|
||||
{
|
||||
$query = $db->simple_select("usertitles", "*", "utid='".$mybb->get_input('utid', MyBB::INPUT_INT)."'");
|
||||
$usertitle = $db->fetch_array($query);
|
||||
|
||||
if(!$usertitle['utid'])
|
||||
{
|
||||
flash_message($lang->error_invalid_user_title, 'error');
|
||||
admin_redirect("index.php?module=user-titles");
|
||||
}
|
||||
|
||||
// User clicked no
|
||||
if($mybb->input['no'])
|
||||
{
|
||||
admin_redirect("index.php?module=user-titles");
|
||||
}
|
||||
|
||||
$plugins->run_hooks("admin_user_titles_delete");
|
||||
|
||||
if($mybb->request_method == "post")
|
||||
{
|
||||
$db->delete_query("usertitles", "utid='{$usertitle['utid']}'");
|
||||
|
||||
$plugins->run_hooks("admin_user_titles_delete_commit");
|
||||
|
||||
$cache->update_usertitles();
|
||||
|
||||
// Log admin action
|
||||
log_admin_action($usertitle['utid'], $usertitle['title'], $usertitle['posts']);
|
||||
|
||||
flash_message($lang->success_user_title_deleted, 'success');
|
||||
admin_redirect("index.php?module=user-titles");
|
||||
}
|
||||
else
|
||||
{
|
||||
$page->output_confirm_action("index.php?module=user-titles&action=delete&utid={$usertitle['utid']}", $lang->user_title_deletion_confirmation);
|
||||
}
|
||||
}
|
||||
|
||||
if(!$mybb->input['action'])
|
||||
{
|
||||
$plugins->run_hooks("admin_user_titles_start");
|
||||
|
||||
$page->output_header($lang->manage_user_titles);
|
||||
|
||||
$page->output_nav_tabs($sub_tabs, 'manage_titles');
|
||||
|
||||
$table = new Table;
|
||||
$table->construct_header($lang->user_title);
|
||||
$table->construct_header($lang->minimum_posts, array('width' => '130', 'class' => 'align_center'));
|
||||
$table->construct_header($lang->controls, array("class" => "align_center", "colspan" => 2, "width" => 200));
|
||||
|
||||
$query = $db->simple_select("usertitles", "*", "", array('order_by' => 'posts'));
|
||||
while($usertitle = $db->fetch_array($query))
|
||||
{
|
||||
$usertitle['title'] = htmlspecialchars_uni($usertitle['title']);
|
||||
$table->construct_cell("<a href=\"index.php?module=user-titles&action=edit&utid={$usertitle['utid']}\"><strong>{$usertitle['title']}</strong></a>");
|
||||
$table->construct_cell($usertitle['posts'], array("class" => "align_center"));
|
||||
$table->construct_cell("<a href=\"index.php?module=user-titles&action=edit&utid={$usertitle['utid']}\">{$lang->edit}</a>", array("width" => 100, "class" => "align_center"));
|
||||
$table->construct_cell("<a href=\"index.php?module=user-titles&action=delete&utid={$usertitle['utid']}&my_post_key={$mybb->post_code}\" onclick=\"return AdminCP.deleteConfirmation(this, '{$lang->user_title_deletion_confirmation}')\">{$lang->delete}</a>", array("width" => 100, "class" => "align_center"));
|
||||
$table->construct_row();
|
||||
}
|
||||
|
||||
if($table->num_rows() == 0)
|
||||
{
|
||||
$table->construct_cell($lang->no_user_titles, array('colspan' => 4));
|
||||
$table->construct_row();
|
||||
$no_results = true;
|
||||
}
|
||||
|
||||
$table->output($lang->manage_user_titles);
|
||||
|
||||
$page->output_footer();
|
||||
}
|
||||
4308
webroot/forum/admin/modules/user/users.php
Normal file
4308
webroot/forum/admin/modules/user/users.php
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user