filter($tmp[0]); $sub_action = varset($tmp[1], ''); $sub_action = $tp->filter($sub_action); $id = varset($tmp[2], 0); unset($tmp); } if($sql->select('user_extended_struct', '*', "user_extended_struct_id = '{$sub_action}'")) { $current = $sql->fetch(); } else { $current = 'new'; } $currVal = $current['user_extended_struct_values']; $curVals = explode(",", varset($currVal)); // Ajax URL for "Table" dropdown. $ajaxGetTableSrc = e_SELF . '?mode=ajax&action=changeTable'; $text = ""; if($_POST['table_db'] || $curVals[0]) { // Field ID. $text .= ""; } $text .= "
"; $text .= EXTLAN_62 . "\n"; $text .= "
" . EXTLAN_63 . ""; $text .= "
"; // Display Value. $text .= EXTLAN_64 . ""; $text .= "
"; // Order. $text .= LAN_ORDER . ""; $text .= "
"; $ajax = e107::getAjax(); $commands = array(); $commands[] = $ajax->commandInsert('#db_mode', 'html', $text); $ajax->response($commands); exit; } break; } } if (isset($_POST['cancel'])) { header('location:'.e_SELF); exit; } if (isset($_POST['cancel_cat'])) { header("location:".e_SELF."?cat"); exit; } function js() { include_once(e_LANGUAGEDIR . e_LANGUAGE . "/lan_user_extended.php"); $text = " $('.e-select').change(function(e){ var type = $(this).val(); if(type == 4) { $('#db_mode').show(); $('#values').hide(); } else if(type == 2 || type == 3 || type == 9 || type == 10) { $('#db_mode').hide(); $('#values').show(); } else { $('#db_mode').hide(); $('#values').hide(); } "; for($i = 1; $i <= 9; $i++) { $type_const = "UE_LAN_{$i}"; $help_const = "\"" . str_replace("/", "\/", "EXTLAN_HELP_{$i}") . "\""; $text .= " if(type == \"{$i}\") { xtype=\"" . defset($type_const) . "\"; what=\"" . defset($help_const) . "\"; }"; } $text .= " // $('#ue_type').innerHTML=''+xtype+''; // $('#ue_help').innerHTML=''+what+'' console.log(type); return false; }); "; return $text; //FIXME /* $text .= " function changeHelp(type) { return; // } "; return $text;*/ } e107::js('footer-inline', js()); 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|4'), 'main/add' => array('caption'=> EXTLAN_45, 'perm' => '0|4'), 'main/create' => array('caption'=> EXTLAN_81, 'perm' => '0|4'), 'cat/list' => array('caption'=> LAN_CATEGORIES, 'perm' => '0|4'), 'cat/create' => array('caption'=> LAN_CREATE_CATEGORY, 'perm' => '0|4'), // 'main/custom' => array('caption'=> 'Custom Page', 'perm' => 'P') ); protected $adminMenuIcon = 'e-extended-24'; /* * } $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', 'readonly'=>true, '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' => EXTLAN_82, 'type' => 'method', 'nolist'=>true, 'data' => 'str', 'width' => 'auto', 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'user_extended_struct_default' => array ( 'title' => EXTLAN_16, 'type' => 'text', 'data' => 'str', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'user_extended_struct_parent' => array ( 'title' => LAN_CATEGORY, 'type' => 'dropdown', 'tab'=>1, 'data' => 'int', 'width' => 'auto', 'batch' => true, 'filter' => true, 'help' => '', 'readParms' => '', 'writeParms' => array('size'=>'xxlarge'), 'class' => 'left', 'thclass' => 'left', ), // These are combined into user_extended_struct_parms on submit. 'field_placeholder' => array('title'=>EXTLAN_83, 'tab'=>1, 'type'=>'text', 'data'=>false, 'writeParms'=>array('size'=>'xxlarge')), 'field_helptip' => array('title'=>EXTLAN_84, 'tab'=>1, 'type'=>'text', 'data'=>false, 'writeParms'=>array('size'=>'xxlarge')), 'field_include' => array('title'=> EXTLAN_15, 'tab'=>1, 'type'=>'textarea', 'data'=>false, 'help'=>EXTLAN_51, 'writeParms'=>array('size'=>'xxlarge')), 'field_regex' => array('title'=> EXTLAN_52, 'tab'=>1, 'type'=>'text', 'data'=>false, 'help'=> EXTLAN_53, 'writeParms'=>array('size'=>'xxlarge')), 'field_regexfail' => array('title'=> EXTLAN_54, 'tab'=>1, 'type'=>'text', 'data'=>false, 'help'=>EXTLAN_55, 'writeParms'=>array('size'=>'xxlarge')), 'field_userhide' => array('title'=> EXTLAN_49, 'tab'=>1, 'type'=>'boolean', 'data'=>false, 'help'=>EXTLAN_50, 'writeParms'=>array('size'=>'xxlarge')), 'user_extended_struct_required' => array ( 'title' => EXTLAN_18, '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', 'filter'=>true, 'batch'=>true, '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', 'filter'=>true, 'batch'=>true,'width' => '10%', 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'user_extended_struct_write' => array ( 'title' => EXTLAN_7, 'type' => 'userclass', 'data' => 'int', 'filter'=>true, 'batch'=>true, 'width' => '10%', 'inline' => true, 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'user_extended_struct_signup' => array ( 'title' => 'Signup', 'type' => 'hidden', 'nolist'=>true, 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'user_extended_struct_order' => array ( 'title' => LAN_ORDER, 'type' => 'hidden', 'nolist'=>true, 'data' => 'int', 'width' => 'auto', 'help' => '', 'readParms' => '', 'writeParms' => '', 'class' => 'left', 'thclass' => 'left', ), 'options' => array ( 'title' => LAN_OPTIONS, 'type' => 'method', '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( ); /** * Automatically exectured when edit mode is active. */ public function EditObserver() { parent::EditObserver(); $parms = e107::getDb()->retrieve('user_extended_struct', 'user_extended_struct_parms',"user_extended_struct_id = ".intval($_GET['id'])); $tmp = explode('^,^', $parms); $this->fields['field_include']['writeParms']['default'] = $tmp[0]; $this->fields['field_regex']['writeParms']['default'] = $tmp[1]; $this->fields['field_regexfail']['writeParms']['default'] = $tmp[2]; $this->fields['field_userhide']['writeParms']['default'] = $tmp[3]; $this->fields['field_placeholder']['writeParms']['default'] = $tmp[4]; $this->fields['field_helptip']['writeParms']['default'] = $tmp[5]; } public function init() { if($this->getAction() == 'edit' || $this->getAction() == 'create') { $this->fields['user_extended_struct_type']['title'] = LAN_TYPE; } $data = e107::getDb()->retrieve("user_extended_struct", "*", "user_extended_struct_type = 0 ORDER BY user_extended_struct_order ASC", true); $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; } private function compileData($new_data) { $parms = array( $new_data['field_include'], $new_data['field_regex'], $new_data['field_regexfail'], $new_data['field_userhide'], $new_data['field_placeholder'], $new_data['field_helptip'], ); if(isset($new_data['field_include'])) { $new_data['user_extended_struct_parms'] = implode('^,^', $parms); } if($new_data['user_extended_struct_type'] == EUF_DB_FIELD) { $new_data['user_extended_struct_values'] = array($new_data['table_db'],$new_data['field_id'],$new_data['field_value'],$new_data['field_order']); } if(isset($new_data['user_extended_struct_values'])) { $new_data['user_extended_struct_values'] = array_filter($new_data['user_extended_struct_values']); $new_data['user_extended_struct_values'] = implode(',',$new_data['user_extended_struct_values']); } // e107::getMessage()->addInfo(print_a($new_data,true),'default', true); return $new_data; } // ------- Customize Create -------- public function beforeCreate($new_data, $old_data) { $ue = e107::getUserExt(); $mes = e107::getMessage(); if($ue->user_extended_field_exist($new_data['user_extended_struct_name'])) { $mes->addError("Field name already exists"); return false; } if($ue->user_extended_reserved($new_data['user_extended_struct_name'])) { $mes->addError("Field name is reserved. Please try a different name."); return false; } $new_data = $this->compileData($new_data); $field_info = $ue->user_extended_type_text($new_data['user_extended_struct_type'], $new_data['user_extended_struct_default']); // wrong type if(false === $field_info) { e107::getMessage()->addDebug("\$field_info is false ".__METHOD__." ".__LINE__); return false; } else { if(e107::getDb()->gen('ALTER TABLE #user_extended ADD user_'.e107::getParser()->toDB($new_data['user_extended_struct_name'], true).' '.$field_info)===false) { $mes->addError("Unable to alter table user_extended."); } } if(empty($new_data['user_extended_struct_order'])) { if($max = e107::getDb()->retrieve('user_extended_struct','MAX(user_extended_struct_order) as maxorder','1')) { if(is_numeric($max)) { $new_data['user_extended_struct_order'] = ($max + 1); } } } return $new_data; } public function afterCreate($new_data, $old_data, $id) { // do something } public function onCreateError($new_data, $old_data) { // do something } public function beforeDelete($data,$id) { $mes = e107::getMessage(); if(!e107::getUserExt()->user_extended_remove($id, $data['user_extended_struct_name'])) { $mes->addError("Unable to delete column from user_extended table."); return false; } else { $mes->addSuccess(EXTLAN_86); } } public function afterDelete($data,$id) { } // ------- Customize Update -------- public function beforeUpdate($new_data, $old_data, $id) { $ue = e107::getUserExt(); $mes = e107::getMessage(); if ($ue->user_extended_field_exist($new_data['user_extended_struct_name'])) { $field_info = $ue->user_extended_type_text($new_data['user_extended_struct_type'], $new_data['user_extended_struct_default']); if(false === $field_info) // wrong type { return false; } else { if(e107::getDb()->gen("ALTER TABLE #user_extended MODIFY user_".e107::getParser()->toDB($new_data['user_extended_struct_name'], true)." ".$field_info)===false) { $mes->addError("Unable to alter table user_extended."); } } } $new_data = $this->compileData($new_data); return $new_data; } public function afterUpdate($new_data, $old_data, $id) { // do something } public function onUpdateError($new_data, $old_data, $id) { // do something } private 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('[x]',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; } private function addPageDeactivate() { $tp = e107::getParser(); $sql = e107::getDb(); $ue = e107::getUserExt(); $ret = ""; foreach(array_keys($_POST['deactivate']) as $f) { $f = $tp->filter($f); if($ue->user_extended_remove($f, $f)) { $ret .= EXTLAN_68." $f ".EXTLAN_72."
"; if(is_readable(e_CORE."sql/extended_".$f.".php")) { $ret .= ($sql->gen("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,''); e107::getMessage()->addSuccess($ret); return $ret; } function addPage() { $ns = e107::getRender(); $ue = e107::getUserExt(); $this->addPageActivate(); $this->addPageDeactivate(); // 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 = "
"; foreach($preList as $k=>$a) { if($k !='version') // don't know why this is appearing in the array. { $active = (in_array($a['name'], $curNames)) ? TRUE : FALSE; $txt .= $this->show_predefined_field($a,$active); } } $txt .= "
".UE_LAN_21." ".EXTLAN_79." ".EXTLAN_2." ".UE_LAN_22." ".EXTLAN_57." ".LAN_OPTIONS."
"; $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 { function options($parms, $value, $id, $attributes) { if($attributes['mode'] == 'read') { $name = $this->getController()->getListModel()->get('user_extended_struct_name'); if(strpos($name, 'plugin_') === 0) { $attributes['readParms']['deleteClass'] = e_UC_NOBODY; } $text = "
"; $text .= $this->renderValue('options',$value,$attributes, $id); $text .= "
"; return $text; } } // Custom Method/Function function user_extended_struct_type($curVal,$mode) { switch($mode) { case 'read': // List Page $ext = $this->getController()->getListModel()->getData(); // return print_a($ext,true); $ext['user_extended_struct_required'] = 0; // so the form can be posted. 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 if(empty($curVal)) { $curVal = '1'; } $types = e107::getUserExt()->getFieldTypes(); return $this->select('user_extended_struct_type', $types, $curVal, array('class'=>'tbox e-select')); } } 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_extended_struct_required',$opts, varset($curVal,1),'size=xxlarge'); break; case 'filter': case 'batch': return $opts; 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(); $type = intval($current['user_extended_struct_type']); $val_hide = ($type != 4 && $type !=1 ) ? "visible" : "none"; if($type == 0) { $val_hide = 'none'; } // return print_a($type,true); // return print_a($current,true); $text = "
\n"; $text .= "
\n"; $curVals = explode(",",varset($current['user_extended_struct_values'])); if(count($curVals) == 0) { $curVals[]=''; } $i=0; foreach($curVals as $v) { $id = $i ? "" : " id='value_line'"; $i++; $text .= "
"; } $text .= "

".EXTLAN_17.""; $text .= "
".$frm->checkbox('sort_user_values',1, false, EXTLAN_87)."
"; $text .= "
"; // End of Values. -------------------------------------- $db_hide = ($current['user_extended_struct_type'] == 4) ? "block" : "none"; // Ajax URL for "Table" dropdown. $ajaxGetTableSrc = e_SELF . '?mode=ajax&action=changeTable'; $text .= "
"; $text .= ""; if($_POST['table_db'] || $curVals[0]) { // Field ID $text .= ""; } $text .= "
"; $text .= EXTLAN_62 . ""; $text .= "
".EXTLAN_63."
"; // Field Value $text .= EXTLAN_64."
"; $text .= LAN_ORDER."
"; // --------------------------------------------------------- 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' => EXTLAN_7, '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(); $tp = e107::getParser(); 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 = $tp->filter($tmp[0]); $sub_action = varset($tmp[1],''); $sub_action = $tp->filter($sub_action); $id = varset($tmp[2],0); unset($tmp); } // TODO $_POST['up_x'] check for the evil IE $tmp = isset($_POST['up']) ? $tp->filter($_POST['up']) : false; if (is_array($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']) ? $tp->filter($_POST['down']) : false; if (is_array($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( $tp->filter($_POST['table_db']), $tp->filter($_POST['field_id']), $tp->filter($_POST['field_value']), $tp->filter($_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( $tp->filter($_POST['table_db']), $tp->filter($_POST['field_id']), $tp->filter($_POST['field_value']), $tp->filter($_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'] = $tp->filter($_POST['user_field']); $current['user_extended_struct_parms'] = $tp->filter($_POST['user_include']."^,^".$_POST['user_regex']."^,^".$_POST['user_regexfail']."^,^".$_POST['user_hide']); $current['user_extended_struct_text'] = $tp->filter($_POST['user_text']); $current['user_extended_struct_type'] = $tp->filter($_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 __construct() { 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 .= "
"; foreach($this->catNums as $cn) { $i=0; $category_name = $this->catList[$cn][0]['user_extended_struct_name']; if(vartrue($extendedList[$cn])) // Show current extended fields { foreach($extendedList[$cn] as $ext) { $name = $ext['user_extended_struct_name']; $fname = "user_".$name; $id = $ext['user_extended_struct_id']; $uVal = str_replace(chr(1), "", $ext['user_extended_struct_default']); // Is this right? $text .= " "; $i++; } } elseif($cn == 0) { $text .= " "; } } //Show add/edit form $text .= "
".EXTLAN_1." ".EXTLAN_79." ".EXTLAN_2." ".EXTLAN_44." ".EXTLAN_4." ".EXTLAN_5." ".EXTLAN_6." ".EXTLAN_7." ".EXTLAN_8."
{$ext['user_extended_struct_name']} ".$tp->toHTML(deftrue($ext['user_extended_struct_text'], $ext['user_extended_struct_text']), FALSE, "defs")." ".$ue->user_extended_edit($ext,$uVal)." ".$category_name." ".($ext['user_extended_struct_required'] == 1 ? LAN_YES : LAN_NO)." ".r_userclass_name($ext['user_extended_struct_applicable'])." ".r_userclass_name($ext['user_extended_struct_read'])." ".r_userclass_name($ext['user_extended_struct_write'])." "; if($i > 0) { $text .= ""; } if($i <= count($extendedList[$cn])-2) { $text .= ""; } $text .= " ".ADMIN_EDIT_ICON." ".$frm->submit_image('eudel['.$name.']',$id, 'delete', LAN_DELETE.' [ ID: '.$id.' ]', array('class' => 'action delete btn btn-default'.$delcls)); // ." $text .= "
".EXTLAN_28."
"; $ns->tablerender(EXTLAN_9, $text); } function show_extended($current = null) // 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 .= " "; $text .= ""; $text .= " "; $text .= "
".EXTLAN_10.": user_"; if(is_array($current) && varset($current['user_extended_struct_name'])) { $text .= $current['user_extended_struct_name']." "; } else { $text .= " "; } $text .= "
".EXTLAN_11."
".EXTLAN_12.":
".EXTLAN_13."
".EXTLAN_14."
".EXTLAN_3." "; // Start of Values --------------------------------- $val_hide = ($current['user_extended_struct_type'] != 4) ? "visible" : "none"; $text .= "
\n"; $text .= "
\n"; $curVals = explode(",",varset($current['user_extended_struct_values'])); if(count($curVals) == 0) { $curVals[]=''; } $i=0; foreach($curVals as $v){ $id = $i ? "" : " id='value_line'"; $i++; $text .= "
"; } $text .= "

".EXTLAN_17."
".$frm->checkbox('sort_user_values',1, false, "Sort values")."
"; // End of Values. -------------------------------------- $db_hide = ($current['user_extended_struct_type'] == 4) ? "block" : "none"; // Ajax URL for "Table" dropdown. $ajaxGetTableSrc = e_SELF . '?mode=ajax&action=changeTable'; $text .= "
"; $text .= ""; if($_POST['table_db'] || $curVals[0]) { // Field ID $text .= ""; } $text .= "
"; $text .= EXTLAN_62 . ""; $text .= "
".EXTLAN_63."
"; // Field Value $text .= EXTLAN_64."
"; $text .= LAN_ORDER."
"; // --------------------------------------------------------- $text .= "
".EXTLAN_16."
".EXTLAN_15."
".EXTLAN_51."
".EXTLAN_52."
".EXTLAN_53."
".EXTLAN_54."
".EXTLAN_55."
".EXTLAN_44."
".EXTLAN_18." "; /* $text .= " "; */ $_r = array('0' => EXTLAN_65, '1' => EXTLAN_66, '2' => EXTLAN_67); $text .= $frm->select('user_required',$_r, varset($current['user_extended_struct_required'],1),'size=xxlarge'); $text .= "
".EXTLAN_19."
".EXTLAN_5." ".r_userclass("user_applicable", varset($current['user_extended_struct_applicable'],253), 'off', 'member, admin, main, classes, nobody')."
".EXTLAN_20."
".EXTLAN_6." ".r_userclass("user_read", varset($current['user_extended_struct_read']), 'off', 'public, member, admin, main, readonly, classes')."
".EXTLAN_22."
".EXTLAN_7." ".r_userclass("user_write", varset($current['user_extended_struct_write']), 'off', 'member, admin, main, classes')."
".EXTLAN_21."
".EXTLAN_49."
".EXTLAN_50."
"; // if ((!is_array($current) || $action == "continue") && $sub_action == "") if ((($mode == 'new') || $action == "continue") && $sub_action == "") { $text .= $frm->admin_button('add_field', EXTLAN_23); } else { $text .= $frm->admin_button('update_field', EXTLAN_24,'update'). $frm->admin_button('cancel', EXTLAN_33,'cancel'); } $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 .= " "; $catList = $ue->user_extended_get_categories(FALSE); if(count($catList)) { // Show current categories $i=0; foreach($catList as $ext) { if ($ext['user_extended_struct_order'] != $i) { $ext['user_extended_struct_order'] = $i; $xID=$ext['user_extended_struct_id']; $sql->db_Update("user_extended_struct", "user_extended_struct_order=$i WHERE user_extended_struct_type = 0 AND user_extended_struct_id=$xID"); } $text .= " "; $i++; } } else { $text .= " "; } //Show add/edit form $text .= "
".EXTLAN_1." ".EXTLAN_79." ".EXTLAN_5." ".EXTLAN_6." ".EXTLAN_7."   ".EXTLAN_8."
{$ext['user_extended_struct_name']} ".deftrue($ext['user_extended_struct_text'], $ext['user_extended_struct_text'])." ".r_userclass_name($ext['user_extended_struct_applicable'])." ".r_userclass_name($ext['user_extended_struct_read'])." ".r_userclass_name($ext['user_extended_struct_write'])."
"; if($i > 0) { $text .= " "; } if($i <= count($catList)-2) { $text .= ""; } $text .= "
".ADMIN_EDIT_ICON."
".EXTLAN_37."
"; $text .= "

"; $text .= "
".EXTLAN_38.":
".EXTLAN_11."
".EXTLAN_31.":
".EXTLAN_32."
".EXTLAN_5." ".r_userclass("user_applicable", $current['user_extended_struct_applicable'], 'off', 'member, admin, classes')."
".EXTLAN_20."
".EXTLAN_6." ".r_userclass("user_read", $current['user_extended_struct_read'], 'off', 'public, member, admin, classes, readonly')."
".EXTLAN_22."
".EXTLAN_7." ".r_userclass("user_write", $current['user_extended_struct_write'], 'off', 'member, admin, classes')."
".EXTLAN_21."
"; $text .= "
"; if (!is_array($current)) { $text .= $frm->admin_button('add_category', EXTLAN_39); } else { $text .= $frm->admin_button('update_category', EXTLAN_42,'update'). $frm->admin_button('cancel', EXTLAN_33); } // ======= end added by Cam. $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'] = EXTLAN_81; $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 = "
"; foreach($preList as $k=>$a) { if($k !='version') // don't know why this is appearing in the array. { $active = (in_array($a['name'], $curNames)) ? TRUE : FALSE; $txt .= $this->show_predefined_field($a,$active); } } $txt .= "
".UE_LAN_21." ".EXTLAN_79." ".EXTLAN_2." ".UE_LAN_22." ".EXTLAN_57." ".LAN_OPTIONS."
"; $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('[x]',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() { $tp = e107::getParser(); $sql = e107::getDb(); $ue = e107::getUserExt(); $ret = ""; foreach(array_keys($_POST['deactivate']) as $f) { $f = $tp->filter($f); if($ue->user_extended_remove($f, $f)) { $ret .= EXTLAN_68." $f ".EXTLAN_72."
"; if(is_readable(e_CORE."sql/extended_".$f.".php")) { $ret .= ($sql->gen("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(!$sql->gen($query)){ $error = TRUE; } } preg_match_all("/insert(.*?);/si", $sql_data, $inserts); foreach($inserts[0] as $ins){ $qry = str_replace($search,$replace,$ins); if(!$sql->gen($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 ""; } } ?>