1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-28 16:50:07 +02:00

Added e_user.php 'settings' method to define additional (extended) user fields dynamically. See _blank/e_user.php

This commit is contained in:
Cameron
2021-01-18 18:10:00 -08:00
parent 3ee52f0cbe
commit 8f27be1150
9 changed files with 289 additions and 23 deletions

View File

@@ -282,7 +282,11 @@ class e107_user_extended
$index = $this->nameIndex[$fieldname];
switch ($this->fieldDefinitions[$index]['user_extended_struct_type'])
$type = $this->fieldDefinitions[$index]['user_extended_struct_type'];
$ret = null;
switch($type)
{
case EUF_TEXT :
case EUF_DB_FIELD :
@@ -293,7 +297,7 @@ class e107_user_extended
case EUF_LANGUAGE :
case EUF_PREDEFINED :
case EUF_RADIO :
$ret = 'todb';
$ret = 'todb';
break;
case EUF_CHECKBOX :
@@ -303,9 +307,30 @@ class e107_user_extended
case EUF_INTEGER :
$ret = 'int';
break;
}
// admin-ui format 'data' ie. 'str', 'int', 'array';
case EUF_ADDON :
$ret = 'JSON';
if(!empty($this->fieldDefinitions[$index]['user_extended_struct_values']))
{
if($tmp = e107::unserialize($this->fieldDefinitions[$index]['user_extended_struct_values']))
{
if(isset($tmp['data']))
{
$ret = $tmp['data'];
}
}
}
break;
}
return $ret;
}
/**
@@ -837,7 +862,7 @@ class e107_user_extended
case EUF_ADDON:
return 'JSON';
break;
default:
e107::getMessage()->addDebug("<strong>Unknown type '{$type}' for user extended field.</strong>");
return false;
@@ -878,7 +903,6 @@ class e107_user_extended
function user_extended_add($name, $text='', $type='', $parms='', $values='', $default='', $required='', $read='', $write='', $applicable='', $order='', $parent='')
{
@@ -909,6 +933,11 @@ class e107_user_extended
}
$field_info = $this->user_extended_type_text($type, $default);
if($type === EUF_ADDON && !empty($fieldType))
{
$field_info = $fieldType;
}
// wrong type
if(false === $field_info)
@@ -941,7 +970,7 @@ class e107_user_extended
'user_extended_struct_text' => (string) $tp -> toDB($text, true),
'user_extended_struct_type' => (int) $type,
'user_extended_struct_parms' => (string) $tp -> toDB($parms, true),
'user_extended_struct_values' => (string) $tp -> toDB($values, true),
'user_extended_struct_values' => ($type === EUF_ADDON) ? (string) $values : (string) $tp -> toDB($values, true),
'user_extended_struct_default' => (string) $tp -> toDB($default, true),
'user_extended_struct_read' => (int) $read,
'user_extended_struct_write' => (int) $write,
@@ -955,6 +984,8 @@ class e107_user_extended
if(!$this->user_extended_field_exist($name))
{
$nid = $sql->insert('user_extended_struct', $extStructInsert);
$this->init(); // rebuild the list.
@@ -1112,6 +1143,29 @@ class e107_user_extended
switch($struct['user_extended_struct_type'])
{
case EUF_ADDON:
$attributes = e107::unserialize($struct['user_extended_struct_values']);
$plug = $struct['user_extended_struct_parms'];
if(!$form = e107::getAddon($plug,'e_user',$plug."_user_form")) // custom form.
{
$form = e107::getForm();
}
// $method = str_replace('plugin_'.$plug.'_', '', $struct['user_extended_struct_name']);
if(empty($attributes['type']))
{
trigger_error("'type' is missing from field definition", E_USER_NOTICE);
return null;
}
$attributes['method'] = 'user_'.$struct['user_extended_struct_name'];
return $form->renderElement($fname,$curval, $attributes);
break;
case EUF_COUNTRY:
return e107::getForm()->country($fname,$curval, $opts);
break;
@@ -1771,6 +1825,8 @@ class e107_user_extended
return $ret;
}
}