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/SeoLinkPatterns.php
<?php

require_once('Mgc.php');

class SeoLinkPatterns extends Mgc {

    /*Выбираем определенную запись*/
    public function get_seo_link($id) {
        if (empty($id)) {
            return false;
        }
        if(is_int($id)) {
            $where = $this->db->placehold('AND l.id=? ', intval($id));
        } else {
            $where = $this->db->placehold('AND l.url=? ', $id);
        }
        
        $query = $this->db->placehold("SELECT 
                l.id, 
                l.url, 
                l.meta_title, 
                l.meta_description, 
                l.meta_keywords, 
                l.h1, 
                l.description, 
                l.visible
            FROM __seo_link as l
            WHERE
                1 
                $where 
            LIMIT 1
        ");
        if($this->db->query($query)) {
            return $this->db->result();
        } else {
            return false;
        }
    }

    /*Выбираем все записи*/
    public function get_seo_links($filter = array()) {
        $limit = 1000; // По умолчанию
        $page = 1;
        $seo_link_id_filter = '';
        $visible_filter = '';
        $keyword_filter = '';
        $px = "l";
        
        if(isset($filter['limit'])) {
            $limit = max(1, intval($filter['limit']));
        }
        if(isset($filter['page'])) {
            $page = max(1, intval($filter['page']));
        }
        
        if(!empty($filter['id'])) {
            $seo_link_id_filter = $this->db->placehold('AND b.id in(?@)', (array)$filter['id']);
        }
        
        if(isset($filter['visible'])) {
            $visible_filter = $this->db->placehold('AND b.visible = ?', intval($filter['visible']));
        }

        if(isset($filter['keyword'])) {
            $keywords = explode(' ', $filter['keyword']);
            foreach($keywords as $keyword) {
                $keyword_filter .= $this->db->placehold('AND ('.$px.'.meta_keywords LIKE "%'.$this->db->escape(trim($keyword)).'%") ');
            }
        }
        
        $sql_limit = $this->db->placehold(' LIMIT ?, ? ', ($page-1)*$limit, $limit);
        $query = $this->db->placehold("SELECT 
                l.id, 
                l.url, 
                l.meta_title, 
                l.meta_description, 
                l.meta_keywords, 
                l.h1, 
                l.description, 
                l.visible
            FROM __seo_link as l
            WHERE 
                1
                $seo_link_id_filter 
                $visible_filter 
                $keyword_filter
            ORDER BY id DESC 
            $sql_limit
        ");
        $this->db->query($query);
        return $this->db->results();
    }

    /*Подсчитываем количество найденных записей*/
    public function count_seo_links($filter = array()) {    
        $seo_link_id_filter = '';
        $visible_filter = '';
        $keyword_filter = '';
        $type_filter = '';
        $last_filter = '';
        $lang_id  = $this->languages->lang_id();
        $px = "l";

        if(!empty($filter['id'])) {
            $seo_link_id_filter = $this->db->placehold('AND l.id in(?@)', (array)$filter['id']);
        }

        if(isset($filter['visible'])) {
            $visible_filter = $this->db->placehold('AND l.visible = ?', intval($filter['visible']));
        }
        
        if(isset($filter['keyword'])) {
            $keywords = explode(' ', $filter['keyword']);
            foreach($keywords as $keyword) {
                $keyword_filter .= $this->db->placehold('AND ('.$px.'.name LIKE "%'.$this->db->escape(trim($keyword)).'%" OR '.$px.'.meta_keywords LIKE "%'.$this->db->escape(trim($keyword)).'%") ');
            }
        }
        $query = "SELECT COUNT(distinct l.id) as count
            FROM __seo_link as l
            WHERE 
                1 
                $seo_link_id_filter 
                $visible_filter 
                $keyword_filter
                $type_filter
                $last_filter
        ";
       // echo $query;
        if($this->db->query($query)) {
            return $this->db->result('count');
        } else {
            return false;
        }
    }

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

        $query = $this->db->placehold("INSERT INTO __seo_link SET ?%", $seo_link);
        if(!$this->db->query($query)) {
            return false;
        }
        
        $id = $this->db->insert_id();
        
        // Если есть описание для перевода. Указываем язык для обновления
        if(!empty($result->description)) {
            $this->languages->action_description($id, $result->description, 'seo_link');
        }
        
        return $id;
    }

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

        $query = $this->db->placehold("UPDATE __seo_link SET ?% WHERE id in(?@) LIMIT ?", $seo_link, (array)$id, count((array)$id));
        $this->db->query($query);
        
        // Если есть описание для перевода. Указываем язык для обновления
        if(!empty($result->description)) {
            $this->languages->action_description($id, $result->description, 'seo_link', $this->languages->lang_id());
        }
        return $id;
    }

    /*Удаляем запись*/
    public function delete_seo_link($id) {
        if(!empty($id)) {
            $query = $this->db->placehold("DELETE FROM __seo_link WHERE id=? LIMIT 1", intval($id));
            if ($this->db->query($query)) {
                return true;
            }
        }
        return false;
    }
    
}