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 = "
";
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 = "
";
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 = "";
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 = "
";
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 .= "";
foreach($data['img'] as $v)
{
$text .= "- ".$tp->toGlyph('fa-file-image-o').$v['name']." ".$fl->file_size_encode($v['size'])."
";
}
$text .= "
";
}
if(!empty($data['file']))
{
$text .= "";
foreach($data['file'] as $v)
{
$text .= "- ".$tp->toGlyph('fa-file-text-o').$v['name']." ".$fl->file_size_encode($v['size'])."
";
}
$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', "
");
define('IMAGE_nosub', "
");
$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::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 = "
";
$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 = "
";
$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 = "
";
$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 = "
";
$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 = "
";
$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 = "
";
$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 = "
".FORLAN_170." |
".LAN_OPTIONS." |
";
while ($row = $sql->fetch())
{
$text .= "
".FORLAN_171." #".$row['gen_intdata']." |
".$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()."
|
";
}
$text .= "
";
}
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 = "
";
$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 = "";
$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 = "
";
$ns->tablerender(WMGLAN_5, $text);
echo "
";
}
}
*/
?>