Beispiel #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);
     }
 }
Beispiel #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");
 }
Beispiel #3
0
 /**
  * Изменение данных в таблице
  * @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;
 }
Beispiel #4
0
//	Запрет на обращение к файлу.
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);