/** * Получение массива дочерних элементов для панели администрирования * @param $table * @param $parent * @param int $page_num * @param string $sort * @param string $sort_type * @return array */ public function getAdminChildren($table, $parent = 0, $page_num = 1, $sort = '', $sort_type = 'ASC') { $count = ''; $query = 'CALL get_tree_table_children_rows_group_names(:current_table, :group_table, :parent_id, :group_id, :sort, :sort_type, :limit_field, :page_num, :active_field)'; $params = array(':current_table' => $this->__getPrefixTableName($table), ':group_table' => $this->__getPrefixTableName($this->getTableGroupName()), ':parent_id' => (int) $parent, ':group_id' => (int) $this->getGroup(), ':sort' => $sort, ':sort_type' => $sort_type, ':limit_field' => $this->getLimit(), ':page_num' => $page_num, ':active_field' => 2); // Получение массива данных $data = PdoWrap::select($query, $params); // Получение общего количества записей $count = PdoWrap::selectCell('SELECT @count AS `count`'); $this->setCount($count); return $data; }
/** * Получение массива дочерних элементов для панели администрирования * @param string $table * @param int $parent * @param int $page_num * @param string $sort * @param int $sort_type * @return array */ public function getAdminChildren($table, $parent = 0, $page_num = 1, $sort = '', $sort_type = 0) { $count = ''; if ((int) $parent == 0) { $query = 'CALL get_table_all_rows_with_group(:current_table, :group_table, :sort, :sort_type, :table_limit, :page_num, :active_field)'; $params = array(':current_table' => $this->__getPrefixTableName($table), ':group_table' => $this->__getPrefixTableName($this->getTableGroupName()), ':sort' => $sort, ':sort_type' => $sort_type, ':table_limit' => $this->getLimit(), ':page_num' => $page_num, ':active_field' => 2); // Получение массива данных $data = PdoWrap::select($query, $params); // Получение общего количества записей $count = PdoWrap::selectCell('SELECT @count AS `count`'); $this->setCount($count); return $data; } else { return $this->getRows($table, 'group_id', $parent, $sort, $sort_type, $page_num, $this->getLimit(), 2); } }
//if ($_SERVER['REQUEST_URI'] == '') $re = ''; //if ($_SERVER['REQUEST_URI'] == '') $re = ''; if (preg_match('/^\\/novosti\\/(\\d+)-([^\\/]+)\\/$/i', $_SERVER['REQUEST_URI'], $alias)) { if (isset($alias[2])) { $re = '/novosti/' . $alias[2] . '/'; } } if (strstr($_SERVER['REQUEST_URI'], '/kukhni/') || strstr($_SERVER['REQUEST_URI'], '/mebel/')) { $tmp = explode('/', $_SERVER['REQUEST_URI']); array_pop($tmp); $alias = end($tmp); $query = 'SELECT `to_url` FROM `' . PREF . 'redirect_urls` WHERE `from_url` = :url'; $check_redirect = PdoWrap::selectCell($query, array(':url' => $_SERVER['REQUEST_URI'])); if ($check_redirect != '') { $re = $check_redirect; } else { $query = 'SELECT CONCAT(`g`.`link`, `i`.`alias`, ".html") AS `link` FROM `cms_catalog_items` `i` INNER JOIN `cms_catalog_groups` `g` ON `g`.`id` = `i`.`group_id` INNER JOIN `zkymf_zoo_item` `z` ON `z`.`id` = `i`.`old_id` WHERE `z`.`alias` = :url'; $params = array(':url' => $alias); $check = PdoWrap::selectCell($query, $params); if ($check != "" && $check != $_SERVER['REQUEST_URI']) { $query = 'INSERT INTO `' . PREF . 'redirect_urls` (`from_url`, `to_url`) VALUES (:from_url, :to_url)'; PdoWrap::execute($query, array(':from_url' => $_SERVER['REQUEST_URI'], ':to_url' => $check)); $re = $check; } } } if ($re != '') { header("HTTP/1.1 301 Moved Permanently"); header('location: ' . $re); exit; }
/** * обратная Транслитерация строк. * @param string $value * @return string */ static function untransliterate($value) { $query = 'CALL get_untransliterate(:value_field)'; $params = array(':value_field' => $value); $data = PdoWrap::selectCell($query, $params); if (isset($data) && !empty($data)) { return $data; } else { return $value; } }
/** * Добавление записи в таблицу * @param string $table * @param array $data * @param int $parent * @return int|array */ public function insertTableRow($table, $data, $parent = 0) { // Определяем идентификатор родителя 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'] == '') { $data[$key] = $values['name']; } } } // Проверяем существует ли процедура if (!$this->__storedProcedureCheck($table . '_insert')) { // Если процедуры не существует пользуемся генератором процедур $this->__storedProcedureGeneration($table, 'insert'); } $tree_branches = $this->getNodeInfo($table, $this->getParent()); if ($this->getParent() > 0) { // Обновляем записи дерева $query = 'CALL update_tree_branches_before_insert(:current_table, :field_right)'; $params = array(':current_table' => $this->__getPrefixTableName($table), ':field_right' => $tree_branches['tree_right']); PdoWrap::execute($query, $params); // Получаем данные для новой ветви $tree_branches['tree_left'] = isset($tree_branches['tree_right']) ? $tree_branches['tree_right'] : 0; $tree_branches['tree_right'] = isset($tree_branches['tree_right']) ? $tree_branches['tree_right'] + 1 : 1; $tree_branches['tree_level'] = isset($tree_branches['tree_level']) ? $tree_branches['tree_level'] + 1 : 1; } else { // Получаем данные для новой ветви $tree_branches['tree_left'] = isset($tree_branches['tree_right']) ? $tree_branches['tree_right'] + 1 : 0; $tree_branches['tree_right'] = isset($tree_branches['tree_right']) ? $tree_branches['tree_right'] + 2 : 1; $tree_branches['tree_level'] = isset($tree_branches['tree_level']) ? $tree_branches['tree_level'] : 1; } $query = 'CALL `' . $table . '_insert`('; $params = array(); foreach ($data as $key => $value) { $query .= ':' . $key . ','; if (in_array($key, array_keys($tree_branches))) { $params[':' . $key] = $tree_branches[$key]; } else { $params[':' . $key] = $value; } } $query = substr($query, 0, -1) . ')'; $id = PdoWrap::selectCell($query, $params); // Логирование оперции $this->tableLog(PREF . $table, $id, "1"); expSitemapAll(); return (int) $id; }
/** * Вывод шаблона * @param $template */ public function displayAndCach($template) { $cache_id = null; $current_data = System_Settings::getCurrentData(); if (isset($_SERVER['REQUEST_URI']) && $_SERVER['REQUEST_URI'] != '') { $query = 'CALL insert_cach_id(:link, :template, :table_name, :table_id)'; $params = array(':link' => $_SERVER['REQUEST_URI'], ':template' => $template, ':table_name' => isset($current_data['table']) ? $current_data['table'] : NULL, ':table_id' => isset($current_data['id']) ? $current_data['id'] : NULL); $cache_id = PdoWrap::selectCell($query, $params); } parent::display($template, $cache_id); }
/** * Получение сообщений * @param int $from_user * @param int $to_user * @param int $page_num * @param string $sort_field * @param int $sort_type * @return array */ public function getMessages($from_user = 0, $to_user = 0, $page_num = 1, $sort_field = 'date', $sort_type = 0) { $query = 'CALL get_user_messages(:from_user,:to_user,:table_limit,:table_page,:sort_field,:sort_type)'; $params = array('from_user' => (int) $from_user, 'to_user' => (int) $to_user, 'table_limit' => (int) $this->getLimit(), 'table_page' => (int) $page_num, 'sort_field' => $sort_field, 'sort_type' => (int) $sort_type); $data = PdoWrap::select($query, $params); // Получение общего количества записей $count = PdoWrap::selectCell('SELECT @count AS `count`'); $this->setCountRows($count); return $data; }
/** * Получение массива дочерних альбомов * @param $parent * @param int $page_num * @param string $sort * @param string $sort_type * @return array */ public function getChildrenAlbums($parent, $page_num = 1, $sort = '', $sort_type = 'ASC') { $count = ''; $query = 'CALL get_gallery_children_albums(:parent_id, :sort, :sort_type, :limit_field, :page_num)'; $params = array(':parent_id' => (int) $parent, ':sort' => $sort, ':sort_type' => $sort_type, ':limit_field' => $this->base->getLimit(), ':page_num' => $page_num); // Получение массива данных $data = PdoWrap::select($query, $params); // Получение общего количества записей $count = PdoWrap::selectCell('SELECT @count AS `count`'); $this->base->setCount($count); return $data; }
/** * Получение списка записей для таблиц не имеющих родителя * @param int $page * @param string $sort * @param int $sort_type * @return array */ public function getTableList($page = 1, $sort = '', $sort_type = 0) { $query = 'CALL get_table_list(:table_name,:table_limit,:table_page,:sort_field,:sort_type)'; $params = array(':table_name' => $this->getTable(), ':table_limit' => $this->getLimit(), ':table_page' => $page, ':sort_field' => $sort, ':sort_type' => $sort_type); // Получение массива данных $data = PdoWrap::select($query, $params); // Получение общего количества записей $count = PdoWrap::selectCell('SELECT @count AS `count`'); $this->setCountRows($count); return $data; }
/** * Поиск по любым таблицам * @param $table * @param $search * @param $parent * @param int $page_num * @param string $sort * @param string $sort_type * @param int $active * @return array */ public function searchAllTables($table, $search, $parent, $page_num = 1, $sort = '', $sort_type = '', $active = 2) { // Название процедуры для поиска $proc_name = 'search_by_' . $table; // Проверяем существование процедуры поиска по таблице if (!$this->__storedProcedureCheck($proc_name)) { // Генерация процедуры для поиска $this->__generateSearchStoredProc($table); } $query = 'CALL `' . $proc_name . '`(:group_id,:sort,:sort_type,:table_limit,:page_num,:search_query,:active_field);'; $params = array(':group_id' => (int) $parent, ':sort' => $sort, ':sort_type' => $sort_type, ':table_limit' => $this->getLimit(), ':page_num' => $page_num, ':search_query' => '%' . $search . '%', ':active_field' => $active); $data = PdoWrap::select($query, $params); $count = PdoWrap::selectCell('SELECT @count'); $this->setCount($count); return $data; }
/** * Добавление записи в таблицу * @param string $table * @param array $data * @param int $parent * @return int */ public function insertTableRow($table, $data, $parent = 0) { // Загрузка файлов $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'] == '') { $data[$key] = $values['name']; } } } // Проверяем существует ли процедура if (!$this->__storedProcedureCheck($table . '_insert')) { // Если процедуры не существует пользуемся генератором процедур $this->__storedProcedureGeneration($table, 'insert'); } $query = 'CALL ' . $table . '_insert('; $params = array(); foreach ($data as $key => $value) { $query .= ':' . $key . ','; $params[':' . $key] = $value; } $query = substr($query, 0, -1) . ')'; $id = PdoWrap::selectCell($query, $params); // Логирование оперции $this->tableLog(PREF . $table, $id, "1"); expSitemapAll(); return (int) $id; }
/** * проверяем существование записи * @param string $xml_id * @param string $article * @return int|null */ public function checkCatalogItem($xml_id = '', $article = '') { $query = 'CALL check_catalog_item(:xml_id, :article)'; $params = array(':xml_id' => $xml_id, ':article' => $article); return PdoWrap::selectCell($query, $params); }