Example #1
0
 /**
  * Save a type
  *
  * @return  void
  */
 public function saveTask()
 {
     // Check for request forgeries
     Request::checkToken();
     if (!User::authorise('core.edit', $this->_option) && !User::authorise('core.create', $this->_option)) {
         App::abort(403, Lang::txt('JERROR_ALERTNOAUTHOR'));
     }
     $type = Request::getVar('type', array(), 'post');
     // Initiate extended database class
     $row = Type::oneOrNew($type['id'])->set($type);
     // 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 dirname(dirname(__DIR__)) . DS . 'models' . DS . 'elements.php';
         $re = new \Components\Resources\Models\Elements($elements);
         $row->set('customFields', $re->toString());
     }
     // Get parameters
     $p = new \Hubzero\Config\Registry(Request::getVar('params', array(), 'post'));
     $row->set('params', $p->toString());
     // Store new content
     if (!$row->save()) {
         $this->setError($row->getError());
         return $this->editTask($row);
     }
     Notify::success(Lang::txt('COM_RESOURCES_ITEM_SAVED'));
     if ($this->getTask() == 'apply') {
         return $this->editTask($row);
     }
     // Redirect
     $this->cancelTask();
 }
Example #2
0
 /**
  * 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'));
 }