/** * Method to save the form data. * * @param array $data The form data. * @param boolean $auto true when the data comes from auto monitoring * @param boolean $import true when the data comes from 1.9.x import process * @return boolean True on success. */ public function save($data, $auto = false, $import = false, $restore_in_progress = false) { global $jlistConfig; $result = false; // Initialise variables; $dispatcher = JDispatcher::getInstance(); $table = $this->getTable(); $pk = !empty($data['file_id']) ? $data['file_id'] : (int) $this->getState($this->getName() . '.file_id'); $isNew = true; $jinput = JFactory::getApplication()->input; // Include the content plugins for the on save events. JPluginHelper::importPlugin('content'); // Load the row if saving an existing download. Not when auto monitoring is activated (also use for import from old version) if ($pk > 0 && !$auto || $pk > 0 && $restore_in_progress) { $table->load($pk); $isNew = false; } // Alter the title for save as copy if ($jinput->get('task') == 'save2copy') { list($title, $alias) = $table->buildNewTitle($data['file_alias'], $data['file_title']); $data['file_title'] = $title; $data['file_alias'] = $alias; } if (!isset($data['rules'])) { $data['rules'] = array('core.create' => array(), 'core.delete' => array(), 'core.edit' => array(), 'core.edit.state' => array(), 'core.edit.own' => array(), 'download' => array()); } if (!empty($data['tags']) && $data['tags'][0] != '') { $table->newTags = $data['tags']; } // Bind the data. if (!$table->bind($data)) { $this->setError($table->getError()); return false; } // Prepare the row for saving $this->prepareTable($table); // Check the data and check the selected files and handle it. if (!$table->checkData($isNew, $auto)) { $this->setError($table->getError()); return false; } // Trigger the onContentBeforeSave event. $result = $dispatcher->trigger($this->event_before_save, array($this->option . '.' . $this->name, &$table, $isNew)); if (in_array(false, $result, true)) { $this->setError($table->getError()); return false; } // Store the data. if ($import === true) { // set off this $table->set('_autoincrement', false); } if (!$table->store()) { $this->setError($table->getError()); return false; } else { // folder handling functionality /*if (!$table->checkCategoryFolder()) { $this->setError(JText::_('COM_JDOWNLOADS_CATSEDIT_ERROR_CHECK_FOLDER')); return false; } */ if (!$auto) { // Update only the log table when we have a new download creation in frontend $app = JFactory::getApplication(); if ($app->isSite() && $isNew) { $upload_data = new stdClass(); $upload_data->file_id = $table->file_id; $upload_data->url_download = $table->url_download; $upload_data->file_title = $table->file_title; $upload_data->size = $table->size; JDHelper::updateLog($type = 2, '', $upload_data); // send e-mail after new download creation in frontend if ($jlistConfig['send.mailto.option.upload'] == '1') { JDHelper::sendMailUpload($table); } } } } // Trigger the onContentAfterSave event. $dispatcher->trigger($this->event_after_save, array($this->option . '.' . $this->name, &$table, $isNew)); $this->setState($this->getName() . '.id', $table->file_id); // Clear the cache $this->cleanCache(); return true; }