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/bk/salut/primsalut.ru/api/Callbacks.php
<?php

require_once('Okay.php');

class Callbacks extends Okay {

    /*Отправка емейла администратору о заказе обратного звонка*/
    public function email_callback_admin($callback_id) {
        if(!($callback = $this->callbacks->get_callback(intval($callback_id)))) {
            return false;
        }
        $this->design->assign('callback', $callback);
        $backend_translations = new stdClass();
        $file = "backend/lang/".$this->settings->email_lang.".php";
        if (!file_exists($file)) {
            foreach (glob("backend/lang/??.php") as $f) {
                $file = "backend/lang/".pathinfo($f, PATHINFO_FILENAME).".php";
                break;
            }
        }
        require_once($file);
        $this->design->assign('btr', $backend_translations);
        // Отправляем письмо
        $email_template = $this->design->fetch($this->config->root_dir.'backend/design/html/email/email_callback_admin.tpl');
        $subject = $this->design->get_var('subject');
        $this->notify->email($this->settings->comment_email, $subject, $email_template, "$callback->name <$callback->phone>", "$callback->name <$callback->phone>");
    }

    /*Выбираем конкретную заявку на обратный звонок*/
    public function get_callback($id) {
        $query = $this->db->placehold("SELECT 
                c.id, 
                c.name, 
                c.phone, 
                c.message, 
                c.date, 
                c.processed,
                c.url,
                c.admin_notes
            FROM __callbacks c 
            WHERE id=? 
            LIMIT 1
        ", intval($id));
        
        if($this->db->query($query)) {
            return $this->db->result();
        } else {
            return false;
        }
    }

    /*Выбираем заявки на обратный звонок*/
    public function get_callbacks($filter = array()) {
        // По умолчанию
        $limit = 1000;
        $page = 1;
        $processed = '';
        
        if(isset($filter['limit'])) {
            $limit = max(1, intval($filter['limit']));
        }
        
        if(isset($filter['page'])) {
            $page = max(1, intval($filter['page']));
        }
        
        if(isset($filter['processed'])) {
            $processed = $this->db->placehold('AND c.processed=?',$filter['processed']);
        }
        
        $sql_limit = $this->db->placehold(' LIMIT ?, ? ', ($page-1)*$limit, $limit);
        
        $query = $this->db->placehold("SELECT 
                c.id, 
                c.name, 
                c.phone, 
                c.date, 
                c.message, 
                c.processed,
                c.url,
                c.admin_notes
            FROM __callbacks c 
            WHERE 
                1 
                $processed 
            ORDER BY c.date DESC 
            $sql_limit
        ");
        
        $this->db->query($query);
        return $this->db->results();
    }

    /*Подсчитываем количество заявок на обратный звонок*/
    public function count_callbacks($filter = array()) {
        $processed_filter = '';

        if(isset($filter['processed'])) {
            $processed_filter = $this->db->placehold('AND c.processed = ?', intval($filter['processed']));
        }
        $query = "SELECT COUNT(distinct c.id) as count
            FROM __callbacks c
            WHERE 1 
                $processed_filter 
              
        ";

        if($this->db->query($query)) {
            return $this->db->result('count');
        } else {
            return false;
        }
    }

    /*Добавление заявки на обратный звонок*/
    public function add_callback($callback) {
        $query = $this->db->placehold('INSERT INTO __callbacks SET ?%, date = NOW()', $callback);
        
        if(!$this->db->query($query)) {
            return false;
        }
        
        $id = $this->db->insert_id();
        return $id;
    }

    /*Обновление заявки на обратный звонок*/
    public function update_callback($id, $callback) {
        $query = $this->db->placehold("UPDATE __callbacks SET ?% WHERE id in(?@) LIMIT 1", $callback, (array)$id);
        $this->db->query($query);
        return $id;
    }

    /*Удаление заявки на обратный звонок*/
    public function delete_callback($id) {
        if(!empty($id)) {
            $query = $this->db->placehold("DELETE FROM __callbacks WHERE id=? LIMIT 1", intval($id));
            $this->db->query($query);
        }
    }
    
}