/** * Сохраняет структуру * * @param Phorm_Form $form * @param mixed $data Дополнительные данные формы. Если передана строка, то принимается как structureid * @return array | false */ public function saveStructureForm(Phorm_Form $form, $data = null) { if (!is_null($data) && is_string($data)) { $data = array('structureid' => $data); } $data = array_merge($form->getValues(), (array) $data); $data['groups'] = join(',', $data['groups']); $data = $this->getFilteredValuesByTableCols('pw_structures', $data); $this->_db->beginTransaction(); try { // Изменение существующей записи if (isset($data['structureid'])) { $this->_db->update('pw_structures', $data, 'structureid=' . (int) $data['structureid']); // Вставка новой записи } else { $this->_db->insert('pw_structures', $data); $data['structureid'] = $this->_db->lastInsertId(); } $this->_db->commit(); return $data; } catch (Exception $e) { $this->_db->rollBack(); $this->_errors[] = $e->getMessage(); } return false; }
/** * Сохраняет данные формы создания/редактирования раздела * * @param Phorm_Form $form Объект формы * @param mixed $data Дополнительные данные формы. Если передана строка, то принимается как categoryid * @param mixed $additionals Имя метода или массив имен для дополнительной обработки данных * Методы должны существовать в текущем классе (в т.ч. могут быть и в расширенном) * Используется для сохранения дополнительных данных разделов * Каждый из методов должен возвращать массив данных с модифицированными ключами * @param mixed $filters Имя метода или массив имен для предварительной фильтрации данных * Методы должны существовать в текущем классе (в т.ч. могут быть и в расширенном) * Каждый из методов должен возвращать массив данных с модифицированными ключами * @see /application/configs/forms/control/categories.xml * @return array | false */ public function saveCategoryForm(Phorm_Form $form, $data = null, $additionals = null, $filters = null) { /** * Получаем значения формы и объединяем их с массивом дополнительных данных */ if (!is_null($data) && is_string($data)) { $data = array('categoryid' => $data); } $data = array_merge($form->getValues(), (array) $data); /** * Предварительный фильтр значений */ if (!($data = $this->_filterFormInfo($data, $filters))) { return false; } $maindata = $this->getFilteredValuesByTableCols('pw_categories', $data); /** * Сохранение данных */ $this->_db->beginTransaction(); try { if (isset($data['categoryid'])) { // Обновление существующей записи $this->_db->update('pw_categories', $maindata, 'categoryid=' . (int) $data['categoryid']); $action = 'update'; } elseif (isset($data['parentid'])) { // Создание нового раздела $data['categoryid'] = $this->_dbtree->Insert($data['parentid'], null, $maindata); $action = 'insert'; } /** * Дополнительные данные раздела */ if (!($data = $this->_saveAdditionalInfo($data, $additionals))) { $this->_db->rollBack(); return false; } /** * Поисковый индекс */ $this->buildSearchIndex(array('indextitle' => $data['categoryname'], 'indextxt' => $data['categorytxt'], 'categoryid' => $data['categoryid'])); /** * Логирование */ $this->setLog($action, array('url' => '/control/categories/edit/categoryid/' . (int) $data['categoryid'] . '/', 'name' => $data['categoryname'], 'tablename' => 'pw_categories', 'identity' => (int) $data['categoryid'], 'fieldname' => 'categoryid')); /** * Очистка кеша */ $this->getCache('categories')->clean(); $this->_db->commit(); return $data; } catch (Exception $e) { $this->_db->rollBack(); $this->_errors[] = $e->getMessage(); } return false; }
/** * Сохраняет данные формы создания/редактирования страницы * * @param Phorm_Form $form Объект формы * @param mixed $data Дополнительные данные формы. Если передана строка, то принимается как pageid * * @return array | false */ public function savePageForm(Phorm_Form $form, $data = null) { /** * Получаем значения формы и объединяем их с массивом дополнительных данных */ if (!is_null($data) && is_string($data)) { $data = array('pageid' => $data); } $data = array_merge($form->getValues(), (array) $data); /** * Предварительный фильтр значений */ $maindata = $this->getFilteredValuesByTableCols('pw_pages', $data); $maindata['controllername'] = $this->getController(); /** * Сохранение данных */ $this->_db->beginTransaction(); try { // Изменение существующей записи if (isset($data['pageid'])) { $action = 'update'; $this->_db->update('pw_pages', $maindata, 'pageid=' . (int) $data['pageid']); // Вставка новой записи } else { $action = 'insert'; $this->_db->insert('pw_pages', $maindata); $data['pageid'] = $this->_db->lastInsertId(); } /** * Логирование */ $this->setLog($action, array('url' => '/control/page/edit/pageid/' . (int) $data['pageid'] . '/', 'name' => $data['pagename'], 'tablename' => 'pw_pages', 'identity' => (int) $data['pageid'], 'fieldname' => 'pageid')); $this->_db->commit(); return $data; } catch (Exception $e) { $this->_db->rollBack(); $this->_errors[] = $e->getMessage(); } return false; }
/** * Сохраняет данные формы создания/редактирования материала * * @param Phorm_Form $form Объект формы * @param mixed $data Дополнительные данные формы. Если передана строка, то принимается как resourceid * @param mixed $additionals Имя метода или массив имен для дополнительной обработки данных * Методы должны существовать в текущем классе (в т.ч. могут быть и в расширенном) * Используется для сохранения дополнительных данных в модулях материалов * Каждый из методов должен возвращать массив данных с модифицированными ключами * @see Например, Phorm_Resource_Forms::saveFormInfo * @param mixed $filters Имя метода или массив имен для предварительной фильтрации данных * Методы должны существовать в текущем классе (в т.ч. могут быть и в расширенном) * Каждый из методов должен возвращать массив данных с модифицированными ключами * @see /application/configs/resources/forms.xml * @return array | false */ public function saveResourceForm(Phorm_Form $form, $data = null, $additionals = null, $filters = null) { /** * Получаем значения формы и объединяем их с массивом дополнительных данных */ if (!is_null($data) && is_string($data)) { $data = array('resourceid' => $data); } $data = array_merge($form->getValues(), (array) $data); /** * Предварительный фильтр значений */ if (!($data = $this->_filterFormInfo($data, $filters))) { return false; } $maindata = $this->getFilteredValuesByTableCols('pw_resources', $data); /** * Сохранение данных */ $this->_db->beginTransaction(); try { // Изменение существующей записи if (isset($data['resourceid'])) { $this->_db->update('pw_resources', $maindata, 'resourceid=' . (int) $data['resourceid']); $action = 'update'; // Вставка новой записи } else { $this->_db->insert('pw_resources', $maindata); $data['resourceid'] = $this->_db->lastInsertId(); $action = 'insert'; } /** * Дополнительные данные материала */ if (!($data = $this->_saveAdditionalInfo($data, $additionals))) { $this->_db->rollBack(); return false; } /** * Поисковый индекс */ $this->buildSearchIndex(array('indextitle' => $data['resourcename'], 'indextxt' => $data['resourcetxt'], 'resourceid' => $data['resourceid'])); /** * Логирование */ $this->setLog($action, array('url' => '/control/resource/edit/resourceid/' . (int) $data['resourceid'] . '/', 'name' => $data['resourcename'], 'tablename' => 'pw_resources', 'identity' => (int) $data['resourceid'], 'fieldname' => 'resourceid')); $this->_db->commit(); return $data; } catch (Exception $e) { $this->_db->rollBack(); $this->_errors[] = $e->getMessage(); $this->_errors[] = $e->getTraceAsString(); } return false; }