array(
'controller' => 'uclass_ui',
'path' => null,
'ui' => 'uclass_ui_form',
'uipath' => null
),
);
protected $adminMenu = array(
'main/list' => array('caption'=> LAN_MANAGE, 'perm' => '4'),
'main/create' => array('caption'=> LAN_CREATE, 'perm' => '4'),
'main/initial' => array('caption'=> UCSLAN_38, 'perm' => '4'),
'main/options' => array('caption'=> LAN_OPTIONS, 'perm' => '4'),
// 'main/custom' => array('caption'=> 'Custom Page', 'perm' => 'P')
);
protected $adminMenuAliases = array(
'main/edit' => 'main/list'
);
protected $menuTitle = ADLAN_38;
}
class uclass_ui extends e_admin_ui
{
protected $pluginTitle = ADLAN_38;
protected $pluginName = 'core';
// protected $eventName = 'userclass';
protected $table = 'userclass_classes';
protected $pid = 'userclass_id';
protected $perPage = 10;
protected $batchDelete = true;
protected $batchCopy = false; // no way to generate the non-incrementing primary key at the moment
// protected $listOrder = 'userclass_id DESC'; //XXX Make more intuitive.
protected $listOrder = "CASE WHEN userclass_id = 250 THEN 1 WHEN userclass_id =254 THEN 2 WHEN userclass_id = 253 THEN 3 WHEN userclass_id < 250 THEN 4 END, userclass_id DESC ";
// protected $sortField = 'somefield_order';
// protected $orderStep = 10;
// protected $tabs = array('Tabl 1','Tab 2'); // Use 'tab'=>0 OR 'tab'=>1 in the $fields below to enable.
// protected $listQry = "SELECT * FROM `#generic` WHERE gen_type='wmessage' "; // Example Custom Query. LEFT JOINS allowed. Should be without any Order or Limit.
// protected $listOrder = 'gen_id DESC';
protected $fields = array(
'checkboxes' => array ( 'title' => '', 'type' => null, 'data' => null, 'width' => '5%', 'thclass' => 'center', 'forced' => '1', 'class' => 'center', 'toggle' => 'e-multiselect', ),
'userclass_id' => array('title'=> LAN_ID, 'type' =>'hidden', 'data'=>'int', 'width' => '5%', 'thclass' => 'left'),
'userclass_icon' => array('title'=> UCSLAN_68, 'type' => 'icon', 'data'=>'str', 'width' => '5%', 'thclass' => 'left', 'class' => 'center'),
'userclass_name' => array('title'=> UCSLAN_12, 'type' => 'text', 'data'=>'str', 'inline'=>true, 'width' => 'auto', 'thclass' => 'left'),
'userclass_description' => array('title'=> UCSLAN_13, 'type' => 'text', 'data'=>'str', 'inline'=>true,'width' => 'auto', 'thclass' => 'left', 'writeParms'=>array('size'=>'xxlarge')),
'userclass_type' => array('title'=> UCSLAN_79, 'type' => 'dropdown', 'data'=>'int', 'width' => '10%', 'thclass' => 'left', 'class'=>'left' ),
'userclass_editclass' => array('title'=> UCSLAN_24, 'type' => 'userclass', 'data'=>'int', 'width' => 'auto', 'thclass' => 'left', 'writeParms'=>array('classlist'=>'nobody,public,main,admin,classes,matchclass,member, no-excludes')),
'userclass_visibility' => array('title'=> UCSLAN_34, 'type' => 'userclass', 'data'=>'int', 'width' => 'auto', 'thclass' => 'left'),
'userclass_parent' => array('title'=> UCSLAN_35, 'type' => 'userclass', 'data'=>'int', 'width' => 'auto', 'thclass' => 'left', 'writeParms'=>array('classlist'=>'main,admin,nobody,public,classes,matchclass,member, no-excludes')),
'options' => array('title'=> LAN_OPTIONS, 'type' => 'method', 'width' => '10%', 'thclass' => 'center last', 'forced'=>TRUE, 'class'=>'right', 'readParms' => array('deleteClass' => e_UC_NOBODY))
);
protected $fieldpref = array('userclass_icon', 'userclass_name', 'userclass_description');
/*
protected $prefs = array(
'wm_enclose' => array('title'=> WMLAN_05, 'type'=>'boolean', 'data' => 'int','help'=> WMLAN_06), );*/
public function init()
{
// Listen for submitted data.
$this->initialPageSubmit();
$this->optionsPageSubmit();
if($this->getAction() == 'list')
{
$this->fields['userclass_id']['type'] = 'number';
}
// Set Defaults for when creating new records.
$this->fields['userclass_type']['writeParms'] = array(UC_TYPE_STD => UCSLAN_80, UC_TYPE_GROUP => UCSLAN_81);
$this->fields['userclass_editclass']['writeParms']['default'] = e_UC_ADMIN;
$this->fields['userclass_parent']['writeParms']['default'] = e_UC_NOBODY;
$this->fields['userclass_visibility']['writeParms']['default'] = e_UC_ADMIN;
$this->fields['userclass_id']['writeParms']['default'] =$this->getUserClassAdmin()->findNewClassID();
}
public function getUserClassAdmin()
{
return e107::getSingleton('user_class_admin');
}
public function beforeCreate($new_data)
{
return $new_data;
}
public function afterCreate($new_data, $old_data, $id)
{
e107::getUserClass()->clearCache();
}
public function beforeUpdate($new_data, $old_data, $id)
{
return $new_data;
}
public function afterUpdate($new_data, $old_data, $id)
{
e107::getUserClass()->clearCache();
}
public function afterDelete($data,$id)
{
e107::getUserClass()->clearCache();
}
public function onCreateError($new_data, $old_data)
{
// do something
}
public function onUpdateError($new_data, $old_data, $id)
{
// do something
}
function renderHelp()
{
$e_userclass = e107::getSingleton('user_class_admin'); // Admin functions - should just obliterate any previous object created in class2.php
$e_userclass->calc_tree();
$text = "
".$e_userclass->show_graphical_tree()."
";
return array('caption'=>'Class Structure', 'text' => $text); //TODO LAN
// $text .= $e_userclass->show_graphical_tree();
}
public function optionsPage()
{
$mes = e107::getMessage();
$frm = e107::getForm();
$mes->addWarning(UCSLAN_52."
".UCSLAN_53);
$text = "".LAN_PREFS."
";
// $ns->tablerender(ADLAN_38.SEP.LAN_PREFS, $mes->render().$text);
$text .= "
".UCSLAN_71."
";
// $ns->tablerender(UCSLAN_71, $text);
return $text;
}
public function optionsPageSubmit()
{
if (!check_class(e_UC_MAINADMIN))
{
return false;
}
$ns = e107::getRender();
$sql = e107::getDb();
$mes = e107::getMessage();
$e_userclass = $this->getUserClassAdmin();
if (isset($_POST['add_class_tree'])) // Create a default tree
{
$message = UCSLAN_62;
$e_userclass->set_default_structure();
$e_userclass->calc_tree();
$e_userclass->save_tree();
$e_userclass->readTree(TRUE); // Need to re-read the tree to show correct info
$message .= UCSLAN_64;
}
if (isset($_POST['flatten_class_tree'])) // Remove the default tree
{
$message = UCSLAN_65;
$sql->update('userclass_classes', "userclass_parent='0'");
$e_userclass->calc_tree();
$e_userclass->save_tree();
$e_userclass->readTree(TRUE); // Need to re-read the tree to show correct info
$message .= UCSLAN_64;
}
if (isset($_POST['rebuild_tree']))
{
$message = UCSLAN_70;
$e_userclass->calc_tree();
$e_userclass->save_tree();
$message .= UCSLAN_64;
}
/*
if ($params == 'xml') $params = '.xml'; else $params = '';
if (isset($_POST['create_xml_db']) && ($params == '.xml'))
{
$message = $e_userclass->makeXMLFile() ? 'XML file created' : 'Error creating XML file';
}
*/
if ($message)
{
$mes->addSuccess($message);
// $ns->tablerender('', "".$message."
");
}
}
public function initialPage()
{
$pref = e107::pref('core');
$mes = e107::getMessage();
$ns = e107::getRender();
$frm = e107::getForm();
// $e_userclass = $this->getUserClassAdmin();
$text = "";
$initial_classes = varset($pref['initial_user_classes'],'');
$irc = explode(',',$initial_classes);
$icn = array();
foreach ($irc as $i)
{
if (trim($i)) $icn[] = e107::getUserClass()->getName($i);
}
$class_text = $frm->userclass('init_classes',$initial_classes, 'checkbox', array('options'=>'classes,force'));
// $class_text = e107::getUserClass()->uc_checkboxes('init_classes', $initial_classes, 'classes, force', TRUE);
// $class_text = e107::getUserClass()->vetted_tree('init_classes',array($e_userclass,'checkbox_desc'), $initial_classes, 'classes, force, no-excludes');
$mes->addInfo(UCSLAN_49);
$text = "";
return $mes->render() . $text;
// $ns->tablerender(ADLAN_38.SEP.UCSLAN_40, $mes->render() . $text);
}
/**
* @return bool
*/
public function initialPageSubmit()
{
if(empty($_POST['set_initial_classes']))
{
return false;
}
$pref['init_class_stage'] = intval($_POST['init_class_stage']);
$temp = array();
foreach ($_POST['init_classes'] as $ic)
{
$temp[] = intval($ic);
}
$newval = implode(',', $temp);
$pref['initial_user_classes'] = $newval;
e107::getConfig()->setPref($pref)->save(true,true,true);
}
}
class uclass_ui_form extends e_admin_form_ui
{
function userclass_type($curVal,$mode)
{
$types = array(
UC_TYPE_STD => UCSLAN_80,
UC_TYPE_GROUP => UCSLAN_81
);
return varset($types[$curVal]);
}
function options($parms, $value, $id, $attributes)
{
$text = "";
$options = array();
if($attributes['mode'] == 'read')
{
$classID = $this->getController()->getListModel()->get('userclass_id');
if(!$this->getController()->getUserClassAdmin()->queryCanDeleteClass($classID))
{
$options['readParms']['deleteClass'] = e_UC_NOBODY;
}
if($classID == 0)
{
$options['readParms']['deleteClass'] = e_UC_NOBODY;
$options['readParms']['editClass'] = e_UC_NOBODY;
}
$text .= $this->renderValue('options',$value, $options,$id);
// if($parent != 0)
{
// $link = e_SELF."?searchquery=&filter_options=page_chapter__".$id."&mode=page&action=list";
// $text .= "".E_32_CUST."";
}
return $text;
}
}
}
new uclass_admin();
require_once(e_ADMIN."auth.php");
e107::getAdminUI()->runPage();
require_once(e_ADMIN."footer.php");
exit;
$e_sub_cat = 'userclass';
//define('UC_DEBUG_OPTS',FALSE);
require_once(e_HANDLER.'userclass_class.php'); // Modified class handler
$e_userclass = new user_class_admin; // Admin functions - should just obliterate any previous object created in class2.php
// @TODO: Does core object manager need to know somehow?
require_once(e_HANDLER.'form_handler.php');
$frm = new e_form();
// $uc = new uclass_manager;
$mes = e107::getMessage();
$message = '';
/**
* See whether a user class is editable.
*
* (Note: On fixed classes, only some fields are editable)
*
* @param integer $class_id
* @param boolean $redirect - if TRUE, will redirect to site home page if class not editable.
* @param boolean $fullEdit - set TRUE if full editing required, FALSE if some editing permitted
*
* @return boolean - TRUE if class editable (fully or partially), FALSE if not.
*/
function checkAllowed($classID, $redirect = true, $fullEdit = FALSE)
{
global $e_userclass; // TODO: Get rid of this (we need the system admin object; not the user-level object)
$editLevel = $fullEdit ? 2 : 1;
if ($e_userclass->queryCanEditClass($classID) >= $editLevel)
{
return TRUE;
}
if ($redirect)
{
header('location:'.SITEURL);
exit;
}
return FALSE;
// Next bit probably redundant - editing of some parts of system class data is allowed.
if(!$uc->isEditableClass($class_id))
{
if(!$redirect) return false;
e107::getMessage()->addSession(UCSLAN_90, E_MESSAGE_ERROR);
header('location:'.e_SELF);
exit;
}
return true;
}
if (e_QUERY)
{
// BC - SO MUCH BAD, never do this at home!!!
if(isset($_GET['action']))
{
$uc_qs = array($_GET['action'], $_GET['id']);
}
else $uc_qs = explode('.', e_QUERY);
}
$action = varset($uc_qs[0]);
$params = varset($uc_qs[1],'');
e107::setRegistry('pageParams', $uc_qs);
//AJAX request check is already made by the API
/*
if(e_AJAX_REQUEST)
{
$class_num = intval($params);
if ($action == 'edit')
{
require_once(e_HANDLER.'js_helper.php');
$jshelper = new e_jshelper();
if(!checkAllowed($class_num, false))
{
//This will raise an error
//'Access denied' is the message which will be thrown
//by the JS AJAX handler
e_jshelper::sendAjaxError('403', 'Access denied. '.UCSLAN_90);
}
elseif($sql->db_Select('userclass_classes', '*', "userclass_id='".$class_num."' "))
{
$row = $sql->db_Fetch(MYSQL_ASSOC);
//Response action - reset all group checkboxes
$jshelper->addResponseAction('reset-checked', array('group_classes_select' => '0'));
//it's grouped userclass
if ($row['userclass_type'] == UC_TYPE_GROUP)
{
//Response action - show group, hide standard
$jshelper->addResponseAction('element-invoke-by-id', array('show' => 'userclass_type_groups', 'hide' => 'userclass_type_standard'));
//fill in the classes array
$tmp = explode(',',$row['userclass_accum']);
foreach ($tmp as $uid)
{
$row['group_classes_select_'.$uid] = $uid;
}
}
else
{
//hide group, show standard rows
$jshelper->addResponseAction('element-invoke-by-id', array('hide' => 'userclass_type_groups', 'show' => 'userclass_type_standard'));
}
unset($row['userclass_accum']);
$jshelper->addResponseAction('fill-form', $row);
$jshelper->sendResponse('XML');
// $jshelper->sendResponse('JSON'); - another option (tested) - faster transfer!
}
else
{
e_jshelper::sendAjaxError('500', 'Database read error!');
}
}
exit;
}
e107::getJs()->headerCore('core/admin.js');
*/
/*
* Authorization should be done a bit later!
*/
require_once("auth.php");
$emessage = e107::getMessage();
//---------------------------------------------------
// Set Initial Classes
//---------------------------------------------------
/*
if (isset($_POST['set_initial_classes']))
{
$changed = $pref['init_class_stage'] != intval($_POST['init_class_stage']);
$pref['init_class_stage'] = intval($_POST['init_class_stage']);
$temp = array();
foreach ($_POST['init_classes'] as $ic)
{
$temp[] = intval($ic);
}
$newval = implode(',', $temp);
$temp = varset($pref['initial_user_classes'],'');
if ($temp != $newval) $changed = TRUE;
if ($changed)
{
$pref['initial_user_classes'] = $newval;
save_prefs();
userclass2_adminlog("05","New: {$newval}, Old: {$temp}, Stage: ".$pref['init_class_stage']);
$message = UCSLAN_41;
}
else
{
$message = UCSLAN_42;
}
}
*/
//---------------------------------------------------
// Delete existing class
//---------------------------------------------------
/*
if (isset($_POST['etrigger_delete']) && !empty($_POST['etrigger_delete']))
{
$classID = intval(array_shift(array_keys($_POST['etrigger_delete'])));
//checkAllowed($classID);
if ($e_userclass->queryCanDeleteClass($classID))
{
if ($e_userclass->delete_class($class_id) !== FALSE)
{
userclass2_adminlog("02","ID:{$class_id} (".$e_userclass->uc_get_classname($classID).")");
if ($sql->db_Select('user', 'user_id, user_class', "user_class = '{$classID}' OR user_class REGEXP('^{$classID},') OR user_class REGEXP(',{$classID},') OR user_class REGEXP(',{$classID}$')"))
{ // Delete existing users from class
while ($row = $sql->db_Fetch(MYSQL_ASSOC))
{
$uidList[$row['user_id']] = $row['user_class'];
}
$e_userclass->class_remove($classID, $uidList);
}
$e_pref = e107::getConfig();
if($e_pref->isData('frontpage/'.$classID))
{
$e_pref->removePref('frontpage/'.$classID)->save(false);
}
// if (isset($pref['frontpage'][$class_id]))
{
// unset($pref['frontpage'][$class_id]); // (Should work with both 0.7 and 0.8 front page methods)
// save_prefs();
}
$emessage->add(UCSLAN_3, E_MESSAGE_SUCCESS);
}
else
{
$emessage->add(UCSLAN_10, E_MESSAGE_ERROR);
}
}
else
{
$emessage->add(UCSLAN_10, E_MESSAGE_ERROR);
}
}*/
//---------------------------------------------------
// Add/Edit class information
//---------------------------------------------------
/*
if (isset($_POST['createclass'])) // Add or edit
{
$fullEdit = TRUE; // Most of the time, we are allowed to edit everything
$do_tree = FALSE; // Set flag to rebuild tree if no errors
$forwardVals = FALSE; // Set to ripple through existing values to a subsequent pass
$tempID = intval(varset($_POST['userclass_id'], -1));
if (($tempID < 0) && $e_userclass->ucGetClassIDFromName($class_record['userclass_name']))
{
$emessage->add(UCSLAN_63, E_MESSAGE_WARNING); // Duplicate name
$forwardVals = TRUE;
}
if ($tempID > 0)
{
$fullEdit = $e_userclass->queryCanEditClass($tempID) == 2;
}
$class_record = array(
'userclass_description' => varset($tp->toDB($_POST['userclass_description']),''),
'userclass_editclass' => intval(varset($_POST['userclass_editclass'],0)),
'userclass_parent' => intval(varset($_POST['userclass_parent'],0)),
'userclass_visibility' => intval(varset($_POST['userclass_visibility'],0)),
'userclass_icon' => $tp->toDB(varset($_POST['userclass_icon'],''))
);
if ($fullEdit)
{
$class_record['userclass_name'] = varset($tp->toDB($_POST['userclass_name']),'');
$class_record['userclass_type'] = intval(varset($_POST['userclass_type'],UC_TYPE_STD));
if ($class_record['userclass_type'] == UC_TYPE_GROUP)
{
$temp = array();
foreach ($_POST['group_classes_select'] as $gc)
{
$temp[] = intval($gc);
}
$class_record['userclass_accum'] = implode(',',$temp);
}
}
if ($e_userclass->checkAdminInfo($class_record, $tempID) === FALSE)
{
$emessage->add(UCSLAN_86); // Some fixed values changed
$forwardVals = TRUE;
}
if (!$forwardVals)
{
if ($tempID > 0)
{ // Editing existing class here
checkAllowed($tempID);
$class_record['userclass_id'] = $tempID;
$e_userclass->save_edited_class($class_record);
userclass2_adminlog('03',"ID:{$class_record['userclass_id']} (".$class_record['userclass_name'].")");
$do_tree = TRUE;
//$message .= UCSLAN_5;
$emessage->add(UCSLAN_5, E_MESSAGE_SUCCESS);
}
else
{ // Creating new class
if($class_record['userclass_name'])
{
if (getperms("0") || ($class_record['userclass_editclass'] && check_class($class_record['userclass_editclass'])))
{
$i = $e_userclass->findNewClassID();
if ($i === FALSE)
{
//$message = UCSLAN_85;
$emessage->add(UCSLAN_85, E_MESSAGE_WARNING);
}
else
{
$class_record['userclass_id'] = $i;
$e_userclass->add_new_class($class_record);
userclass2_adminlog("01","ID:{$class_record['userclass_id']} (".$class_record['userclass_name'].")");
$do_tree = TRUE;
//$message .= UCSLAN_6;
$emessage->add(UCSLAN_6, E_MESSAGE_SUCCESS);
}
}
else
{
header("location:".SITEURL);
exit;
}
}
else
{
// Class name required
//$message = UCSLAN_37;
$emessage->add(UCSLAN_37, E_MESSAGE_ERROR);
$forwardVals = TRUE;
}
}
}
if ($do_tree)
{
$e_userclass->calc_tree();
$e_userclass->save_tree();
}
}
*/
/*
if ($message)
{
$emessage->add($message);
}
class uclassFrm extends e_form
{
function userclass_type($curVal,$mode)
{
$types = array(
UC_TYPE_STD => UCSLAN_80,
UC_TYPE_GROUP => UCSLAN_81
);
return varset($types[$curVal]);
}
}
*/
/*
if(!e_QUERY || $action == 'list')
{
$uc->show_existing();
}
*/
if(isset($_GET['id']) && $_GET['action'] == 'edit')
{
$action = 'config';
$_POST['existing'] = $_GET['id'];
}
switch ($action)
{
//-----------------------------------
// Class management
//-----------------------------------
case 'config' :
$fullEdit = TRUE;
if(isset($_POST['existing']))
{
$params = 'edit';
$class_num = intval(varset($_POST['existing'],0));
$fullEdit = $e_userclass->queryCanEditClass($class_num) == 2;
}
else
{
$class_num = intval(varset($uc_qs[2],0));
}
$userclass_id = 0; // Set defaults for new class to start with
$userclass_name = '';
$userclass_description = '';
$userclass_editclass = e_UC_ADMIN;
$userclass_visibility = e_UC_ADMIN;
$userclass_parent = e_UC_NOBODY;
$userclass_icon = '';
$userclass_type = UC_TYPE_STD;
$userclass_groupclass = '';
if ($params == 'edit' || $forwardVals)
{
if (!isset($forwardVals))
{ // Get the values from DB (else just recycle data uer was trying to store)
checkAllowed($class_num);
$sql->db_Select('userclass_classes', '*', "userclass_id='".intval($class_num)."' ");
$class_record = $sql->db_Fetch();
$userclass_id = $class_record['userclass_id']; // Update fields from DB if editing
}
$userclass_name = $class_record['userclass_name'];
$userclass_description = $class_record['userclass_description'];
$userclass_editclass = $class_record['userclass_editclass'];
$userclass_visibility = $class_record['userclass_visibility'];
$userclass_parent = $class_record['userclass_parent'];
$userclass_icon = $class_record['userclass_icon'];
$userclass_type = $class_record['userclass_type'];
if ($userclass_type == UC_TYPE_GROUP)
{
$userclass_groupclass = $class_record['userclass_accum'];
}
}
$class_total = $sql->db_Count('userclass_classes', '(*)');
$text = "
";
// $text .= $e_userclass->show_graphical_tree();
$title = $params == 'edit' ? LAN_EDIT : LAN_CREATE;
$ns->tablerender(ADLAN_38.SEP.$title, $text);
unset($title);
break; // End of 'config' option
//-----------------------------------
// Initial User class(es)
//-----------------------------------
/*
case 'initial' :
$initial_classes = varset($pref['initial_user_classes'],'');
$irc = explode(',',$initial_classes);
$icn = array();
foreach ($irc as $i)
{
if (trim($i)) $icn[] = $e_userclass->uc_get_classname($i);
}
// $class_text = $e_userclass->uc_checkboxes('init_classes', $initial_classes, 'classes, force', TRUE);
$class_text = $e_userclass->vetted_tree('init_classes',array($e_userclass,'checkbox_desc'), $initial_classes, 'classes, force, no-excludes');
$mes->addInfo(UCSLAN_49);
$text = "";
$ns->tablerender(ADLAN_38.SEP.UCSLAN_40, $mes->render() . $text);
break; // End of 'initial'
*/
//-----------------------------------
// Debug aids
//-----------------------------------
case 'debug' :
// if (!check_class(e_UC_MAINADMIN)) break; // Let ordinary admins see this if they know enough to specify the URL
$text .= $e_userclass->show_graphical_tree(TRUE); // Print with debug options
$ns->tablerender(UCSLAN_21, $text);
$text = "Class rights for first 20 users in database |
User ID | Disp Name | Raw classes | Inherited classes | Editable classes |
";
$sql->db_Select('user','user_id,user_name,user_class',"ORDER BY user_id LIMIT 0,20",'no_where');
while ($row = $sql->db_Fetch())
{
$inherit = $e_userclass->get_all_user_classes($row['user_class']);
$text .= "".$row['user_id']." |
".$row['user_name']." | ".$row['user_class']." |
".$inherit." |
".$e_userclass->get_editable_classes($inherit)." |
";
}
$text .= "
";
$ns->tablerender(UCSLAN_21, $text);
break; // End of 'debug'
//-----------------------------------
// Configuration options
//-----------------------------------
case 'options' :
/*
if (!check_class(e_UC_MAINADMIN)) break;
if (isset($_POST['add_class_tree']))
{ // Create a default tree
$message = UCSLAN_62;
$e_userclass->set_default_structure();
$e_userclass->calc_tree();
$e_userclass->save_tree();
$e_userclass->readTree(TRUE); // Need to re-read the tree to show correct info
$message .= UCSLAN_64;
}
if (isset($_POST['flatten_class_tree']))
{ // Remove the default tree
$message = UCSLAN_65;
$sql->db_Update('userclass_classes', "userclass_parent='0'");
$e_userclass->calc_tree();
$e_userclass->save_tree();
$e_userclass->readTree(TRUE); // Need to re-read the tree to show correct info
$message .= UCSLAN_64;
}
if (isset($_POST['rebuild_tree']))
{
$message = UCSLAN_70;
$e_userclass->calc_tree();
$e_userclass->save_tree();
$message .= UCSLAN_64;
}
if ($params == 'xml') $params = '.xml'; else $params = '';
if (isset($_POST['create_xml_db']) && ($params == '.xml'))
{
$message = $e_userclass->makeXMLFile() ? 'XML file created' : 'Error creating XML file';
}
if ($message)
{
$ns->tablerender('', "".$message."
");
}
$mes = e107::getMessage();
$mes->addWarning(UCSLAN_52."
".UCSLAN_53);
$text = "";
$ns->tablerender(ADLAN_38.SEP.LAN_PREFS, $mes->render().$text);
$text = "";
$ns->tablerender(UCSLAN_71, $text);
break; // End of 'options'
*/
//-----------------------------------
// Test options
//-----------------------------------
case 'test' :
if (!check_class(e_UC_MAINADMIN)) break;
break; // ...And disable for everyone at present
if (isset($_POST['add_db_fields']))
{ // Add the extra DB fields
$message = "Add DB fields: ";
$e_userclass->update_db(FALSE);
$message .= "Completed";
}
if (isset($_POST['remove_db_fields']))
{ // Remove the DB fields
$message = "Remove DB fields: ";
$sql->db_Select_gen("ALTER TABLE #userclass_classes DROP `userclass_parent`, DROP `userclass_accum`, DROP `userclass_visibility`");
$message .= "Completed";
}
if (isset($_POST['add_class_tree']))
{ // Create a default tree
$message = "Create default class tree: ";
if (!$e_userclass->update_db(TRUE))
{
$message .= "Must add new DB fields first";
}
else
{
$e_userclass->set_default_structure();
$e_userclass->read_tree(TRUE); // Need to re-read the tree to show correct info
$message .= "Completed";
}
}
if (isset($_POST['remove_class_tree']))
{ // Remove the default tree
$message = "Remove default class tree: ";
$sql->db_Delete("userclass_classes","`userclass_id` IN (".implode(',',array(e_UC_MAINADMIN,e_UC_MEMBER, e_UC_ADMIN, e_UC_ADMINMOD, e_UC_MODS, e_UC_USERS, e_UC_READONLY)).") ");
$e_userclass->read_tree(TRUE); // Need to re-read the tree to show correct info
$message .= "completed";
}
if (isset($_POST['rebuild_tree']))
{
$message = 'Rebuilding tree: ';
$e_userclass->calc_tree();
$e_userclass->save_tree();
$message .= " completed";
}
if ($message)
{
$ns->tablerender("", "".$message."
");
}
$db_status = "Unknown";
$db_status = $e_userclass->update_db(TRUE) ? "Updated" : "Original";
$text = "";
$ns->tablerender('User classes - test features', $text);
break; // End of temporary test options
//-----------------------------------
// Special fooling around
//-----------------------------------
case 'special' :
if (!check_class(e_UC_MAINADMIN)) break; // Let main admins see this if they know enough to specify the URL
$text = "";
$ns->tablerender('Click on the button - the settings above should be remembered, and the $_POST values displayed', $text);
break; // End of 'debug'
} // End - switch ($action)
/**
* Log event to admin log
*
* @param string $msg_num - 2-digit event number (MUST be as a string)
* @param string $woffle - log detail
*
* @return none
*/
function userclass2_adminlog($msg_num='00', $woffle='')
{
e107::getAdminLog()->log_event('UCLASS_'.$msg_num,$woffle,E_LOG_INFORMATIVE,'');
}
/*
function userclass2_adminmenu()
{
$tmp = array();
if (e_QUERY)
{
$tmp = explode(".", e_QUERY);
}
$action = vartrue($tmp[0],'list');
if(isset($_GET['action']) && 'edit' == $_GET['action']) $action = 'list';
$var['list']['text'] = LAN_MANAGE;
$var['list']['link'] = 'userclass2.php';
$var['config']['text'] = LAN_CREATE; // UCSLAN_25;
$var['config']['link'] = 'userclass2.php?config';
//DEPRECATED - use admin->users instead.
// $var['membs']['text'] = UCSLAN_26;
// $var['membs']['link'] ='userclass2.php?membs';
$var['initial']['text'] = UCSLAN_38;
$var['initial']['link'] ='userclass2.php?initial';
if (check_class(e_UC_MAINADMIN))
{
$var['options']['text'] = LAN_PREFS; // UCSLAN_50;
$var['options']['link'] ='userclass2.php?options';
if (defined('UC_DEBUG_OPTS'))
{
$var['debug']['text'] = UCSLAN_27;
$var['debug']['link'] ='userclass2.php?debug';
$var['test']['text'] = 'Test functions';
$var['test']['link'] ="userclass2.php?test";
$var['specials']['text'] = 'Special tests';
$var['specials']['link'] ="userclass2.php?special";
}
}
show_admin_menu(ADLAN_38, $action, $var);
}
*/
/*
class uclass_manager
{
public function __construct()
{
global $user_pref;
if(isset($_POST['etrigger_ecolumns']))
{
$user_pref['admin_userclass_columns'] = $_POST['e-columns'];
save_prefs('user');
}
$this->fieldpref = (varset($user_pref['admin_userclass_columns'])) ? $user_pref['admin_userclass_columns'] : array("userclass_id","userclass_name","userclass_description");
$this->fields = array(
'userclass_icon' => array('title'=> UCSLAN_68, 'type' => 'icon', 'width' => '5%', 'thclass' => 'center', 'class' => 'center'),
'userclass_id' => array('title'=> LAN_ID, 'type' => 'int', 'width' => '5%', 'thclass' => 'left'),
'userclass_name' => array('title'=> UCSLAN_12, 'type' => 'text', 'width' => 'auto', 'thclass' => 'left'),
'userclass_description' => array('title'=> UCSLAN_13, 'type' => 'text', 'width' => 'auto', 'thclass' => 'left'),
'userclass_editclass' => array('title'=> UCSLAN_24, 'type' => 'userclass', 'width' => 'auto', 'thclass' => 'left'),
'userclass_parent' => array('title'=> UCSLAN_35, 'type' => 'userclass', 'width' => 'auto', 'thclass' => 'left'),
'userclass_visibility' => array('title'=> UCSLAN_34, 'type' => 'userclass', 'width' => 'auto', 'thclass' => 'left'),
'userclass_type' => array('title'=> UCSLAN_79, 'type' => 'method', 'width' => '10%', 'thclass' => 'left', 'class'=>'left' ),
'options' => array('title'=> LAN_OPTIONS, 'type' => null, 'width' => '10%', 'thclass' => 'center last', 'forced'=>TRUE, 'class'=>'right', 'readParms' => array('deleteClass' => e_UC_NOBODY))
);
}
// Show list of existing userclasses, followed by graphical tree of the hierarchy
public function show_existing()
{
global $e_userclass;
$tp = e107::getParser();
$sql = e107::getDb();
$frm = new uclassFrm;
$ns = e107::getRender();
$mes = e107::getMessage();
if (!$total = $sql->db_Select('userclass_classes', '*'))
{
$text = "";
$mes->add(UCSLAN_7, E_MESSAGE_INFO);
}
else
{
$text = "";
}
// $text .= $e_userclass->show_graphical_tree(); // Show the tree as well - sometimes more useful
$ns->tablerender(ADLAN_38, $mes->render().$text );
}
}
require_once(e_ADMIN.'footer.php');
*/
// @TODO: Is this function still required? - Yes - setGroupStatus() used on class add/edit page
function headerjs()
{
$params = e107::getRegistry('pageParams');
/*
* e107Ajax.fillForm demonstration
* Open Firebug console for Ajax transaction details
*
*/
$script_js = "\n";
if ($params[0] != 'membs') return $script_js;
// We only want this JS on the class membership selection page
// XXX memebs action is deprecated now, remove this script?
$script_js .= "\n";
return $script_js;
}
?>