/** * Редактирование записи в таблице * @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"); }
/** * Изменение данных в таблице * @param int $id * @return mixed */ public function editTable($id) { $data = array(); $error = array('all' => false); $ext = array('root', 'date_add', 'user_add', 'date_edit'); if ($id != (int) Text::get_post('id')) { $error['all'] = $error['id'] = true; } // Идентификатор родительской директории $parent = (int) Text::get_post('parent'); if ($parent == 0) { $mainparent = $this->getMainPage(); $parent = $mainparent['id']; } // Получение списка полей таблицы $fields = $this->getTableFields($this->table); $fields_count = count($fields); // Обработка загруженных значений for ($i = 0; $i < $fields_count; $i++) { if (!in_array($fields[$i]['Field'], $ext)) { $data[$fields[$i]['Field']] = isset($_POST[$fields[$i]['Field']]) ? Text::get_post($fields[$i]['Field']) : 0; // Проверка обязательных полей if ($fields[$i]['Null'] == 'NO') { if (empty($data[$fields[$i]['Field']])) { $error['all'] = $error[$fields[$i]['Field']] = true; } } } } // Загрузка файлов $files = files::loadFiles(); if (is_array($files) && !empty($files)) { foreach ($files as $key => $values) { if (isset($data[$key])) { // Удаление файла if (isset($_POST[$key . '_delete']) && (int) $_POST[$key . '_delete'] == 1) { files::deleteFile($data[$key]); $data[$key] = ''; } // Добавление файла if ($values['error'] == '') { $data[$key] = $values['name']; } } } } if ($data['protected'] == 0) { $check_alias = $this->__checkAlias($id, $data['alias'], $parent, $data['type']); if ($check_alias == 1) { $error['all'] = $error['alias'] = true; } elseif ($check_alias == 2) { $error['all'] = $error['alias2'] = true; } } if (strlen($data['position']) > 3) { $errors['all'] = $errors['pos'] = true; } if ($data['type'] == 3 && $data['url'] == '') { $data['url'] = $data['alias']; } // Обновление идентификатора пользователя, обновившего запись $data['user_edit'] = $this->getUid(); $data['parent_tree_id'] = $parent; // Изменений записи if ($error['all'] === false) { $query = 'CALL `pages_edit`('; $params = array(); foreach ($data as $key => $value) { $query .= ':' . $key . ','; $params[':' . $key] = $value; } $query = substr($query, 0, -1) . ')'; PdoWrap::execute($query, $params); // Обновление записей о количестве дочерних элементов в дереве PdoWrap::execute('CALL update_tree_count_children()'); } return $error; }
// Запрет на обращение к файлу. if (realpath($_SERVER['SCRIPT_FILENAME']) == realpath(__FILE__)) { header('Location: /'); exit; } // Сохранение настроек сайта if (Text::get_post('do') == 'save_options') { // Удаление файлов if (isset($_POST['delete']) && !empty($_POST['delete'])) { foreach ($_POST['delete'] as $key => $value) { files::deleteFile($_POST[$key]); } } // Загрузка файлов if (isset($_FILES) && count($_FILES) > 0) { $file = files::loadFiles(); foreach ($file as $key => $value) { if (isset($value['name'])) { $_POST[$key] = $value['name']; } } } PdoWrap::execute('CALL clear_options_checkboxes()'); foreach ($_POST as $key => $value) { if ($key != 'do' && $key != 'save') { if (isset($_POST['delete'][$key])) { $_POST[$key] = ''; } $query = 'CALL options_update(:field_name, :field_value, :field_user_edit)'; $params = array(':field_name' => $key, ':field_value' => Text::get_post($key), ':field_user_edit' => $_SESSION['user']['id']); PdoWrap::execute($query, $params);