Класс Pages.php

Класс Pages

Предназначен для работы со статическими страницами сайта (раздел "страницы"). Выполняет основные функции для работы с ними (удаление, добавление и т.д).

Функция get_page()

Код функции (спойлер)
 
   /*Выборка конкрентной страницы*/
    public function get_page($id) {
        if(gettype($id) == 'string') {
            $where = $this->db->placehold('AND p.url=? ', $id);
        } else {
            $where = $this->db->placehold('AND p.id=? ', intval($id));
        }

        $lang_sql = $this->languages->get_query(array('object'=>'page'));

        $query = "SELECT
                p.id,
                p.url,
                p.menu_id,
                p.position,
                p.visible,
                p.last_modify,
                $lang_sql->fields
            FROM __pages p
            $lang_sql->join
            WHERE
                1
                $where
            LIMIT 1
        ";

        $this->db->query($query);
        return $this->db->result();
    }

Функция для выбора конкретной страницы из БД

Функция принимает один аргумент $id

Параметры которые содежит функция:

  • $id - id страницы, которую следует выбрать ()

Если $id передать в виде строки, поиск будет производиться по полю url Если $id передать в виде числа, поиск будет производиться по полю id

Функция возвращает данные о запрашуемой странице


Функция get_pages()

Код функции (спойлер)
    /*Выборка всех страниц*/
    public function get_pages($filter = array()) {
        $menu_filter = '';
        $visible_filter = '';
        $pages = array();

        if(isset($filter['menu_id'])) {
            $menu_filter = $this->db->placehold('AND p.menu_id in (?@)', (array)$filter['menu_id']);
        }

        if(isset($filter['visible'])) {
            $visible_filter = $this->db->placehold('AND p.visible = ?', intval($filter['visible']));
        }

        $lang_sql = $this->languages->get_query(array('object'=>'page'));
        $query = "SELECT
                p.id,
                p.url,
                p.menu_id,
                p.position,
                p.visible,
                p.last_modify,
                $lang_sql->fields
            FROM __pages p
            $lang_sql->join
            WHERE
                1
                $menu_filter
                $visible_filter
            ORDER BY p.position
        ";
        $this->db->query($query);
        foreach($this->db->results() as $page) {
            $pages[$page->id] = $page;
        }
        return $pages;
    }

Функция выбора страниц в зависимости от параметров

Функция принимает один аргумент $filter в виде массива

Параметры которые содержит функция:

  • $filter['menu_id'] - id меню, с которого следует выбрать страницу (может быть главное меню или второстепенное)
  • $filter['visible'] - фильтр видимости страниц (позволяет выбирать только видимые или только скрытые страницы)

Функция возвращает массив обьектов с данными о страницах


Функция add_page()

Код функции (спойлер)
    /*Добавление страницы*/
    public function add_page($page) {
        $page = (object)$page;
        // Проверяем есть ли мультиязычность и забираем описания для перевода
        $result = $this->languages->get_description($page, 'page');

        $page->last_modify = date("Y-m-d H:i:s");
        $query = $this->db->placehold('INSERT INTO __pages SET ?%', $page);
        if(!$this->db->query($query)) {
            return false;
        }

        $id = $this->db->insert_id();

        // Если есть описание для перевода. Указываем язык для обновления
        if(!empty($result->description)) {
            $this->languages->action_description($id, $result->description, 'page');
        }

        $this->db->query("UPDATE __pages SET position=id WHERE id=?", $id);
        return $id;
    }

Функция добавления страницы на сайт.

Принимает один аргумент $page - данные о странице (например имя, ссылка, описание и т.д)

Функция возвращает id добавленной страницы


Функция update_page()

Код функции (спойлер)
   /*Обновление страницы*/
    public function update_page($id, $page) {
        $page = (object)$page;
        // Проверяем есть ли мультиязычность и забираем описания для перевода
        $result = $this->languages->get_description($page, 'page');

        $page->last_modify = date("Y-m-d H:i:s");
        $query = $this->db->placehold('UPDATE __pages SET ?% WHERE id in (?@)', $page, (array)$id);
        if(!$this->db->query($query)) {
            return false;
        }

        // Если есть описание для перевода. Указываем язык для обновления
        if(!empty($result->description)) {
            $this->languages->action_description($id, $result->description, 'page', $this->languages->lang_id());
        }

        return $id;
    }

Фукнция обновления страницы.

Функция принимает два аргумента $id, $page

  • $id - id обновляемой страницы
  • $page - данные для обновления (например имя, описание и т.д)

Функция возвращает id обновленной страницы


Функция delete_page()

Код функции (спойлер)
   /*Удаление страницы*/
    public function delete_page($id) {
        if(!empty($id)) {
            $query = $this->db->placehold("DELETE FROM __pages WHERE id=? LIMIT 1", intval($id));
            if($this->db->query($query)) {
                $this->db->query("DELETE FROM __lang_pages WHERE page_id=?", intval($id));
                return true;
            }
        }
        return false;
    }

Фукнция удаления страницы

Функция принимает один аргумент $id - id страницы для удаления

Функция возвращает true в случае успешного удаления страницы


Функция get_menus()

Код функции (спойлер)
    /*Выборка всех меню*/
    public function get_menus() {
        $menus = array();
        $query = "SELECT * FROM __menu ORDER BY position";
        $this->db->query($query);
        foreach($this->db->results() as $menu) {
            $menus[$menu->id] = $menu;
        }
        return $menus;
    }

Фукнция выборки меню сайта

Функция данные о всех меню сайта (главное меню, другие страницы как пример)


Функция get_menu()

Код функции (спойлер)
    /*Выборка конкретного меню*/
    public function get_menu($menu_id) {
        $query = $this->db->placehold("SELECT * FROM __menu WHERE id=? LIMIT 1", intval($menu_id));
        $this->db->query($query);
        return $this->db->result();
    }

Фукнция выборки конкретного меню сайта

Функция принимает один аругмент($menu_id)

Параметры которые содержит функция:

  • $menu_id - id меню сайта

Функция возвращает обьект с информацией о меню сайта