Example #1
0
 /**
  * Редактирование записи в таблице
  * @param string $table
  * @param array $data
  * @param int $id
  * @param int $parent
  * @param array $exc
  * @return mixed
  */
 public function editTableRow($table, $data, $id, $parent = 0, $exc = array())
 {
     $data = array_merge(array('field_id' => $id), $data);
     // Определяем идентификатор родителя
     if ($parent == 0) {
         $this->setParent($this->getRootId());
     } else {
         $this->setParent($parent);
     }
     // Загрузка файлов
     $files = files::loadFiles();
     $data_keys = array_keys($data);
     if (is_array($files) && !empty($files)) {
         foreach ($files as $key => $values) {
             if (in_array($key, $data_keys) && $values['error'] == '') {
                 // Удаление файла
                 if (isset($_POST[$key . '_delete']) && (int) $_POST[$key . '_delete'] == 1) {
                     files::deleteFile($data[$key]);
                     $data[$key] = '';
                 }
                 // Добавление файла
                 if ($values['error'] == '') {
                     $data[$key] = $values['name'];
                 }
             }
         }
     }
     // Проверяем существует ли процедура
     if (!$this->__storedProcedureCheck($table . '_update')) {
         // Если процедуры не существует пользуемся генератором процедур
         $this->__storedProcedureGeneration($table, 'update');
     }
     // Получение текущего родителя
     $current_parent = $this->getCurrentParent($table, $id);
     $tree_branches = $this->getNodeInfo($table, $id);
     $data['tree_left'] = isset($data['tree_left']) && $data['tree_left'] != '' ? $data['tree_left'] : $tree_branches['tree_left'];
     $data['tree_right'] = isset($data['tree_right']) && $data['tree_right'] != '' ? $data['tree_right'] : $tree_branches['tree_right'];
     $data['tree_level'] = isset($data['tree_level']) && $data['tree_level'] != '' ? $data['tree_level'] : $tree_branches['tree_level'];
     $query = 'CALL `' . $table . '_update`(';
     $params = array();
     foreach ($data as $key => $value) {
         $query .= ':' . $key . ',';
         $params[':' . $key] = $value;
     }
     $query = substr($query, 0, -1) . ')';
     PdoWrap::execute($query, $params);
     expSitemapAll();
     // Логирование оперции
     $this->tableLog(PREF . $table, $id, "2");
     // Обновление ветвей дерева при изменениии родителя
     if ($current_parent['id'] != $this->getParent()) {
         $tree_branches = $this->getNodeInfo($table, $id);
         $new_parent_tree_branches = $this->getNodeInfo($table, $this->getParent());
         $query = 'CALL update_tree_branches_before_update(:current_table, :current_left, :current_right, :current_level, :new_parent_left, :new_parent_right, :new_parent_level)';
         $params = array(':current_table' => $this->__getPrefixTableName($table), ':current_left' => $tree_branches['tree_left'], ':current_right' => $tree_branches['tree_right'], ':current_level' => $tree_branches['tree_level'], ':new_parent_left' => $new_parent_tree_branches['tree_left'], ':new_parent_right' => $new_parent_tree_branches['tree_right'], ':new_parent_level' => $new_parent_tree_branches['tree_level']);
         PdoWrap::execute($query, $params);
     }
 }
Example #2
0
 /**
  * Редактирование записи в таблице
  * @param string $table
  * @param array $data
  * @param int $id
  * @param int $parent
  * @param array $exc
  * @return bool
  */
 public function editTableRow($table, $data, $id, $parent = 0, $exc = array())
 {
     $data = array_merge(array('field_id' => $id), $data);
     // Загрузка файлов
     $files = files::loadFiles();
     $data_keys = array_keys($data);
     if (is_array($files) && !empty($files)) {
         foreach ($files as $key => $values) {
             if (in_array($key, $data_keys) && $values['error'] == '') {
                 // Удаление файла
                 if (isset($_POST[$key . '_delete']) && (int) $_POST[$key . '_delete'] == 1) {
                     files::deleteFile($data[$key]);
                     $data[$key] = '';
                 }
                 // Добавление файла
                 if ($values['error'] == '') {
                     $data[$key] = $values['name'];
                 }
             }
         }
     }
     // Проверяем существует ли процедура
     if (!$this->__storedProcedureCheck($table . '_update')) {
         // Если процедуры не существует пользуемся генератором процедур
         $this->__storedProcedureGeneration($table, 'update');
     }
     $query = 'CALL `' . $table . '_update`(';
     $params = array();
     foreach ($data as $key => $value) {
         $query .= ':' . $key . ',';
         $params[':' . $key] = $value;
     }
     $query = substr($query, 0, -1) . ')';
     PdoWrap::execute($query, $params);
     expSitemapAll();
     // Логирование оперции
     $this->tableLog(PREF . $table, $id, "2");
 }