Класс Feedbacks.php
Класс Feedbacks
Предназначен для работы модуля "обратная связь" (страница контакты)
Функция get_feedback()
/*Выборка конкретной заявки с формы обратной связи*/ public function get_feedback($id) { if (empty($id)) { return false; } $feedback_id_filter = $this->db->placehold('AND f.id=?', intval($id)); $query = $this->db->placehold("SELECT f.id, f.name, f.email, f.ip, f.message, f.is_admin, f.parent_id, f.processed, f.date, f.lang_id FROM __feedbacks f WHERE 1 $feedback_id_filter LIMIT 1 "); if($this->db->query($query)) { return $this->db->result(); } else { return false; } }
Фукнция выбирает заявку, оставленную в форме обратной связи
Функция принимает один аргумент $id
Параметры которые содержит функция:
- $id - $id заявки, которую необходимо выбрать
Функция возвращает объект с данными о заявке
Функция get_feedbacks()
/*Выборка всех заявок с формы обратной связи*/ public function get_feedbacks($filter = array(), $new_on_top = false) { // По умолчанию $limit = 100; $page = 1; $keyword_filter = ''; $processed = ''; $has_parent_filter = ''; if(isset($filter['limit'])) { $limit = max(1, intval($filter['limit'])); } if(isset($filter['processed'])) { $processed = $this->db->placehold('AND f.processed=?',$filter['processed']); } if(isset($filter['page'])) { $page = max(1, intval($filter['page'])); } $sql_limit = $this->db->placehold(' LIMIT ?, ? ', ($page-1)*$limit, $limit); if(!empty($filter['keyword'])) { $keywords = explode(' ', $filter['keyword']); foreach($keywords as $keyword) { $keyword_filter .= $this->db->placehold('AND ( f.name LIKE "%'.$this->db->escape(trim($keyword)).'%" OR f.message LIKE "%'.$this->db->escape(trim($keyword)).'%" OR f.email LIKE "%'.$this->db->escape(trim($keyword)).'%" ) '); } } if (isset($filter['has_parent'])) { $has_parent_filter = 'and f.parent_id'.($filter['has_parent'] ? '>0' : '=0'); } if($new_on_top) { $sort='DESC'; } else { $sort='ASC'; } $query = $this->db->placehold("SELECT f.id, f.name, f.email, f.ip, f.message, f.is_admin, f.parent_id, f.processed, f.date, f.lang_id FROM __feedbacks f WHERE 1 $keyword_filter $processed $has_parent_filter ORDER BY f.id $sort $sql_limit "); $this->db->query($query); return $this->db->results(); }
Функция выборки заявок, оставленных в форме контактов
Функция принимает аргументы $filter = array(), $new_on_top = false
Параметры которые содержит функция:
- $filter['limit'] - количество записей, которое нужно выбрать
- $filter['processed'] - состояние заявки (обработана/ не обработана)
- $filter['page'] - страница (позиция) с которой нужно выбирать записи
- $filter['keyword'] - ключевой запрос для поиска заявок (поиск происходит в имени, сообщениии или же емейле в заявке)
- $filter['has_parent'] - фильтр для определения заявок с отзывом администратора
- $new_on_top - параметр для определения сортировки заявок
Функция возвращает массив объектов с данными заявок
Функция count_feedbacks()
/*Подсчет количества заявок с формы обратной связи*/ public function count_feedbacks($filter = array()) { $keyword_filter = ''; $processed_filter = ''; $has_parent_filter = ''; if(isset($filter['processed'])) { $processed_filter = $this->db->placehold('AND f.processed = ?', intval($filter['processed'])); } if (isset($filter['has_parent'])) { $has_parent_filter = 'and f.parent_id'.($filter['has_parent'] ? '>0' : '=0'); } if(!empty($filter['keyword'])) { $keywords = explode(' ', $filter['keyword']); foreach($keywords as $keyword) { $keyword_filter .= $this->db->placehold('AND ( f.name LIKE "%'.$this->db->escape(trim($keyword)).'%" OR f.message LIKE "%'.$this->db->escape(trim($keyword)).'%" OR f.email LIKE "%'.$this->db->escape(trim($keyword)).'%" ) '); } } $query = $this->db->placehold("SELECT count(distinct f.id) as count FROM __feedbacks f WHERE 1 $keyword_filter $processed_filter $has_parent_filter "); $this->db->query($query); return $this->db->result('count'); }
Функция подсчета количества заявок
Функция принимает один аргумент $filter
Параметры которые содержит функция:
- $filter['processed'] - состояние заявки (обработана/ не обработана)
- $filter['keyword'] - ключевой запрос для поиска заявок (поиск происходит в имени, сообщениии или же емейле в заявке)
- $filter['has_parent'] - фильтр для определения заявок с отзывом администратора
Функция возвращает количество(число) найденных записей
Функция add_feedback()
/*Добавление заявки с формы обратной связи*/ public function add_feedback($feedback) { $query = $this->db->placehold('INSERT INTO __feedbacks SET ?%, date = NOW()', $feedback); if(!$this->db->query($query)) { return false; } $id = $this->db->insert_id(); return $id; }
Функция добавление заявки с формы контактов
Функция принимает один аргумент $feedback
Параметры которые содержит функция:
- $feedback - объект с данными о заявке (имя клиента, текст сообщения и т.д)
Функция возвращает id добавленной записи
Функция update_feedback()
/*Обновление заявки с формы обратной связи*/ public function update_feedback($id, $feedback) { $date_query = ''; if(isset($feedback->date)) { $date = $feedback->date; unset($feedback->date); $date_query = $this->db->placehold(', date=STR_TO_DATE(?, ?)', $date, $this->settings->date_format); } $query = $this->db->placehold("UPDATE __feedbacks SET ?% $date_query WHERE id in(?@) LIMIT 1", $feedback, (array)$id); $this->db->query($query); return $id; }
Функция обновления заявки с формы обратной связи
Функция принимает два аргумента $id, $feedback
Параметры которые содержит функция:
- $id- $id заявки, которую нужно обновить
- $feedback- объект с данными о заявке (имя клиента, текст сообщения и т.д)
Функция возвращает id обновленной записи
Функция delete_feedback()
/*Удаление заявки с формы обратной связи*/ public function delete_feedback($id) { if(!empty($id)) { $query = $this->db->placehold("DELETE FROM __feedbacks WHERE id=? LIMIT 1", intval($id)); $this->db->query($query); $this->db->query('SELECT id from __feedbacks where parent_id=?', intval($id)); $children = $this->db->results('id'); foreach($children as $child_id) { $this->delete_feedback($child_id); } } }
Функция удаления заявки с формы обратной связи
Функция принимает один аргумент $id
Параметры которые содержит функция:
- $id- id удаляемой записи