diff --git a/e107_admin/users.php b/e107_admin/users.php index 80c9b1d3e..16adb6960 100644 --- a/e107_admin/users.php +++ b/e107_admin/users.php @@ -258,8 +258,16 @@ class users_admin_ui extends e_admin_ui 'user_new_period' => array('title' => USRLAN_190, 'type' => 'number', 'writeParms' => array('maxlength' => 3, 'post' => LANDT_04s), 'help' => USRLAN_191, 'data' => 'int',), ); - protected $extended = array(); - + public $extended = array(); + public $extendedData = array(); + + + + function getExtended() + { + return $this->extendedData; + } + function init() { @@ -278,7 +286,7 @@ class users_admin_ui extends e_admin_ui // Extended fields - FIXME - better field types - if($sql->select('user_extended_struct', 'user_extended_struct_name,user_extended_struct_text', "user_extended_struct_type > 0 AND user_extended_struct_text != '_system_' ORDER BY user_extended_struct_parent ASC")) + if($sql->select('user_extended_struct', '*', "user_extended_struct_type > 0 AND user_extended_struct_text != '_system_' ORDER BY user_extended_struct_parent ASC")) { // TODO FIXME use the handler to build fields and field attributes // FIXME a way to load 3rd party language files for extended user fields @@ -286,11 +294,12 @@ class users_admin_ui extends e_admin_ui while ($row = $sql->fetch()) { $field = "user_".$row['user_extended_struct_name']; - $title = ucfirst(str_replace("user_","",$field)); + // $title = ucfirst(str_replace("user_","",$field)); $label = $tp->toHtml($row['user_extended_struct_text'],false,'defs'); - $this->fields[$field] = array('title' => $label,'width' => 'auto', 'data'=>false,'type'=>'text', 'tab'=>1, 'noedit'=>false); + $this->fields[$field] = array('title' => $label,'width' => 'auto', 'type'=>'method', 'method'=>'user_extended', 'data'=>false, 'tab'=>1, 'noedit'=>false); $this->extended[] = $field; + $this->extendedData[$field] = $row; } } $this->fields['user_signature']['writeParms']['data'] = e107::getUserClass()->uc_required_class_list("classes"); @@ -340,6 +349,8 @@ class users_admin_ui extends e_admin_ui } + + protected function getAvatarList() { $avs = array(''=>LAN_NONE); @@ -384,11 +395,22 @@ class users_admin_ui extends e_admin_ui } // Handle the Extended Fields. + $this->saveExtended($new_data); + + + + return $new_data; + } + + + + function saveExtended($new_data) + { $update = array(); - foreach($this->extended as $key) // Grab Extended field data. + foreach($this->extended as $key) // Grab Extended field data. { - $update[$key] = vartrue($new_data[$key],'_NULL_'); + $update[$key] = vartrue($new_data['ue'][$key],'_NULL_'); } e107::getMessage()->addDebug(print_a($update,true)); @@ -400,7 +422,7 @@ class users_admin_ui extends e_admin_ui $update['user_extended_id'] = intval($new_data['submit_value']); if(e107::getDb()->insert('user_extended', $update)) { - e107::getMessage()->addSuccess('Extended Fields Updated'); //TODO Replace with Generic or existing LAN. + e107::getMessage()->addSuccess('Extended Fields Updated'); //TODO Replace with Generic or existing LAN. } else { @@ -413,30 +435,27 @@ class users_admin_ui extends e_admin_ui e107::getDb()->getLastErrorText(); } } - else + else { $update['WHERE'] = 'user_extended_id='. intval($new_data['submit_value']); - + if(e107::getDb()->update('user_extended',$update)===false) { e107::getMessage()->addError('Extended Fields Update Failed'); //TODO Replace with Generic or existing LAN. $error = e107::getDb()->getLastErrorText(); e107::getMessage()->addDebug($error); e107::getMessage()->addDebug(print_a($update,true)); - + } else { - // e107::getMessage()->addSuccess('Extended Fields Updated'); //TODO Replace with Generic or existing LAN. + // e107::getMessage()->addSuccess('Extended Fields Updated'); //TODO Replace with Generic or existing LAN. } } } - - - - return $new_data; + + } - /** @@ -455,9 +474,11 @@ class users_admin_ui extends e_admin_ui e107::getMessage()->addError('User not found.'); return; } + + $row = e107::user($userid); - $sql->db_Update("user", "user_ban='0' WHERE user_id='".$userid."' "); - $sql->db_Delete("banlist"," banlist_ip='{$row['user_ip']}' "); + $sql->update("user", "user_ban='0' WHERE user_id='".$userid."' "); + $sql->delete("banlist"," banlist_ip='{$row['user_ip']}' "); e107::getAdminLog()->log_event('USET_06', str_replace(array('--UID--', '--NAME--', '--EMAIL--'), array($sysuser->getId(), $sysuser->getName(), $sysuser->getValue('email')), USRLAN_162), E_LOG_INFORMATIVE); e107::getMessage()->addSuccess("(".$sysuser->getId().".".$sysuser->getName()." - ".$sysuser->getValue('email').") ".USRLAN_9); @@ -2041,7 +2062,37 @@ class users_admin_ui extends e_admin_ui class users_admin_form_ui extends e_admin_form_ui { - + + + function user_extended($curval,$mode, $att) + { + if($mode == 'read') + { + $field = $att['field']; + $data = $this->getController()->getListModel()->get($field); // ($att['field']); + return $data; + + } + if($mode == 'write') + { + // e107::getUserExt()->user_extended_edit + // return 'hello'; + $field = $att['field']; + $extData = $this->getController()->getExtended(); + $extData[$field]['user_extended_struct_required'] = 0; + + return e107::getUserExt()->user_extended_edit($extData[$field],$curval); + + // return print_a($att,true); + } + + + } + + + + + function user_perms($curval,$mode) { if($mode == 'read') diff --git a/e107_handlers/form_handler.php b/e107_handlers/form_handler.php index 87e1ca699..da7d46f0a 100644 --- a/e107_handlers/form_handler.php +++ b/e107_handlers/form_handler.php @@ -3493,10 +3493,12 @@ class e_form $value = e107::unserialize($value); // (saved as array, return it as an array) } + $meth = (!empty($attributes['method'])) ? $attributes['method'] : $method; - if(method_exists($this,$method)) + if(method_exists($this,$meth)) { - $value = call_user_func_array(array($this, $method), array($value, 'read', $parms)); + $parms['field'] = $field; + $value = call_user_func_array(array($this, $meth), array($value, 'read', $parms)); } else { @@ -3634,6 +3636,7 @@ class e_form { // return print_a($value,true); $parms = vartrue($attributes['writeParms'], array()); + $tp = e107::getParser(); if(is_string($parms)) parse_str($parms, $parms); @@ -3749,6 +3752,7 @@ class e_form break; case 'tags': + $maxlength = vartrue($parms['maxlength'], 255); $ret = vartrue($parms['pre']).$this->tags($key, $value, $maxlength, $parms).vartrue($parms['post']); // vartrue($parms['__options']) is limited. See 'required'=>true break; @@ -4011,7 +4015,10 @@ class e_form break; case 'method': // Custom Function - $ret = call_user_func_array(array($this, $key), array($value, 'write', $parms)); + $meth = (!empty($attributes['method'])) ? $attributes['method'] : $key; + $parms['field'] = $key; + + $ret = call_user_func_array(array($this, $meth), array($value, 'write', $parms)); break; case 'upload': //TODO - from method