Класс Delivery.php

 

Класс Delivery

Предназначен для работы со способами доставок сайта

Функция get_delivery()

Код функции (спойлер)
 
 /*Выборка конкретного способа доставки*/
    public function get_delivery($id) {
        if (empty($id)) {
            return false;
        }
        $delivery_id_filter = $this->db->placehold('AND d.id=?', intval($id));
        $lang_sql = $this->languages->get_query(array('object'=>'delivery'));
        $query = $this->db->placehold("SELECT
                d.id,
                d.free_from,
                d.price,
                d.enabled,
                d.position,
                d.separate_payment,
                d.image,
                $lang_sql->fields
            FROM __delivery d
            $lang_sql->join
            WHERE
                1
                $delivery_id_filter
            LIMIT 1
        ");

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

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

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

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

  • $id - $id способа доставки

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


Функция get_deliveries()

Код функции (спойлер)
    /*Выборка всех способов доставки*/
    public function get_deliveries($filter = array()) {
        // По умолчанию
        $enabled_filter = '';

        if(!empty($filter['enabled'])) {
            $enabled_filter = $this->db->placehold('AND enabled=?', intval($filter['enabled']));
        }

        $lang_sql = $this->languages->get_query(array('object'=>'delivery'));
        $query = "SELECT
                d.id,
                d.free_from,
                d.price,
                d.enabled,
                d.position,
                d.separate_payment,
                d.image,
                $lang_sql->fields
            FROM __delivery d
            $lang_sql->join
            WHERE
                1
                $enabled_filter
            ORDER BY position
        ";

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

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

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

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

  • $filter['enabled'] - фильтр по видимости (включенности) способов доставки

Возвращает массив объектов с данными о способах доставки


Функция update_delivery()

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

        $query = $this->db->placehold("UPDATE __delivery SET ?% WHERE id in(?@)", $delivery, (array)$id);
        $this->db->query($query);

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

Функция обновления способа доставки

Функция принимает аргументы $id, $delivery

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

  • $id - $id способа доставки

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


Функция add_delivery()

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

        $query = $this->db->placehold('INSERT INTO __delivery SET ?%', $delivery);
        if(!$this->db->query($query)) {
            return false;
        }

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

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

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

Функция добавления нового способа доставки

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

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

  • $delivery- объект с данными о способе доставки (имя, описание и т.д)

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


Функция delete_delivery()

Код функции (спойлер)
   /*Удаление способа доставки*/
    public function delete_delivery($id) {
        // Удаляем связь доставки с методоми оплаты
        $query = $this->db->placehold("DELETE FROM __delivery_payment WHERE delivery_id=?", intval($id));
        $this->db->query($query);

        if(!empty($id)) {
            $this->image->delete_image($id, 'image', 'delivery', $this->config->original_deliveries_dir, $this->config->resized_deliveries_dir);
            $query = $this->db->placehold("DELETE FROM __delivery WHERE id=? LIMIT 1", intval($id));
            $this->db->query($query);
            $this->db->query("DELETE FROM __lang_delivery WHERE delivery_id=?", intval($id));
        }
    }

Функция удаление способа доставки

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

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

  • $id - $id способа доставки, который нужно удалить

Функция get_delivery_payments()

Код функции (спойлер)
  /*Выборка доступных способов оплаты для данного способа доставки*/
    public function get_delivery_payments($id) {
        $query = $this->db->placehold("SELECT payment_method_id FROM __delivery_payment WHERE delivery_id=?", intval($id));
        $this->db->query($query);
        return $this->db->results('payment_method_id');
    }

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

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

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

  • $id- $id способа доставки

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


Функция update_delivery_payments()

Код функции (спойлер)
   /*Обновление способов оплаты у данного способа доставки*/
    public function update_delivery_payments($id, $payment_methods_ids) {
        $query = $this->db->placehold("DELETE FROM __delivery_payment WHERE delivery_id=?", intval($id));
        $this->db->query($query);
        if(is_array($payment_methods_ids)) {
            foreach($payment_methods_ids as $p_id) {
                $this->db->query("INSERT INTO __delivery_payment SET delivery_id=?, payment_method_id=?", $id, $p_id);
            }
        }
    }

Функция обновления связки способов оплат и способов доставок

Функция принимает аргументы $id, $payment_methods_ids

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

  • $id- $id способа доставки
  • $payment_methods_ids- массив $id способов оплат