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."'"); } if (isset($_POST['down_x'])) { $qs = explode(".", $_POST['id']); $_id = $qs[0]; $_order = $qs[1]; $_parent = $qs[2]; $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."'"); } if (isset($_POST['catup_x'])) { $qs = explode(".", $_POST['id']); $_id = $qs[0]; $_order = $qs[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_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."'"); } if (isset($_POST['catdown_x'])) { $qs = explode(".", $_POST['id']); $_id = $qs[0]; $_order = $qs[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_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."'"); } 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']==4) { $_POST['user_values'] = array($_POST['table_db'],$_POST['field_id'],$_POST['field_value'],$_POST['field_order']); } $new_values = 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; } else { $result = admin_update($ue->user_extended_add($ue_field_name, $_POST['user_text'], $_POST['user_type'], $new_parms, $new_values, $_POST['user_default'], $_POST['user_required'], $_POST['user_read'], $_POST['user_write'], $_POST['user_applicable'], 0, $_POST['user_parent']), 'insert', EXTLAN_29); if(!$result) { $message = EXTLAN_75; } } } else { $message = EXTLAN_76." : ".$tp->toHTML($ue_field_name); } } if (isset($_POST['update_field'])) { if($_POST['user_type']==4){ $_POST['user_values'] = array($_POST['table_db'],$_POST['field_id'],$_POST['field_value'],$_POST['field_order']); } $upd_values = make_delimited($_POST['user_values']); $upd_parms = $tp->toDB($_POST['user_include']."^,^".$_POST['user_regex']."^,^".$_POST['user_regexfail']."^,^".$_POST['user_hide']); admin_update($ue->user_extended_modify($sub_action, $_POST['user_field'], $_POST['user_text'], $_POST['user_type'], $upd_parms, $upd_values, $_POST['user_default'], $_POST['user_required'], $_POST['user_read'], $_POST['user_write'], $_POST['user_applicable'], $_POST['user_parent']), 'update', EXTLAN_29); } if (isset($_POST['update_category'])) { $name = trim($tp->toHTML($_POST['user_field'])); admin_update($sql->db_Update("user_extended_struct","user_extended_struct_name = '{$name}', user_extended_struct_read = '{$_POST['user_read']}', user_extended_struct_write = '{$_POST['user_write']}', user_extended_struct_applicable = '{$_POST['user_applicable']}' WHERE user_extended_struct_id = '{$sub_action}'"), 'update', EXTLAN_43); } if (isset($_POST['add_category'])) { $name = $tp->toHTML($_POST['user_field']); admin_update($sql->db_Insert("user_extended_struct","'0', '$name', '', 0, '', '', '', '{$_POST['user_read']}', '{$_POST['user_write']}', '0', '0', '{$_POST['user_applicable']}', '0', '0'"), 'insert', EXTLAN_40); } if ($_POST['eu_action'] == "delext") { list($_id, $_name) = explode(",",$_POST['key']); if($ue->user_extended_remove($_id, $_name)) { $message = EXTLAN_30; } } // Delete category if ($_POST['eu_action'] == "delcat") { list($_id, $_name) = explode(",",$_POST['key']); if (count($ue->user_extended_get_fields($_id)) > 0) { $message = EXTLAN_77; } elseif($ue->user_extended_remove($_id, $_name)) { $message = EXTLAN_41; } } if(isset($_POST['activate'])) { $message .= field_activate(); } if(isset($_POST['deactivate'])) { $message .= field_deactivate(); } if($sql->db_Select("user_extended_struct","DISTINCT(user_extended_struct_parent)")) { $plist = $sql->db_getList(); foreach($plist as $_p) { $o = 0; if($sql->db_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) { $ns->tablerender("", "
".$message."
"); } 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 (!e_QUERY || $action == 'main') { $user->show_extended(); } if ($action == "editext") { if($sql->db_Select('user_extended_struct','*',"user_extended_struct_id = '{$sub_action}'")) { $tmp = $sql->db_Fetch(); $user->show_extended($tmp); } else { $user->show_extended('new'); } } if($action == 'pre') { show_predefined(); } if($action == 'cat') { if(is_numeric($sub_action)) { if($sql->db_Select('user_extended_struct','*',"user_extended_struct_id = '{$sub_action}'")) { $tmp = $sql->db_Fetch(); } } $user->show_categories($tmp); } require_once("footer.php"); class users_ext { function show_extended($current) { global $sql, $ns, $ue, $curtype, $tp, $mySQLdefaultdb, $action, $sub_action; $catList = $ue->user_extended_get_categories(); $catList[0][0] = array('user_extended_struct_name' => EXTLAN_36); $catNums = array_keys($catList); $extendedList = $ue->user_extended_get_fields(); if(!$current){ $text = "
"; $text .= ""; // $text .=""; $text .=" "; foreach($catNums as $cn) { $text .= " "; $i=0; if(count($extendedList)) { // Show current extended fields foreach($extendedList[$cn] as $ext) { $fname = "user_".$ext['user_extended_struct_name']; $uVal = str_replace(chr(1), "", $curVal[$fname]); $text .= " "; $i++; } } else { $text .= " "; } } //Show add/edit form $text .= "
".EXTLAN_1." ".EXTLAN_2."".EXTLAN_3."".EXTLAN_4." ".EXTLAN_5." ".EXTLAN_6." ".EXTLAN_7."   ".EXTLAN_8."
{$catList[$cn][0]['user_extended_struct_name']}
{$ext['user_extended_struct_name']}
[".$tp->toHTML($ext['user_extended_struct_text'], FALSE, "defs")."]
".$ue->user_extended_edit($ext,$uVal)." ".($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."
".EXTLAN_28."
"; } else { if($current == 'new') { $current = ''; } list($current_include, $current_regex, $current_regexfail, $current_hide) = explode("^,^",$current['user_extended_struct_parms']); $text .= "
"; $text .= " "; $text .= " "; $text .= ""; $text .= " "; $text .= "
".EXTLAN_10.": user_"; if(is_array($current) && $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(",",$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."
"; // End of Values. -------------------------------------- $db_hide = ($current['user_extended_struct_type'] == 4) ? "visible" : "none"; $text .= "
\n"; $text .= ""; if($_POST['table_db'] || $curVals[0]){ // Field ID $text .= ""; } $text .= "
"; $text .= EXTLAN_62."
".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."
".EXTLAN_19."
".EXTLAN_5." ".r_userclass("user_applicable", $current['user_extended_struct_applicable'], 'off', 'member, admin, classes, nobody')."
".EXTLAN_20."
".EXTLAN_6." ".r_userclass("user_read", $current['user_extended_struct_read'], 'off', 'public, member, admin, readonly, classes')."
".EXTLAN_22."
".EXTLAN_7." ".r_userclass("user_write", $current['user_extended_struct_write'], 'off', 'member, admin, classes')."
".EXTLAN_21."
".EXTLAN_49."
".EXTLAN_50."
"; if ((!is_array($current) || $action == "continue") && $sub_action == "") { $text .= " "; } else { $text .= "     "; } // ======= end added by Cam. $text .= "
"; } // $text .= "
"; $ns->tablerender(EXTLAN_9, $text); } function show_categories($current) { global $sql, $ns, $ue; $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_5." ".EXTLAN_6." ".EXTLAN_7."   ".EXTLAN_8."
{$ext['user_extended_struct_name']} ".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 .= " "; $text .= "
".EXTLAN_38.":
".EXTLAN_11."
".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."
"; if (!is_array($current)) { $text .= " "; } else { $text .= "     "; } // ======= end added by Cam. $text .= "
"; $ns->tablerender(EXTLAN_9, $text); } function show_options($action) { // ##### Display options --------------------------------------------------------------------------------------------------------- if ($action == "") { $action = "main"; } // ##### Display options --------------------------------------------------------------------------------------------------------- $var['main']['text'] = EXTLAN_34; $var['main']['link'] = e_SELF; $var['editext']['text'] = EXTLAN_45; $var['editext']['link'] = e_SELF."?editext"; $var['cat']['text'] = EXTLAN_35; $var['cat']['link'] = e_SELF."?cat"; $var['pre']['text'] = EXTLAN_56; $var['pre']['link'] = e_SELF."?pre"; show_admin_menu(EXTLAN_9, $action, $var); } } function users_extended_adminmenu() { global $user, $action, $ns, $curtype, $action; $user->show_options($action); if($action == 'editext' || $action == 'continue') { $ns->tablerender(EXTLAN_46." -  ", "
 
"); echo ""; } } 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 $tp, $ns, $ue, $sql; // 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, determine which are already activated. $preList = $ue->parse_extended_xml('getfile'); ksort($preList); foreach($preList as $k => $v) { if($k != 'version') { if(in_array($v['name'], $curNames)) { $active[] = $v; } else { $inactive[] = $v; } } } $txt = "
"; if(count($active)) { foreach($active as $a) { $txt .= show_field($a, 'deactivate'); } } else { $txt .= ""; } $txt .= " "; foreach($inactive as $a) { $txt .= show_field($a); } $txt .= "
".EXTLAN_57."
".EXTLAN_61."
".EXTLAN_58."
"; $ns->tablerender(EXTLAN_56, $txt); require_once('footer.php'); exit; } function show_field($var, $type='activate') { global $tp; static $head_shown; $txt = ""; // $showlist = array('type','text', 'values', 'include_text', 'regex'); if($head_shown != 1) { $txt .= " ".UE_LAN_9." ".UE_LAN_10." ".UE_LAN_11."   "; $head_shown = 1; } $txt .= " {$var['name']} ".$tp->toHTML($var['type'], false, 'defs')." ".constant(strtoupper($var['text'])."_DESC")." "; // $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 = ('activate' == $type) ? EXTLAN_59 : EXTLAN_60; $txt .= " "; return $txt; } function field_activate() { global $ue, $ns, $tp; $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" && is_readable(e_ADMIN."sql/extended_".$f.".php")){ $ret .= (process_sql($f)) ? LAN_CREATED." user_extended_{$f}
" : LAN_CREATED_FAILED." user_extended_{$f}
"; } } else { $ret .= EXTLAN_70." $f ".EXTLAN_71."
"; } } return $ret; } function field_deactivate() { global $ue, $ns, $tp,$sql; $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_ADMIN."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."
"; } } return $ret; } function process_sql($f){ global $sql; $filename = e_ADMIN."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; } function headerjs() { include_once(e_LANGUAGEDIR.e_LANGUAGE."/lan_user_extended.php"); $text = " "; global $cal; $text .= $cal->load_files(); echo $text; } ?>