/** * Редактирование записи в таблице * @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); } }
/** * Редактирование записи в таблице * @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"); }