public function getElementsFromPost()
{
$elements = array();
foreach ($_POST as $key => $value) {
if (preg_match('/^elementName([0-9]+)$/', $key, $matches) || preg_match('/^elementId([0-9]+)$/', $key, $matches)) {
$field = $matches[0];
$number = $matches[1];
$name = $value;
if (preg_match('/^elementName([0-9]+)$/', $key, $matches)) {
$elements[$number]['mode'] = 'create';
$elements[$number]['name'] = $value;
} else {
$elements[$number]['mode'] = 'update';
$elements[$number]['id'] = $value;
$element_type = ElementType::model()->findByPk($value);
$element_class = $element_type->class_name;
$elements[$number]['name'] = $value = $element_type->name;
$elements[$number]['table_name'] = $element_class::model()->tableName();
$field = 'elementName' . $number;
}
$elements[$number]['class_name'] = 'Element_' . $this->moduleID . '_' . preg_replace('/ /', '', ucwords(strtolower($value)));
# now using the shortname field attribute for the table name
if ($elements[$number]['mode'] == 'create') {
$elements[$number]['table_name'] = 'et_' . strtolower($this->moduleShortID) . '_' . strtolower(preg_replace('/ /', '', $_POST['elementShortName' . $number]));
}
$elements[$number]['number'] = $number;
$elements[$number]['fields'] = array();
$elements[$number]['foreign_keys'] = array();
$elements[$number]['lookup_tables'] = array();
$elements[$number]['defaults_tables'] = array();
$elements[$number]['relations'] = array();
$elements[$number]['defaults'] = array();
$elements[$number]['mapping_tables'] = array();
$elements[$number]['defaults_methods'] = array();
$elements[$number]['after_save'] = array();
$elements[$number] = $this->generateKeyNames($elements[$number], array('lmui', 'cui', 'ev'));
$fields = array();
foreach ($_POST as $fields_key => $fields_value) {
$pattern = '/^' . $field . 'FieldName([0-9]+)$/';
if (preg_match($pattern, $fields_key, $field_matches)) {
$field_number = $field_matches[1];
$elements[$number]['fields'][$field_number] = array();
$elements[$number]['fields'][$field_number]['name'] = $fields_value;
$elements[$number]['fields'][$field_number]['label'] = $_POST[$field . 'FieldLabel' . $field_number];
$elements[$number]['fields'][$field_number]['number'] = $field_number;
$elements[$number]['fields'][$field_number]['type'] = $_POST['elementType' . $number . 'FieldType' . $field_number];
$elements[$number]['fields'][$field_number]['required'] = (bool) @$_POST['isRequiredField' . $number . '_' . $field_number];
if ($elements[$number]['fields'][$field_number]['type'] == 'Dropdown list') {
$elements = $this->extraElementFieldWrangling_DropdownList($elements, $number, $field_number, $fields_value);
}
if ($elements[$number]['fields'][$field_number]['type'] == 'Textarea with dropdown') {
$elements = $this->extraElementFieldWrangling_TextareaWithDropdown($elements, $number, $field_number, $fields_value);
$elements[$number]['fields'][$field_number]['textarea_rows'] = @$_POST['textAreaDropDownRows' . $number . 'Field' . $field_number];
$elements[$number]['fields'][$field_number]['textarea_cols'] = @$_POST['textAreaDropDownCols' . $number . 'Field' . $field_number];
}
if ($elements[$number]['fields'][$field_number]['type'] == 'Radio buttons') {
$elements = $this->extraElementFieldWrangling_RadioButtons($elements, $number, $field_number, $fields_value);
}
if ($elements[$number]['fields'][$field_number]['type'] == 'EyeDraw') {
$elements = $this->extraElementFieldWrangling_EyeDraw($elements, $number, $field_number, $fields_value);
}
if ($elements[$number]['fields'][$field_number]['type'] == 'Multi select') {
$elements = $this->extraElementFieldWrangling_MultiSelect($elements, $number, $field_number, $fields_value);
}
if ($elements[$number]['fields'][$field_number]['type'] == 'Slider') {
$elements[$number]['fields'][$field_number]['slider_min_value'] = @$_POST['sliderMinValue' . $number . 'Field' . $field_number];
$elements[$number]['fields'][$field_number]['slider_max_value'] = @$_POST['sliderMaxValue' . $number . 'Field' . $field_number];
$elements[$number]['fields'][$field_number]['slider_default_value'] = @$_POST['sliderDefaultValue' . $number . 'Field' . $field_number];
$elements[$number]['fields'][$field_number]['default_value'] = @$_POST['sliderDefaultValue' . $number . 'Field' . $field_number];
$elements[$number]['fields'][$field_number]['slider_stepping'] = @$_POST['sliderStepping' . $number . 'Field' . $field_number];
$elements[$number]['fields'][$field_number]['slider_dp'] = @$_POST['sliderForceDP' . $number . 'Field' . $field_number];
}
if ($elements[$number]['fields'][$field_number]['type'] == 'Integer') {
$elements[$number]['fields'][$field_number]['integer_min_value'] = @$_POST['integerMinValue' . $number . 'Field' . $field_number];
$elements[$number]['fields'][$field_number]['integer_max_value'] = @$_POST['integerMaxValue' . $number . 'Field' . $field_number];
$elements[$number]['fields'][$field_number]['integer_default_value'] = @$_POST['integerDefaultValue' . $number . 'Field' . $field_number];
$elements[$number]['fields'][$field_number]['default_value'] = @$_POST['integerDefaultValue' . $number . 'Field' . $field_number];
$elements[$number]['fields'][$field_number]['integer_size'] = @$_POST['integerSize' . $number . 'Field' . $field_number];
$elements[$number]['fields'][$field_number]['integer_max_length'] = @$_POST['integerMaxLength' . $number . 'Field' . $field_number];
}
if ($elements[$number]['fields'][$field_number]['type'] == 'Decimal') {
$elements[$number]['fields'][$field_number]['decimal_min_value'] = @$_POST['decimalMinValue' . $number . 'Field' . $field_number];
$elements[$number]['fields'][$field_number]['decimal_max_value'] = @$_POST['decimalMaxValue' . $number . 'Field' . $field_number];
$elements[$number]['fields'][$field_number]['default_value'] = @$_POST['decimalDefaultValue' . $number . 'Field' . $field_number];
$elements[$number]['fields'][$field_number]['decimal_size'] = @$_POST['decimalSize' . $number . 'Field' . $field_number];
$elements[$number]['fields'][$field_number]['decimal_max_length'] = @$_POST['decimalMaxLength' . $number . 'Field' . $field_number];
$elements[$number]['fields'][$field_number]['decimal_dp'] = @$_POST['decimalForceDP' . $number . 'Field' . $field_number];
}
if ($elements[$number]['fields'][$field_number]['type'] == 'Textbox') {
$elements[$number]['fields'][$field_number]['textbox_size'] = @$_POST['textBoxSize' . $number . 'Field' . $field_number];
$elements[$number]['fields'][$field_number]['textbox_max_length'] = @$_POST['textBoxMaxLength' . $number . 'Field' . $field_number];
}
if ($elements[$number]['fields'][$field_number]['type'] == 'Textarea') {
$elements[$number]['fields'][$field_number]['textarea_rows'] = @$_POST['textAreaRows' . $number . 'Field' . $field_number];
$elements[$number]['fields'][$field_number]['textarea_cols'] = @$_POST['textAreaCols' . $number . 'Field' . $field_number];
}
}
}
}
}
return $elements;
}