Please make sure IN_MYBB is defined.");
}
$plugins->add_hook('pre_output_page', 'modcp_link');
$plugins->add_hook("admin_index_navigation_end", "modcp_admin_nav");
$plugins->add_hook("admin_users_do_edit", "modcp_check_group");
$plugins->add_hook("admin_forums_do_addmod", "modcp_add_mod");
$plugins->add_hook("admin_forums_do_deletemod", "modcp_delete_mod");
// ######### Begin the Functions ##########
function modcp_info()
{
return array(
"name" => "Mod CP Plugin",
"description" => "A plugin that gives the Moderators their own Control Panel",
"website" => "http://www.mybboard.com",
"author" => "LegosJedi",
"authorsite" => "http://www.mybboard.com",
"version" => "1.0.4",
);
}
function modcp_activate()
{
global $db, $config;
// Erase previous settings
modcp_deactivate();
// Setup setting group
$setting_group = array(
'gid' => 'NULL',
'name' => 'modcp',
'title' => 'Mod CP',
'description' => 'Settings that will add a Mod CP, and give it certain privilages.',
'disporder' => '99',
'isdefault' => 'no'
);
$db->insert_query(TABLE_PREFIX."settinggroups", $setting_group);
$setting_gid = $db->insert_id();
// Setup settings
$setting_1 = array(
'name' => 'modcp_onoff',
'title' => "Mod CP - On/Off Switch",
'description' => 'This enables or disables the Mod CP.',
'optionscode' => 'onoff',
'value' => 'on',
'disporder' => 0,
'gid' => $setting_gid,
);
$setting_2 = array(
'name' => 'modcp_ban',
'title' => 'Mod CP - Ban User',
'description' => 'Can the Mod CP ban users?',
'optionscode' => 'yesno',
'value' => 'yes',
'disporder' => 1,
'gid' => $setting_gid,
);
$setting_3 = array(
'name' => 'modcp_announce',
'title' => 'Mod CP - Forum Announcements',
'description' => 'Can the Mod CP add forum announcements?',
'optionscode' => 'yesno',
'value' => 'yes',
'disporder' => 4,
'gid' => $setting_gid,
);
$setting_4 = array(
'name' => 'modcp_thread_queue',
'title' => 'Mod CP - Thread Queue',
'description' => 'Can the Mod CP setup a thread queue?',
'optionscode' => 'yesno',
'value' => 'yes',
'disporder' => 5,
'gid' => $setting_gid,
);
$setting_5 = array(
'name' => 'modcp_post_queue',
'title' => 'Mod CP - Post Queue',
'description' => 'Can the Mod CP setup a post queue?',
'optionscode' => 'yesno',
'value' => 'yes',
'disporder' => 6,
'gid' => $setting_gid,
);
$setting_6 = array(
'name' => 'modcp_attach_queue',
'title' => 'Mod CP - Attachment Queue',
'description' => 'Can the Mod CP setup an attachment queue?',
'optionscode' => 'yesno',
'value' => 'yes',
'disporder' => 7,
'gid' => $setting_gid,
);
// Insert settings
$db->insert_query(TABLE_PREFIX."settings", $setting_1);
$db->insert_query(TABLE_PREFIX."settings", $setting_2);
$db->insert_query(TABLE_PREFIX."settings", $setting_3);
$db->insert_query(TABLE_PREFIX."settings", $setting_4);
$db->insert_query(TABLE_PREFIX."settings", $setting_5);
$db->insert_query(TABLE_PREFIX."settings", $setting_6);
// Setup tables
$tables_1 = "CREATE TABLE ".TABLE_PREFIX."modoptions (
uid int(10) NOT NULL default '0',
cpstyle varchar(50) NOT NULL default '',
notes text NOT NULL default '',
permsset int(1) NOT NULL default '0',
caneditann char(3) NOT NULL default '',
canmodposts char(3) NOT NULL default '',
canban char(3) NOT NULL default '',
PRIMARY KEY (uid)
) TYPE=MyISAM;";
$tables_2 = "CREATE TABLE ".TABLE_PREFIX."modsessions (
sid varchar(32) NOT NULL default '',
uid int unsigned NOT NULL default '0',
loginkey varchar(50) NOT NULL default '',
ip varchar(40) NOT NULL default '',
dateline bigint(30) NOT NULL default '0',
lastactive bigint(30) NOT NULL default '0'
) TYPE=MyISAM;";
$tables_3 = "CREATE TABLE ".TABLE_PREFIX."modlog (
uid int unsigned NOT NULL default '0',
dateline bigint(30) NOT NULL default '0',
scriptname varchar(50) NOT NULL default '',
action varchar(50) NOT NULL default '',
querystring varchar(150) NOT NULL default '',
ipaddress varchar(50) NOT NULL default '',
KEY scriptname (scriptname, action)
) TYPE=MyISAM;";
// Create Tables
$db->query($tables_1);
$db->query($tables_2);
$db->query($tables_3);
// Populate new tables
$mods_query = $db->query("SELECT * FROM ".TABLE_PREFIX."users WHERE usergroup='3' OR usergroup='6'");
$moduids = array();
if($db->num_rows($mods_query) > 0)
{
while($mods = $db->fetch_array($mods_query))
{
if(!in_array($mods['uid'],$moduids))
{
$user = $db->query("SELECT * FROM ".TABLE_PREFIX."modoptions WHERE uid='".intval($mods['uid'])."'");
if($db->num_rows($user) <= 0)
{
$query = array(
'uid' => $mods['uid'],
'cpstyle' => 'Axiom',
'notes' => '',
'permsset' => '1',
'caneditann' => 'yes',
'canmodposts' => 'yes',
'canban' => 'yes',
);
$db->insert_query(TABLE_PREFIX.'modoptions', $query);
$moduids[] = $mods['uid'];
}
}
}
}
$mods_query = $db->query("SELECT * FROM ".TABLE_PREFIX."moderators");
if($db->num_rows($mods_query) > 0)
{
while($mods = $db->fetch_array($mods_query))
{
if(!in_array($mods['uid'],$moduids))
{
$user = $db->query("SELECT * FROM ".TABLE_PREFIX."modoptions WHERE uid='".$mods['uid']."'");
if($db->num_rows($user) > 0)
{
$query = array(
'uid' => $mods['uid'],
'cpstyle' => 'Axiom',
'notes' => '',
'permsset' => '1',
'caneditann' => 'yes',
'canmodposts' => 'yes',
'canban' => 'yes',
);
$db->insert_query(TABLE_PREFIX.'modoptions', $query);
$moduids[] = $mods['uid'];
}
}
}
}
// Setup new template
$template_1 = array(
"tid" => "NULL",
"title" => "header_welcomeblock_member_mod",
"template" => " — settings[\'bburl\']}/mod/index.php\">{\$lang->welcome_mod}",
"version" => $mybb->version_code,
"status" => "0",
"dateline" => time(),
"sid" => "-1"
);
// Insert new template
$db->insert_query(TABLE_PREFIX.'templates', $template_1);
rebuildsettings();
echo "";
}
function modcp_deactivate()
{
global $db;
$db->delete_query(TABLE_PREFIX."settinggroups", "name='modcp' OR name='Mod CP'");
$db->delete_query(TABLE_PREFIX."settings", "name='modcp_onoff'");
$db->delete_query(TABLE_PREFIX."settings", "name='modcp_ban'");
$db->delete_query(TABLE_PREFIX."settings", "name='modcp_announce'");
$db->delete_query(TABLE_PREFIX."settings", "name='modcp_thread_queue'");
$db->delete_query(TABLE_PREFIX."settings", "name='modcp_post_queue'");
$db->delete_query(TABLE_PREFIX."templates", "title='header_welcomeblock_member_mod'");
$db->query("DROP TABLE IF EXISTS ".TABLE_PREFIX."modoptions, ".TABLE_PREFIX."modsessions, ".TABLE_PREFIX."modlog");
rebuildsettings();
echo "";
}
function modcp_link($content)
{
global $mybb, $templates, $db, $lang;
$lang->load('mod/forum');
$query = $db->simple_select(TABLE_PREFIX."moderators", "*", "uid='{$mybb->user['uid']}'");
if(($mybb->usergroup['issupermod'] != 'no') || ($mybb->usergroup['cancp'] != 'no') || ($db->num_rows($query) > 0))
{
eval("\$modcplink = \"".$templates->get("header_welcomeblock_member_mod")."\";");
$content = str_ireplace(''.$lang->welcome_usercp.'', ''.$lang->welcome_usercp.''.$modcplink, $content);
}
}
function modcp_admin_nav()
{
global $menu, $mybb, $lang;
$language = $mybb->settings['bblanguage'];
if(!$lang->language_exists($language."/admin/modcp.lang.php"))
{
$language = 'english';
}
$lang->set_language($language, "admin");
$lang->load("modcp");
end($menu);
$key = key($menu)+10;
$menu[$key] = array(
"title" => $lang->modcp_admin,
"items" => array(
10 => array("title" => $lang->modcp_admin, "url" => "admin_modcp.php?".SID."&action=main"),
20 => array("title" => $lang->mod_options, "url" => "admin_modcp.php?".SID."&action=modpermissions"),
30 => array("title" => $lang->mod_logs, "url" => "admin_modcp.php?".SID."&action=logs"),
),
);
}
function modcp_check_group()
{
global $user, $db;
$mybbgroups = $user['usergroup'].",".$user['additionalgroups'];
$modgroup = usergroup_permissions($mybbgroups);
if($modgroup['issupermod'] == 'yes')
{
// Insert new settings for the user.
$query = array(
'uid' => $user['uid'],
'cpstyle' => 'Axiom',
'notes' => '',
'permsset' => '1',
'caneditann' => 'yes',
'canmodposts' => 'yes',
'canban' => 'yes',
);
$db->insert_query(TABLE_PREFIX.'modoptions', $query);
}
else
{
$query = $db->simple_select(TABLE_PREFIX.'modoptions', "*", "uid='".$user['uid']."'");
if($db->num_rows($query) > 0)
{
$query = $db->simple_select(TABLE_PREFIX."moderators", '*', "uid='".$user['uid']."'");
if($db->num_rows($query) <= 0)
{
$db->delete_query(TABLE_PREFIX."modoptions", "uid='".$user['uid']."'");
}
}
}
}
function modcp_add_mod()
{
global $newmod, $db;
$query = array(
'uid' => $newmod['uid'],
'cpstyle' => 'Axiom',
'notes' => '',
'permsset' => '1',
'caneditann' => 'yes',
'canmodposts' => 'yes',
'canban' => 'yes',
);
$db->insert_query(TABLE_PREFIX.'modoptions', $query);
}
function modcp_delete_mod()
{
global $mod, $db;
$db->delete_query(TABLE_PREFIX."modoptions", "uid='".$mod['uid']."'");
}
if(!function_exists('str_ireplace')) {
function str_ireplace($search,$replace,$subject) {
$token = chr(1);
$haystack = strtolower($subject);
$needle = strtolower($search);
while (($pos=strpos($haystack,$needle))!==FALSE) {
$subject = substr_replace($subject,$token,$pos,strlen($search));
$haystack = substr_replace($haystack,$token,$pos,strlen($search));
}
$subject = str_replace($token,$replace,$subject);
return $subject;
}
}
?>