0 && $legacy == true) { define('OLD_FORUMADMIN', true); //e107::getMessage()->addwarning("Experimental code now active. Using this page in debug mode active could break your forum configuration."); } // Generated e107 Plugin Admin Area if(!deftrue('OLD_FORUMADMIN')) { class forum_admin extends e_admin_dispatcher { protected $modes = array( 'main' => array( 'controller' => 'forum_ui', 'path' => null, 'ui' => 'forum_form_ui', 'uipath' => null ), 'mods' => array( 'controller' => 'forum_ui', 'path' => null, 'ui' => 'forum_form_ui', 'uipath' => null ), 'report' => array( 'controller' => 'reported_ui', 'path' => null, 'ui' => 'reported_form_ui', 'uipath' => null ), 'post' => array( 'controller' => 'post_ui', 'path' => null, 'ui' => 'post_form_ui', 'uipath' => null ), ); protected $adminMenu = array( 'main/list' => array('caption'=> LAN_MANAGE, 'perm' => 'P'), 'main/create' => array('caption'=> LAN_CREATE, 'perm' => 'P'), 'main/opt1' => array('divider'=>true), 'main/rules' => array('caption'=> WMGLAN_5, 'perm' => 'P'), 'mods/list' => array('caption'=> LAN_FORUM_2003, 'perm'=>'P'), 'main/prefs' => array('caption'=> LAN_PREFS, 'perm' => 'P'), 'main/opt2' => array('divider'=>true), 'report/list' => array('caption'=> FORLAN_116, 'perm'=>'P'), 'post/list' => array('caption'=>LAN_PLUGIN_FORUM_LATESTPOSTS, 'perm'=>'P'), 'main/prune' => array('caption'=> LAN_PRUNE, 'perm' => 'P'), 'main/tools' => array('caption'=>FORLAN_153, 'perm'=>'p') ); protected $adminMenuAliases = array( 'main/edit' => 'main/list' ); protected $menuTitle = LAN_PLUGIN_FORUM_NAME; function init() { if(E107_DEBUG_LEVEL > 0) { $this->adminMenu['opt3'] = array('divider'=>true); $this->adminMenu['main/update'] = array('caption'=>"Redo v1.x Forum Upgrade", 'perm'=>0, 'uri'=>'{e_PLUGIN}forum/forum_update.php'); } } } class forum_ui extends e_admin_ui { protected $pluginTitle = LAN_PLUGIN_FORUM_NAME; protected $pluginName = 'forum'; // protected $eventName = 'forum-forum'; // remove comment to enable event triggers in admin. protected $table = 'forum'; protected $pid = 'forum_id'; protected $perPage = 30; protected $batchDelete = true; // protected $batchCopy = true; protected $sortField = 'forum_order'; protected $sortParent = 'forum_parent'; protected $orderStep = 50; /* // protected $tabs = array('Tabl 1','Tab 2'); // Use 'tab'=>0 OR 'tab'=>1 in the $fields below to enable. // protected $listQry = "SELECT *, xAND forum_order > 45 THEN forum_order ELSE forum_order + forum_parent END AS Sort FROM `#forum` "; // Example Custom Query. LEFT JOINS allowed. Should be without any Order or Limit. // protected $listQry = "SELECT *, CASE WHEN forum_parent = 0 OR forum_order =0 THEN forum_id + (forum_order/1000) ELSE forum_parent + (forum_order/1000) END AS Sort FROM `#forum` "; // Example Custom Query. LEFT JOINS allowed. Should be without any Order or Limit. // protected $listOrder = ' COALESCE(NULLIF(forum_parent,0), forum_order), forum_parent > 0, forum_order '; //FIXME works with parent/child but doesn't respect parent order. // protected $listQry = "SELECT * , forum_parent + forum_order AS Sort FROM `#forum` "; */ protected $listQry = "SELECT a. *, CASE WHEN a.forum_parent = 0 THEN a.forum_order ELSE b.forum_order + (( a.forum_order)/1000) END AS Sort FROM `#forum` AS a LEFT JOIN `#forum` AS b ON a.forum_parent = b.forum_id "; protected $listOrder = 'Sort,forum_order '; // protected $listOrder = 'forum_order'; // protected $listOrder = ' COALESCE(NULLIF(forum_parent,0), forum_id), forum_parent > 0, forum_order '; protected $fields = array ( 'checkboxes' => array ( 'title' => '', 'type' => null, 'data' => null, 'width' => '5%', 'thclass' => 'center', 'forced' => '1', 'class' => 'center', 'toggle' => 'e-multiselect', ), 'forum_id' => array ( 'title' => LAN_ID, 'data' => 'int', 'width' => '5%', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'forum_name' => array ( 'title' => LAN_TITLE, 'type' => 'method', 'inline'=>true, 'data' => 'str', 'width' => '40%', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'forum_sef' => array ( 'title' => LAN_SEFURL, 'type' => 'text', 'inline'=>true, 'noedit'=>false, 'data' => 'str', 'width' => 'auto', 'help' => 'Leave blank to auto-generate it from the title above.', 'readParms' => '', 'writeParms' => 'size=xxlarge', 'class' => 'left', 'thclass' => 'left', ), 'forum_description' => array ( 'title' => LAN_DESCRIPTION, 'type' => 'textarea', 'data' => 'str', 'width' => '30%', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'forum_parent' => array ( 'title' => FORLAN_75, 'type' => 'dropdown', 'data' => 'int', 'width' => '10%', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'forum_sub' => array ( 'title' => LAN_FORUM_1002, 'type' => 'dropdown', 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ), 'forum_moderators' => array ( 'title' => LAN_FORUM_2003, 'type' => 'userclass', 'inline'=>true, 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => 'classlist=admin,main,classes', 'writeParms' => "classlist=admin,main,mods,classes", 'class' => 'left', 'thclass' => 'left', ), 'forum_threads' => array ( 'title' => LAN_FORUM_1003, 'type' => 'number', 'data' => 'int', 'noedit'=>true, 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ), 'forum_replies' => array ( 'title' => LAN_FORUM_0003, 'type' => 'number', 'data' => 'int', 'noedit'=>true, 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ), 'forum_lastpost_user' => array ( 'title' => LAN_AUTHOR, 'type' => 'hidden', 'noedit'=>true, 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'forum_lastpost_user_anon' => array ( 'title' => FORLAN_204, 'type' => 'hidden','noedit'=>true, 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ), 'forum_lastpost_info' => array ( 'title' => LAN_PLUGIN_FORUM_LATESTPOSTS, 'type' => 'hidden', 'noedit'=>true, 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ), 'forum_class' => array ( 'title' => LAN_VISIBILITY, 'type' => 'userclass', 'data' => 'int', 'width' => 'auto', 'batch' => true, 'filter' => true, 'inline' => true, 'help' => '', 'readParms' => array('classlist'=>'public,guest,nobody,member,admin,main,new,mods,classes'), 'writeParms' => array('classlist'=>'public,guest,nobody,member,admin,main,new,mods,classes'), 'class' => 'left', 'thclass' => 'left', ), 'forum_order' => array ( 'title' => LAN_ORDER, 'type' => 'text', 'data' => 'int', 'inline'=>true, 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'forum_postclass' => array ( 'title' => FORLAN_205, 'type' => 'userclass', 'inline'=>true,'filter'=>true, 'batch'=>true, 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => array('classlist'=>'public,guest,nobody,member,admin,main,new,mods,classes'), 'writeParms' => array('classlist'=>'public,guest,nobody,member,admin,main,new,mods,classes'), 'class' => 'center', 'thclass' => 'center', ), 'forum_threadclass' => array ( 'title' => FORLAN_206, 'type' => 'userclass', 'inline'=>true, 'filter'=>true, 'batch'=>true, 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => array('classlist'=>'public,guest,nobody,member,admin,main,new,mods,classes'), 'writeParms' => array('classlist'=>'public,guest,nobody,member,admin,main,new,mods,classes'), 'class' => 'center', 'thclass' => 'center', ), 'forum_datestamp' => array ( 'title' => LAN_DATESTAMP, 'type' => 'datestamp', 'data' => 'int', 'noedit'=>true, 'width' => 'auto', 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'right', 'thclass' => 'center', ), // 'Sort' => array ( 'title' => 'Sort', 'type' => 'text', 'data' => 'str', 'noedit'=>true, 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ), 'forum_options' => array ( 'title' => LAN_OPTIONS, 'type' => 'hidden', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ), 'options' => array ( 'title' => LAN_OPTIONS, 'type' => null, 'data' => null, 'width' => '10%', 'thclass' => 'center last', 'class' => 'center last', 'forced' => '1', 'sort'=>1 ), ); protected $fieldpref = array('forum_name', 'forum_parent', 'Sort', 'forum_description', 'forum_class', 'forum_postclass', 'forum_threadclass', 'forum_order'); protected $preftabs = array(); protected $prefs = array( 'enclose' => array('title'=> FORLAN_44, 'type'=>'boolean', 'data' => 'int','help'=>FORLAN_45), 'title' => array('title'=> FORLAN_65, 'type'=>'text', 'data' => 'str','help'=>''), 'notify' => array('title'=> FORLAN_47, 'type'=>'boolean', 'data' => 'int','help'=>FORLAN_48), 'notify_on' => array('title'=> FORLAN_177, 'type'=>'boolean', 'data' => 'int','help'=>FORLAN_178), 'poll' => array('title'=> FORLAN_49, 'type'=>'userclass', 'data' => 'int','help'=>FORLAN_50), 'attach' => array('title'=> FORLAN_70, 'type'=>'boolean', 'data' => 'str','help'=>FORLAN_71), 'maxwidth' => array('title'=> FORLAN_134, 'type'=>'number', 'data' => 'str','help'=>FORLAN_135), 'linkimg' => array('title'=> FORLAN_136, 'type'=>'boolean', 'data' => 'int','help'=>FORLAN_137), 'track' => array('title'=> FORLAN_200, 'type'=>'boolean', 'data' => 'int','help'=>FORLAN_201), 'trackemail' => array('title'=> FORLAN_202, 'type'=>'boolean', 'data' => 'int','help'=>FORLAN_203), 'redirect' => array('title'=> FORLAN_112, 'type'=>'boolean', 'data' => 'int','help'=>FORLAN_113), 'reported_post_email' => array('title'=> FORLAN_116, 'type'=>'boolean', 'data' => 'int','help'=>FORLAN_122), 'tooltip' => array('title'=> FORLAN_126, 'type'=>'boolean', 'data' => 'int','help'=>FORLAN_127), 'ranks' => array('title'=> FORLAN_63, 'type'=>'boolean', 'data' => 'int','help'=>''), 'tiplength' => array('title'=> FORLAN_128, 'type'=>'number', 'data' => 'int','help'=>FORLAN_129), 'eprefix' => array('title'=> FORLAN_53, 'type'=>'text', 'data' => 'string','help'=>FORLAN_54), 'popular' => array('title'=> FORLAN_55, 'type'=>'number', 'data' => 'int','help'=>FORLAN_56), 'postspage' => array('title'=> FORLAN_57, 'type'=>'number', 'data' => 'int','help'=>FORLAN_58), 'threadspage' => array('title'=> FORLAN_186, 'type'=>'number', 'data' => 'int','help'=>FORLAN_187), ); public $forumParents = array(); public $forumObj = null; // Correct bad ordering based on parent/child relationship. private function checkOrder() { $sql = e107::getDb(); $sql2 = e107::getDb('sql2'); $count = $sql->select('forum', 'forum_id', 'forum_order = 0'); if($count > 1) { $sql->gen("SELECT forum_id,forum_name,forum_parent,forum_order FROM `#forum` ORDER BY COALESCE(NULLIF(forum_parent,0), forum_id), forum_parent > 0, forum_order "); $c = 0; while($row = $sql->fetch()) { //print_a($row); if($row['forum_parent'] == 0) { $c = $c + 100; } else { $c = $c+1; } $sql2->update('forum', 'forum_order = '.$c.' WHERE forum_id = '.$row['forum_id'].' LIMIT 1'); } } } public function init() { $this->checkOrder(); if(e107::isInstalled('poll') == false) { $this->prefs['poll']['writeParms']['post'] = " ".FORLAN_215.""; } if($this->getMode() == 'mods') { $this->fieldpref = array('forum_name', 'forum_moderators'); $this->fields['forum_moderators']['width'] = '50%'; $this->fields['options']['nolist'] = true; $this->fields['options']['forced'] = false; $this->fields['forum_class']['batch'] = false; $this->fields['forum_postclass']['batch'] = false; $this->fields['forum_threadclass']['batch'] = false; $this->fields['forum_moderators']['batch'] = true; } require_once(e_PLUGIN.'forum/forum_class.php'); $this->forumObj = new e107forum; if(E107_DEBUG_LEVEL > 0) // check fpr legacy prefs in debug mode. Should normally be done during upgrade. { $this->forumObj->upgradeLegacyPrefs(); } if (!empty($_POST['do_prune']) && !empty($_POST['prune_days']) && !empty($_POST['pruneForum'])) { $msg = $this->forumObj->forumPrune($_POST['prune_type'], $_POST['prune_days'], $_POST['pruneForum']); e107::getMessage()->addSuccess($msg); } if(!empty($_POST['frsubmit'])) { $this->saveRules(); } if($this->getAction() == 'edit') { $this->fields['forum_order']['noedit'] = true; } $data = e107::getDb()->retrieve('forum', 'forum_id,forum_name,forum_parent', 'forum_id != 0',true); $this->forumParents[0] = FORLAN_216; $forumSubParents = array(); foreach($data as $val) { $id = $val['forum_id']; if($val['forum_parent'] == 0) { $this->forumParents[$id] = $val['forum_name']; } else { $forumSubParents[$id] = $val['forum_name']; } } $this->fields['forum_parent']['writeParms'] = $this->forumParents; $this->fields['forum_sub']['writeParms']['optArray'] = $forumSubParents; $this->fields['forum_sub']['writeParms']['default'] = 'blank'; } // ------- Customize Create -------- public function afterSort($result, $selected) { return; $sql = e107::getDb(); $data2 = $sql->retrieve('forum','forum_id,forum_name,forum_parent,forum_order','forum_parent = 0',true); foreach($data2 as $val) { $id = $val['forum_id']; $parent[$id] = $val['forum_order']; } $previous = 0; $data = $sql->retrieve('forum','*','forum_parent != 0 ORDER BY forum_order',true); foreach($data as $row) { $p = $row['forum_parent']; if($p != $previous) { $c = $parent[$p]; } $c++; $previous = $p; // echo "
".$row['forum_name']." with parent: ".$p." old: ".$row['forum_order']." new: ".$c; $sql->update('forum','forum_order = '.$c.' WHERE forum_id = '.intval($row['forum_id']).' LIMIT 1'); } } public function beforeCreate($new_data) { $sql = e107::getDb(); $parentOrder = $sql->retrieve('forum','forum_order','forum_id='.$new_data['forum_parent']." LIMIT 1"); $new_data['forum_order'] = $parentOrder + 50; if(empty($new_data['forum_sef'])) { $new_data['forum_sef'] = eHelper::title2sef($new_data['forum_name']); } return $new_data; } public function afterCreate($new_data, $old_data, $id) { // do something e107::getCache()->clear_sys('forum_perms'); } public function onCreateError($new_data, $old_data) { // do something } // ------- Customize Update -------- public function beforeUpdate($new_data, $old_data, $id) { if(empty($new_data['forum_sef']) && !empty($new_data['forum_name'])) { $new_data['forum_sef'] = eHelper::title2sef($new_data['forum_name']); } return $new_data; } public function afterUpdate($new_data, $old_data, $id) { // do something e107::getCache()->clear_sys('forum_perms',true); } public function afterDelete($del_data,$id) { e107::getCache()->clear_sys('forum_perms'); } public function onUpdateError($new_data, $old_data, $id) { // do something } // optional - a custom page. public function prunePage() { $ns = e107::getRender(); $sql = e107::getDB(); $frm = e107::getForm(); // $sql->select("forum", "forum_id, forum_name", "forum_parent!=0 ORDER BY forum_order ASC"); $qry = " SELECT f.forum_id, f.forum_name, sp.forum_name AS sub_parent, fp.forum_name AS forum_parent FROM #forum AS f LEFT JOIN #forum AS sp ON sp.forum_id = f.forum_sub LEFT JOIN #forum AS fp ON fp.forum_id = f.forum_parent WHERE f.forum_parent != 0 ORDER BY f.forum_parent ASC, f.forum_sub, f.forum_order ASC "; $forums = $sql->retrieve($qry, true); // $forums = $sql->db_getList(); e107::getMessage()->addWarning(FORLAN_60); $text = "
\n
".FORLAN_87." ".$frm->number('prune_days',0,3,array('min'=>1))."
".LAN_TYPE." ".$frm->radio('prune_type','delete',false, array('label'=>FORLAN_89)). $frm->radio('prune_type','make_inactive',true, array('label'=>FORLAN_90))."
".FORLAN_2."
".FORLAN_138." "; foreach($forums as $forum) { $for_name = $forum['forum_parent']." ≫ "; $for_name .= ($forum['sub_parent'] ? $forum['sub_parent']." ≫ " : ""); $for_name .= $forum['forum_name']; $text .= $frm->checkbox('pruneForum[]',$forum['forum_id'], false, $for_name); // " ".$for_name."
"; } $text .= "
".$frm->admin_button('do_prune', LAN_PRUNE, 'submit')."
"; return $text; } function saveRules() { $tp = e107::getParser(); $sql = e107::getDb(); $guestrules = $tp->toDB($_POST['guestrules']); $memberrules = $tp->toDB($_POST['memberrules']); $adminrules = $tp->toDB($_POST['adminrules']); if(!$sql->update("generic", "gen_chardata ='$guestrules', gen_intdata='".$_POST['guest_active']."' WHERE gen_type='forum_rules_guest' ")) { $sql->insert("generic", "0, 'forum_rules_guest', '".time()."', 0, '', '".$_POST['guest_active']."', '$guestrules' "); } if(!$sql->update("generic", "gen_chardata ='$memberrules', gen_intdata='".$_POST['member_active']."' WHERE gen_type='forum_rules_member' ")) { $sql->insert("generic", "0, 'forum_rules_member', '".time()."', 0, '', '".$_POST['member_active']."', '$memberrules' "); } if(!$sql->update("generic", "gen_chardata ='$adminrules', gen_intdata='".$_POST['admin_active']."' WHERE gen_type='forum_rules_admin' ")) { $sql->insert("generic", "0, 'forum_rules_admin', '".time()."', 0, '', '".$_POST['admin_active']."', '$adminrules' "); } e107::getMessage()->addSuccess(LAN_SAVED); return null; } function rulesPage() { $pref = e107::getPref(); $ns = e107::getRender(); $sql = e107::getDB(); $tp = e107::getParser(); $frm = e107::getForm(); /* $sql->select("wmessage"); list($null) = $sql->fetch(); list($null) = $sql->fetch(); list($null) = $sql->fetch(); list($id, $guestrules, $wm_active4) = $sql->fetch(); list($id, $memberrules, $wm_active5) = $sql->fetch(); list($id, $adminrules, $wm_active6) = $sql->fetch(); */ if($sql->select('generic','*',"gen_type='forum_rules_guest'")) { $guest_rules = $sql->fetch(); } if($sql->select('generic','*',"gen_type='forum_rules_member'")) { $member_rules = $sql->fetch(); } if($sql->select('generic','*',"gen_type='forum_rules_admin'")) { $admin_rules = $sql->fetch(); } $guesttext = $tp->toForm(vartrue($guest_rules['gen_chardata'])); $membertext = $tp->toForm(vartrue($member_rules['gen_chardata'])); $admintext = $tp->toForm(vartrue($admin_rules['gen_chardata'])); $text = "
".WMGLAN_1.":
".WMGLAN_6.":"; if (vartrue($guest_rules['gen_intdata'])) { $text .= ""; } else { $text .= ""; } $text .= "
".$frm->bbarea('guestrules', $guesttext)."
".WMGLAN_2.":
".WMGLAN_6.":"; if (vartrue($member_rules['gen_intdata'])) { $text .= ""; } else { $text .= ""; } $text .= "
".$frm->bbarea('memberrules', $membertext)."
".WMGLAN_3.":
".WMGLAN_6.": "; if (vartrue($admin_rules['gen_intdata'])) { $text .= ""; } else { $text .= ""; } $text .= "
".$frm->bbarea('adminrules', $admintext)."
".$frm->admin_button('frsubmit', LAN_UPDATE, 'submit')."
"; return $text; $ns->tablerender(WMGLAN_5, $text); /* echo " ";*/ } function modsPage() { $ns = e107::getRender(); $sql = e107::getDB(); //$e107 = e107::getInstance(); $forumList = $this->forumObj->forum_getforums('all'); $parentList = $this->forumObj->forum_getparents('list'); $subList = $this->forumObj->forumGetSubs('bysub'); $frm = e107::getForm(); $tp = e107::getParser(); $txt = "
"; foreach($parentList as $p) { $txt .= " "; foreach($forumList[$p['forum_id']] as $f) { $txt .= " "; foreach($subList[$f['forum_id']] as $s) { $txt .= " "; } } } $txt .= "
".$tp->toHTML($p['forum_name'])."
{$f['forum_name']} ".e107::getUserClass()->uc_dropdown("mods[{$f['forum_id']}]", $f['forum_moderators'], 'admin,classes')."
    {$s['forum_name']} ".e107::getUserClass()->uc_dropdown("mods[{$s['forum_id']}]", $s['forum_moderators'], 'admin,classes')."
".$frm->admin_button('setMods', LAN_UPDATE, 'update')."
"; return $txt; } function toolsPageProcess() { $mes = e107::getMessage(); $fList = array(); if(isset($_POST['tools'])) { $msg = ''; if(isset($_POST['forum_all'])) { $fList[]='all'; } else { foreach(array_keys($_POST['forumlist']) as $k) { $fList[] = $k; } } foreach($fList as $fid) { if(isset($_POST['counts'])) { $this->forumObj->forumUpdateCounts($fid, $_POST['counts_threads']); $msg .= FORLAN_167.": $fid
"; } if(isset($_POST['lastpost'])) { $with_threads = (!empty($_POST['lastpost_nothread'])) ? FALSE : TRUE; $this->forumObj->forumUpdateLastpost('forum', $fid, $with_threads); $msg .= FORLAN_168.": $fid
"; } } if(isset($_POST['userpostcounts'])) { $ue = e107::getUserExt(); $list = $this->forumObj->getUserCounts(); foreach($list as $uid => $cnt) { $ue->user_extended_setvalue($uid, 'user_plugin_forum_posts', $cnt, 'int'); } $msg .= FORLAN_169.'
'; } $mes->addSuccess($msg); // $ns->tablerender($caption, $mes->render().$text); } } //TODO Add SEF-url generation for forum and threads where missing. function toolsPage() { $sql = e107::getDb(); $ns = e107::getRender(); $tp = e107::getParser(); $frm = e107::getForm(); $this->toolsPageProcess(); $txt = "
".FORLAN_156." "; if($sql->select("forum", "*", "1 ORDER BY forum_order")) { $fList = $sql->db_getList(); foreach($fList as $f) { $key = 'forumlist['.$f['forum_id'].']'; $txt .= $frm->checkbox($key, 1, false, $tp->toHTML($f['forum_name'])); // $txt .= " ".$tp->toHTML($f['forum_name'])."
"; } $txt .= "
"; $txt .= $frm->checkbox('forum_all', 1, false, LAN_PLUGIN_FORUM_ALLFORUMS); // $txt .= " ".LAN_PLUGIN_FORUM_ALLFORUMS.""; } //TODO LAN - see below $txt .= "
".FORLAN_158." ".$frm->checkbox('lastpost', 1, false, LAN_ACTIVE). "". $frm->select('lastpost_nothread', array(0=>FORLAN_207, 1=>FORLAN_208))."
".FORLAN_161." ".$frm->checkbox('counts', 1, false, LAN_ACTIVE). "". $frm->checkbox('counts_threads', 1, false, FORLAN_182)." ".FORLAN_183."
".FORLAN_163." ".$frm->checkbox('userpostcounts',1, false, LAN_ACTIVE)."
".$frm->admin_button('tools', LAN_GO, 'submit')."
"; return $txt; // $ns->tablerender(FORLAN_166, $txt); } } class forum_form_ui extends e_admin_form_ui { function forum_name($curVal,$mode,$parm) { $frm = e107::getForm(); if($mode == 'read') { return $curVal; $parent = $this->getController()->getListModel()->get('forum_parent'); $id = $this->getController()->getListModel()->get('forum_id'); $sub = $this->getController()->getListModel()->get('forum_sub'); $level = 1; if(!empty($sub)) { $level = 3; } $linkQ = e_SELF."?searchquery=&filter_options=page_chapter__".$id."&mode=page&action=list"; $level_image = $parent ? ' ' : ''; return ($parent) ? $level_image.$curVal : $curVal; } if($mode == 'write') { return $frm->text('forum_name',$curVal,255,'size=xxlarge'); } if($mode == 'filter') { return; } if($mode == 'batch') { return; } if($mode == 'inline') { $ret = array('inlineType'=>'text'); $parent = $this->getController()->getListModel()->get('forum_parent'); $sub = $this->getController()->getListModel()->get('forum_sub'); if(!empty($parent)) { $level = 1; if(!empty($sub)) { $level = 2; } $ret['inlineParms'] = array('pre'=>''); } return $ret; } } // Custom Method/Function function forum_parent($curVal,$mode) { $frm = e107::getForm(); switch($mode) { case 'read': // List Page return $curVal; break; case 'write': // Edit Page return $frm->text('forum_parent',$curVal); break; case 'filter': case 'batch': // return $array; break; } } // Custom Method/Function function forum_sub($curVal,$mode) { $frm = e107::getForm(); switch($mode) { case 'read': // List Page return $curVal; break; case 'write': // Edit Page return $frm->text('forum_sub',$curVal); break; case 'filter': case 'batch': // return $array; break; } } // Custom Method/Function function forum_lastpost_info($curVal,$mode) { $frm = e107::getForm(); switch($mode) { case 'read': // List Page return $curVal; break; case 'write': // Edit Page return $frm->text('forum_lastpost_info',$curVal); break; case 'filter': case 'batch': // return $array; break; } } // Custom Method/Function function forum_options($curVal,$mode) { $frm = e107::getForm(); switch($mode) { case 'read': // List Page return $curVal; break; case 'write': // Edit Page return $frm->text('forum_options',$curVal); break; case 'filter': case 'batch': // return $array; break; } } } class reported_ui extends e_admin_ui { protected $pluginTitle = LAN_PLUGIN_FORUM_NAME; protected $pluginName = 'forum'; protected $table = 'generic'; protected $pid = 'gen_id'; protected $perPage = 10; protected $listQry = "SELECT g.*,u.user_name FROM `#generic` AS g LEFT JOIN `#user` AS u ON g.gen_user_id = u.user_id WHERE g.gen_type='reported_post' OR g.gen_type='Reported Forum Post' ORDER BY g.gen_datestamp DESC"; protected $fields = array ( 'checkboxes' => array ( 'title' => '', 'type' => null, 'data' => null, 'width' => '5%', 'thclass' => 'center', 'forced' => '1', 'class' => 'center', 'toggle' => 'e-multiselect', ), 'gen_id' => array ( 'title' => LAN_ID, 'nolist'=>true, 'data' => 'int', 'width' => '5%', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), // 'gen_type' => array ( 'title' => LAN_BAN, 'type' => 'method', 'data' => 'str', 'width' => 'auto', 'batch' => true, 'filter' => true, 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'gen_datestamp' => array ( 'title' => LAN_DATESTAMP, 'type' => 'datestamp', 'data' => 'int', 'width' => '10%', 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'gen_ip' => array ( 'title' => FORLAN_209, 'type' => 'text', 'data' => 'str', 'width' => '20%', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'gen_chardata' => array ( 'title' => FORLAN_210, 'type' => 'method', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'gen_user_id' => array ( 'title' => FORLAN_211, 'type' => 'user', 'batch'=>true, 'data' => 'int', 'width' => '5%', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left nowrap', ), 'gen_intdata' => array ( 'title' => FORLAN_209, 'type' => 'number', 'nolist'=>true, 'batch'=>false, 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'center', 'thclass' => 'center', ), 'options' => array ( 'title' => LAN_OPTIONS, 'type' => 'method', 'data' => null, 'width' => '10%', 'thclass' => 'center last', 'class' => 'center last', 'forced' => '1', 'readParms'=>'edit=0' ), ); protected $fieldpref = array('gen_datestamp', 'gen_ip', 'gen_user_id', 'gen_chardata'); // optional public function init() { } public function afterDelete($data) { // $sql2->db_Delete('banlist', "banlist_ip='{$banIP}'"); } public function renderHelp() { return array('caption'=>LAN_HELP, 'text'=>FORLAN_189); } } class reported_form_ui extends e_admin_form_ui { // Custom Method/Function function gen_intdata($curVal,$mode) { $frm = e107::getForm(); switch($mode) { case 'read': // List Page return "#". $curVal.""; return $curVal; break; case 'write': // Edit Page return $frm->text('gen_type',$curVal); break; case 'filter': case 'batch': return array(1=>LAN_BAN); break; } } // Custom Method/Function function gen_chardata($curVal,$mode) { $frm = e107::getForm(); switch($mode) { case 'read': // List Page return str_replace(":::","
",$curVal); break; case 'write': // Edit Page return $frm->text('gen_chardata',$curVal); break; case 'filter': case 'batch': // return $array; break; } } function options($att, $value, $id, $attributes) { if($attributes['mode'] == 'read') { $topic = $this->getController()->getListModel()->get('gen_chardata'); $topidId = $this->getController()->getListModel()->get('gen_intdata'); $text = "
"; $text .= "".ADMIN_VIEW_ICON.""; $text .= $this->renderValue('options',$value,array('readParms'=>'edit=0')); $text .= "
"; return $text; } } } class post_ui extends e_admin_ui { protected $pluginTitle = LAN_PLUGIN_FORUM_NAME; protected $pluginName = 'forum'; protected $table = 'forum_post'; protected $pid = 'post_id'; protected $perPage = 10; // protected $listQry = "SELECT g.*,u.user_name FROM `#generic` AS g LEFT JOIN `#user` AS u ON g.gen_user_id = u.user_id WHERE g.gen_type='reported_post' OR g.gen_type='Reported Forum Post' ORDER BY g.gen_datestamp DESC"; protected $listOrder = 'post_datestamp'; protected $fields = array ( 'checkboxes' => array ( 'title' => '', 'type' => null, 'data' => null, 'width' => '5%', 'thclass' => 'center', 'forced' => '1', 'class' => 'center', 'toggle' => 'e-multiselect', ), 'post_id' => array ( 'title' => LAN_ID, 'nolist'=>true, 'data' => 'int', 'width' => '5%', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), // 'gen_type' => array ( 'title' => LAN_BAN, 'type' => 'method', 'data' => 'str', 'width' => 'auto', 'batch' => true, 'filter' => true, 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'post_datestamp' => array ( 'title' => LAN_DATESTAMP, 'type' => 'datestamp', 'data' => 'int', 'width' => '10%', 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'post_entry' => array ( 'title' => FORLAN_213, 'type' => 'bbarea', 'data' => 'str', 'width' => '20%', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), // 'gen_chardata' => array ( 'title' => "Issue", 'type' => 'method', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'post_user' => array ( 'title' => LAN_USER, 'type' => 'user', 'batch'=>false, 'data' => 'int', 'width' => '5%', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left nowrap', ), 'post_attachments' => array ( 'title' => FORLAN_212, 'type' => 'method', 'batch'=>false, 'data' => 'int', 'width' => '10%', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'options' => array ( 'title' => LAN_OPTIONS, 'type' => null, 'data' => null, 'width' => '2%', 'thclass' => 'right last', 'class' => 'right last', 'forced' => '1', 'readParms'=>'edit=0' ), ); protected $fieldpref = array('post_datestamp', 'post_entry', 'post_user', 'post_attachments'); // optional public function init() { $id = intval($_GET['id']); if(!empty($id)) { define('e_IFRAME', true); $this->listQry = "SELECT p.*,u.user_name FROM `#forum_post` AS p LEFT JOIN `#user` AS u ON p.post_user = u.user_id WHERE p.post_thread = ".intval($id); } else { $this->listOrder = 'post_datestamp DESC'; $this->listQry = "SELECT p.*,u.user_name FROM `#forum_post` AS p LEFT JOIN `#user` AS u ON p.post_user = u.user_id "; } } public function afterDelete($data) { // $sql2->db_Delete('banlist', "banlist_ip='{$banIP}'"); } } class post_form_ui extends e_admin_form_ui { function post_attachments($curVal,$mode) { switch($mode) { case 'read': // List Page $data = e107::unserialize($curVal); $tp = e107::getParser(); $fl = e107::getFile(); $text = ''; if(!empty($data['img'])) { $text .= ""; } if(!empty($data['file'])) { $text .= ""; } return $text; break; case 'write': // Edit Page $data = e107::unserialize($curVal); return print_a($data,true); break; case 'filter': case 'batch': // return $array; break; } } } new forum_admin(); require_once(e_ADMIN."auth.php"); e107::getAdminUI()->runPage(); require_once(e_ADMIN."footer.php"); exit; } /* $e_sub_cat = 'forum'; require_once(e_ADMIN.'auth.php'); require_once(e_HANDLER.'userclass_class.php'); require_once(e_HANDLER.'form_handler.php'); require_once(e_PLUGIN.'forum/forum_class.php'); $for = new e107forum; $forum = new forumAdmin; $mes = e107::getMessage(); $sql = e107::getDb(); $tp = e107::getParser(); $fPref = e107::getPlugConfig('forum', '', false); print_a($fPref); define('IMAGE_new', ""); define('IMAGE_sub', "".FORLAN_145.""); define('IMAGE_nosub', "".FORLAN_145.""); $deltest = array_flip($_POST); if (e_QUERY) { $tmp = explode('.', e_QUERY); $action = $tmp[0]; $sub_action = $tmp[1]; $id = $tmp[2]; unset($tmp); } if(isset($_POST['delete'])) { $tmp = array_pop(array_flip($_POST['delete'])); list($delete, $del_id) = explode('_', $tmp); } if(isset($_POST['setMods'])) { foreach($_POST['mods'] as $fid => $modid) { if($sql->update('forum',"forum_moderators = '{$modid}' WHERE forum_id = {$fid}")) { $mes->addSuccess(LAN_UPDATED); } else { $mes->addError(LAN_UPDATED_FAILED); } } $ns->tablerender($caption, $mes->render().$text); } if(isset($_POST['tools'])) { $msg = ''; if(isset($_POST['forum_all'])) { $fList[]='all'; } else { foreach(array_keys($_POST['forumlist']) as $k) { $fList[] = $k; } } foreach($fList as $fid) { if(isset($_POST['counts'])) { $for->forumUpdateCounts($fid, $_POST['counts_threads']); $msg .= FORLAN_167.": $fid
"; } if(isset($_POST['lastpost'])) { $with_threads = (isset($_POST['lastpost_nothread'])) ? FALSE : TRUE; $for->forumUpdateLastpost('forum', $fid, $with_threads); $msg .= FORLAN_168.": $fid
"; } } if(isset($_POST['userpostcounts'])) { require_once(e_HANDLER.'user_extended_class.php'); $ue = new e107_user_extended; $list = $for->getUserCounts(); foreach($list as $uid => $cnt) { $ue->user_extended_setvalue($uid, 'user_plugin_forum_posts', $cnt, 'int'); } $msg .= FORLAN_169.'
'; } $mes->addSuccess($msg); $ns->tablerender($caption, $mes->render().$text); } if(isset($_POST['create_sub'])) { $fid = (int)($sub_action); $tmp = array(); $tmp['forum_name'] = $tp->toDB($_POST['subname_new']); $tmp['forum_description'] = $tp->toDB($_POST['subdesc_new']); $tmp['forum_order'] = (int)$_POST['suborder_new']; if($tmp['forum_name'] != '' && $sql->select('forum', '*', "forum_id = {$fid}")) { $row = $sql->fetch(); $tmp['forum_parent'] = $row['forum_parent']; $tmp['forum_moderators'] = $row['forum_moderators']; $tmp['forum_class'] = $row['forum_class']; $tmp['forum_postclass'] = $row['forum_postclass']; $tmp['forum_sub'] = $fid; if($sql->insert('forum', $tmp)) { $mes->addSuccess(LAN_CREATED); } else { $mes->addError(LAN_CREATED_FAILED); } } $ns->tablerender($caption, $mes->render().$text); } if(isset($_POST['update_subs'])) { $msg = ""; foreach(array_keys($_POST['subname']) as $id) { if($_POST['subname'][$id] == "") { if ($sql->delete("forum", "forum_id='$id' ")) { $msg .= LAN_FORUM_1002." ". LAN_ID.":"." ".$id." ".LAN_DELETED."
"; $cnt = $sql->delete("forum_thread", "thread_forum_id = {$id}"); $msg .= $cnt." ".FORLAN_152." ".LAN_DELETED."
"; } } else { $_name = $tp->toDB($_POST['subname'][$id]); $_desc = $tp->toDB($_POST['subdesc'][$id]); $_order = (int)$_POST['suborder'][$id]; if($sql->update('forum', "forum_name='{$_name}', forum_description='{$_desc}', forum_order='{$_order}' WHERE forum_id = {$id}")) { $msg .= LAN_FORUM_1002 ." ". LAN_ID.":"." ".$id." ".LAN_UPDATED."
"; } } } if($msg) { $mes->addSuccess($msg); $ns->tablerender($caption, $mes->render().$text); } } if(isset($_POST['submit_parent'])) { unset($insert); $insert = array( 'forum_name' => $tp->toDB($_POST['forum_name']), 'forum_datestamp' => time(), 'forum_class' => (int)$_POST['forum_class'], 'forum_postclass' => (int)$_POST['forum_postclass'], 'forum_threadclass' => (int)$_POST['forum_threadclass'], ); if($sql->insert('forum', $insert)) { $mes->addSuccess(LAN_CREATED); } else { $mes->addError(LAN_CREATED_FAILED); } $ns->tablerender($caption, $mes->render().$text); } if(isset($_POST['update_parent'])) { unset($update); $update = array( 'forum_name' => $tp->toDb($_POST['forum_name']), 'forum_datestamp' => time(), 'forum_class' => (int)$_POST['forum_class'], 'forum_postclass' => (int)$_POST['forum_postclass'], 'forum_threadclass' => (int)$_POST['forum_threadclass'], 'WHERE' => 'forum_id = '.(int)$id ); if($sql->update('forum', $update)) { $mes->addSuccess(LAN_UPDATED); } else { $mes->addError(LAN_UPDATED_FAILED); } $action = 'main'; $ns->tablerender($caption, $mes->render().$text); } if(isset($_POST['submit_forum'])) { $tmp = array(); $tmp['forum_moderators'] = (int)$_POST['forum_moderators']; $tmp['forum_name'] = $tp->toDB($_POST['forum_name']); $tmp['forum_description'] = $tp->toDB($_POST['forum_description']); $tmp['forum_datestamp'] = time(); $tmp['forum_class'] = (int)$_POST['forum_class']; $tmp['forum_postclass'] = (int)$_POST['forum_postclass']; $tmp['forum_threadclass'] = (int)$_POST['forum_threadclass']; $tmp['forum_parent'] = (int)$_POST['forum_parent']; if($sql->insert('forum', $tmp)) { $mes->addSuccess(LAN_CREATED); } else { $mes->addError(LAN_CREATED_FAILED); } $ns->tablerender($caption, $mes->render().$text); } if(isset($_POST['update_forum'])) { unset($_POST['update_forum']); $tmp['data'] = $_POST; $tmp['WHERE'] = 'forum_id = '.(int)$id; $tmp2['forum_moderators'] = $tmp['forum_moderators']; $tmp2['forum_class'] = $tmp['forum_class']; $tmp2['forum_postclass'] = $tmp['forum_postclass']; $tmp2['forum_threadclass'] = $tmp['forum_threadclass']; $tmp2['WHERE'] = 'forum_sub = '.(int)$id; $sql->update('forum', $tmp); $sql->update('forum', $tmp2); $mes->addSuccess(LAN_UPDATED); $ns->tablerender($caption, $mes->render().$text); $action = 'main'; } if (isset($_POST['update_order'])) { while (list($key, $id) = each($_POST['forum_order'])) { $tmp = explode('.', $id); $sql->update('forum', "forum_order=".$tmp[1]." WHERE forum_id=".$tmp[0]); } $mes->addSuccess(LAN_UPDATED); $ns->tablerender($caption, $mes->render().$text); } if (isset($_POST['updateoptions'])) { $fPref->set('notify', $_POST['email_notify']); $fPref->set('notify_on', $_POST['email_notify_on']); $fPref->set('poll', $_POST['forum_poll']); $fPref->set('popular', $_POST['forum_popular']); $fPref->set('track', $_POST['forum_track']); $fPref->set('eprefix', $_POST['forum_eprefix']); $fPref->set('enclose', $_POST['forum_enclose']); $fPref->set('title', $_POST['forum_title']); $fPref->set('postspage', $_POST['forum_postspage']); $fPref->set('threadspage', $_POST['forum_threadspage']); $fPref->set('html_post', $_POST['html_post']); $fPref->set('attach', $_POST['forum_attach']); $fPref->set('redirect', $_POST['forum_redirect']); $fPref->set('reported_post_email', $_POST['reported_post_email']); $fPref->set('tooltip', $_POST['forum_tooltip']); $fPref->set('tiplength', $_POST['forum_tiplength']); $fPref->set('hilightsticky', $_POST['forum_hilightsticky']); $fPref->set('maxwidth', $_POST['forum_maxwidth']); $fPref->set('linkimg', $_POST['forum_linkimg']); $fPref->save(true, true); $mes->addSuccess(); $ns->tablerender($caption, $mes->render().$text); } if (isset($_POST['do_prune'])) { $msg = $for->forumPrune($_POST['prune_type'], $_POST['prune_days'], $_POST['pruneForum']); $mes->addSuccess($msg); $action = 'main'; $ns->tablerender($caption, $mes->render().$text); } if (isset($_POST['frsubmit'])) { $guestrules = $tp->toDB($_POST['guestrules']); $memberrules = $tp->toDB($_POST['memberrules']); $adminrules = $tp->toDB($_POST['adminrules']); if(!$sql->update("generic", "gen_chardata ='$guestrules', gen_intdata='".$_POST['guest_active']."' WHERE gen_type='forum_rules_guest' ")) { $sql->insert("generic", "0, 'forum_rules_guest', '".time()."', 0, '', '".$_POST['guest_active']."', '$guestrules' "); } if(!$sql->update("generic", "gen_chardata ='$memberrules', gen_intdata='".$_POST['member_active']."' WHERE gen_type='forum_rules_member' ")) { $sql->insert("generic", "0, 'forum_rules_member', '".time()."', 0, '', '".$_POST['member_active']."', '$memberrules' "); } if(!$sql->update("generic", "gen_chardata ='$adminrules', gen_intdata='".$_POST['admin_active']."' WHERE gen_type='forum_rules_admin' ")) { $sql->insert("generic", "0, 'forum_rules_admin', '".time()."', 0, '', '".$_POST['admin_active']."', '$adminrules' "); } $ns->tablerender($caption, $mes->render().$text); } if (vartrue($delete) == 'main') { if ($sql->delete('forum', "forum_id='$del_id' ")) { $mes->addSuccess(LAN_DELETED); } else { $mes->addError(LAN_DELETED_FAILED); } $ns->tablerender($caption, $mes->render().$text); } if (vartrue($action) == 'create') { if ($sql->select('forum', '*', "forum_parent='0' ")) { $forum->create_forums($sub_action, $id); } else { header('location:'.e_ADMIN.'forum.php'); exit; } } if ($delete == 'cat') { if ($sql->delete('forum', "forum_id='$del_id' ")) { $sql->delete('forum', "forum_parent='$del_id' "); $mes->addSuccess(LAN_DELETED); $action = 'main'; } else { $mes->addError(LAN_DELETED_FAILED); } $ns->tablerender($caption, $mes->render().$text); } switch($action) { case 'delete': $forum->delete_item(intval($sub_action)); break; case 'cat': $forum->create_parents($sub_action, $id); break; case 'order': $forum->show_existing_forums($sub_action, $id, true); break; case 'opt': $forum->show_prefs(); break; case 'mods': $forum->show_mods(); break; case 'tools': $forum->show_tools(); break; case 'prune': $forum->show_prune(); break; case 'rules': $forum->show_rules(); break; case 'subs': $forum->show_subs($sub_action); break; case 'sr': $forum->show_reported($sub_action); break; } if ($delete == 'reported') { $sql->delete("generic", "gen_id='$del_id' "); $mes->addSuccess(LAN_DELETED); } if (!e_QUERY || $action == 'main') { $forum->show_existing_forums(vartrue($sub_action), vartrue($id)); } require_once(e_ADMIN.'footer.php'); // function headerjs() // { // $e107 = e107::getInstance(); // $tp = e107::getParser(); // // These functions need to be removed and replaced with the generic jsconfirm() function. // $headerjs = ""; // return $headerjs; // } function forum_admin_adminmenu() { global $forum; global $action; $forum->show_options($action); } class forumAdmin { function show_options($action) { $sql = e107::getDb(); if ($action == '') { $action = 'main'; } // ##### Display options --------------------------------------------------------------------------------------------------------- $var['main']['text'] = FORLAN_76; $var['main']['link'] = e_SELF; $var['cat']['text'] = FORLAN_83; $var['cat']['link'] = e_SELF.'?cat'; if ($sql->select('forum', 'forum_id', "forum_parent='0' LIMIT 1")) { $var['create']['text'] = FORLAN_77; $var['create']['link'] = e_SELF.'?create'; } $var['order']['text'] = FORLAN_78; $var['order']['link'] = e_SELF.'?order'; $var['opt']['text'] = LAN_PREFS; $var['opt']['link'] = e_SELF.'?opt'; $var['prune']['text'] = LAN_PRUNE; $var['prune']['link'] = e_SELF.'?prune'; $var['rules']['text'] = LAN_FORUM_0016; $var['rules']['link'] = e_SELF.'?rules'; $var['sr']['text'] = FORLAN_116; $var['sr']['link'] = e_SELF.'?sr'; $var['mods']['text'] = LAN_FORUM_2003; $var['mods']['link'] = e_SELF.'?mods'; $var['tools']['text'] = FORLAN_153; $var['tools']['link'] = e_SELF.'?tools'; show_admin_menu(FORLAN_7, $action, $var); } // Initial delete function. Determines which delete routine should be applied. function delete_item($id) { // If a delete routine is cancelled, redirect back to forum listing if($_POST['cancel']) { $this->show_existing_forums(vartrue($sub_action), vartrue($id)); return; } $sql = e107::getDb(); $id = (int)$id; $confirm = isset($_POST['confirm']) ? true : false; if($confirm) { e107::getRender()->tablerender('Forums', e107::getMessage()->render().$txt); } else { $this->delete_show_confirm($txt); } if($row = $sql->retrieve('forum', 'forum_parent, forum_sub', "forum_id = {$id}")) { $txt = ""; // is parent if($row['forum_parent'] == 0) { $txt .= $this->delete_parent($id, $confirm); } // is subforum elseif($row['forum_sub'] > 0) { $txt .= $this->delete_sub($id, $confirm); } // is forum else { $txt .= $this->delete_forum($id, $confirm); } } // forum_id not found, should not happen. else { $this->show_existing_forums(vartrue($sub_action), vartrue($id)); return; } } function delete_parent($id, $confirm = false) { $sql = e107::getDb(); $mes = e107::getMessage(); $ns = e107::getRender(); // check if parent contains forums and delete them if needed if($sql->select('forum', 'forum_id', 'forum_parent = '.$id)) { $fList = $sql->rows(); foreach($fList as $f) { $this->delete_forum($f['forum_id'], $confirm); } } if($confirm) { if($sql->delete('forum', "forum_id = {$id}")) { $mes->addSuccess(LAN_DELETED); } else { $mes->addError(LAN_DELETED_FAILED); } } } // function deleteForum($forumId) // { // $sql = e107::getDb(); // $forumId = (int)$forumId; // // Check for any sub forums // if($sql->select('forum', 'forum_id', "forum_sub = {$forumId}")) // { // $list = $sql->rows(); // foreach($list as $f) // { // $ret .= $this->deleteForum($f['forum_id']); // } // } // require_once(e_PLUGIN.'forum/forum_class.php'); // $f = new e107Forum; // if($sql->delete('forum_thread', 'thread_id','thread_forum_id='.$forumId)) // { // $list = $sql->rows(); // foreach($list as $t) // { // $f->threadDelete($t['thread_id'], false); // } // } // return $sql->delete('forum', 'forum_id = '.$forumId); // } // delete forum function delete_forum($id, $confirm = false) { $sql = e107::getDb(); $tp = e107::getParser(); $ns = e107::getRender(); $mes = e107::getMessage(); // check if forum contains subforums if($sql->select('forum', 'forum_id', 'forum_sub = '.$id)) { $fList = $sql->rows(); foreach($fList as $f) { $this->delete_sub($f['forum_id'], $confirm); } } if($confirm) { if($this->deleteForum($id)) { $mes->addSuccess(LAN_DELETED); } else { $mes->addError(LAN_DELETED_FAILED); } } $sql->select('forum', 'forum_name, forum_threads, forum_replies', 'forum_id = '.$id); $row = $sql->fetch(); $mes->addInfo("Forum {$id} [".$tp->toHTML($row['forum_name'])."] has {$row['forum_threads']} threads and {$row['forum_replies']} replies."); } function delete_sub($id, $confirm = FALSE) { $sql = e107::getDb(); $tp = e107::getParser(); $mes = e107::getMessage(); $ns = e107::getRender(); if($confirm) { if($this->deleteForum($id)) { $mes->addSuccess(LAN_DELETED); } else { $mes->addError(LAN_DELETED); } } $sql->select('forum', '*', 'forum_id = '.$id); $row = $sql->fetch(); $mes->addInfo("Sub-forum {$id} [".$tp->toHTML($row['forum_name'])."] has {$row['forum_threads']} threads, {$row['forum_replies']} replies."); } function delete_show_confirm($message) { $mes = e107::getMessage(); $mes->addInfo($message); $text = "
".e107::getForm()->admin_button('confirm', LAN_UI_DELETE_LABEL, 'delete')." ".e107::getForm()->admin_button('cancel', LAN_CANCEL, 'cancel')."
"; e107::getRender()->tablerender('Forum'.SEP.'Delete forum(s)', $mes->render().$text); } function show_subs($id) { $sql = e107::getDb(); $tp = e107::getParser(); $ns = e107::getRender(); $frm = e107::getForm(); $txt = "
"; if($sql->select('forum', 'forum_id, forum_name, forum_description, forum_order', "forum_sub = {$id} ORDER by forum_order ASC")) { $subList = $sql->db_getList(); foreach($subList as $sub) { $txt .= " "; } $txt .= " "; } else { $txt .= ""; } $txt .= "
".LAN_ID." ".LAN_NAME." ".LAN_DESCRIPTION." ".LAN_ORDER." ".LAN_DELETE."
{$sub['forum_id']} ".ADMIN_DELETE_ICON."
".$frm->admin_button('update_subs', LAN_UPDATE, 'update')."
 
".FORLAN_146."
".LAN_ID." ".LAN_NAME." ".LAN_DESCRIPTION." ".LAN_ORDER."  
   
".$frm->admin_button('create_sub', LAN_CREATE, 'submit')."
"; $ns->tablerender(LAN_FORUM_0069, $txt); } function show_existing_forums($sub_action, $id, $mode = false) { global $for; // $e107 $frm = e107::getForm(); $sql = e107::getDb(); $tp = e107::getParser(); $mes = e107::getMessage(); $ns = e107::getRender(); $subList = $for->forumGetSubs(); if (!$mode) { $text = "
"; } else { $text = "
"; } if (!$parent_amount = $sql->select('forum', '*', "forum_parent='0' ORDER BY forum_order ASC")) { //$text .= "".FORLAN_29.""; $mes->addInfo(FORLAN_29); } else { $text .= " "; while ($row = $sql->fetch()) { $parentList[] = $row; } foreach($parentList as $parent) { $text .= " "; $text .= ""; $forumCount = $sql->select('forum', '*', "forum_parent='".$parent['forum_id']."' AND forum_sub = 0 ORDER BY forum_order ASC"); if (!$forumCount) { $text .= ""; } else { $forumList = array(); while ($row = $sql->fetch()) { $forumList[] = $row; } foreach($forumList as $forum) { $text .= " \n\n\n"; } } } } if (!$mode) { $text .= "
".LAN_FORUM_1001." ".LAN_OPTIONS."
".$parent['forum_name']."
".FORLAN_140.": ".e107::getUserClass()->uc_get_classname($parent['forum_class'])."  ".LAN_FORUM_2015.": ".e107::getUserClass()->uc_get_classname($parent['forum_postclass'])."
"; if ($mode) { $text .= ""; } else { $text .= " "; } $text .= "
".FORLAN_29."
".IMAGE_new."".$tp->toHTML($forum['forum_name']).""; // ".IMAGE_new."".$tp->toHTML($forum['forum_name']).""; $text .= "
".$tp->toHTML($forum['forum_description'])." 
".FORLAN_140.": ".e107::getUserClass()->uc_get_classname($forum['forum_class'])."  ".LAN_FORUM_2015.": ".e107::getUserClass()->uc_get_classname($forum['forum_postclass'])."
"; if ($mode) { $text .= ""; } else { //$sub_img = count($subList[$forum['forum_parent']][$forum['forum_id']]) ? IMAGE_sub : IMAGE_nosub; $sub_img = ADMIN_DOWN_ICON; $sub_total = count($subList[$forum['forum_parent']][$forum['forum_id']]); $text .= " "; } $text .= "
"; $ns->tablerender(FORLAN_30, $mes->render() . $text); } else { $text .= "
".$frm->admin_button('update_order', LAN_UPDATE, 'update')."
"; $ns->tablerender(LAN_ORDER, $mes->render() . $text); } } function create_parents($sub_action, $id) { $frm = e107::getForm(); $sql = e107::getDb(); $tp = e107::getParser(); $ns = e107::getRender(); $id = (int)$id; if ($sub_action == 'edit' && !$_POST['update_parent']) { if ($sql->select('forum', '*', "forum_id=$id")) { $row = $sql->fetch(); } } else { $row = array(); $row['forum_name'] = ''; $row['forum_class'] = e_UC_PUBLIC; $row['forum_postclass'] = e_UC_MEMBER; $row['forum_threadclass'] = e_UC_MEMBER; } $text = "
".LAN_NAME.":
".FORLAN_23.": ".e107::getUserClass()->uc_dropdown('forum_class', $row['forum_class'], 'nobody,public,member,admin,classes')."".FORLAN_24."
".FORLAN_142.": ".e107::getUserClass()->uc_dropdown("forum_postclass", $row['forum_postclass'], 'nobody,public,member,admin,classes')."".FORLAN_143."
".FORLAN_184.": ".e107::getUserClass()->uc_dropdown('forum_threadclass', $row['forum_threadclass'], 'nobody,public,member,admin,classes')."".FORLAN_185."
"; if ($sub_action == 'edit') { $text .= $frm->admin_button('update_parent', LAN_UPDATE, 'update'); } else { $text .= $frm->admin_button('submit_parent', LAN_CREATE, 'submit'); } $text .= "
"; $ns->tablerender(FORLAN_75, $text); } function create_forums($sub_action, $id) { //global $e107; $frm = e107::getForm(); $sql = e107::getDb(); $tp = e107::getParser(); $ns = e107::getRender(); $id = (int)$id; if ($sub_action == 'edit' && !$_POST['update_forum']) { if ($sql->select('forum', '*', "forum_id=$id")) { $fInfo = $sql->fetch(); } } else { $fInfo = array( 'forum_parent' => 0, 'forum_moderators' => e_UC_ADMIN, 'forum_class' => e_UC_PUBLIC, 'forum_postclass' => e_UC_MEMBER, 'forum_threadclass' => e_UC_MEMBER ); } $text = "
\n
".LAN_FORUM_0004.": "; $sql->select('forum', '*', 'forum_parent=0'); $text .= "
".LAN_NAME.": ".FORLAN_179."
".LAN_DESCRIPTION.":
".LAN_FORUM_2003.": "; $text .= e107::getUserClass()->uc_dropdown('forum_moderators', $fInfo['forum_moderators'], 'admin,classes')."".FORLAN_34.""; $text .= "
".FORLAN_23.": ".e107::getUserClass()->uc_dropdown('forum_class', $fInfo['forum_class'], 'nobody,public,member,admin,classes')."".FORLAN_24."
".FORLAN_142.": ".e107::getUserClass()->uc_dropdown('forum_postclass', $fInfo['forum_postclass'], 'nobody,public,member,admin,classes')."".FORLAN_143."
".FORLAN_184.": ".e107::getUserClass()->uc_dropdown('forum_threadclass', $fInfo['forum_threadclass'], 'nobody,public,member,admin,classes')."".FORLAN_185."
"; if ($sub_action == "edit") { $text .= $frm->admin_button('update_forum', LAN_UPDATE, 'update'); } else { $text .= $frm->admin_button('submit_forum', LAN_CREATE, 'submit'); } $text .= "
"; $ns->tablerender(LAN_FORUM_1001, $text); } // function show_message($message) // { // e107::getRender();->tablerender('', $message); // } function show_tools() { $sql = e107::getDb(); $ns = e107::getRender(); $tp = e107::getParser(); $frm = e107::getForm(); $txt = "
".FORLAN_156."
"; if($sql->select("forum", "*", "1 ORDER BY forum_order")) { $fList = $sql->db_getList(); foreach($fList as $f) { $txt .= " ".$tp->toHTML($f['forum_name'])."
"; } $txt .= " ".LAN_PLUGIN_FORUM_ALLFORUMS.""; } $txt .= "
".FORLAN_158."
".FORLAN_159."
     ".FORLAN_160."
".FORLAN_161."
".FORLAN_162."
     ".FORLAN_182."
".FORLAN_183."

".FORLAN_163."
".FORLAN_164."
".$frm->admin_button('tools', LAN_GO, 'submit')."
"; $ns->tablerender(FORLAN_166, $txt); } function show_prefs() { global $fPref; $ns = e107::getRender(); $sql = e107::getDb(); //$e107 = e107::getInstance(); $frm = e107::getForm(); $mes = e107::getMessage(); $poll_installed = e107::isInstalled('poll'); if(!$poll_installed) { if($fPref->get('poll') == 1) { $fPref['forum_poll'] = e_UC_NOBODY; $fPref->save(false, true); } } $text = "
\n "; if($poll_installed) { // $text .= "'; } else { $text .= ""; } $text .= "
".FORLAN_44.": ".($fPref->get('enclose') ? "" : "")."".FORLAN_45."
".FORLAN_65.":
".FORLAN_47.": ".($fPref->get('notify') ? "" : "")."".FORLAN_48."
".FORLAN_177.": ".($fPref->get('notify_on') ? "" : "")."".FORLAN_178."
".FORLAN_49.":".e107::getUserClass()->uc_dropdown("mods[{$f['forum_id']}]", $f['forum_moderators'], 'admin,classes')."".e107::getUserClass()->uc_dropdown('forum_poll', $fPref->get('poll'), 'nobody,public,member,admin,main,classes').''.FORLAN_50.'".FORLAN_66."
".FORLAN_70.":"; if(!$pref['image_post']) { $text .= "
".FORLAN_139.""; // } if(!is_writable(e_PLUGIN.'forum/attachments')) { $text .= "
Attachment dir (".e_PLUGIN_ABS.'forum/attachments'.") is not writable!"; // } $text .= "
".($fPref->get('attach') ? "" : "")."".FORLAN_71." ".FORLAN_130." ". FORLAN_131."
".FORLAN_134.": ".FORLAN_135."
".FORLAN_136.": ".($fPref->get('linkimg') ? "" : "")."".FORLAN_137."
".FORLAN_51.": ".($fPref->get('track') ? "" : "")."".FORLAN_52."
".FORLAN_112.": ".($fPref->get('redirect') ? "" : "")."".FORLAN_113."
".FORLAN_116.": ".($fPref->get('reported_post_email') ? "" : "")."".FORLAN_122."
".FORLAN_126.": ".($fPref->get('forum_tooltip') ? "" : "")."".FORLAN_127."
".FORLAN_128.": ".FORLAN_129."
".FORLAN_53.": ".FORLAN_54."
".FORLAN_55.": ".FORLAN_56."
".FORLAN_57.": ".FORLAN_58."
".FORLAN_186.": ".FORLAN_187."
".FORLAN_132.": ".($fPref->get('hilightsticky') ? "" : "")."".FORLAN_133."
".$frm->admin_button('updateoptions', LAN_UPDATE, 'update')."
"; $ns->tablerender(FORLAN_7, $mes->render() . $text); } function show_reported($sub_action) { $rs = new form; $sql = e107::getDb(); $ns = e107::getRender(); $tp = e107::getParser(); $mes = e107::getMessage(); if ($sub_action) { $sql->select("generic", "*", "gen_id='".$sub_action."'"); $row = $sql->fetch(); $sql->select("user", "*", "user_id='". $row['gen_user_id']."'"); $user = $sql->fetch(); //$con = new convert; $text = "
".FORLAN_171.": #".$row['gen_intdata']."
".FORLAN_173.": ".$row['gen_ip']."
".FORLAN_174.": ".$user['user_name']."
".FORLAN_175.": ".e107::getDate()->convert_date($row['gen_datestamp'], "long")."
".LAN_FORUM_2046.": ".$row['gen_chardata']."
".$rs->form_open("post", e_SELF."?sr", "", "", "", " onsubmit=\"return confirm_('sr',".$row['gen_datestamp'].")\"")." ".$rs->form_button("submit", "delete[reported_{$row['gen_id']}]", FORLAN_172)." ".$rs->form_close()."
"; $ns->tablerender(FORLAN_116, $text); } else { if ($reported_total = $sql->select("generic", "*", "gen_type='reported_post' OR gen_type='Reported Forum Post'")) { $text = " "; while ($row = $sql->fetch()) { $text .= " ".FORLAN_171." #".$row['gen_intdata']." "; } $text .= "
".FORLAN_170." ".LAN_OPTIONS."
".$rs->form_open("post", e_SELF."?sr", "", "", "", " onsubmit=\"return confirm_('sr',".$row['gen_datestamp'].")\"")." ".$rs->form_button("submit", "delete[reported_{$row['gen_id']}]", FORLAN_172)." ".$rs->form_close()."
"; } else { //$text = "
".FORLAN_121."
"; $mes->addInfo(FORLAN_121); } $ns->tablerender(FORLAN_116, $mes->render().$text); } } function show_prune() { $ns = e107::getRender(); $sql = e107::getDB(); $frm = e107::getForm(); // $sql->select("forum", "forum_id, forum_name", "forum_parent!=0 ORDER BY forum_order ASC"); $qry = " SELECT f.forum_id, f.forum_name, sp.forum_name AS sub_parent, fp.forum_name AS forum_parent FROM #forum AS f LEFT JOIN #forum AS sp ON sp.forum_id = f.forum_sub LEFT JOIN #forum AS fp ON fp.forum_id = f.forum_parent WHERE f.forum_parent != 0 ORDER BY f.forum_parent ASC, f.forum_sub, f.forum_order ASC "; $sql->gen($qry); $forums = $sql->db_getList(); $text = "
\n
".FORLAN_60."
".FORLAN_87."
".FORLAN_2."
".FORLAN_89."     ".FORLAN_90."
".FORLAN_138.":
"; foreach($forums as $forum) { $for_name = $forum['forum_parent']." -> "; $for_name .= ($forum['sub_parent'] ? $forum['sub_parent']." -> " : ""); $for_name .= $forum['forum_name']; $text .= " ".$for_name."
"; } $text .= "
".$frm->admin_button('do_prune', LAN_PRUNE, 'submit')."
"; $ns->tablerender(LAN_PRUNE, $text); } function show_mods() { global $for; $ns = e107::getRender(); $sql = e107::getDB(); //$e107 = e107::getInstance(); $forumList = $for->forum_getforums('all'); $parentList = $for->forum_getparents('list'); $subList = $for->forumGetSubs('bysub'); $frm = e107::getForm(); $tp = e107::getParser(); $txt = "
"; foreach($parentList as $p) { $txt .= " "; foreach($forumList[$p['forum_id']] as $f) { $txt .= " "; foreach($subList[$f['forum_id']] as $s) { $txt .= " "; } } } $txt .= "
".$tp->toHTML($p['forum_name'])."
{$f['forum_name']} ".e107::getUserClass()->uc_dropdown("mods[{$f['forum_id']}]", $f['forum_moderators'], 'admin,classes')."
    {$s['forum_name']} ".e107::getUserClass()->uc_dropdown("mods[{$s['forum_id']}]", $s['forum_moderators'], 'admin,classes')."
".$frm->admin_button('setMods', LAN_UPDATE, 'update')."
"; $ns->tablerender(LAN_FORUM_2003, $txt); } */ // /* function show_rules() { $pref = e107::getPref(); $ns = e107::getRender(); $sql = e107::getDB(); $tp = e107::getParser(); $frm = e107::getForm(); */ /* $sql->select("wmessage"); list($null) = $sql->fetch(); list($null) = $sql->fetch(); list($null) = $sql->fetch(); list($id, $guestrules, $wm_active4) = $sql->fetch(); list($id, $memberrules, $wm_active5) = $sql->fetch(); list($id, $adminrules, $wm_active6) = $sql->fetch(); */ /* if($sql->select('generic','*',"gen_type='forum_rules_guest'")) { $guest_rules = $sql->fetch(); } if($sql->select('generic','*',"gen_type='forum_rules_member'")) { $member_rules = $sql->fetch(); } if($sql->select('generic','*',"gen_type='forum_rules_admin'")) { $admin_rules = $sql->fetch(); } $guesttext = $tp->toForm(vartrue($guest_rules['gen_chardata'])); $membertext = $tp->toForm(vartrue($member_rules['gen_chardata'])); $admintext = $tp->toForm(vartrue($admin_rules['gen_chardata'])); $text = "
".WMGLAN_1.":
".WMGLAN_6.":"; if (vartrue($guest_rules['gen_intdata'])) { $text .= ""; } else { $text .= ""; } $text .= "
".$frm->bbarea('guestrules', $guesttext)."
".WMGLAN_2.":
".WMGLAN_6.":"; if (vartrue($member_rules['gen_intdata'])) { $text .= ""; } else { $text .= ""; } $text .= "
".$frm->bbarea('memberrules', $membertext)."
".WMGLAN_3.":
".WMGLAN_6.": "; if (vartrue($admin_rules['gen_intdata'])) { $text .= ""; } else { $text .= ""; } $text .= "
".$frm->bbarea('adminrules', $admintext)."
".$frm->admin_button('frsubmit', LAN_UPDATE, 'submit')."
"; $ns->tablerender(WMGLAN_5, $text); echo " "; } } */ ?>