Please make sure IN_MYBB is defined."); } //PLUGIN HOOKS $plugins->add_hook("pre_output_page", "fws_page"); $plugins->add_hook("postbit", "fws_postbit"); $plugins->add_hook("memberlist_user", "fws_memberlist"); $plugins->add_hook("global_start", "fws_checkbanned"); $plugins->add_hook("global_end", "fws_exp_check"); $plugins->add_hook("admin_index_navigation_end", "fws_nav"); $plugins->add_hook("admin_adminoptions_adminpermissions_yesnocodes", "fws_adminperms_yesnocode"); $plugins->add_hook("admin_adminoptions_do_updateperms", "fws_adminoptions_do_updateperms"); //PLUGIN INFORMATION function fws_info() { return array( "name" => 'Forum Warning System', "description" => "Send your members warnings if they don't follow the rules.", "website" => 'http://www.smethead.tk/', "author" => 'Smethead', "authorsite" => 'mailto:smethead@gmail.com', "version" => '1.1.2', "ei" => FALSE, "readme" => FALSE, "force_readme" => FALSE, "update" => 'http://smethead.louhabs.com/plugin_update.php', "update_download" => TRUE, ); } //PLUGIN ACTIVATE function fws_activate() { global $db, $mybb, $lang; $language = $mybb->settings['bblanguage']; if(!$lang->language_exists($language."/admin/fws.lang")) { $lang->set_language("english", "admin"); } $lang->load("fws"); $lang->set_language($mybb->settings['bblanguage']); //DELETE ALL SETTINGS TO AVOID DUPLICATES $db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE name IN( 'fws_first_bantime', 'fws_second_bantime', 'fws_third_bantime', 'fws_pm_sender', 'fws_backups', 'fws_warners', 'fws_extra_warners', 'fws_allow_empty_reasons', 'fws_show_on_memberlist', 'fws_exp_points', 'fws_warning_bar', 'fws_revert_points', 'fws_max_amount', 'fws_warn_warners', 'fws_memberlist_button', 'fws_public_levels' )"); $db->query("DELETE FROM ".TABLE_PREFIX."settinggroups WHERE name='fws'"); //DELETE ALL TEMPLATES TO AVOID DUPLICATES $db->query("DELETE FROM ".TABLE_PREFIX."templates WHERE title IN( 'fws_main', 'fws_add_warning', 'fws_empty_reason', 'fws_warning_bar', 'fws_types', 'fws_add_yourself' )"); //DELETE ALL CUSTOM FIELDS TO AVOID DUPLICATES $deletethem = "no"; if(fws_field_exists("fws_warnings", "users")) { $delete_query = "DROP fws_warnings"; $deletethem = "yes"; } if(fws_field_exists("fws_bans", "users")) { if($delete_query) $delete_query .= ", "; $delete_query .= "DROP fws_bans"; $deletethem = "yes"; } if(fws_field_exists("fws_last_exp_check", "users")) { if($delete_query) $delete_query .= ", "; $delete_query .= "DROP fws_last_exp_check"; $deletethem = "yes"; } if($deletethem == "yes") { $db->query("ALTER TABLE ".TABLE_PREFIX."users ".$delete_query); $deletethem = "no"; } if(fws_field_exists("can_manage_fws", "adminoptions")) { $delete_query_1 = "DROP can_manage_fws"; $deletethem = "yes"; } if($deletethem == "yes") { $db->query("ALTER TABLE ".TABLE_PREFIX."adminoptions ".$delete_query_1); $deletethem = "no"; } //ADD SETTINGS $fws_group = array( "gid" => NULL, "name" => "fws", "title" => "Forum Warning System", "description" => $db->escape_string($lang->fws_setting_group_description), "disporder" => "20", "isdefault" => "no", ); $db->insert_query(TABLE_PREFIX."settinggroups", $fws_group); $gid = $db->insert_id(); $fws_setting_1 = array( "sid" => NULL, "name" => "fws_allow_empty_reasons", "title" => $db->escape_string($lang->fws_setting_1), "description" => $db->escape_string($lang->fws_setting_1_description), "optionscode" => "yesno", "value" => "yes", "disporder" => "1", "gid" => intval($gid), ); $fws_setting_2 = array( "sid" => NULL, "name" => "fws_max_amount", "title" => $db->escape_string($lang->fws_setting_2), "description" => $db->escape_string($lang->fws_setting_2_description), "optionscode" => "text", "value" => "10", "disporder" => "2", "gid" => intval($gid), ); $fws_setting_3 = array( "sid" => NULL, "name" => "fws_show_on_memberlist", "title" => $db->escape_string($lang->fws_setting_3), "description" => $db->escape_string($lang->fws_setting_3_description), "optionscode" => "yesno", "value" => "yes", "disporder" => "3", "gid" => intval($gid), ); $fws_setting_4 = array( "sid" => NULL, "name" => "fws_memberlist_button", "title" => $db->escape_string($lang->fws_setting_4), "description" => $db->escape_string($lang->fws_setting_4_description), "optionscode" => "yesno", "value" => "yes", "disporder" => "4", "gid" => intval($gid), ); $fws_setting_5 = array( "sid" => NULL, "name" => "fws_warning_bar", "title" => $db->escape_string($lang->fws_setting_5), "description" => $db->escape_string($lang->fws_setting_5_description), "optionscode" => "yesno", "value" => "yes", "disporder" => "5", "gid" => intval($gid), ); $fws_setting_6 = array( "sid" => NULL, "name" => "fws_exp_points", "title" => $db->escape_string($lang->fws_setting_6), "description" => $db->escape_string($lang->fws_setting_6_description), "optionscode" => "text", "value" => "0.5;0.3;0.2;0.1", "disporder" => "6", "gid" => intval($gid), ); $fws_setting_7 = array( "sid" => NULL, "name" => "fws_first_bantime", "title" => $db->escape_string($lang->fws_setting_7), "description" => $db->escape_string($lang->fws_setting_7_description), "optionscode" => "select 1-0-0=1 Day 2-0-0=2 Days 3-0-0=3 Days 7-0-0=1 Week 14-0-0=2 Weeks 0-1-0=1 Month 0-2-0=2 Months 0-3-0=3 Months 0-6-0=6 Months 0-0-1=1 Year 0-0-2=2 Years perm=Permanently", "value" => "3-0-0", "disporder" => "7", "gid" => intval($gid), ); $fws_setting_8 = array( "sid" => NULL, "name" => "fws_second_bantime", "title" => $db->escape_string($lang->fws_setting_8), "description" => $db->escape_string($lang->fws_setting_8_description), "optionscode" => "select 1-0-0=1 Day 2-0-0=2 Days 3-0-0=3 Days 7-0-0=1 Week 14-0-0=2 Weeks 0-1-0=1 Month 0-2-0=2 Months 0-3-0=3 Months 0-6-0=6 Months 0-0-1=1 Year 0-0-2=2 Years perm=Permanently", "value" => "7-0-0", "disporder" => "8", "gid" => intval($gid), ); $fws_setting_9 = array( "sid" => NULL, "name" => "fws_third_bantime", "title" => $db->escape_string($lang->fws_setting_9), "description" => $db->escape_string($lang->fws_setting_9_description), "optionscode" => "select 1-0-0=1 Day 2-0-0=2 Days 3-0-0=3 Days 7-0-0=1 Week 14-0-0=2 Weeks 0-1-0=1 Month 0-2-0=2 Months 0-3-0=3 Months 0-6-0=6 Months 0-0-1=1 Year 0-0-2=2 Years perm=Permanently", "value" => "0-1-0", "disporder" => "9", "gid" => intval($gid), ); $fws_setting_10 = array( "sid" => NULL, "name" => "fws_revert_points", "title" => $db->escape_string($lang->fws_setting_10), "description" => $db->escape_string($lang->fws_setting_10_description), "optionscode" => "text", "value" => "75", "disporder" => "10", "gid" => intval($gid), ); $fws_setting_11 = array( "sid" => NULL, "name" => "fws_pm_sender", "title" => $db->escape_string($lang->fws_setting_11), "description" => $db->escape_string($lang->fws_setting_11_description), "optionscode" => "text", "value" => "", "disporder" => "11", "gid" => intval($gid), ); $fws_setting_12 = array( "sid" => NULL, "name" => "fws_warners", "title" => $db->escape_string($lang->fws_setting_12), "description" => $db->escape_string($lang->fws_setting_12_description), "optionscode" => "radio \'4\'=None \'4\';\'3\'=Super Moderators \'4\';\'6\';\'3\'=Moderators and Super Moderators", "value" => "\'4\';\'3\'", "disporder" => "12", "gid" => intval($gid), ); $fws_setting_13 = array( "sid" => NULL, "name" => "fws_extra_warners", "title" => $db->escape_string($lang->fws_setting_13), "description" => $db->escape_string($lang->fws_setting_13_description), "optionscode" => "text", "value" => "", "disporder" => "13", "gid" => intval($gid), ); $fws_setting_14 = array( "sid" => NULL, "name" => "fws_warn_warners", "title" => $db->escape_string($lang->fws_setting_14), "description" => $db->escape_string($lang->fws_setting_14_description), "optionscode" => "yesno", "value" => "no", "disporder" => "14", "gid" => intval($gid), ); $fws_setting_15 = array( "sid" => NULL, "name" => "fws_backups", "title" => $db->escape_string($lang->fws_setting_15), "description" => $db->escape_string($lang->fws_setting_15_description), "optionscode" => "onoff", "value" => "on", "disporder" => "16", "gid" => intval($gid), ); $fws_setting_16 = array( "sid" => NULL, "name" => "fws_public_levels", "title" => $db->escape_string($lang->fws_setting_16), "description" => $db->escape_string($lang->fws_setting_16_description), "optionscode" => "yesno", "value" => "no", "disporder" => "15", "gid" => intval($gid), ); $db->insert_query(TABLE_PREFIX."settings", $fws_setting_1); $db->insert_query(TABLE_PREFIX."settings", $fws_setting_2); $db->insert_query(TABLE_PREFIX."settings", $fws_setting_3); $db->insert_query(TABLE_PREFIX."settings", $fws_setting_4); $db->insert_query(TABLE_PREFIX."settings", $fws_setting_5); $db->insert_query(TABLE_PREFIX."settings", $fws_setting_6); $db->insert_query(TABLE_PREFIX."settings", $fws_setting_7); $db->insert_query(TABLE_PREFIX."settings", $fws_setting_8); $db->insert_query(TABLE_PREFIX."settings", $fws_setting_9); $db->insert_query(TABLE_PREFIX."settings", $fws_setting_10); $db->insert_query(TABLE_PREFIX."settings", $fws_setting_11); $db->insert_query(TABLE_PREFIX."settings", $fws_setting_12); $db->insert_query(TABLE_PREFIX."settings", $fws_setting_13); $db->insert_query(TABLE_PREFIX."settings", $fws_setting_14); $db->insert_query(TABLE_PREFIX."settings", $fws_setting_15); $db->insert_query(TABLE_PREFIX."settings", $fws_setting_16); //ADD CUSTOM FIELDS $db->query("ALTER TABLE ".TABLE_PREFIX."users ADD fws_warnings varchar(6) NOT NULL default '0', ADD fws_bans smallint(6) NOT NULL default '0', ADD fws_last_exp_check varchar(30) NOT NULL default '0' "); $db->query("ALTER TABLE ".TABLE_PREFIX."adminoptions ADD can_manage_fws char(3) NOT NULL default 'yes' "); //CREATE NEW TABLES if(!$db->table_exists(TABLE_PREFIX."fws_types")) { $db->query("CREATE TABLE ".TABLE_PREFIX."fws_types ( tid smallint(6) NOT NULL auto_increment, name varchar(50) NOT NULL, description varchar(255) NOT NULL, PRIMARY KEY (tid) ) TYPE=MyISAM;"); } if(!$db->table_exists(TABLE_PREFIX."fws_warnings")) { $db->query("CREATE TABLE ".TABLE_PREFIX."fws_warnings ( wid smallint(6) NOT NULL auto_increment, uid smallint(6) NOT NULL, adduid smallint(6) NOT NULL, points smallint(5) NOT NULL, dateline varchar(30) NOT NULL, type smallint(6) NOT NULL, customtype varchar(50) NOT NULL, post varchar(50) NOT NULL, reason varchar(255) NOT NULL, exp_time varchar(120) NOT NULL, expired varchar(3) NOT NULL default 'no', PRIMARY KEY (wid) ) TYPE=MyISAM;"); } //RESTORE BACKUPS fws_backups_restore(); //REBUILD SETTINGS FILE fws_rebuildsettings(); //INSERT STANDARD EXAMPLE TYPES if($db->table_exists(TABLE_PREFIX."fws_types")) { if($db->num_rows($db->query("SELECT tid FROM ".TABLE_PREFIX."fws_types WHERE tid='1'")) <= 0) { $fws_type_example_1 = array( "tid" => "1", "name" => $db->escape_string($lang->fws_bad_words), "description" => $db->escape_string($lang->fws_bad_words_description), ); $db->insert_query(TABLE_PREFIX."fws_types", $fws_type_example_1); } if($db->num_rows($db->query("SELECT tid FROM ".TABLE_PREFIX."fws_types WHERE tid='2'")) <= 0) { $fws_type_example_2 = array( "tid" => "2", "name" => $db->escape_string($lang->fws_double_post), "description" => $db->escape_string($lang->fws_double_post_description), ); $db->insert_query(TABLE_PREFIX."fws_types", $fws_type_example_2); } if($db->num_rows($db->query("SELECT tid FROM ".TABLE_PREFIX."fws_types WHERE tid='3'")) <= 0) { $fws_type_example_3 = array( "tid" => "3", "name" => $db->escape_string($lang->fws_spam), "description" => $db->escape_string($lang->fws_spam_description), ); $db->insert_query(TABLE_PREFIX."fws_types", $fws_type_example_3); } } //ADD TEMPLATES $fws_template_1 = array( "tid" => NULL, "title" => 'fws_main', "template" => ' $settings[bbname] - $lang->fws_main $headerinclude
$fws_bit
', "sid" => "-1", "version" => "1.0", "dateline" => "1148402171", ); $fws_template_2 = array( "tid" => NULL, "title" => 'fws_add_warning', "template" => '$lang->fws_add_warning
$lang->fws_warning_points
$lang->fws_choose_type

$lang->fws_or_type
$lang->fws_your_reason

', "sid" => "-1", "version" => "1.0", "dateline" => "1148402171", ); $fws_template_3 = array( "tid" => NULL, "title" => 'fws_empty_reason', "template" => '$lang->error
$lang->fws_empty_reason


[$lang->fws_go_back]



', "sid" => "-1", "version" => "1.0", "dateline" => "1148402171", ); $fws_template_4 = array( "tid" => NULL, "title" => 'fws_warning_bar', "template" => '
Forum Warning System - $lang->fws_warning
$lang->fws_warning_bar
Forum Warning System 2006-2007 smethead
', "sid" => "-1", "version" => "1.0", "dateline" => "1148402171", ); $fws_template_5 = array( "tid" => NULL, "title" => 'fws_types', "template" => ' $settings[bbname] - $lang->fws_warning_types $headerinclude $header
$fws_w_types
$lang->fws_warning_types:
Forum Warning System 2006-2007 smethead
$footer ', "sid" => "-1", "version" => "1.0", "dateline" => "1148568735", ); $fws_template_6 = array( "tid" => NULL, "title" => 'fws_add_yourself', "template" => '$lang->error
$lang->fws_add_yourself


[$lang->fws_close_window]



', "sid" => "-1", "version" => "1.0", "dateline" => "1148741715", ); $db->insert_query(TABLE_PREFIX."templates", $fws_template_1); $db->insert_query(TABLE_PREFIX."templates", $fws_template_2); $db->insert_query(TABLE_PREFIX."templates", $fws_template_3); $db->insert_query(TABLE_PREFIX."templates", $fws_template_4); $db->insert_query(TABLE_PREFIX."templates", $fws_template_5); $db->insert_query(TABLE_PREFIX."templates", $fws_template_6); //EDIT TEMPLATES require MYBB_ROOT."/inc/adminfunctions_templates.php"; find_replace_templatesets("member_profile", '#localtime}
#', 'localtime}
'); find_replace_templatesets("postbit", '#{\$post\[\'button_report\'\]}#', '{$post[\'button_report\']}{$post[\'fws_warnlink\']}'); find_replace_templatesets("postbit", '#{\$post\[\'user_details\'\]}#', '{$post[\'user_details\']}{$post[\'fws_w_level\']}', 0); find_replace_templatesets("memberlist_row", '#{\$users\[\'postnum\'\]}#', '{$users[\'postnum\']}{$users[\'fws_warnlink\']}'); find_replace_templatesets("memberlist", '#{\$lang-\>posts}#', '{$lang->posts}$lang->fws_w_level'); find_replace_templatesets("footer", '#bottomlinks_syndication}#', 'bottomlinks_syndication}'); } //PLUGIN DEACTIVATE function fws_deactivate() { global $db, $mybb; //CREATE BACKUPS fws_backups_create(); //UNINSTALL eMods MODULE if($db->table_exists(TABLE_PREFIX."emods")) { $db->query("DELETE FROM ".TABLE_PREFIX."emods WHERE module='fws'"); } //DELETE ALL SETTINGS $db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE name IN( 'fws_first_bantime', 'fws_second_bantime', 'fws_third_bantime', 'fws_pm_sender', 'fws_backups', 'fws_warners', 'fws_extra_warners', 'fws_allow_empty_reasons', 'fws_show_on_memberlist', 'fws_exp_points', 'fws_warning_bar', 'fws_revert_points', 'fws_max_amount', 'fws_warn_warners', 'fws_memberlist_button', 'fws_public_levels' )"); $db->query("DELETE FROM ".TABLE_PREFIX."settinggroups WHERE name='fws'"); //DELETE ALL TEMPLATES $db->query("DELETE FROM ".TABLE_PREFIX."templates WHERE title IN( 'fws_main', 'fws_add_warning', 'fws_empty_reason', 'fws_warning_bar', 'fws_types', 'fws_add_yourself' )"); //DELETE ALL CUSTOM FIELDS $deletethem = "no"; if(fws_field_exists("fws_warnings", "users")) { $delete_query = "DROP fws_warnings"; $deletethem = "yes"; } if(fws_field_exists("fws_bans", "users")) { if($delete_query) $delete_query .= ", "; $delete_query .= "DROP fws_bans"; $deletethem = "yes"; } if(fws_field_exists("fws_last_exp_check", "users")) { if($delete_query) $delete_query .= ", "; $delete_query .= "DROP fws_last_exp_check"; $deletethem = "yes"; } if($deletethem == "yes") { $db->query("ALTER TABLE ".TABLE_PREFIX."users ".$delete_query); $deletethem = "no"; } if(fws_field_exists("can_manage_fws", "adminoptions")) { $delete_query_1 = "DROP can_manage_fws"; $deletethem = "yes"; } if($deletethem == "yes") { $db->query("ALTER TABLE ".TABLE_PREFIX."adminoptions ".$delete_query_1); $deletethem = "no"; } //REMOVE TABLE(S) if($db->table_exists(TABLE_PREFIX."fws_types")) { $db->query("DROP TABLE ".TABLE_PREFIX."fws_types"); } //if($db->table_exists(TABLE_PREFIX."fws_warnings")){ //THIS CODE REMOVES THE WHOLE WARNING TABLE! // $db->query("DROP TABLE ".TABLE_PREFIX."fws_warnings"); //IT SHOULDN'T BE HERE ACTUALLY //} //BUT IT IS HERE IN CASE SOMETHING GOES WRONG //RESTORE EDITED TEMPLATES require MYBB_ROOT."/inc/adminfunctions_templates.php"; find_replace_templatesets("member_profile",'##', '', 0); find_replace_templatesets("postbit", '#{\$post\[\'fws_warnlink\'\]}#', '', 0); find_replace_templatesets("postbit", '#{\$post\[\'fws_w_level\'\]}#', '', 0); find_replace_templatesets("memberlist_row", '#{\$users\[\'fws_warnlink\'\]}#', '', 0); find_replace_templatesets("memberlist", '#\$lang-\>fws_w_level#', '', 0); find_replace_templatesets("footer", '##', '', 0); } //PLUGIN HOOK FUNCTIONS function fws_page($page) { global $db, $mybb, $lang, $theme, $templates; $language = $mybb->settings['bblanguage']; if(!$lang->language_exists($language."/fws.lang")) { $lang->set_language("english"); } $lang->load("fws"); $lang->set_language($mybb->settings['bblanguage']); $file = strtolower(my_substr(strrchr($_SERVER['PHP_SELF'], "/"), 1)); //PROFILE CHANGES if($mybb->user['uid'] && $file == "member.php" && $mybb->input['action'] == "profile" && (fws_iswarner() == TRUE || $mybb->settings['fws_public_levels'] == "yes")) { if($mybb->input['uid'] == "lastposter") { if($mybb->input['tid']) { $query = $db->query("SELECT * FROM ".TABLE_PREFIX."posts WHERE tid='".intval($mybb->input['tid'])."' ORDER BY dateline DESC LIMIT 0, 1"); $post = $db->fetch_array($query); $mybb->input['uid'] = $post['uid']; } elseif($mybb->input['fid']) { $query = $db->query("SELECT * FROM ".TABLE_PREFIX."forums WHERE INSTR(CONCAT(',',parentlist,','),',".intval($mybb->input['fid']).",') > 0"); while($forum = $db->fetch_array($query)) { if($forum['fid'] == $mybb->input['fid']) { $theforum = $forum; } $flist .= ",".$forum['fid']; } $query = $db->query("SELECT * FROM ".TABLE_PREFIX."threads WHERE fid IN (0$flist) ORDER BY lastpost DESC LIMIT 0, 1"); $thread = $db->fetch_array($query); $tid = $thread['tid']; $query = $db->query("SELECT * FROM ".TABLE_PREFIX."posts WHERE tid='$tid' ORDER BY dateline DESC LIMIT 0, 1"); $post = $db->fetch_array($query); $mybb->input['uid'] = $post['uid']; } } $query = $db->query("SELECT u.* FROM ".TABLE_PREFIX."users u WHERE u.uid='".$mybb->input['uid']."'"); $memprofile = $db->fetch_array($query); $page = preg_replace('##', ''.$lang->fws_w_level.' '.fws_warning_colour($memprofile['fws_warnings'].'%').'', $page); if($memprofile['uid'] != $mybb->user['uid'] && ($memprofile['usergroup'] != 4 || $mybb->user['usergroup'] == 4) && (($mybb->settings['fws_warn_warners'] == "yes" && fws_iswarner($memprofile['uid']) == TRUE) || fws_iswarner($memprofile['uid']) == FALSE || $mybb->user['usergroup'] == 4)) { $page = preg_replace('##', ' (Warn!)
', $page); } } //MEMBER LIST CHANGES elseif($file == "memberlist.php") { if(!$mybb->user['uid'] || $mybb->settings['fws_show_on_memberlist'] == "no" || (fws_iswarner() == FALSE && $mybb->settings['fws_public_levels'] == "no")) { $page = preg_replace('##', '#', ' -->', $page); } elseif($mybb->user['uid'] && $mybb->settings['fws_show_on_memberlist'] == "yes" && (fws_iswarner() == TRUE || $mybb->settings['fws_public_levels'] == "yes")) { $page = preg_replace('#colspan="([0-9])"#esi', "fws_colspan($1+1)", $page); } } //USERCP AND PM CHANGES elseif($file == "usercp.php" || $file == "private.php") { if(function_exists("imagecreatefrompng") && $mybb->user['fws_warnings'] != 0) { if($mybb->user['fws_warnings'] <= 14 && $mybb->user['fws_warnings'] > 0) $addition = " ".fws_warning_colour($mybb->user['fws_warnings']."%"); $fws_current_w_level = ''.$mybb->user['fws_warnings'].'%'.$addition; } else { $fws_current_w_level = ''.fws_warning_colour($mybb->user['fws_warnings']."%").''; } $page = preg_replace('##', ' '.$lang->fws_current_w_level.' '.$fws_current_w_level.'', $page); } //GLOBAL CHANGES (THIS ADDS THE WARNING BAR) if($mybb->settings['fws_warning_bar'] == "yes" && $mybb->user['fws_warnings'] >= 95) { $lang->fws_warning_bar = sprintf($lang->fws_warning_bar, fws_warning_colour($mybb->user['fws_warnings']."%")); eval("\$fws_warning_bar = \"".$templates->get("fws_warning_bar")."\";"); $page = preg_replace('##', "".$fws_warning_bar, $page); } $page = preg_replace('##', ' | '.$lang->fws_warning_types.'', $page); return $page; } //POSTBIT CHANGES HOOK function fws_postbit($post) { global $lang, $mybb, $theme, $db, $templates; if($mybb->user['uid'] && $post['uid'] && (fws_iswarner() == TRUE || $mybb->settings['fws_public_levels'] == "yes")) { $language = $mybb->settings['bblanguage']; if(!$lang->language_exists($language."/fws.lang")) { $lang->set_language("english"); } $lang->load("fws"); $lang->set_language($mybb->settings['bblanguage']); if(file_exists($theme['imglangdir']."/postbit_fws.gif")) { $fws_images = $theme['imglangdir']; } else { $fws_images = "images/english"; } $postuser = $db->fetch_array($db->query("SELECT fws_warnings, usergroup FROM ".TABLE_PREFIX."users WHERE uid='".$post['uid']."'")); if($post['uid'] != $mybb->user['uid'] && ($postuser['usergroup'] != 4 || $mybb->user['usergroup'] == 4) && (($mybb->settings['fws_warn_warners'] == "yes" && fws_iswarner($post['uid']) == TRUE) || fws_iswarner($post['uid']) == FALSE || $mybb->user['usergroup'] == 4)) { $post['fws_warnlink'] = ''.$lang->fws_postbit_warn.''; } $post['fws_w_level'] = ''.$lang->fws_w_level.' '.fws_warning_colour($postuser['fws_warnings'].'%').'
'; } return $post; } //MEMBERLIST CHANGES HOOK function fws_memberlist() { global $users, $lang, $mybb, $theme; if($mybb->user['uid'] && $mybb->settings['fws_show_on_memberlist'] != "no" && (fws_iswarner() == TRUE|| $mybb->settings['fws_public_levels'] == "yes")) { $language = $mybb->settings['bblanguage']; if(!$lang->language_exists($language."/fws.lang")) { $lang->set_language("english"); } $lang->load("fws"); $lang->set_language($mybb->settings['bblanguage']); if(file_exists($theme['imglangdir']."/postbit_fws.gif")) { $fws_images = $theme['imglangdir']; } else { $fws_images = "images/english"; } if($users['uid'] != $mybb->user['uid'] && ($users['usergroup'] != 4 || $mybb->user['usergroup'] == 4) && (($mybb->settings['fws_warn_warners'] == "yes" && fws_iswarner($users['uid']) == TRUE) || fws_iswarner($users['uid']) == FALSE || $mybb->user['usergroup'] == 4)) { if($mybb->settings['fws_memberlist_button'] != "no") { $linkbit_start = ''; $linkbit_end = ' '.$lang->fws_postbit_warn.''; } else { $linkbit_start = ''; $linkbit_end = ''; } } $users['fws_warnlink'] = $linkbit_start.''.fws_warning_colour($users['fws_warnings'].'%').''.$linkbit_end; } } //THE EDIT COLSPAN FUNCTION function fws_colspan($number) { return 'colspan="'.$number.'"'; } //EXPIRE CHECK function fws_exp_check() { global $mybb, $db; $mybb->settings['fws_exp_points'] = str_replace(',', '.', $mybb->settings['fws_exp_points']); $settingsarray = explode(';', $mybb->settings['fws_exp_points']); for($i=0; $isettings['fws_exp_points_'.$i] = $settingsarray[$i]; } $now = time(); if($now - $mybb->user['fws_last_exp_check'] >= 86400) { $times = floor(($now - $mybb->user['fws_last_exp_check'])/86400); if($mybb->user['fws_bans'] <= 0) $fws_takeaway = $mybb->settings['fws_exp_points_0']; if($mybb->user['fws_bans'] == 1) $fws_takeaway = $mybb->settings['fws_exp_points_1']; if($mybb->user['fws_bans'] == 2) $fws_takeaway = $mybb->settings['fws_exp_points_2']; if($mybb->user['fws_bans'] >= 3) $fws_takeaway = $mybb->settings['fws_exp_points_3']; $mybb->user['fws_warnings'] = $mybb->user['fws_warnings'] - $times*$fws_takeaway; if($mybb->user['fws_warnings'] < 0) $mybb->user['fws_warnings'] = 0; $mybb->user['fws_last_exp_check'] = $this_last_exp_check = ($times*86400)+$mybb->user['fws_last_exp_check']; $fws_aftercheck = array( "fws_warnings" => $mybb->user['fws_warnings'], "fws_last_exp_check"=> $this_last_exp_check, ); $db->update_query(TABLE_PREFIX."users", $fws_aftercheck, "uid='".$mybb->user['uid']."'"); $query = $db->query("SELECT wid, exp_time, dateline FROM ".TABLE_PREFIX."fws_warnings WHERE expired='no' AND uid='".$mybb->user['uid']."'"); while($warning = $db->fetch_array($query)) { if(($warning['dateline'] + $warning['exp_time']) <= $now) { $newwarning = array( "expired" => "yes", ); $db->update_query(TABLE_PREFIX."fws_warnings", $newwarning, "wid='".$warning['wid']."'"); } } } } //CHECK BANNED function fws_checkbanned() { global $db, $mybb; if($mybb->settings['fws_revert_points'] >= 100) $mybb->settings['fws_revert_points'] = 99; if($mybb->settings['fws_revert_points'] < 0) $mybb->settings['fws_revert_points'] = 0; if(!is_numeric($mybb->settings['fws_revert_points'])) $mybb->settings['fws_revert_points'] = 75; $fws_query = $db->query("SELECT u.uid, u.fws_warnings FROM ".TABLE_PREFIX."users u, ".TABLE_PREFIX."banned b WHERE b.uid=u.uid AND u.fws_warnings>=100"); while($fws_b_user = $db->fetch_array($fws_query)) { $no_more_ban = array( "fws_warnings" => $mybb->settings['fws_revert_points'], ); $db->update_query(TABLE_PREFIX."users", $no_more_ban, "uid='".$fws_b_user['uid']."'"); } } //FUNCTION TO CHECK IF A USER CAN SEND WARNINGS function fws_iswarner($uid="") { global $mybb, $db; if($uid == "") { $uid = $mybb->user['uid']; $fws_usergroup = $mybb->user['usergroup']; $fws_additionalgroups = $mybb->user['additionalgroups']; $fws_displaygroup = $mybb->user['displaygroup']; } else { $fws_user = $db->fetch_array($db->query("SELECT usergroup, additionalgroups, displaygroup FROM ".TABLE_PREFIX."users WHERE uid='".$uid."'")); $fws_usergroup = $fws_user['usergroup']; $fws_additionalgroups = $fws_user['additionalgroups']; $fws_displaygroup = $fws_user['displaygroup']; } $warners = stripslashes($mybb->settings['fws_warners']); $warnersarray = explode(';', $mybb->settings['fws_extra_warners']); for($i=0; $iinput['tid']) { $query = $db->query("SELECT m.uid, t.fid FROM ".TABLE_PREFIX."moderators m, ".TABLE_PREFIX."threads t WHERE m.fid=t.fid AND t.tid='".intval($mybb->input['tid'])."'"); while($fws_fid = $db->fetch_array($query)) { if($fws_fid['uid'] == $uid && preg_match('#\'6\'#', $warners)) { $iswarner = TRUE; } else { $iswarner = FALSE; } } } else { $iswarner = FALSE; } } return $iswarner; } //FUNCTION TO STRIP A STRING'S LENGTH function fws_striplength($result, $length=100) { if(my_strlen($result) > $length) { $content = my_substr($result, 0, $length-3)."..."; } else { $content = $result; } return $content; } //FUNCTION TO GENERATE COLOUR function fws_warning_colour($warning, $pm="no") { $new_warning = preg_replace('#\%#', '', $warning); if(!$new_warning || $new_warning == '') $new_warning = "0"; $levels = strlen($new_warning); $start = array(0,153,51); $end = array(255,0,0); for ($j=0;$j<3;$j++) { $buffer[$j] = $start[$j] - $end[$j]; $buffer[$j] = floor($buffer[$j] / $levels); $rgb[$j] = $start[$j] - ($buffer[$j] * $levels*$new_warning/100); if ($rgb[$j] > 255) $rgb[$j] = 255; $rgb[$j] = dechex($rgb[$j]); $rgb[$j] = strtoupper($rgb[$j]); if (strlen($rgb[$j]) < 2) $rgb[$j] = "0$rgb[$j]"; } if($pm == "yes") { return '[color=#'.$rgb[0].$rgb[1].$rgb[2].']'.$warning.'[/color]'; } else { return ''.$warning.''; } } //REBUILDSETTINGS FUNCTION function fws_rebuildsettings() { rebuildsettings(); } //FUNCTION TO CHECK IF A DATABASE FIELD EXISTS function fws_field_exists($field, $table) { global $db; $query = $db->query("SHOW COLUMNS FROM ".TABLE_PREFIX."$table LIKE '$field'"); $exists = $db->num_rows($query); if($exists > 0) { return true; } else { return false; } } //CREATE BACKUPS FUNCTION function fws_backups_create() { global $db, $mybb; if($mybb->settings['fws_backups'] == "on") { if(!$db->table_exists(TABLE_PREFIX."fws_backup")) { $db->query("CREATE TABLE ".TABLE_PREFIX."fws_backup ( type varchar(10) NOT NULL, id varchar(20) NOT NULL, name varchar(50) NOT NULL, content varchar(255) NOT NULL ) TYPE=MyISAM;"); } $db->query("DELETE FROM ".TABLE_PREFIX."fws_backup WHERE 1=1 "); $query = $db->query("SELECT name, value FROM ".TABLE_PREFIX."settings WHERE name IN( 'fws_first_bantime', 'fws_second_bantime', 'fws_third_bantime', 'fws_pm_sender', 'fws_backups', 'fws_warners', 'fws_extra_warners', 'fws_allow_empty_reasons', 'fws_show_on_memberlist', 'fws_exp_points', 'fws_warning_bar', 'fws_revert_points', 'fws_max_amount', 'fws_warn_warners', 'fws_memberlist_button', 'fws_public_levels' )"); while($fws_setting = $db->fetch_array($query)) { $fws_backup_settings = array( "type" => "settings", "name" => $fws_setting['name'], "content" => $db->escape_string($fws_setting['value']), ); $db->insert_query(TABLE_PREFIX."fws_backup", $fws_backup_settings); } if(fws_field_exists("fws_warnings", "users") && fws_field_exists("fws_last_exp_check", "users")) { $query = $db->query("SELECT uid, fws_warnings, fws_last_exp_check FROM ".TABLE_PREFIX."users WHERE fws_warnings>0"); while($user = $db->fetch_array($query)) { $fws_backup_warnings = array( "type" => "warnings", "id" => $user['uid'], "name" => $user['fws_warnings'], "content" => $user['fws_last_exp_check'], ); $db->insert_query(TABLE_PREFIX."fws_backup", $fws_backup_warnings); } } if(fws_field_exists("fws_bans", "users")) { $query = $db->query("SELECT uid, fws_bans FROM ".TABLE_PREFIX."users WHERE fws_bans>0"); while($user = $db->fetch_array($query)){ $fws_backup_bans = array( "type" => "bans", "name" => $user['uid'], "content" => $user['fws_bans'], ); $db->insert_query(TABLE_PREFIX."fws_backup", $fws_backup_bans); } } if(fws_field_exists("can_manage_fws", "adminoptions")) { $query = $db->query("SELECT uid FROM ".TABLE_PREFIX."adminoptions WHERE can_manage_fws != 'no' "); while($adminperm = $db->fetch_array($query)) { $fws_backup_adminperm = array( "type" => "admin", "id" => $adminperm['uid'], "name" => '', "content" => "yes", ); $db->insert_query(TABLE_PREFIX."fws_backup", $fws_backup_adminperm); } } if($db->table_exists(TABLE_PREFIX."fws_types")) { $query = $db->query("SELECT * FROM ".TABLE_PREFIX."fws_types WHERE name != ''"); while($type = $db->fetch_array($query)) { $fws_backup_types = array( "type" => "type", "id" => $type['tid'], "name" => $db->escape_string($type['name']), "content" => $db->escape_string($type['description']), ); $db->insert_query(TABLE_PREFIX."fws_backup", $fws_backup_types); } } } elseif($mybb->settings['fws_backups'] == "off") { if(!$db->table_exists(TABLE_PREFIX."fws_backup")) { $db->query("CREATE TABLE ".TABLE_PREFIX."fws_backup ( type varchar(10) NOT NULL, id varchar(20) NOT NULL, name varchar(50) NOT NULL, content varchar(255) NOT NULL ) TYPE=MyISAM;"); } $fws_backup_setting = array( "type" => "settings", "name" => "fws_backups", "content" => "off", ); if($db->query("SELECT type FROM ".TABLE_PREFIX."fws_backup WHERE name='fws_backups'")) { $db->update_query(TABLE_PREFIX."fws_backup", $fws_backup_setting, "name='fws_backups'"); } else { $db->insert_query(TABLE_PREFIX."fws_backup", $fws_backup_setting); } } } //RESTORE BACKUPS FUNCTION function fws_backups_restore() { global $db, $mybb; if($db->table_exists(TABLE_PREFIX."fws_backup")) { $createbackups = $db->query("SELECT content FROM ".TABLE_PREFIX."fws_backup WHERE name='fws_backups'"); $createbackupsarray = $db->fetch_array($createbackups); if($createbackupsarray['content'] == "on" || $mybb->settings['fws_backups'] == "on") { $query = $db->query("SELECT * FROM ".TABLE_PREFIX."fws_backup "); while($backupq = $db->fetch_array($query)) { if($backupq['type'] == "settings") { $backup = array( "value" => $db->escape_string($backupq['content']), ); $db->update_query(TABLE_PREFIX."settings", $backup, "name='".$backupq['name']."'"); } elseif($backupq['type'] == "warnings" && fws_field_exists("fws_warnings", "users") && fws_field_exists("fws_last_exp_check", "users")) { $backup = array( "fws_warnings" => $backupq['name'], "fws_last_exp_check"=> $backupq['content'], ); $db->update_query(TABLE_PREFIX."users", $backup, "uid='".$backupq['id']."'"); } elseif($backupq['type'] == "bans" && fws_field_exists("fws_bans", "users")) { $backup = array( "fws_bans" => $backupq['content'], ); $db->update_query(TABLE_PREFIX."users", $backup, "uid='".$backupq['name']."'"); } elseif($backupq['type'] == "type" && $db->table_exists(TABLE_PREFIX."fws_types")) { $backup = array( "tid" => $backupq['id'], "name" => $db->escape_string($backupq['name']), "description" => $db->escape_string($backupq['content']), ); $db->insert_query(TABLE_PREFIX."fws_types", $backup); } elseif($backupq['type'] == "admin" && fws_field_exists("can_manage_fws", "adminoptions")) { $backup = array( "can_manage_fws" => 'yes', ); $db->update_query(TABLE_PREFIX."adminoptions", $backup, "uid='".$backupq['id']."'"); } } } elseif($mybb->settings['fws_backups'] == "off") { $backup = array( "value" => "off", ); $db->update_query(TABLE_PREFIX."settings", $backup, "name='fws_backups'"); } } } function fws_nav() { global $menu, $mybb, $lang; $language = $mybb->settings['bblanguage']; if(!$lang->language_exists($language."/admin/fws.lang")) { $lang->set_language("english", "admin"); } $lang->load("fws"); $lang->set_language($mybb->settings['bblanguage']); $key = 1000; //NEEDS A BETTER METHOD $menu[$key] = array( "title" => $lang->fws_nav_fws, "items" => array( 10 => array('title' => $lang->fws_nav_manage_types, 'url' => "fws.php?".SID."&action=managetypes"), 20 => array('title' => $lang->fws_nav_manage_warnings, 'url' => "fws.php?".SID."&action=managewarnings") ) ); } function fws_adminoptions_do_updateperms() { global $sqlarray, $newperms, $db; $sqlarray["can_manage_fws"] = $db->escape_string($newperms['can_manage_fws']); return $sqlarray; } function fws_adminperms_yesnocode() { global $permissions, $lang, $mybb; $language = $mybb->settings['bblanguage']; if(!$lang->language_exists($language."/admin/fws.lang")) { $lang->set_language("english", "admin"); } $lang->load("fws"); $lang->set_language($mybb->settings['bblanguage']); makeyesnocode($lang->fws_perms_can_manage_fws, "newperms[can_manage_fws]", $permissions['can_manage_fws']); } if(!function_exists('array_keys')) { function array_keys() { $t = array(); while (list($k,$v) = each($arr)) { if ($term && $v != $term) { continue; } $t[] = $k; } return $t; } } ?>