File size: 11.68Kb
<?php
/**
* MobileCMS
*
* Open source content management system for mobile sites
*
* @author MobileCMS Team <[email protected]>
* @copyright Copyright (c) 2011-2019, MobileCMS Team
* @link https://mobilecms.pro Official site
* @license MIT license
*/
defined('IN_SYSTEM') or die('<b>403<br />Запрет доступа!</b>');
/**
* Админская часть управления рекламой
*/
class Ads_Manager_Admin_Controller extends Controller
{
/**
* Уровень пользовательского доступа
*/
public $access_level = 10;
/**
* Тема
*/
public $template_theme = 'admin';
/**
* Метод по умолчанию
*/
public function action_index()
{
$this->action_list_links();
}
/**
* Конфигурация модуля
*/
public function action_config()
{
$_config = $this->config['ads_manager'];
if (isset($_POST['submit'])) {
main::is_demo();
$_config = $_POST;
main::config($_config, 'ads_manager', $this->db);
a_notice('Данные успешно изменены!', a_url('ads_manager/admin/config'));
}
if (!isset($_POST['submit']) || $this->error) {
$this->tpl->assign(array(
'_config' => $_config
));
$this->tpl->display('config');
}
}
/**
* Добавление / редактирование площадки
*/
public function action_area_edit()
{
if (is_numeric($_GET['area_id'])) {
if (!$area = $this->db->get_row("SELECT * FROM #__ads_manager_areas WHERE area_id = '" . intval($_GET['area_id']) . "'"))
a_error('Редактируемая площадка не найдена!');
$action = 'edit';
} else {
$area = array();
$action = 'add';
}
if (isset($_POST['submit'])) {
if (empty($_POST['title'])) {
$this->error .= 'Укажите название площадки<br />';
}
if (!main::check_input($_POST['ident'], 'WORD')) {
$this->error .= 'Неверный формат идентификатора площадки (только латинские буквы и цифры)<br />';
}
if ($action == 'add') {
if (empty($_POST['ident'])) {
$this->error .= 'Укажите идентификатор площадки<br />';
}
if ($this->db->get_one("SELECT area_id FROM #__ads_manager_areas WHERE title = '" . a_safe($_POST['title']) . "'")) {
$this->error .= 'Площадка с таким названием уже имеется, введите другое!<br />';
}
if ($this->db->get_one("SELECT area_id FROM #__ads_manager_areas WHERE ident = '" . a_safe($_POST['ident']) . "'")) {
$this->error .= 'Площадка с таким идентификатором уже имеется, введите другой!<br />';
}
}
if (!$this->error) {
if ($action == 'add') {
$this->db->query("INSERT INTO #__ads_manager_areas SET
title = '" . a_safe($_POST['title']) . "',
ident = '" . a_safe($_POST['ident']) . "'
");
$message = 'Площадка успешно добавлена!';
}
if ($action == 'edit') {
$this->db->query("UPDATE #__ads_manager_areas SET
title = '" . a_safe($_POST['title']) . "'
WHERE area_id = '" . $area['area_id'] . "'"
);
$message = 'Площадка успешно изменена!';
}
a_notice($message, a_url('ads_manager/admin'));
}
}
if (!isset($_POST['submit']) || $this->error) {
$this->tpl->assign(array(
'error' => $this->error,
'area' => $area,
'action' => $action
));
$this->tpl->display('area_edit');
}
}
/**
* Добавление / редактирование ссылки
*/
public function action_link_edit()
{
if (is_numeric($_GET['link_id'])) {
if (!$link = $this->db->get_row("SELECT * FROM #__ads_manager_links WHERE link_id = '" . intval($_GET['link_id']) . "'"))
a_error('Редактируемая ссылка не найдена!');
$action = 'edit';
} else {
$link = array();
$action = 'add';
}
if (isset($_POST['submit'])) {
if (empty($_POST['title'])) {
$this->error .= 'Укажите заголовок ссылки<br />';
}
if (empty($_POST['url'])) {
$this->error .= 'Укажите URL ссылки<br />';
}
if (empty($_POST['names'])) {
$this->error .= 'Укажите текст ссылки<br />';
}
if (!$area = $this->db->get_row("SELECT * FROM #__ads_manager_areas WHERE area_id = '" . a_safe($_POST['area_id']) . "'")) {
$this->error .= 'Площадка с данным идентификатором не найдена!<br />';
}
if (!$this->error) {
if ($action == 'add') {
$position = $this->db->get_one("SELECT MAX(position) FROM #__ads_manager_links WHERE area_id = '" . (int)$area['area_id'] . "'") + 1;
$this->db->query("INSERT INTO #__ads_manager_links SET
title = '" . a_safe($_POST['title']) . "',
url = '" . a_safe($_POST['url']) . "',
names = '" . mysqli_real_escape_string($this->db->db_link, $_POST['names']) . "',
area_id = '" . $area['area_id'] . "',
area_ident = '" . $area['ident'] . "',
position = '" . $position . "'
");
$message = 'Ссылка успешно добавлена!';
}
if ($action == 'edit') {
$this->db->query("UPDATE #__ads_manager_links SET
title = '" . a_safe($_POST['title']) . "',
url = '" . a_safe($_POST['url']) . "',
names = '" . mysqli_real_escape_string($this->db->db_link, $_POST['names']) . "',
area_id = '" . $area['area_id'] . "',
area_ident = '" . $area['ident'] . "'
WHERE link_id = '" . $link['link_id'] . "'"
);
$message = 'Ссылка успешно изменена!';
}
a_notice($message, a_url('ads_manager/admin'));
}
}
if (!isset($_POST['submit']) || $this->error) {
$areas = $this->db->get_array("SELECT * FROM #__ads_manager_areas");
$this->tpl->assign(array(
'error' => $this->error,
'link' => $link,
'action' => $action,
'areas' => $areas
));
$this->tpl->display('link_edit');
}
}
/**
* Удаление площадки
*/
public function action_area_delete()
{
if (!$area = $this->db->query("DELETE FROM #__ads_manager_areas WHERE area_id = '" . intval($_GET['area_id']) . "'"))
a_error('Площадка не найдена!');
$this->db->query("DELETE FROM #__ads_manager_areas WHERE area_id = '" . intval($_GET['area_id']) . "'");
$this->db->query("DELETE FROM #__ads_manager_links WHERE area_id = '" . intval($_GET['area_id']) . "'");
a_notice('Площадка успешно удалена!', a_url('ads_manager/admin'));
}
/**
* Удаление ссылки
*/
public function action_link_delete()
{
if (!$link = $this->db->query("DELETE FROM #__ads_manager_links WHERE link_id = '" . intval($_GET['link_id']) . "'"))
a_error('Рекламная ссылка не найдена!');
$this->db->query("DELETE FROM #__ads_manager_links WHERE link_id = '" . intval($_GET['link_id']) . "'");
# Меняем позиции
$this->db->query("UPDATE #__ads_manager_links SET position = position - 1 WHERE area_id = '" . $link['area_id'] . "' AND position > '" . $link['position'] . "'");
a_notice('Ссылка успешно удалена!', a_url('ads_manager/admin'));
}
/**
* Листинг площадок и ссылок
*/
public function action_list_links()
{
$areas = array();
$result = $this->db->query("SELECT * FROM #__ads_manager_areas");
while ($area = $this->db->fetch_array($result)) {
$area['links'] = array();
$min_p = $this->db->get_one("SELECT MIN(position) FROM #__ads_manager_links WHERE area_id = '" . $area['area_id'] . "'");
$max_p = $this->db->get_one("SELECT MAX(position) FROM #__ads_manager_links WHERE area_id = '" . $area['area_id'] . "'");
$result1 = $this->db->query("SELECT * FROM #__ads_manager_links WHERE area_id = '" . $area['area_id'] . "' ORDER BY position ASC");
while ($link = $this->db->fetch_array($result1)) {
if ($link['position'] != $min_p)
$link['up'] = '<a href="' . a_url('ads_manager/admin/link_up', 'link_id=' . $link['link_id']) . '">up</a>';
else
$link['up'] = 'up';
if ($link['position'] != $max_p)
$link['down'] = '<a href="' . a_url('ads_manager/admin/link_down', 'link_id=' . $link['link_id']) . '">down</a>';
else
$link['down'] = 'down';
$ex = explode(PHP_EOL, $link['names']);
$names = '';
foreach ($ex as $name)
$names .= stripslashes(main::bbcode($name)) . PHP_EOL;
$link['names'] = $names;
$area['links'][] = $link;
}
$areas[] = $area;
}
$this->tpl->assign(array(
'areas' => $areas
));
$this->tpl->display('list_links');
}
/**
* Поднятие ссылки
*/
public function action_link_up()
{
if (!$link = $this->db->get_row("SELECT * FROM #__ads_manager_links WHERE link_id = " . intval($_GET['link_id'])))
a_error('Ссылка не найдена!');
// Меняем позиции
$this->db->query("UPDATE #__ads_manager_links SET position = " . $link['position'] . " WHERE area_id = '" . $link['area_id'] . "' AND position = " . ($link['position'] - 1));
$this->db->query("UPDATE #__ads_manager_links SET position = " . ($link['position'] - 1) . " WHERE area_id = '" . $link['area_id'] . "' AND link_id = " . intval($_GET['link_id']));
header("Location: " . a_url('ads_manager/admin'));
exit;
}
/**
* Опускание ссылки
*/
public function action_link_down()
{
if (!$link = $this->db->get_row("SELECT * FROM #__ads_manager_links WHERE link_id = " . intval($_GET['link_id'])))
a_error('Ссылка не найдена!');
// Меняем позиции
$this->db->query("UPDATE #__ads_manager_links SET position = " . $link['position'] . " WHERE area_id = '" . $link['area_id'] . "' AND position = " . ($link['position'] + 1));
$this->db->query("UPDATE #__ads_manager_links SET position = " . ($link['position'] + 1) . " WHERE area_id = '" . $link['area_id'] . "' AND link_id = " . intval($_GET['link_id']));
header("Location: " . a_url('ads_manager/admin'));
exit;
}
}
?>