Moved more features to FieldDefinition class.
This commit is contained in:
parent
4df5b6896c
commit
e217414f11
@ -38,6 +38,60 @@ class FieldDefinition
|
|||||||
'fields' => array(),
|
'fields' => array(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach ($this->fieldData['fields'] as $key=>$meta) {
|
||||||
|
$groupName = $this->fieldData['groups'][$meta['group']];
|
||||||
|
$byGroup[$groupName]['fields'][] = $meta;
|
||||||
|
}
|
||||||
|
|
||||||
return $byGroup;
|
return $byGroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds the given $values or default values and replaces $placeholders. Also
|
||||||
|
* adds some helping attributes to fields.
|
||||||
|
*
|
||||||
|
* @param mixed[] Key-value-array of values (value) to assign to fields (key)
|
||||||
|
* @param string[] Key-value-array of values (value) to replace placeholders (key) with
|
||||||
|
*/
|
||||||
|
public function addFieldValues($values = array(), $placeholders = array())
|
||||||
|
{
|
||||||
|
foreach ($this->fieldData['fields'] as $key=>$meta) {
|
||||||
|
$meta['field_id'] = $key;
|
||||||
|
$groupName = $this->fieldData['groups'][$meta['group']];
|
||||||
|
$meta['group_name'] = $groupName;
|
||||||
|
|
||||||
|
// Assign session value if set, or use default if set
|
||||||
|
if (isset($values[$key])) {
|
||||||
|
$meta['value'] = $values[$key];
|
||||||
|
|
||||||
|
switch ($meta['type']) {
|
||||||
|
case 'datetime':
|
||||||
|
$meta['value_unixtime'] = strtotime($meta['value']);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
} elseif (isset($meta['default'])) {
|
||||||
|
if (isset($placeholders[$meta['default']])) {
|
||||||
|
$meta['value'] = $placeholders[$meta['default']];
|
||||||
|
} else {
|
||||||
|
$meta['value'] = $meta['default'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Field type marker for Mustache
|
||||||
|
$meta['fieldtype_' . $meta['type']] = true;
|
||||||
|
|
||||||
|
// Add useful default values for some types
|
||||||
|
switch ($meta['type']) {
|
||||||
|
case 'datetime':
|
||||||
|
$meta['min'] = date('Y-m-d');
|
||||||
|
$meta['today'] = date('Y-m-d');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add to fieldlist
|
||||||
|
$this->fieldData['fields'][$key] = $meta;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,44 +10,16 @@ if (!isset($action)) {
|
|||||||
$skey = 'form_' . $action;
|
$skey = 'form_' . $action;
|
||||||
|
|
||||||
$fd = new FieldDefinition($action);
|
$fd = new FieldDefinition($action);
|
||||||
$field_data = $fd->getFieldData();
|
|
||||||
|
$placeholders = array(
|
||||||
|
'USER_NAME' => $data['user']['name_first'] . ' ' . $data['user']['name_last'],
|
||||||
|
'USER_EMAIL' => $data['user']['email'],
|
||||||
|
);
|
||||||
|
|
||||||
|
$fd->addFieldValues($_SESSION[$skey], $placeholders);
|
||||||
|
|
||||||
$by_group = $fd->getGroups();
|
$by_group = $fd->getGroups();
|
||||||
|
|
||||||
// Assign fields to groups, fill in (default) values
|
|
||||||
foreach ($field_data['fields'] as $key=>$meta) {
|
|
||||||
$meta['field_id'] = $key;
|
|
||||||
$group_name = $field_data['groups'][$meta['group']];
|
|
||||||
$meta['group_name'] = $group_name;
|
|
||||||
|
|
||||||
// Assign session value if set, or use default if set
|
|
||||||
if (isset($_SESSION[$skey][$key])) {
|
|
||||||
$meta['value'] = $_SESSION[$skey][$key];
|
|
||||||
} elseif (isset($meta['default'])) {
|
|
||||||
switch ($meta['default']) {
|
|
||||||
case 'USER_NAME':
|
|
||||||
$meta['value'] = $data['user']['name_first'] . ' ' . $data['user']['name_last'];
|
|
||||||
break;
|
|
||||||
case 'USER_EMAIL':
|
|
||||||
$meta['value'] = $data['user']['email'];
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$meta['value'] = $meta['default'];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Field type marker for Mustache
|
|
||||||
$meta['fieldtype_' . $meta['type']] = true;
|
|
||||||
|
|
||||||
// Add useful default values for some types
|
|
||||||
if ($meta['type'] == 'datetime') {
|
|
||||||
$meta['min'] = date('Y-m-d');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add to fieldlist
|
|
||||||
$by_group[$group_name]['fields'][] = $meta;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert hash to list for Mustache compatibility
|
// Convert hash to list for Mustache compatibility
|
||||||
$by_group = array_values($by_group);
|
$by_group = array_values($by_group);
|
||||||
|
|
||||||
|
@ -10,36 +10,11 @@ if (!isset($action)) {
|
|||||||
$skey = 'form_' . $action;
|
$skey = 'form_' . $action;
|
||||||
|
|
||||||
$fd = new FieldDefinition($action);
|
$fd = new FieldDefinition($action);
|
||||||
$field_data = $fd->getFieldData();
|
$fd->addFieldValues($_SESSION[$skey]);
|
||||||
|
|
||||||
$fields = array();
|
$fieldData = $fd->getFieldData();
|
||||||
|
|
||||||
// Assign fields to groups, fill in (default) values
|
$fields = $fieldData['fields'];
|
||||||
foreach ($field_data['fields'] as $key=>$meta) {
|
|
||||||
$meta['field_id'] = $key;
|
|
||||||
|
|
||||||
// Assign session value if set, or use default if set
|
|
||||||
if (isset($_SESSION[$skey][$key])) {
|
|
||||||
$meta['value'] = $_SESSION[$skey][$key];
|
|
||||||
|
|
||||||
switch ($meta['type']) {
|
|
||||||
case 'datetime':
|
|
||||||
$meta['value_unixtime'] = strtotime($meta['value']);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Field type marker for Mustache
|
|
||||||
$meta['fieldtype_' . $meta['type']] = true;
|
|
||||||
|
|
||||||
// Add useful default values for some types
|
|
||||||
if ($meta['type'] == 'datetime') {
|
|
||||||
$meta['today'] = date('Y-m-d');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add to fieldlist
|
|
||||||
$fields[$key] = $meta;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($debug) {
|
if ($debug) {
|
||||||
print_r($fields);
|
print_r($fields);
|
||||||
|
Reference in New Issue
Block a user