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;
}
}