/** * Save a type * * @return void */ public function saveTask() { // Check for request forgeries Request::checkToken(); // Initiate extended database class $row = new Type($this->database); if (!$row->bind($_POST)) { $this->setError($row->getError()); $this->editTask($row); return; } // Get the custom fields $fields = Request::getVar('fields', array(), 'post'); if (is_array($fields)) { $elements = new stdClass(); $elements->fields = array(); foreach ($fields as $val) { if ($val['title']) { $element = new stdClass(); $element->default = isset($val['default']) ? $val['default'] : ''; $element->name = isset($val['name']) && trim($val['name']) != '' ? $val['name'] : $this->_normalize(trim($val['title'])); $element->label = $val['title']; $element->type = isset($val['type']) && trim($val['type']) != '' ? $val['type'] : 'text'; $element->required = isset($val['required']) ? $val['required'] : '0'; foreach ($val as $key => $v) { if (!in_array($key, array('default', 'type', 'title', 'name', 'required', 'options'))) { $element->{$key} = $v; } } if (isset($val['options'])) { $element->options = array(); foreach ($val['options'] as $option) { if (trim($option['label'])) { $opt = new stdClass(); $opt->label = $option['label']; $opt->value = $option['label']; $element->options[] = $opt; } } } $elements->fields[] = $element; } } include_once PATH_CORE . DS . 'components' . DS . 'com_resources' . DS . 'models' . DS . 'elements.php'; $re = new \Components\Resources\Models\Elements($elements); $row->customFields = $re->toString(); } // Get parameters $p = new \Hubzero\Config\Registry(Request::getVar('params', array(), 'post')); $row->params = $p->toString(); // Make sure a category is set if (!$row->category) { $this->setError(Lang::txt('COM_RESOURCES_ERROR_SELECT_CATEGORY')); $this->editTask($row); return; } // Check content if (!$row->check()) { $this->setError($row->getError()); $this->editTask($row); return; } // Store new content if (!$row->store()) { $this->setError($row->getError()); $this->editTask($row); return; } if ($this->_task == 'apply') { return $this->editTask($row); } // Redirect App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller, false), Lang::txt('COM_RESOURCES_ITEM_SAVED')); }