示例#1
0
 /**
  * Сохраняет структуру
  *
  * @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;
 }
示例#2
0
 /**
  * Сохраняет данные формы создания/редактирования раздела
  * 
  * @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;
 }
示例#3
0
文件: Page.php 项目: ei-grad/phorm
 /**
  * Сохраняет данные формы создания/редактирования страницы
  * 
  * @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;
 }
示例#4
0
 /**
  * Сохраняет данные формы создания/редактирования материала
  * 
  * @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;
 }