db = &$db; $this->tpl = &$tpl; $this->error = &$error; $this->cache = &$cache; // язык по умолчанию // жестыкий кастыль if (isset ($_POST)) { $parse = parse_url ($_SERVER['HTTP_REFERER']); $path = explode ("/", $parse['path']); if (isset ($path[1]) && $path[1] == 'ukr') { $this->lang = 'ua'; } } } public function getTranslation ($key) { $lang = $this->lang; $array = $this->$lang(); return isset ($array[$key]) ? $array[$key] : '#translation'; } public function ru () { return array ( 'callback' => 'Обратный звонок', 'fio' => 'ФИО', 'city' => 'Город', 'tel' => 'Телефон', 'text' => 'Вопрос', 'send' => 'Отправить', 'send_success' => 'Ваше запрос успешно отправлен!
В ближайшее время с Вами свяжеться наш консультант
', 'other_menager' => 'Данная заявка закреплена за другим менеджером', 'already_done' => 'Данная заявка уже завершена', ); } public function ua () { return array ( 'callback' => 'Зворотній зв`язок', 'fio' => 'ПІБ', 'city' => 'Місто', 'tel' => 'Телефон', 'text' => 'Запитання', 'send' => 'Надіслати', 'send_success' => 'Ваше запит успішно відправлений!Найближчим часом з Вами звяжется наш консультант
', 'other_menager' => 'Ця заявка закріплена за іншим менеджером', 'already_done' => 'Ця заявка вже закінчена', ); } public function trim ($data) { foreach ($data as $key => &$value) { if (! is_array ($value)) { $value = iconv ('utf-8', 'windows-1251', urldecode ($value)); } } return $data; } public function valid ($data, $upload = null) { return true; } public function init () { $pager = $this->getAll(); // assign var $this->tpl->assign('mass', array ( 'model' => $this, 'result' => $pager['result'], 'pager' => $pager['pager'], 'status' => $this->getStatusAll(), )); // assign template $this->tpl->assign("tpl", "callback.tpl"); } public function getAll () { $pager = pagerGetRun (array ( 'sql' => ' SELECT * FROM `callback` INNER JOIN `callback_status` as `status` ON `status`.callback_status_id = `callback`.callback_status_id LEFT JOIN `zlo_admin` ON `zlo_admin`.id = `callback`.manager_id ORDER BY callback_id DESC ', 'PerPage' => 30, 'Size' => 15, )); return array ( 'result' => $this->db->getAll($pager['sql'], array (), DB_FETCHMODE_ASSOC), 'pager' => $pager ); } public function getOne ($callback_id) { return $this->db->getRow(' SELECT * FROM `callback` INNER JOIN `callback_status` as `status` ON `status`.callback_status_id = `callback`.callback_status_id LEFT JOIN `zlo_admin` ON `zlo_admin`.id = `callback`.manager_id WHERE callback_id = '.(int)$callback_id.' ', array (), DB_FETCHMODE_ASSOC); } public function add ($param) { $param = $this->trim ($param); return $this->db->query(' INSERT INTO `callback` SET `date_add` = "'.date('Y-m-d H:i:s').'", `fio` = "'.$param['fio'].'", `city` = "'.$param['city'].'", `tel` = "'.$param['tel'].'", `text` = "'.nl2br (strip_tags($param['text'])).'", `callback_status_id` = "'.self::$NEW.'" '); } public function setStatus ($callback_id, $callback_status_id) { return $this->db->query(' UPDATE `callback` SET `callback_status_id` = "'.$callback_status_id.'", `date_edit` = "'.date('Y-m-d H:i:s').'", `manager_id` = "'.(int)$_SESSION['admin']['id'].'" WHERE `callback_id` = "'.(int)$callback_id.'" '); } public function isDone (array $callback) { return $callback['is_done'] == 1 ? true : false; } // ==== STATUS ==== public function getStatusAll () { return $this->db->getAll(' SELECT * FROM `callback_status` ORDER BY sortorder ASC ', array (), DB_FETCHMODE_ASSOC); } // ==== HTML ==== /** * Зделал тут, чтобы по всему проекту не искать * @return string */ public function buttonById ($callback_id) { $callback = $this->getOne($callback_id); $status = $this->getStatusAll(); return $this->button($status, $callback['callback_status_id']); } public function button ($status, $default_status_id) { // current $current = ''; foreach ($status as $i => $row) { if ($row['callback_status_id'] == $default_status_id) { $current = $row; unset ($status[$i]); break; } } ob_start(); echo '