}
";
return $text;
}
e107::js('inline', js());
if(E107_DEBUG_LEVEL > 0 )
{
e107::getMessage()->addDebug("DEBUG is active. These pages are experimental");
class user_extended_adminArea extends e_admin_dispatcher
{
protected $modes = array(
'main' => array(
'controller' => 'user_extended_struct_ui',
'path' => null,
'ui' => 'user_extended_struct_form_ui',
'uipath' => null
),
'cat' => array(
'controller' => 'user_extended_category_struct_ui',
'path' => null,
'ui' => 'user_extended_struct_form_ui',
'uipath' => null
),
);
protected $adminMenu = array(
'main/list' => array('caption'=> LAN_MANAGE, 'perm' => '0'),
'main/add' => array('caption'=> EXTLAN_45, 'perm' => '0'),
'main/create' => array('caption'=> 'Add Custom Field', 'perm' => '0'),
'cat/list' => array('caption'=> LAN_CATEGORIES, 'perm' => '0'),
'cat/create' => array('caption'=> LAN_CREATE_CATEGORY, 'perm' => '0'),
// 'main/custom' => array('caption'=> 'Custom Page', 'perm' => 'P')
);
/*
* }
$var['main']['text'] = EXTLAN_34;
$var['main']['link'] = e_SELF;
$var['pre']['text'] = EXTLAN_45;
$var['pre']['link'] = e_SELF."?pre";
$var['editext']['text'] = "Add Custom Field";
$var['editext']['link'] = e_SELF."?editext";
$var['cat']['text'] = EXTLAN_35;
$var['cat']['link'] = e_SELF."?cat";
show_admin_menu(EXTLAN_9, $action, $var);
}
*/
protected $adminMenuAliases = array(
'main/edit' => 'main/list'
);
protected $menuTitle = EXTLAN_9;
}
class user_extended_struct_ui extends e_admin_ui
{
protected $pluginTitle = EXTLAN_9;
protected $pluginName = 'user_extended';
// protected $eventName = 'user_extended-user_extended_struct'; // remove comment to enable event triggers in admin.
protected $table = 'user_extended_struct';
protected $pid = 'user_extended_struct_id';
protected $perPage = 10;
protected $batchDelete = true;
// protected $batchCopy = true;
// protected $sortField = 'somefield_order';
// protected $orderStep = 10;
protected $tabs = array(LAN_BASIC,LAN_ADVANCED); // Use 'tab'=>0 OR 'tab'=>1 in the $fields below to enable.
protected $listQry = "SELECT * FROM `#user_extended_struct` WHERE user_extended_struct_type != 0 AND user_extended_struct_text != '_system_' "; // Example Custom Query. LEFT JOINS allowed. Should be without any Order or Limit.
protected $listOrder = 'user_extended_struct_order ASC';
protected $fields = array (
'checkboxes' => array ( 'title' => '', 'type' => null, 'data' => null, 'width' => '5%', 'thclass' => 'center', 'forced' => '1', 'class' => 'center', 'toggle' => 'e-multiselect', ),
'user_extended_struct_id' => array ( 'title' => LAN_ID, 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_name' => array ( 'title' => LAN_NAME, 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => 'tdClassRight=form-inline&pre=user_ ', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_text' => array ( 'title' => EXTLAN_79, 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'inline' => true, 'help' => '', 'readParms' => 'constant=1', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_type' => array ( 'title' => EXTLAN_2, 'type' => 'method', 'data' => 'int', 'width' => 'auto', 'batch' => true, 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_values' => array ( 'title' => "Values", 'type' => 'method', 'nolist'=>true, 'data' => 'str', 'width' => 'auto', 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_default' => array ( 'title' => LAN_DEFAULT, 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'field_include' => array('title'=> EXTLAN_15, 'tab'=>1, 'type'=>'textarea', 'data'=>false, 'help'=>EXTLAN_51),
'field_regex' => array('title'=> EXTLAN_52, 'tab'=>1, 'type'=>'text', 'data'=>false, 'help'=> EXTLAN_53),
'field_regexfail' => array('title'=> EXTLAN_54, 'tab'=>1, 'type'=>'text', 'data'=>false, 'help'=>EXTLAN_55),
'field_placeholder' => array('title'=>'Placeholder', 'tab'=>1, 'type'=>'text', 'data'=>false, 'writeParms'=>array('size'=>'xlarge')),
'user_extended_struct_parent' => array ( 'title' => LAN_CATEGORY, 'type' => 'dropdown', 'data' => 'int', 'width' => 'auto', 'batch' => true, 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => array('size'=>'xxlarge'), 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_required' => array ( 'title' => EXTLAN_4, 'type' => 'method', 'data' => 'int', 'width' => '5%', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_applicable' => array ( 'title' => EXTLAN_5, 'type' => 'userclass', 'data' => 'int', 'width' => '10%', 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_parms' => array ( 'title' => "Params", 'type' => 'hidden', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_read' => array ( 'title' =>EXTLAN_6, 'type' => 'userclass', 'data' => 'int', 'width' => '10%', 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_write' => array ( 'title' => 'Write Access', 'type' => 'userclass', 'data' => 'int', 'width' => '10%', 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_signup' => array ( 'title' => 'Signup', 'type' => 'boolean', 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_order' => array ( 'title' => LAN_ORDER, 'type' => 'number', 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'options' => array ( 'title' => LAN_OPTIONS, 'type' => null, 'data' => null, 'width' => '10%', 'thclass' => 'center last', 'class' => 'center last', 'forced' => '1', 'readParms'=>'sort=1' ),
);
protected $fieldpref = array('user_extended_struct_name', 'user_extended_struct_text', 'user_extended_struct_type', 'user_extended_struct_read', 'user_extended_struct_write', 'user_extended_struct_required', 'user_extended_struct_applicable');
protected $prefs = array(
);
public function init()
{
// Set drop-down values (if any).
if($this->getAction() == 'edit' || $this->getAction() == 'create')
{
$this->fields['user_extended_struct_type']['title'] = LAN_TYPE;
}
// $this->fields['user_extended_struct_parent']['writeParms']['optArray'] = array('user_extended_struct_parent_0','user_extended_struct_parent_1', 'user_extended_struct_parent_2'); // Example Drop-down array.
$data = e107::getDb()->retrieve("user_extended_struct", "*", "user_extended_struct_type = 0 ORDER BY user_extended_struct_order ASC", true);
// $catList = e107::getUserExt()->user_extended_get_categories();
$opts = array();
$opts[0] = EXTLAN_36;
foreach($data as $row)
{
$id = $row['user_extended_struct_id'];
$opts[$id] = $row['user_extended_struct_name'];
}
$this->fields['user_extended_struct_parent']['writeParms']['optArray'] = $opts;
}
// ------- Customize Create --------
public function beforeCreate($new_data, $old_data)
{
return $new_data;
}
public function afterCreate($new_data, $old_data, $id)
{
// do something
}
public function onCreateError($new_data, $old_data)
{
// do something
}
// ------- Customize Update --------
public function beforeUpdate($new_data, $old_data, $id)
{
return $new_data;
}
public function afterUpdate($new_data, $old_data, $id)
{
// do something
}
public function onUpdateError($new_data, $old_data, $id)
{
// do something
}
function addPageActivate()
{
$ue = e107::getUserExt();
$tp = e107::getParser();
$ret = "";
$preList = $ue->parse_extended_xml('getfile');
$tmp = $preList;
foreach(array_keys($_POST['activate']) as $f)
{
$tmp[$f]['parms'] = $tp->toDB($tmp[$f]['parms']);
if($ue->user_extended_add($tmp[$f]))
{
$ret .= EXTLAN_68." $f ".EXTLAN_69."
";
if ($tmp[$f]['type']=="db field")
{
if (is_readable(e_CORE.'sql/extended_'.$f.'.php'))
{
// $ret .= ($this->process_sql($f)) ? LAN_CREATED." user_extended_{$f}
" : LAN_CREATED_FAILED." user_extended_{$f}
";
}
else
{
$ret .= str_replace('--FILE--',e_CORE.'sql/extended_'.$f.'.php',EXTLAN_78);
}
}
}
else
{
$ret .= EXTLAN_70." $f ".EXTLAN_71."
";
}
}
e107::getLog()->add('EUF_11',implode(', ',$_POST['activate']),E_LOG_INFORMATIVE,'');
e107::getMessage()->addSuccess($ret);
return $ret;
}
function addPage()
{
$ns = e107::getRender();
$ue = e107::getUserExt();
$this->addPageActivate();
// Get list of current extended fields
$curList = $ue->user_extended_get_fieldlist();
foreach($curList as $c)
{
$curNames[] = $c['user_extended_struct_name'];
}
//Get list of predefined fields.
$preList = $ue->parse_extended_xml('getfile');
ksort($preList);
$txt = "
";
$emessage = e107::getMessage();
return $txt;
$ns->tablerender(EXTLAN_9.SEP.EXTLAN_56,$emessage->render(). $txt);
}
function show_predefined_field($var, $active)
{
static $head_shown;
$txt = "";
$tp = e107::getParser();
$ue = e107::getUserExt();
$frm = e107::getForm();
foreach($var as $key=>$val) // convert predefined xml to default array format
{
$var['user_extended_struct_'.$key] = $val;
}
$var['user_extended_struct_type'] = $ue->typeArray[$var['user_extended_struct_type']];
$var['user_extended_struct_parms'] = $var['include_text'];
$txt .= "
{$var['user_extended_struct_name']} |
".constant(strtoupper($var['user_extended_struct_text'])."_DESC")." |
".$ue->user_extended_edit($var,$uVal)." |
".$tp->toHTML($var['type'], false, 'defs')." |
".($active ? ADMIN_TRUE_ICON : " ")." |
";
// $txt .= constant("UE_LAN_".strtoupper($var['text'])."DESC")."
";
// foreach($showlist as $f)
// {
// if($var[$f] != "" && $f != 'type' && $f !='text')
// {
// $txt .= "{$f}: ".$tp->toHTML($var[$f], false, 'defs')."
";
// }
// }
$val = (!$active) ? EXTLAN_59 : EXTLAN_60;
$type = (!$active) ? 'activate' : 'deactivate';
$style = (!$active) ? 'other' : 'delete';
$txt .= "
";
$txt .= $frm->admin_button($type."[".$var['user_extended_struct_name']."]", $val, $style );
$txt .= " |
";
return $txt;
}
/*
// optional - a custom page.
public function customPage()
{
$ns = e107::getRender();
$text = 'Hello World!';
return $text;
}
*/
}
class user_extended_struct_form_ui extends e_admin_form_ui
{
// Custom Method/Function
function user_extended_struct_type($curVal,$mode)
{
switch($mode)
{
case 'read': // List Page
$ext = $this->getController()->getListModel()->getData();
return e107::getUserExt()->user_extended_edit($ext,$ext['user_extended_struct_default']);
// reutrn e107::getParser()>toHTML(deftrue($ext['user_extended_struct_text'], $ext['user_extended_struct_text']), FALSE, "defs")
break;
case 'write': // Edit Page
$text = "";
return $text;
break;
case 'filter':
case 'batch':
return array();
break;
}
}
function user_extended_struct_required($curVal, $mode)
{
$opts = array('0' => EXTLAN_65, '1' => EXTLAN_66, '2' => EXTLAN_67);
switch($mode)
{
case 'read': // List Page
return $opts[$curVal];
break;
case 'write': // Edit Page
return $this->select('user_required',$opts, varset($curVal,1),'size=xxlarge');
break;
case 'filter':
case 'batch':
return array();
break;
}
}
// Custom Method/Function
function user_extended_struct_values($curVal,$mode)
{
switch($mode)
{
case 'read': // List Page
return $curVal;
break;
case 'write': // Edit Page
return $this->renderStructValues($curVal);
break;
case 'filter':
case 'batch':
return array();
break;
}
}
function renderStructValues($curVal)
{
$sql = e107::getDb();
$frm = e107::getForm();
$current = $this->getController()->getModel()->getData();
$val_hide = ($current['user_extended_struct_type'] != 4) ? "visible" : "none";
$text = "";
// End of Values. --------------------------------------
$db_hide = ($current['user_extended_struct_type'] == 4) ? "visible" : "none";
$text .= "\n";
$text .= "
";
$text .= EXTLAN_62." | |
";
if($_POST['table_db'] || $curVals[0])
{
// Field ID
$text .= "".EXTLAN_63." | |
";
// Field Value
$text .= EXTLAN_64." | |
";
$text .= LAN_ORDER." | |
";
}
$text .= "
";
// ---------------------------------------------------------
$text .= "".$frm->checkbox('sort_user_values',1, false, "Sort values")."
";
return $text;
}
} // end class.
class user_extended_category_struct_ui extends e_admin_ui
{
protected $pluginTitle = EXTLAN_9;
protected $pluginName = 'user_extended';
// protected $eventName = 'user_extended-user_extended_struct'; // remove comment to enable event triggers in admin.
protected $table = 'user_extended_struct';
protected $pid = 'user_extended_struct_id';
protected $perPage = 10;
protected $batchDelete = true;
// protected $batchCopy = true;
// 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 `#user_extended_struct` WHERE user_extended_struct_type = 0 AND user_extended_struct_text != '_system_' "; // Example Custom Query. LEFT JOINS allowed. Should be without any Order or Limit.
protected $listOrder = 'user_extended_struct_order ASC';
protected $fields = array (
'checkboxes' => array ( 'title' => '', 'type' => null, 'data' => null, 'width' => '5%', 'thclass' => 'center', 'forced' => '1', 'class' => 'center', 'toggle' => 'e-multiselect', ),
'user_extended_struct_id' => array ( 'title' => LAN_ID, 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_name' => array ( 'title' => LAN_NAME, 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_text' => array ( 'title' => EXTLAN_79, 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'inline' => true, 'help' => '', 'readParms' => 'constant=1', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_type' => array ( 'title' => EXTLAN_2, 'type' => 'hidden', 'nolist'=>true, 'data' => 'int', 'width' => 'auto', 'batch' => true, 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => array('default'=>0), 'class' => 'left', 'thclass' => 'left', ),
// 'user_extended_struct_values' => array ( 'title' => "Values", 'type' => 'method', 'nolist'=>true, 'data' => 'str', 'width' => 'auto', 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
// 'user_extended_struct_default' => array ( 'title' => LAN_DEFAULT, 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
// 'user_extended_struct_parent' => array ( 'title' => LAN_CATEGORY, 'type' => 'dropdown', 'data' => 'int', 'width' => 'auto', 'batch' => true, 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => array('size'=>'xxlarge'), 'class' => 'left', 'thclass' => 'left', ),
// 'user_extended_struct_required' => array ( 'title' => EXTLAN_4, 'type' => 'method', 'data' => 'int', 'width' => '5%', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_applicable' => array ( 'title' => EXTLAN_5, 'type' => 'userclass', 'data' => 'int', 'width' => '15%', 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
// 'user_extended_struct_parms' => array ( 'title' => "Params", 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_read' => array ( 'title' =>EXTLAN_6, 'type' => 'userclass', 'data' => 'int', 'width' => '15%', 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_write' => array ( 'title' => 'Write Access', 'type' => 'userclass', 'data' => 'int', 'width' => '15%', 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
// 'user_extended_struct_signup' => array ( 'title' => 'Signup', 'type' => 'boolean', 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ),
'user_extended_struct_order' => array ( 'title' => LAN_ORDER, 'type' => 'number', 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'right', 'thclass' => 'right', ),
'options' => array ( 'title' => LAN_OPTIONS, 'type' => null, 'data' => null, 'width' => '10%', 'thclass' => 'center last', 'class' => 'center last', 'forced' => '1', 'readParms'=>'sort=0' ),
);
protected $fieldpref = array('user_extended_struct_name', 'user_extended_struct_text', 'user_extended_struct_read', 'user_extended_struct_write', 'user_extended_struct_applicable');
protected $prefs = array(
);
public function init()
{
// Set drop-down values (if any).
}
// ------- Customize Create --------
public function beforeCreate($new_data, $old_data)
{
return $new_data;
}
public function afterCreate($new_data, $old_data, $id)
{
// do something
}
public function onCreateError($new_data, $old_data)
{
// do something
}
// ------- Customize Update --------
public function beforeUpdate($new_data, $old_data, $id)
{
return $new_data;
}
public function afterUpdate($new_data, $old_data, $id)
{
// do something
}
public function onUpdateError($new_data, $old_data, $id)
{
// do something
}
}
new user_extended_adminArea();
require_once(e_ADMIN."auth.php");
e107::getAdminUI()->runPage();
require_once(e_ADMIN."footer.php");
exit;
}
// -------------------------------------- Old Code --------------------------------------
$e_sub_cat = 'user_extended';
$curtype = '1';
require_once("auth.php");
$ue = new e107_user_extended;
$user = new users_ext;
$frm = e107::getForm();
$mes = e107::getMessage();
require_once(e_HANDLER.'user_extended_class.php');
require_once(e_HANDLER.'userclass_class.php');
$message = '';
$message_type = E_MESSAGE_SUCCESS;
if (e_QUERY)
{
$tmp = explode(".", e_QUERY);
$action = $tmp[0];
$sub_action = varset($tmp[1],'');
$id = varset($tmp[2],0);
unset($tmp);
}
// TODO $_POST['up_x'] check for the evil IE
$tmp = isset($_POST['up']) ? $_POST['up'] : false;
if ($tmp)
{
$tmp = array_values($tmp);
$qs = explode(".", $tmp[0]);
$_id = intval($qs[0]);
$_order = intval($qs[1]);
$_parent = intval($qs[2]);
if (($_id > 0) && ($_order > 0) /*&& ($_parent > 0)*/)
{
$sql->db_Update("user_extended_struct", "user_extended_struct_order=user_extended_struct_order+1 WHERE user_extended_struct_type > 0 AND user_extended_struct_parent = {$_parent} AND user_extended_struct_order ='".($_order-1)."'");
$sql->db_Update("user_extended_struct", "user_extended_struct_order=user_extended_struct_order-1 WHERE user_extended_struct_type > 0 AND user_extended_struct_parent = {$_parent} AND user_extended_struct_id='".$_id."'");
e107::getLog()->add('EUF_01',$_id.', '.$_order.', '.$_parent,E_LOG_INFORMATIVE,'');
e107::getCache()->clear_sys('user_extended_struct', true);
}
}
// TODO $_POST['down_x'] check for the evil IE
$tmp = isset($_POST['down']) ? $_POST['down'] : false;
if ($tmp)
{
$tmp = array_values($tmp);
$qs = explode(".", $tmp[0]);
$_id = intval($qs[0]);
$_order = intval($qs[1]);
$_parent = intval($qs[2]);
if (($_id > 0) && ($_order > 0)/* && ($_parent > 0)*/)
{
$sql->db_Update("user_extended_struct", "user_extended_struct_order=user_extended_struct_order-1 WHERE user_extended_struct_type > 0 AND user_extended_struct_parent = {$_parent} AND user_extended_struct_order='".($_order+1)."'");
$sql->db_Update("user_extended_struct", "user_extended_struct_order=user_extended_struct_order+1 WHERE user_extended_struct_type > 0 AND user_extended_struct_parent = {$_parent} AND user_extended_struct_id='".$_id."'");
e107::getLog()->add('EUF_02',$_id.', '.$_order.', '.$_parent,E_LOG_INFORMATIVE,'');
e107::getCache()->clear_sys('user_extended_struct', true);
}
}
if (isset($_POST['catup_x']) || isset($_POST['catup']))
{
$qs = explode(".", $_POST['id']);
$_id = intval($qs[0]);
$_order = intval($qs[1]);
if (($_id > 0) && ($_order > 0))
{
$sql->db_Update("user_extended_struct", "user_extended_struct_order=user_extended_struct_order+1 WHERE user_extended_struct_type = 0 AND user_extended_struct_order='".($_order-1)."'");
$sql->db_Update("user_extended_struct", "user_extended_struct_order=user_extended_struct_order-1 WHERE user_extended_struct_type = 0 AND user_extended_struct_id='".$_id."'");
e107::getLog()->add('EUF_03',$_id.', '.$_order,E_LOG_INFORMATIVE,'');
e107::getCache()->clear_sys('user_extended_struct', true);
}
}
if (isset($_POST['catdown_x']) || isset($_POST['catdown']))
{
$qs = explode(".", $_POST['id']);
$_id = intval($qs[0]);
$_order = intval($qs[1]);
if (($_id > 0) && ($_order > 0))
{
$sql->db_Update("user_extended_struct", "user_extended_struct_order=user_extended_struct_order-1 WHERE user_extended_struct_type = 0 AND user_extended_struct_order='".($_order+1)."'");
$sql->db_Update("user_extended_struct", "user_extended_struct_order=user_extended_struct_order+1 WHERE user_extended_struct_type = 0 AND user_extended_struct_id='".$_id."'");
e107::getLog()->add('EUF_04',$_id.', '.$_order,E_LOG_INFORMATIVE,'');
e107::getCache()->clear_sys('user_extended_struct', true);
}
}
if (isset($_POST['add_field']))
{
$ue_field_name = str_replace(' ','_',trim($_POST['user_field'])); // Replace space with underscore - better security
if (preg_match('#^\w+$#',$ue_field_name) === 1) // Check for allowed characters, finite field length
{
if($_POST['user_type']==EUF_DB_FIELD)
{
$_POST['user_values'] = array($_POST['table_db'],$_POST['field_id'],$_POST['field_value'],$_POST['field_order']);
}
if(!empty($_POST['sort_user_values']))
{
sort($_POST['user_values']);
}
$new_values = $user->make_delimited($_POST['user_values']);
$new_parms = $tp->toDB($_POST['user_include']."^,^".$_POST['user_regex']."^,^".$_POST['user_regexfail']."^,^".$_POST['user_hide']);
// Check to see if its a reserved field name before adding to database
if ($ue->user_extended_reserved($ue_field_name))
{ // Reserved field name
$message = "[user_".$tp->toHTML($ue_field_name)."] ".EXTLAN_74;
$message_type = E_MESSAGE_ERROR;
}
else
{
$result = $mes->addAuto($ue->user_extended_add($ue_field_name, $tp->toDB($_POST['user_text']), intval($_POST['user_type']), $new_parms, $new_values, $tp->toDB($_POST['user_default']), intval($_POST['user_required']), intval($_POST['user_read']), intval($_POST['user_write']), intval($_POST['user_applicable']), 0, intval($_POST['user_parent'])), 'insert', EXTLAN_29, false, false);
// $result = $mes->addAuto($ue->user_extended_add($ue_field_name, $tp->toDB($_POST['user_text']), intval($_POST['user_type']), $new_parms, $new_values, $tp->toDB($_POST['user_default']), intval($_POST['user_required']), intval($_POST['user_read']), intval($_POST['user_write']), intval($_POST['user_applicable']), 0, intval($_POST['user_parent'])), 'insert', EXTLAN_29, false, false);
if(!$result)
{
$message = EXTLAN_75;
$message_type = E_MESSAGE_INFO;
}
else
{
e107::getLog()->add('EUF_05',$ue_field_name.'[!br!]'.$tp->toDB($_POST['user_text']).'[!br!]'.intval($_POST['user_type']),E_LOG_INFORMATIVE,'');
e107::getCache()->clear_sys('user_extended_struct', true);
}
}
}
else
{
$message = EXTLAN_76." : ".$tp->toHTML($ue_field_name);
$message_type = E_MESSAGE_ERROR;
}
}
if (isset($_POST['update_field']))
{
if($_POST['user_type']==EUF_DB_FIELD)
{
$_POST['user_values'] = array($_POST['table_db'],$_POST['field_id'],$_POST['field_value'],$_POST['field_order']);
}
if(!empty($_POST['sort_user_values']))
{
sort($_POST['user_values']);
}
$upd_values = $user->make_delimited($_POST['user_values']);
$upd_parms = $tp->toDB($_POST['user_include']."^,^".$_POST['user_regex']."^,^".$_POST['user_regexfail']."^,^".$_POST['user_hide']);
$result = $mes->addAuto($ue->user_extended_modify($sub_action, $tp->toDB($_POST['user_field']), $tp->toDB($_POST['user_text']), intval($_POST['user_type']), $upd_parms, $upd_values, $tp->toDB($_POST['user_default']), intval($_POST['user_required']), intval($_POST['user_read']), intval($_POST['user_write']), intval($_POST['user_applicable']), intval($_POST['user_parent'])), 'update', EXTLAN_29, false, false);
if($result)
{
e107::getLog()->add('EUF_06',$tp->toDB($_POST['user_field']).'[!br!]'.$tp->toDB($_POST['user_text']).'[!br!]'.intval($_POST['user_type']),E_LOG_INFORMATIVE,'');
e107::getCache()->clear_sys('user_extended_struct', true);
}
}
if (isset($_POST['update_category']))
{
if (preg_match('#^[\w\s]+$#', $_POST['user_field']) === 1) // Check for allowed characters
{
$name = trim($tp->toDB($_POST['user_field']));
$result = $mes->addAuto(
$sql->db_Update(
"user_extended_struct",
"user_extended_struct_name = '{$name}', user_extended_struct_text='".$tp->toDB($_POST['user_text'])."', user_extended_struct_read = '".intval($_POST['user_read'])."', user_extended_struct_write = '".intval($_POST['user_write'])."', user_extended_struct_applicable = '".intval($_POST['user_applicable'])."' WHERE user_extended_struct_id = '{$sub_action}'"),
'update',
EXTLAN_43,
false,
false
);
if($result)
{
e107::getLog()->add('EUF_09',$name,E_LOG_INFORMATIVE,'');
e107::getCache()->clear_sys('user_extended_struct', true);
}
}
else
{
$message = EXTLAN_80;
$message_type = E_MESSAGE_ERROR;
}
}
if (isset($_POST['add_category']))
{
if (preg_match('#^[\w\s]+$#', $_POST['user_field']) === 1) // Check for allowed characters
{
$name = $tp->toDB($_POST['user_field']);
$result = $mes->addAuto($sql->db_Insert("user_extended_struct","'0', '{$name}', '".$tp->toDB($_POST['user_text'])."', 0, '', '', '', '".intval($_POST['user_read'])."', '".intval($_POST['user_write'])."', '0', '0', '".intval($_POST['user_applicable'])."', '0', '0'"), 'insert', EXTLAN_40, false, false);
if($result)
{
e107::getLog()->add('EUF_08',$name,E_LOG_INFORMATIVE,'');
e107::getCache()->clear_sys('user_extended_struct', true);
}
}
else
{
$message = EXTLAN_80;
$message_type = E_MESSAGE_ERROR;
}
}
// Delete category
if (varset($_POST['eu_action'],'') == "delcat")
{
list($_id, $_name) = explode(",",$_POST['key']);
if (count($ue->user_extended_get_fields($_id)) > 0)
{
$message = EXTLAN_77;
$message_type = E_MESSAGE_INFO;
}
elseif($ue->user_extended_remove($_id, $_name))
{
e107::getLog()->add('EUF_10',$_id.', '.$_name,E_LOG_INFORMATIVE,'');
$message = EXTLAN_41;
e107::getCache()->clear_sys('user_extended_struct', true);
}
}
if(isset($_POST['activate']))
{
$message .= $user->field_activate();
}
if(isset($_POST['deactivate']))
{
$message .= $user->field_deactivate();
}
/*if($sql->select("user_extended_struct","DISTINCT(user_extended_struct_parent)"))
{
$plist = $sql->db_getList();
foreach($plist as $_p)
{
$o = 0;
if($sql->select("user_extended_struct", "user_extended_struct_id", "user_extended_struct_parent = {$_p['user_extended_struct_parent']} && user_extended_struct_type != 0 ORDER BY user_extended_struct_order ASC"))
{
$_list = $sql->db_getList();
foreach($_list as $r)
{
$sql->db_Update("user_extended_struct", "user_extended_struct_order = '{$o}' WHERE user_extended_struct_id = {$r['user_extended_struct_id']}");
$o++;
}
}
}
}*/
if($message)
{
$emessage = eMessage::getInstance();
$emessage->add($message, $message_type);
}
if(isset($_POST['table_db']) && !$_POST['add_field'] && !$_POST['update_field'])
{
$action = "continue";
$current['user_extended_struct_name'] = $_POST['user_field'];
$current['user_extended_struct_parms'] = $_POST['user_include']."^,^".$_POST['user_regex']."^,^".$_POST['user_regexfail']."^,^".$_POST['user_hide'];
$current['user_extended_struct_text'] = $_POST['user_text'];
$current['user_extended_struct_type'] = $_POST['user_type'];
$user->show_extended($current);
}
if ($action == "editext")
{
if($sql->select('user_extended_struct','*',"user_extended_struct_id = '{$sub_action}'"))
{
$tmp = $sql->fetch();
$user->show_extended($tmp);
}
else
{
$user->show_extended('new');
}
}
if($action == 'pre')
{
$user->show_predefined();
}
if($action == 'cat')
{
if(is_numeric($sub_action))
{
if($sql->select('user_extended_struct','*',"user_extended_struct_id = '{$sub_action}'"))
{
$tmp = $sql->fetch();
}
}
$user->show_categories($tmp);
}
require_once("footer.php");
class users_ext
{
protected $catList;
protected $catNums;
function users_ext()
{
global $action,$ue;
if (varset($_POST['eudel'],''))
{
foreach(array_keys($_POST['eudel']) as $name)
{
$this->delete_extended($name);
}
}
$this->catList = $ue->user_extended_get_categories();
$this->catList[0][0] = array('user_extended_struct_name' => EXTLAN_36);
$this->catNums = array_keys($this->catList);
if($action == 'cat' && !empty($_POST))
{
$this->reorderItems();
}
if (!e_QUERY || $action == 'main')
{
// moved here for better performance
if(!empty($_POST))
{
$this->reorderItems();
}
$this->showExtendedList();
}
}
function reorderItems()
{
$sql = e107::getDb();
if($sql->select("user_extended_struct","DISTINCT(user_extended_struct_parent)"))
{
$plist = $sql->db_getList();
foreach($plist as $_p)
{
$o = 0;
if($sql->select("user_extended_struct", "user_extended_struct_id", "user_extended_struct_parent = {$_p['user_extended_struct_parent']} && user_extended_struct_type != 0 ORDER BY user_extended_struct_order ASC"))
{
$_list = $sql->db_getList();
foreach($_list as $r)
{
$sql->db_Update("user_extended_struct", "user_extended_struct_order = '{$o}' WHERE user_extended_struct_id = {$r['user_extended_struct_id']}");
$o++;
}
}
}
e107::getCache()->clear_sys('user_extended_struct', true);
}
}
function delete_extended($_name)
{
$ue = e107::getUserExt();
$log = e107::getAdminLog();
$mes = e107::getMessage();
if ($ue->user_extended_remove($_name, $_name))
{
$log->add('EUF_07',$_name, E_LOG_INFORMATIVE);
$mes->addSuccess(LAN_DELETED." [".$_name."]");
e107::getCache()->clear_sys('user_extended_struct', true);
}
else
{
$mes->addError(LAN_ERROR." [".$_name."]");
}
}
function showExtendedList()
{
global $curtype, $mySQLdefaultdb, $action, $sub_action;
$ue = e107::getUserExt();
$frm = e107::getForm();
$ns = e107::getRender();
$sql = e107::getDb();
$tp = e107::getParser();
$extendedList = $ue->user_extended_get_fields();
$emessage = e107::getMessage();
$text = $emessage->render();
$mode = 'show';
$text .= "
";
$ns->tablerender(EXTLAN_9, $text);
}
function show_extended($current = '') // Show Add fields List.
{
global $ue, $curtype,$mySQLdefaultdb, $action, $sub_action;
$sql = e107::getDb();
$frm = e107::getForm();
$ns = e107::getRender();
$tp = e107::getParser();
if($current == 'new')
{
$mode = 'new';
$current = array();
$current_include = '';
$current_regex = '';
$current_regexfail = '';
$current_hide = '';
}
else
{ // Editing existing definition
$mode = 'edit';
list($current_include, $current_regex, $current_regexfail, $current_hide) = explode("^,^",$current['user_extended_struct_parms']);
}
$text = "
";
// $text .= "";
$emessage = e107::getMessage();
$ns->tablerender(EXTLAN_9.SEP.LAN_ADD,$emessage->render().$text);
}
function show_categories($current)
{
global $sql, $ns, $ue, $frm;
$text = "";
$text .= "
";
$emessage = e107::getMessage();
$ns->tablerender(EXTLAN_9.SEP.LAN_CATEGORIES, $emessage->render().$text);
}
function show_options($action)
{
if ($action == "")
{
$action = "main";
}
$var['main']['text'] = EXTLAN_34;
$var['main']['link'] = e_SELF;
$var['pre']['text'] = EXTLAN_45;
$var['pre']['link'] = e_SELF."?pre";
$var['editext']['text'] = "Add Custom Field";
$var['editext']['link'] = e_SELF."?editext";
$var['cat']['text'] = EXTLAN_35;
$var['cat']['link'] = e_SELF."?cat";
show_admin_menu(EXTLAN_9, $action, $var);
}
function make_delimited($var)
{
global $tp;
foreach($var as $k => $v)
{
$var[$k] = $tp->toDB(trim($v));
$var[$k] = str_replace(",", "[E_COMMA]", $var[$k]);
if($var[$k] == "")
{
unset($var[$k]);
}
}
$ret = implode(",", $var);
return $ret;
}
function show_predefined()
{
global $ue;
$frm = e107::getForm();
$ns = e107::getRender();
$tp = e107::getParser();
$sql = e107::getDb();
// Get list of current extended fields
$curList = $ue->user_extended_get_fieldlist();
foreach($curList as $c)
{
$curNames[] = $c['user_extended_struct_name'];
}
//Get list of predefined fields.
$preList = $ue->parse_extended_xml('getfile');
ksort($preList);
$txt = "
";
$emessage = e107::getMessage();
$ns->tablerender(EXTLAN_9.SEP.EXTLAN_56,$emessage->render(). $txt);
}
function show_predefined_field($var, $active)
{
global $tp,$ue, $frm;
static $head_shown;
$txt = "";
foreach($var as $key=>$val) // convert predefined xml to default array format
{
$var['user_extended_struct_'.$key] = $val;
}
$var['user_extended_struct_type'] = $ue->typeArray[$var['user_extended_struct_type']];
$var['user_extended_struct_parms'] = $var['include_text'];
$txt .= "
{$var['user_extended_struct_name']} |
".constant(strtoupper($var['user_extended_struct_text'])."_DESC")." |
".$ue->user_extended_edit($var,$uVal)." |
".$tp->toHTML($var['type'], false, 'defs')." |
".($active ? ADMIN_TRUE_ICON : " ")." |
";
// $txt .= constant("UE_LAN_".strtoupper($var['text'])."DESC")."
";
// foreach($showlist as $f)
// {
// if($var[$f] != "" && $f != 'type' && $f !='text')
// {
// $txt .= "{$f}: ".$tp->toHTML($var[$f], false, 'defs')."
";
// }
// }
$val = (!$active) ? EXTLAN_59 : EXTLAN_60;
$type = (!$active) ? 'activate' : 'deactivate';
$style = (!$active) ? 'other' : 'delete';
$txt .= "
";
$txt .= $frm->admin_button($type."[".$var['user_extended_struct_name']."]", $val, $style );
$txt .= " |
";
return $txt;
}
function field_activate()
{
global $ue, $ns, $tp, $admin_log;
$ret = "";
$preList = $ue->parse_extended_xml('getfile');
$tmp = $preList;
foreach(array_keys($_POST['activate']) as $f)
{
$tmp[$f]['parms'] = $tp->toDB($tmp[$f]['parms']);
if($ue->user_extended_add($tmp[$f]))
{
$ret .= EXTLAN_68." $f ".EXTLAN_69."
";
if ($tmp[$f]['type']=="db field")
{
if (is_readable(e_CORE.'sql/extended_'.$f.'.php'))
{
$ret .= ($this->process_sql($f)) ? LAN_CREATED." user_extended_{$f}
" : LAN_CREATED_FAILED." user_extended_{$f}
";
}
else
{
$ret .= str_replace('--FILE--',e_CORE.'sql/extended_'.$f.'.php',EXTLAN_78);
}
}
}
else
{
$ret .= EXTLAN_70." $f ".EXTLAN_71."
";
}
}
e107::getLog()->add('EUF_11',implode(', ',$_POST['activate']),E_LOG_INFORMATIVE,'');
return $ret;
}
function field_deactivate()
{
global $ue, $ns, $tp, $sql, $admin_log;
$ret = "";
foreach(array_keys($_POST['deactivate']) as $f)
{
if($ue->user_extended_remove($f, $f))
{
$ret .= EXTLAN_68." $f ".EXTLAN_72."
";
if(is_readable(e_CORE."sql/extended_".$f.".php")){
$ret .= (mysql_query("DROP TABLE ".MPREFIX."user_extended_".$f)) ? LAN_DELETED." user_extended_".$f."
" : LAN_DELETED_FAILED." user_extended_".$f."
";
}
}
else
{
$ret .= EXTLAN_70." $f ".EXTLAN_73."
";
}
}
e107::getLog()->add('EUF_12',implode(', ',$_POST['deactivate']),E_LOG_INFORMATIVE,'');
return $ret;
}
function process_sql($f)
{
global $sql;
$filename = e_CORE."sql/extended_".$f.".php";
$fd = fopen ($filename, "r");
$sql_data = fread($fd, filesize($filename));
fclose ($fd);
$search[0] = "CREATE TABLE "; $replace[0] = "CREATE TABLE ".MPREFIX;
$search[1] = "INSERT INTO "; $replace[1] = "INSERT INTO ".MPREFIX;
preg_match_all("/create(.*?)myisam;/si", $sql_data, $creation);
foreach($creation[0] as $tab){
$query = str_replace($search,$replace,$tab);
if(!mysql_query($query)){
$error = TRUE;
}
}
preg_match_all("/insert(.*?);/si", $sql_data, $inserts);
foreach($inserts[0] as $ins){
$qry = str_replace($search,$replace,$ins);
if(!mysql_query($qry)){
$error = TRUE;
}
}
return ($error) ? FALSE : TRUE;
}
}// end class
function users_extended_adminmenu() {
global $user, $action, $ns, $curtype, $action;
// $user->show_options($action);
$ac = e_QUERY;
$action = vartrue($ac,'main');
users_ext::show_options($action);
if($action == 'editext' || $action == 'continue')
{
$ns->tablerender(EXTLAN_46." - ", "
");
echo "";
}
}
?>