1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-04 13:47:31 +02:00

Fixes #974 - user extended fields were not using correct form element in admin area.

This commit is contained in:
Cameron
2015-04-24 00:13:09 -07:00
parent 1b16cadb47
commit 821922c31a
2 changed files with 81 additions and 23 deletions

View File

@@ -258,7 +258,15 @@ 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.
{
$update[$key] = vartrue($new_data[$key],'_NULL_');
$update[$key] = vartrue($new_data['ue'][$key],'_NULL_');
}
e107::getMessage()->addDebug(print_a($update,true));
@@ -433,12 +455,9 @@ class users_admin_ui extends e_admin_ui
}
return $new_data;
}
/**
* Unban user trigger
* @param int $userid
@@ -456,8 +475,10 @@ class users_admin_ui extends e_admin_ui
return;
}
$sql->db_Update("user", "user_ban='0' WHERE user_id='".$userid."' ");
$sql->db_Delete("banlist"," banlist_ip='{$row['user_ip']}' ");
$row = e107::user($userid);
$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);
@@ -2042,6 +2063,36 @@ 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')

View File

@@ -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