HEX
Server: Apache/2.4.6 (CentOS) mpm-itk/2.4.7-04 mod_fcgid/2.3.9 PHP/5.4.16
System: Linux dvm.vladweb.ru 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: region-gk.ru (1016)
PHP: 7.3.33
Disabled: NONE
Upload Files
File: //home/temp/yarusvl.ru/api/Delivery.php
<?php

require_once('Mgc.php');

class Delivery extends Mgc {

    /*Выборка конкретного способа доставки*/
    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();
    }

    /*Выборка всех способов доставки*/
    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();
    }

    /*Обновление способа доставки*/
    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;
    }

    /*Добавление способа доставки*/
    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;
    }

    /*Удаление способа доставки*/
    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));
        }
    }

    /*Выборка доступных способов оплаты для данного способа доставки*/
    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');
    }

    /*Обновление способов оплаты у данного способа доставки*/
    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);
            }
        }
    }
    
}