From b34266e58827544d860fd206f244e1067d7138f0 Mon Sep 17 00:00:00 2001 From: Repellent Date: Sat, 28 Mar 2026 01:41:26 +0500 Subject: [PATCH] update ver 3.31 --- README.md | 19 +- class/banner.php | 901 ++++++++++++------------ files/{media2_ave.jpg => media_ave.jpg} | Bin files/media_gitget.jpg | Bin 7412 -> 13450 bytes info.php | 2 +- lang/ru.txt | 15 +- module.php | 12 +- sql.php | 83 ++- templates/banner_viewer.tpl | 13 + templates/banners.tpl | 49 +- templates/form.tpl | 79 +-- templates/kategs.tpl | 67 +- 12 files changed, 675 insertions(+), 565 deletions(-) rename files/{media2_ave.jpg => media_ave.jpg} (100%) create mode 100644 templates/banner_viewer.tpl diff --git a/README.md b/README.md index 17b48b0..3f45f7f 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,30 @@ ### media -## Модуль Баннер v2.26.0 +## Модуль Баннер v3.31.0 -### Модуль позволяет: +### для AVE.CMS ALT ≥ ≥ v3.31 + +* Модуль позволяет: * Организовать удобное управление показами рекламных баннеров на вашем сайте. * Для того, чтобы отобразить рекламный баннер, разместите системный тег [mod_banner:XXX] в нужном месте вашего шаблона сайта или содержимом документа. * Идентификаторы системных тегов указаны в разделе - Управление категориями. - * Допустимые форматы рекламных баннеров: jpg, jpeg, png, gif, swf. - + * Допустимые форматы рекламных баннеров: jpg, jpeg, png, gif, webp. +* Установка: + * Скачайте архив с модулем banner-main.zip и положите его в папку modules, разархивируйте, после чего у вас появится папка media, ее оставляем архив banner-main.zip удаляем. + * Перейдите в раздел управления модулями вкладка Неустановленные модули, установите модуль Баннер. + * Перейдите к управлению модулем, в созданном при установке примере перейдите в раздел Управление категориями, скопируйте системный тег ```[mod_banner:1]``` принадлежащий Категории 1 и разместите его в документе или Основном шаблоне или в шаблоне Рубрики. +* Шаблон вывода в публичной части сайта: + * Верстка публичной части модуля находится в шаблоне modules/media/templates/banner_viewer.tpl ### Changelog: +28.03.2026 - обновление модуля - версия 3.32 - рефакторинг кода для работы в ave.cms ALT v3.31. Добавлен шаблон вывода в публичной части сайта. + 04.09.2019 - версия 2.26.0 - адаптация для версии ave.cms 3.26 25.09.2016 - Исправления (css + html) вывода пагинации страниц. 03.06.2016 - Исправлен баг с неправильным формированием пути к изображению баннера, при размещении его на странице с сылкой типа site.ru/folder/link/ -03.06.2016 - добавлен атрибут style="width:100%" для изображения баннера, при использовании в адаптивной верстке. \ No newline at end of file +03.06.2016 - добавлен атрибут style="width:100%" для изображения баннера, при использовании в адаптивной верстке. \ No newline at end of file diff --git a/class/banner.php b/class/banner.php index 1c9c2b4..993b8ba 100644 --- a/class/banner.php +++ b/class/banner.php @@ -7,441 +7,476 @@ * @subpackage module_Banner * @filesource */ -class ModulBanner { +class ModuleBanner { /** - * СВОЙСТВА + * СВОЙСТВА */ - var $_limit = 15; - var $_allowed_files = - array( - 'image/jpg', - 'image/jpeg', - 'image/pjpeg', - 'image/x-png', - 'image/png', - 'image/gif', - 'application/x-shockwave-flash' - ); - -/** - * ВНЕШНИЕ МЕТОДЫ - */ - - function displayBanner($id) { - global $AVE_DB; - - mt_rand(); - $banner_id = ''; - $output = ''; - - $cur_hour = date('G'); - $and_time = "AND ((ZStart = '0' AND ZEnde = '0') OR (ZStart <= '$cur_hour' AND ZEnde > '$cur_hour') OR (ZStart > ZEnde AND (ZStart BETWEEN ZStart AND '$cur_hour' OR ZEnde BETWEEN '$cur_hour' AND ZEnde)))"; - $and_category = (!empty($id) && is_numeric($id)) ? "AND KatId = '" . $id . "'" : ''; - - $num = $AVE_DB->Query(" - SELECT Id - FROM " . PREFIX . "_modul_banners - WHERE Aktiv = '1' - AND (MaxKlicks = '0' OR (Klicks < MaxKlicks AND MaxKlicks != '0')) - AND (MaxViews = '0' OR (Views < MaxViews AND MaxViews != '0')) - " . $and_time . " - " . $and_category . " - ")->NumRows(); - - $zufall = ($num) ? rand(1,3) : 3; - - $sql = $AVE_DB->Query(" - SELECT - Id, - Bannertags, - Target, - Bannername, - BildAlt, - Width, - Height - FROM " . PREFIX . "_modul_banners - WHERE Aktiv = '1' - AND (MaxKlicks = '0' OR (Klicks < MaxKlicks AND MaxKlicks != '0')) - AND (MaxViews = '0' OR (Views < MaxViews AND MaxViews != '0')) - " . $and_time . " - " . $and_category . " - AND Gewicht <= '" . $zufall . "' - "); - $num = $sql->NumRows(); - - $banner_id = ($num == 1) ? 0 : rand(0, $num-1); - - $sql->DataSeek($banner_id); - $banner = $sql->FetchAssocArray(); - - if(!empty($banner['Bannertags'])) - { - if (stristr($banner['Bannertags'], '.swf') === false) - { - $output = '' . $banner['Bannername'] . ': ' . $banner['BildAlt'] . ''; - } - else - { - $output = '
'; - $output .= ' '; - $output .= ' '; - $output .= ' '; - $output .= ' '; - $output .= ' '; - $output .= ' '; - $output .= ' '; - $output .= '
'; - } - - if(!empty($banner['Id'])) - { - $AVE_DB->Query(" - UPDATE " . PREFIX . "_modul_banners - SET Views = Views + 1 - WHERE Id = '" . $banner['Id'] . "' - "); - } - } - - echo $output; - } - - function fetch_addclick($id) { - global $AVE_DB; - - switch($_REQUEST['action']) { - case '': - case 'addclick': - $sql = $AVE_DB->Query(" - SELECT BannerUrl - FROM " . PREFIX . "_modul_banners - WHERE Id = '" . $id . "' - LIMIT 1 - "); - $banner_url = $sql->GetCell(); - if(!empty($banner_url)) { - $AVE_DB->Query(" - UPDATE " . PREFIX . "_modul_banners - SET Klicks = Klicks + 1 - WHERE Id = '" . $id . "' - "); - header('Location:' . $banner_url); - } - - exit; - break; - } - } - - function showBanner($tpl_dir) { - global $AVE_DB, $AVE_Template; - - $limit = $this->_limit; - $sql = $AVE_DB->Query("SELECT Id FROM " . PREFIX . "_modul_banners"); - $num = $sql->NumRows(); - - $seiten = ceil($num / $limit); - $start = get_current_page() * $limit - $limit; - - $items = array(); - $sql = $AVE_DB->Query(" - SELECT * - FROM " . PREFIX . "_modul_banners - LIMIT " . $start . "," . $limit - ); - while($row = $sql->FetchRow()) { - array_push($items, $row); - } - - if($num > $limit) - { - $page_nav = ' {t} '; - $page_nav = get_pagination($seiten, 'page', $page_nav); - $AVE_Template->assign('page_nav', $page_nav); - } - - $AVE_Template->assign('items', $items); - $AVE_Template->assign('mod_path', BANNER_DIR); - $AVE_Template->assign('kategs', $this->_showKategs()); - $AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'banners.tpl')); - } - - function editBanner($tpl_dir,$id) { - global $AVE_DB, $AVE_Template; - - $sql = $AVE_DB->Query(" - SELECT * - FROM " . PREFIX . "_modul_banners - WHERE Id = '" . $id . "' - "); - $row = $sql->FetchRow(); - - if (stristr(($row->Bannertags),'.swf') === false) $row->swf = false; else $row->swf = true; - - if(@!is_writeable(BASE_DIR . '/modules/' . BANNER_DIR . '/files/')) { - $AVE_Template->assign('folder_protected', 1); - } - - $AVE_Template->assign('item', $row); - $AVE_Template->assign('mod_path', BANNER_DIR); - $AVE_Template->assign('formaction', 'index.php?do=modules&action=modedit&mod=' . BANNER_DIR . '&moduleaction=quicksave&cp=' . SESSION . '&id=' . $_REQUEST['id'] . '&pop=1'); - $AVE_Template->assign('kategs', $this->_showKategs()); - $AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'form.tpl')); - } - - function deleteBanner($id) { - global $AVE_DB; - - $sql = $AVE_DB->Query(" - SELECT - Bannertags, - Bannername - FROM " . PREFIX . "_modul_banners - WHERE Id = '" . $id . "' - "); - $row = $sql->FetchRow(); - - @unlink(BASE_DIR . '/modules/' . BANNER_DIR . '/files/' . $row->Bannertags); - $AVE_DB->Query(" - DELETE - FROM " . PREFIX . "_modul_banners - WHERE Id = '" . $id . "' - "); - - reportLog($_SESSION['user_name'] . ' - удалил баннер (' . $row->Bannername . ')', 2, 2); - - header('Location:index.php?do=modules&action=modedit&mod=' . BANNER_DIR . '&moduleaction=1&cp=' . SESSION); - exit; - } - - function quickSave($id) { - global $AVE_DB, $config_vars; - - if(!empty($_POST['del'])) { - $sql = $AVE_DB->Query(" - SELECT Bannertags - FROM " . PREFIX . "_modul_banners - WHERE Id = '" . $id . "' - "); - $row = $sql->FetchRow(); - - $AVE_DB->Query(" - UPDATE " . PREFIX . "_modul_banners - SET Bannertags = '' - WHERE Id = '" . $id . "' - "); - - @unlink(BASE_DIR . '/modules/' . BANNER_DIR . '/files/' . $row->Bannertags); - } - - if(!empty($_POST['Bannername'])) { - $d_name = strtolower($_FILES['New']['name']); - $d_name = str_replace(' ','', $d_name); - $d_tmp = $_FILES['New']['tmp_name']; - - if(!empty($_FILES['New']['type'])) { - if(in_array($_FILES['New']['type'], $this->_allowed_files)) { - $d_name = preg_replace('/[^ ._a-z0-9-]/', '_', $d_name); - if(file_exists(BASE_DIR . '/modules/' . BANNER_DIR . '/files/' . $d_name)) $d_name = $this->_Zufall() . '__' . $d_name; - - if(@move_uploaded_file($d_tmp, BASE_DIR . '/modules/' . BANNER_DIR . '/files/' . $d_name)) { - @chmod(BASE_DIR . '/modules/' . BANNER_DIR . '/files/' . $d_name, 0777); - echo ""; - - $AVE_DB->Query(" - UPDATE " . PREFIX . "_modul_banners - SET Bannertags = '" . $d_name . "' - WHERE Id = '" . $id . "' - "); - - reportLog($_SESSION['user_name'] . ' - заменил изображение баннера на (' . $d_name . ')', 2, 2); - - } else { - echo ""; - } - - } else { - echo ""; - } - } - - $AVE_DB->Query(" - UPDATE " . PREFIX . "_modul_banners - SET - Bannername = '" . $_REQUEST['Bannername'] . "', - BannerUrl = '" . $_REQUEST['BannerUrl'] . "', - Gewicht = '" . $_REQUEST['Gewicht'] . "', - Views = '" . $_REQUEST['Anzeigen'] . "', - Klicks = '" . $_REQUEST['Klicks'] . "', - BildAlt = '" . $_REQUEST['BildAlt'] . "', - KatId = '" . $_REQUEST['KatId'] . "', - MaxKlicks = '" . $_REQUEST['MaxKlicks'] . "', - MaxViews = '" . $_REQUEST['MaxViews'] . "', - ZStart = '" . $_REQUEST['ZStart'] . "', - ZEnde = '" . $_REQUEST['ZEnde'] . "', - Aktiv = '" . $_REQUEST['Aktiv'] . "', - Target = '" . $_REQUEST['Target'] . "', - Width = '" . $_REQUEST['Width'] . "', - Height = '" . $_REQUEST['Height'] . "' - WHERE - Id = '" . $id . "' - "); - reportLog($_SESSION['user_name'] . ' - изменил параметры баннера (' . stripslashes($_REQUEST['Bannername']) . ')', 2, 2); - } - - header('Location:index.php?do=modules&action=modedit&mod=' . BANNER_DIR . '&moduleaction=1&cp=' . SESSION); - exit; - } - - function newBanner($tpl_dir) { - global $AVE_DB, $AVE_Template, $config_vars; - - switch($_REQUEST['sub']) { - case '': - if(!@is_writeable(BASE_DIR . '/modules/' . BANNER_DIR . '/files/')) { - $AVE_Template->assign('folder_protected', 1); - } - $AVE_Template->assign('mod_path', BANNER_DIR); - $AVE_Template->assign('kategs', $this->_showKategs()); - $AVE_Template->assign('formaction', 'index.php?do=modules&action=modedit&mod=' . BANNER_DIR . '&moduleaction=newbanner&sub=save&cp=' . SESSION . '&pop=1'); - $AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'form.tpl')); - break; - - case 'save': - if(!empty($_POST['Bannername'])) { - $file = ''; - - $d_name = strtolower($_FILES['New']['name']); - $d_name = str_replace(' ', '', $d_name); - $d_tmp = $_FILES['New']['tmp_name']; - - if(!empty($_FILES['New']['type'])) { - if(in_array($_FILES['New']['type'], $this->_allowed_files)) { - $d_name = preg_replace('/[^ ._a-z0-9-]/', '_', $d_name); - if(file_exists(BASE_DIR . '/modules/' . BANNER_DIR . '/files/' . $d_name)) $d_name = $this->_Zufall() . '__' . $d_name; - - if(@move_uploaded_file($d_tmp, BASE_DIR . '/modules/' . BANNER_DIR . '/files/' . $d_name)) { - @chmod(BASE_DIR . '/modules/' . BANNER_DIR . '/files/' . $d_name, 0777); - echo ""; - reportLog($_SESSION['user_name'] . ' - добавил изображение баннера (' . $d_name . ')', 2, 2); - $file = $d_name; - } else { - echo ""; - } - } else { - echo ""; - } - } - - $AVE_DB->Query(" - INSERT - INTO " . PREFIX . "_modul_banners - SET - KatId = '" . $_REQUEST['KatId'] . "', - Bannertags = '" . $file . "', - BannerUrl = '" . $_REQUEST['BannerUrl'] . "', - Gewicht = '" . $_REQUEST['Gewicht'] . "', - Bannername = '" . $_REQUEST['Bannername'] . "', - BildAlt = '" . $_REQUEST['BildAlt'] . "', - MaxKlicks = '" . $_REQUEST['MaxKlicks'] . "', - MaxViews = '" . $_REQUEST['MaxViews'] . "', - ZStart = '" . $_REQUEST['ZStart'] . "', - ZEnde = '" . $_REQUEST['ZEnde'] . "', - Aktiv = '" . $_REQUEST['Aktiv'] . "', - Target = '" . $_REQUEST['Target'] . "', - Width = '" . $_REQUEST['Width'] . "', - Height = '" . $_REQUEST['Height'] . "' - "); - - reportLog($_SESSION['user_name'] . ' - добавил новый баннер (' . stripslashes($_REQUEST['Bannername']) . ')', 2, 2); - } - header('Location:index.php?do=modules&action=modedit&mod=' . BANNER_DIR . '&moduleaction=1&cp=' . SESSION); - exit; - } - } - - function bannerKategs($tpl_dir) { - global $AVE_DB, $AVE_Template; - - switch($_REQUEST['sub']) { - case '' : - $items = array(); - $sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_modul_banner_categories"); - while($row = $sql->FetchRow()) { - array_push($items, $row); - } - $AVE_Template->assign('items', $items); - $AVE_Template->assign('mod_path', BANNER_DIR); - $AVE_Template->assign('kategs', $this->_showKategs()); - $AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'kategs.tpl')); - break; - - case 'save' : - foreach($_POST['KatName'] as $id => $kateg) { - if(!empty($kateg)) { - $AVE_DB->Query(" - UPDATE " . PREFIX . "_modul_banner_categories - SET KatName = '" . $kateg . "' - WHERE Id = '" . $id . "' - "); - } - } - - foreach($_POST['del'] as $id => $kateg) { - $AVE_DB->Query(" - DELETE - FROM " . PREFIX . "_modul_banners - WHERE KatId = '" . $id . "' - "); - $AVE_DB->Query(" - DELETE - FROM " . PREFIX . "_modul_banner_categories - WHERE Id = '" . $id . "' - "); - - reportLog($_SESSION['user_name'] . ' - удалил категорию баннеров (' . $id . ')', 2, 2); - } - - header('Location:index.php?do=modules&action=modedit&mod=' . BANNER_DIR . '&moduleaction=kategs&cp=' . SESSION); - break; - - case 'new' : - if(!empty($_REQUEST['KatName'])) { - $sql = $AVE_DB->Query(" - INSERT - INTO " . PREFIX . "_modul_banner_categories - SET KatName = '" . $_REQUEST['KatName'] . "' - "); - - reportLog($_SESSION['user_name'] . ' - добавил новую категорию (' . stripslashes($_REQUEST['KatName']) . ')', 2, 2); - } - - header('Location:index.php?do=modules&action=modedit&mod=' . BANNER_DIR . '&moduleaction=kategs&cp=' . SESSION); - break; - } - } - -/** - * ВНУТРЕННИЕ МЕТОДЫ - */ - - function _Zufall() { - $zufall = rand(1000, 99999); - return $zufall; - } - - function _showKategs() { - global $AVE_DB; - - $kategs = array(); - $sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_modul_banner_categories"); - while($row = $sql->FetchRow()) { - array_push($kategs, $row); - } - - return $kategs; - } + var $_limit = 15; + var $_allowed_files = + array( + 'image/jpg', + 'image/jpeg', + 'image/pjpeg', + 'image/x-png', + 'image/png', + 'image/gif', + 'image/webp' + ); + +function displayBanner($id) { + global $AVE_DB, $AVE_Template; + + mt_rand(); + + $cur_hour = (int)date('G'); + // Сохраняем ваше оригинальное условие времени полностью + $and_time = "AND ((start_hour = '0' AND end_hour = '0') OR (start_hour <= '$cur_hour' AND end_hour > '$cur_hour') OR (start_hour > end_hour AND (start_hour BETWEEN start_hour AND '$cur_hour' OR end_hour BETWEEN '$cur_hour' AND end_hour)))"; + $and_category = (!empty($id) && is_numeric($id)) ? "AND category_id = '" . (int)$id . "'" : ''; + + $num_rows = $AVE_DB->Query(" + SELECT id + FROM " . PREFIX . "_module_banners + WHERE is_active = '1' + AND (max_clicks = '0' OR (clicks < max_clicks AND max_clicks != '0')) + AND (max_views = '0' OR (views < max_views AND max_views != '0')) + " . $and_time . " + " . $and_category . " + ")->NumRows(); + + // Ваша логика выбора порога веса + $weight_limit = ($num_rows) ? rand(1, 3) : 3; + + $sql = $AVE_DB->Query(" + SELECT + id, + banner_file, + target, + banner_name, + image_alt, + width, + height + FROM " . PREFIX . "_module_banners + WHERE is_active = '1' + AND (max_clicks = '0' OR (clicks < max_clicks AND max_clicks != '0')) + AND (max_views = '0' OR (views < max_views AND max_views != '0')) + " . $and_time . " + " . $and_category . " + AND weight <= '" . (int)$weight_limit . "' + "); + $num = $sql->NumRows(); + + if ($num == 0) return; + + $target_index = ($num == 1) ? 0 : rand(0, $num - 1); + + $sql->DataSeek($target_index); + $banner = $sql->FetchAssocArray(); + + if(!empty($banner['banner_file'])) + { + // Передаем переменные в Smarty + $AVE_Template->assign([ + 'banner' => $banner, + 'mod_path' => BANNER_DIR, + 'abs_path' => ABS_PATH + ]); + + // Выводим через шаблон (путь подставьте свой, обычно так) + $AVE_Template->display(BASE_DIR . '/modules/' . BANNER_DIR . '/templates/banner_viewer.tpl'); + + if(!empty($banner['id'])) + { + $AVE_DB->Query(" + UPDATE " . PREFIX . "_module_banners + SET views = views + 1 + WHERE id = '" . (int)$banner['id'] . "' + "); + } + } + } + +function fetch_addclick($id) { + global $AVE_DB; + + // Используем ?? '', чтобы не было Warning, если action не передан + $action = $_REQUEST['action'] ?? ''; + + switch($action) { + case '': + case 'addclick': + $sql = $AVE_DB->Query(" + SELECT banner_url + FROM " . PREFIX . "_module_banners + WHERE id = '" . (int)$id . "' + LIMIT 1 + "); + + $banner_url = $sql->GetCell(); + + if(!empty($banner_url)) { + // Сначала обновляем счетчик кликов + $AVE_DB->Query(" + UPDATE " . PREFIX . "_module_banners + SET clicks = clicks + 1 + WHERE id = '" . (int)$id . "' + "); + + // Затем перенаправляем пользователя + header('Location: ' . $banner_url); + } else { + // Если URL пустой или баннер не найден, возвращаем на главную + header('Location: index.php'); + } + + exit; + break; + } } -?> + + function showBanners($tpl_dir) { + global $AVE_DB, $AVE_Template; + + $limit = (int)$this->_limit; + $sql = $AVE_DB->Query("SELECT id FROM " . PREFIX . "_module_banners"); + $num = $sql->NumRows(); + + $seiten = ceil($num / $limit); + $start = (int)(get_current_page() * $limit - $limit); + if ($start < 0) $start = 0; + + $items = array(); + $sql = $AVE_DB->Query(" + SELECT * + FROM " . PREFIX . "_module_banners + LIMIT " . (int)$start . "," . (int)$limit . " + "); + while($row = $sql->FetchRow()) { + array_push($items, $row); + } + + if($num > $limit) + { + $page_nav = ' {t} '; + $page_nav = get_pagination($seiten, 'page', $page_nav); + $AVE_Template->assign('page_nav', $page_nav); + } + + $AVE_Template->assign('items', $items); + $AVE_Template->assign('mod_path', BANNER_DIR); + $AVE_Template->assign('kategs', $this->_showCategories()); + $AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'banners.tpl')); + } + + function editBanner($tpl_dir,$id) { + global $AVE_DB, $AVE_Template; + + $sql = $AVE_DB->Query(" + SELECT * + FROM " . PREFIX . "_module_banners + WHERE id = '" . (int)$id . "' + "); + $row = $sql->FetchRow(); + + if (stristr(($row->banner_file),'.swf') === false) $row->swf = false; else $row->swf = true; + + if(@!is_writeable(BASE_DIR . '/modules/' . BANNER_DIR . '/files/')) { + $AVE_Template->assign('folder_protected', 1); + } + + $AVE_Template->assign('item', $row); + $AVE_Template->assign('mod_path', BANNER_DIR); + $AVE_Template->assign('formaction', 'index.php?do=modules&action=modedit&mod=' . BANNER_DIR . '&moduleaction=quicksave&cp=' . SESSION . '&id=' . (int)$id . '&pop=1'); + $AVE_Template->assign('kategs', $this->_showCategories()); + $AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'form.tpl')); + } + + function deleteBanner($id) { + global $AVE_DB; + + $sql = $AVE_DB->Query(" + SELECT + banner_file, + banner_name + FROM " . PREFIX . "_module_banners + WHERE id = '" . (int)$id . "' + "); + $row = $sql->FetchRow(); + + @unlink(BASE_DIR . '/modules/' . BANNER_DIR . '/files/' . $row->banner_file); + $AVE_DB->Query(" + DELETE + FROM " . PREFIX . "_module_banners + WHERE id = '" . (int)$id . "' + "); + + reportLog($_SESSION['user_name'] . ' - удалил баннер (' . $row->banner_name . ')', 2, 2); + + header('Location:index.php?do=modules&action=modedit&mod=' . BANNER_DIR . '&moduleaction=1&cp=' . SESSION); + exit; + } + + function quickSave($id) { + global $AVE_DB, $config_vars; + + if(!empty($_POST['del'])) { + $sql = $AVE_DB->Query(" + SELECT banner_file + FROM " . PREFIX . "_module_banners + WHERE id = '" . (int)$id . "' + "); + $row = $sql->FetchRow(); + + $AVE_DB->Query(" + UPDATE " . PREFIX . "_module_banners + SET banner_file = '' + WHERE id = '" . (int)$id . "' + "); + + @unlink(BASE_DIR . '/modules/' . BANNER_DIR . '/files/' . $row->banner_file); + } + + if(!empty($_POST['banner_name'])) { + $d_name = strtolower($_FILES['New']['name']); + $d_name = str_replace(' ','', $d_name); + $d_tmp = $_FILES['New']['tmp_name']; + + if(!empty($_FILES['New']['type'])) { + if(in_array($_FILES['New']['type'], $this->_allowed_files)) { + $d_name = preg_replace('/[^ ._a-z0-9-]/', '_', $d_name); + if(file_exists(BASE_DIR . '/modules/' . BANNER_DIR . '/files/' . $d_name)) $d_name = $this->_getRandomPrefix() . '__' . $d_name; + + if(@move_uploaded_file($d_tmp, BASE_DIR . '/modules/' . BANNER_DIR . '/files/' . $d_name)) { + @chmod(BASE_DIR . '/modules/' . BANNER_DIR . '/files/' . $d_name, 0777); + echo ""; + + $AVE_DB->Query(" + UPDATE " . PREFIX . "_module_banners + SET banner_file = '" . addslashes($d_name) . "' + WHERE id = '" . (int)$id . "' + "); + + reportLog($_SESSION['user_name'] . ' - заменил изображение баннера на (' . $d_name . ')', 2, 2); + + } else { + echo ""; + } + + } else { + echo ""; + } + } + + $AVE_DB->Query(" + UPDATE " . PREFIX . "_module_banners + SET + banner_name = '" . addslashes($_REQUEST['banner_name']) . "', + banner_url = '" . addslashes($_REQUEST['banner_url']) . "', + weight = '" . (int)$_REQUEST['weight'] . "', + views = '" . (int)$_REQUEST['views'] . "', + clicks = '" . (int)$_REQUEST['clicks'] . "', + image_alt = '" . addslashes($_REQUEST['image_alt']) . "', + category_id = '" . (int)$_REQUEST['category_id'] . "', + max_clicks = '" . (int)$_REQUEST['max_clicks'] . "', + max_views = '" . (int)$_REQUEST['max_views'] . "', + start_hour = '" . (int)$_REQUEST['start_hour'] . "', + end_hour = '" . (int)$_REQUEST['end_hour'] . "', + is_active = '" . (int)$_REQUEST['is_active'] . "', + target = '" . addslashes($_REQUEST['target']) . "', + width = '" . (int)$_REQUEST['width'] . "', + height = '" . (int)$_REQUEST['height'] . "' + WHERE + id = '" . (int)$id . "' + "); + reportLog($_SESSION['user_name'] . ' - изменил параметры баннера (' . stripslashes($_REQUEST['banner_name']) . ')', 2, 2); + } + + header('Location:index.php?do=modules&action=modedit&mod=' . BANNER_DIR . '&moduleaction=1&cp=' . SESSION); + exit; + } + +function newBanner($tpl_dir) { + global $AVE_DB, $AVE_Template, $config_vars; + + // Определяем под-действие (создание или сохранение) + $sub = $_REQUEST['sub'] ?? ''; + + switch($sub) { + case '': + if(!@is_writeable(BASE_DIR . '/modules/' . BANNER_DIR . '/files/')) { + $AVE_Template->assign('folder_protected', 1); + } + + // Инициализируем пустой объект для Smarty, чтобы PHP 8.4 не ругался на отсутствие свойств + $item = new stdClass(); + $item->id = 0; + $item->banner_name = ''; + $item->category_id = 0; + $item->is_active = 1; + $item->target = '_blank'; + $item->banner_file = ''; + $item->banner_url = 'https://'; + $item->image_alt = ''; + $item->weight = 1; + $item->max_clicks = 0; + $item->max_views = 0; + $item->start_hour = 0; + $item->end_hour = 24; + $item->width = 0; + $item->height = 0; + + $AVE_Template->assign('item', $item); + $AVE_Template->assign('mod_path', BANNER_DIR); + $AVE_Template->assign('kategs', $this->_showCategories()); + $AVE_Template->assign('formaction', 'index.php?do=modules&action=modedit&mod=' . BANNER_DIR . '&moduleaction=newbanner&sub=save&cp=' . SESSION . '&pop=1'); + + // Рендерим шаблон формы + $AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'form.tpl')); + break; + + case 'save': + if(!empty($_POST['banner_name'])) { + $file = ''; + + // Проверяем, был ли загружен файл + if(!empty($_FILES['New']['name']) && $_FILES['New']['error'] == UPLOAD_ERR_OK) { + $d_name = strtolower($_FILES['New']['name']); + $d_name = str_replace(' ', '', $d_name); + $d_tmp = $_FILES['New']['tmp_name']; + + if(in_array($_FILES['New']['type'], $this->_allowed_files)) { + $d_name = preg_replace('/[^ ._a-z0-9-]/', '_', $d_name); + + if(file_exists(BASE_DIR . '/modules/' . BANNER_DIR . '/files/' . $d_name)) { + $d_name = $this->_getRandomPrefix() . '__' . $d_name; + } + + if(@move_uploaded_file($d_tmp, BASE_DIR . '/modules/' . BANNER_DIR . '/files/' . $d_name)) { + @chmod(BASE_DIR . '/modules/' . BANNER_DIR . '/files/' . $d_name, 0777); + echo ""; + reportLog($_SESSION['user_name'] . ' - добавил изображение баннера (' . $d_name . ')', 2, 2); + $file = $d_name; + } else { + echo ""; + } + } else { + echo ""; + } + } + + // Выполняем запрос к БД с очисткой данных + $AVE_DB->Query(" + INSERT + INTO " . PREFIX . "_module_banners + SET + category_id = '" . (int)($_REQUEST['category_id'] ?? 0) . "', + banner_file = '" . addslashes($file) . "', + banner_url = '" . addslashes($_REQUEST['banner_url'] ?? '') . "', + weight = '" . (int)($_REQUEST['weight'] ?? 1) . "', + banner_name = '" . addslashes($_REQUEST['banner_name'] ?? '') . "', + image_alt = '" . addslashes($_REQUEST['image_alt'] ?? '') . "', + max_clicks = '" . (int)($_REQUEST['max_clicks'] ?? 0) . "', + max_views = '" . (int)($_REQUEST['max_views'] ?? 0) . "', + start_hour = '" . (int)($_REQUEST['start_hour'] ?? 0) . "', + end_hour = '" . (int)($_REQUEST['end_hour'] ?? 24) . "', + is_active = '" . (int)($_REQUEST['is_active'] ?? 1) . "', + target = '" . addslashes($_REQUEST['target'] ?? '_blank') . "', + width = '" . (int)($_REQUEST['width'] ?? 0) . "', + height = '" . (int)($_REQUEST['height'] ?? 0) . "' + "); + + reportLog($_SESSION['user_name'] . ' - добавил новый баннер (' . stripslashes($_REQUEST['banner_name']) . ')', 2, 2); + } + + header('Location:index.php?do=modules&action=modedit&mod=' . BANNER_DIR . '&moduleaction=1&cp=' . SESSION); + exit; + } + } + + function bannerCategories($tpl_dir) { + global $AVE_DB, $AVE_Template; + + switch($_REQUEST['sub']) { + case '' : + $items = array(); + $sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_module_banner_categories"); + while($row = $sql->FetchRow()) { + array_push($items, $row); + } + $AVE_Template->assign('items', $items); + $AVE_Template->assign('mod_path', BANNER_DIR); + $AVE_Template->assign('kategs', $this->_showCategories()); + $AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'kategs.tpl')); + break; + + case 'save' : + if (isset($_POST['category_name'])) { + foreach($_POST['category_name'] as $id => $kateg) { + if(!empty($kateg)) { + $AVE_DB->Query(" + UPDATE " . PREFIX . "_module_banner_categories + SET category_name = '" . addslashes($kateg) . "' + WHERE id = '" . (int)$id . "' + "); + } + } + } + + if (isset($_POST['del'])) { + foreach($_POST['del'] as $id => $kateg) { + $AVE_DB->Query(" + DELETE + FROM " . PREFIX . "_module_banners + WHERE category_id = '" . (int)$id . "' + "); + $AVE_DB->Query(" + DELETE + FROM " . PREFIX . "_module_banner_categories + WHERE id = '" . (int)$id . "' + "); + + reportLog($_SESSION['user_name'] . ' - удалил категорию баннеров (' . (int)$id . ')', 2, 2); + } + } + + header('Location:index.php?do=modules&action=modedit&mod=' . BANNER_DIR . '&moduleaction=kategs&cp=' . SESSION); + break; + + case 'new' : + if(!empty($_REQUEST['category_name'])) { + $sql = $AVE_DB->Query(" + INSERT + INTO " . PREFIX . "_module_banner_categories + SET category_name = '" . addslashes($_REQUEST['category_name']) . "' + "); + + reportLog($_SESSION['user_name'] . ' - добавил новую категорию (' . stripslashes($_REQUEST['category_name']) . ')', 2, 2); + } + + header('Location:index.php?do=modules&action=modedit&mod=' . BANNER_DIR . '&moduleaction=kategs&cp=' . SESSION); + break; + } + } + +/** + * ВНУТРЕННИЕ МЕТОДЫ + */ + + function _getRandomPrefix() { + return rand(1000, 99999); + } + + function _showCategories() { + global $AVE_DB; + + $categories = array(); + $sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_module_banner_categories"); + while($row = $sql->FetchRow()) { + array_push($categories, $row); + } + + return $categories; + } +} +?> \ No newline at end of file diff --git a/files/media2_ave.jpg b/files/media_ave.jpg similarity index 100% rename from files/media2_ave.jpg rename to files/media_ave.jpg diff --git a/files/media_gitget.jpg b/files/media_gitget.jpg index 9e826ffb721030519d0f56913e9749f1ce21750b..1f17f6daf78937eda7d6aade1aa77e7396f2b597 100644 GIT binary patch literal 13450 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 PuKW|d|C 'media', - 'ModuleVersion' => '2.26.0', + 'ModuleVersion' => '3.31.0', 'ModuleAutor' => 'AVE.cms Team', 'ModuleCopyright' => '© 2007-' . date('Y') . ' AVE.cms', 'ModuleStatus' => 1, diff --git a/lang/ru.txt b/lang/ru.txt index caa4c87..d8809ba 100644 --- a/lang/ru.txt +++ b/lang/ru.txt @@ -1,6 +1,6 @@ [name] MODULE_NAME = "Баннер" -MODULE_DESCRIPTION = "Данный модуль позволяет организовать удобное управление показами рекламных баннеров на вашем сайте. Для того, чтобы отобразить рекламный баннер, разместите системный тег [mod_banner:XXX] в нужном месте вашего шаблона сайта или содержимом документа.
Допустимые форматы рекламных баннеров: jpg, jpeg, png, gif, swf" +MODULE_DESCRIPTION = "Данный модуль позволяет организовать удобное управление показами рекламных баннеров на вашем сайте. Для того, чтобы отобразить рекламный баннер, разместите системный тег [mod_banner:XXX] в нужном месте вашего шаблона сайта или содержимом документа.
Допустимые форматы рекламных баннеров: jpg, jpeg, png, gif, webp" [module] BANNER_MODULE_NAME = "Управление модулем баннер" @@ -34,8 +34,8 @@ BANNER_ENTER_NAME = "Пожалуйста, укажите название BANNER_PLEASE_NAME = "Пожалуйста, укажите название баннера" BANNER_NEW_CREATE = "Добавление нового баннера" BANNER_EDIT = "Редактирование баннера" -BANNER_EDIT_INFO = "В данном разделе вы можете отредактировать параметры баннера, а также сменить текущее изображение на новое.
Допустимые форматы файлов: jpg, jpeg, png, gif, swf" -BANNER_NEW_INFO = "В данном разделе вы можете добавить новый баннер, установить количество и время показов баннера.
Допустимые форматы файлов: jpg, jpeg, png, gif, swf" +BANNER_EDIT_INFO = "В данном разделе вы можете отредактировать параметры баннера, а также сменить текущее изображение на новое.
Допустимые форматы файлов: jpg, jpeg, png, gif, webp" +BANNER_NEW_INFO = "В данном разделе вы можете добавить новый баннер, установить количество и время показов баннера.
Допустимые форматы файлов: jpg, jpeg, png, gif, webp" BANNER_STATUS = "Активировать баннер?" BANNER_NAME_FORM = "Название баннера:" BANNER_CATEGORY_FORM = "Относится к категории:" @@ -70,10 +70,11 @@ BANNER_WRONG_TYPE = "Баннер не загружен. Данный тип BANNER_TARGET_TYPE = "Открывать в:" BANNER_OPEN_IN_NEW = "В новом окне" BANNER_OPEN_IN_THIS = "В текущем окне" -BANNER_WIDTH_SWF = "Ширина:" -BANNER_HEIGHT_SWF = "Высота:" -BANNER_FOR_SWF = "(для swf баннера)" +BANNER_WIDTH = "Ширина изображения баннера:" +BANNER_HEIGHT = "Высота изображения баннера:" +BANNER_FOR_SWF = "(0 - оставить как есть)" BANNER_MOD_ALLOWS = "Модуль позволяет:" BANNER_MOD_ALLOWS_A = "Организовать удобное управление показами рекламных баннеров на вашем сайте." BANNER_MOD_ALLOWS_B = "Для того, чтобы отобразить рекламный баннер, разместите системный тег [mod_banner:XXX] в нужном месте вашего шаблона сайта или содержимом документа. Идентификаторы тегов указаны в разделе - Управление категориями." -BANNER_MOD_ALLOWS_C = "Допустимые форматы рекламных баннеров: jpg, jpeg, png, gif, swf." +BANNER_MOD_ALLOWS_C = "Допустимые форматы рекламных баннеров: jpg, jpeg, png, gif, webp." +BANNER_SET_COPY = "Скопировать в буфер обмена" diff --git a/module.php b/module.php index 48d8751..242ca35 100644 --- a/module.php +++ b/module.php @@ -12,8 +12,6 @@ if(!defined('BASE_DIR')) exit; if(!defined('BANNER_DIR')) define('BANNER_DIR', 'media'); -echo BANNER_DIR; - /** * Обработка тэга модуля * @@ -22,7 +20,7 @@ echo BANNER_DIR; function mod_banner($banner_id) { require_once(BASE_DIR . '/modules/' . BANNER_DIR . '/class/banner.php'); - $banner = new ModulBanner; + $banner = new ModuleBanner; $banner->displayBanner(stripslashes($banner_id)); } @@ -31,7 +29,7 @@ if (isset($_REQUEST['module']) && $_REQUEST['module'] == BANNER_DIR) if (is_numeric($_REQUEST['id'])) { require_once(BASE_DIR . '/modules/' . BANNER_DIR . '/class/banner.php'); - $banner = new ModulBanner; + $banner = new ModuleBanner; $banner->fetch_addclick($_REQUEST['id']); } } @@ -46,7 +44,7 @@ if (defined('ACP') && !empty($_REQUEST['moduleaction'])) $lang_file = BASE_DIR . '/modules/' . BANNER_DIR . '/lang/' . $_SESSION['user_language'] . '.txt'; $AVE_Template->config_load($lang_file, 'module'); - $banner = new ModulBanner; + $banner = new ModuleBanner; $AVE_Template->config_load($lang_file, 'module'); $config_vars = $AVE_Template->get_config_vars(); @@ -55,7 +53,7 @@ if (defined('ACP') && !empty($_REQUEST['moduleaction'])) switch($_REQUEST['moduleaction']) { case '1': - $banner->showBanner($tpl_dir); + $banner->showBanners($tpl_dir); break; case 'quicksave': @@ -63,7 +61,7 @@ if (defined('ACP') && !empty($_REQUEST['moduleaction'])) break; case 'kategs': - $banner->bannerKategs($tpl_dir); + $banner->bannerCategories($tpl_dir); break; case 'editbanner': diff --git a/sql.php b/sql.php index 8388ab8..41b5361 100644 --- a/sql.php +++ b/sql.php @@ -1,57 +1,62 @@ \ No newline at end of file diff --git a/templates/banner_viewer.tpl b/templates/banner_viewer.tpl new file mode 100644 index 0000000..8d5d54f --- /dev/null +++ b/templates/banner_viewer.tpl @@ -0,0 +1,13 @@ +
\ No newline at end of file diff --git a/templates/banners.tpl b/templates/banners.tpl index b9e9cc9..79e76e2 100644 --- a/templates/banners.tpl +++ b/templates/banners.tpl @@ -21,13 +21,28 @@
-
-
{#BANNER_SHOW_ALL#} |  - {#BANNER_NEW_LINK#} |  - {#BANNER_CATEG_LINK#}
-
+ + + +
+ + + + + + @@ -39,7 +54,8 @@ {foreach from=$items item=item} - {if ($item->Aktiv != 1) || ($item->Bannertags=='') || ($item->Klicks >= $item->MaxKlicks && $item->MaxKlicks != 0) || ($item->Views >= $item->MaxViews && $item->MaxViews != 0)} + {* Логика активности: Aktiv->is_active, Bannertags->banner_file, Klicks->clicks, Views->views *} + {if ($item->is_active != 1) || ($item->banner_file=='') || ($item->clicks >= $item->max_clicks && $item->max_clicks != 0) || ($item->views >= $item->max_views && $item->max_views != 0)} {assign var=active value=0} {else} {assign var=active value=1} @@ -52,21 +68,26 @@   {/if} - - + {* Id -> id, Bannername -> banner_name *} + + {* Bannertags -> banner_file *} + - - - + {* ZStart/ZEnde -> start_hour/end_hour *} + + {* Klicks/Views -> clicks/views *} + + {/foreach} diff --git a/templates/form.tpl b/templates/form.tpl index 7026232..2e93180 100644 --- a/templates/form.tpl +++ b/templates/form.tpl @@ -1,21 +1,24 @@ +
{if $smarty.request.moduleaction!='newbanner'}{#BANNER_EDIT#}{else}{#BANNER_NEW_CREATE#}{/if}
+
-{if $smarty.request.moduleaction!='newbanner'}{#BANNER_EDIT_INFO#}{else}{#BANNER_NEW_INFO#}{/if} + {if $smarty.request.moduleaction!='newbanner'}{#BANNER_EDIT_INFO#}{else}{#BANNER_NEW_INFO#}{/if}
-
+ + {if $folder_protected==1 && $smarty.request.moduleaction=='newbanner'}
{#BANNER_NOT_WRITABLE#} {else} @@ -27,54 +30,48 @@ function check_name() {ldelim} - + - + - + + {if $smarty.request.moduleaction != 'newbanner'} {/if} + - {if $item->Bannertags!='' && $smarty.request.moduleaction!='newbanner'} + {if $item->banner_file!='' && $smarty.request.moduleaction!='newbanner'} @@ -93,15 +90,15 @@ function check_name() {ldelim} {/if} - + @@ -109,29 +106,29 @@ function check_name() {ldelim} {if $smarty.request.moduleaction!='newbanner'} - + {/if} - + {if $smarty.request.moduleaction!='newbanner'} - + {/if} - + - - + + - - + +
 
  {#BANNER_NAME_TABLE#} {#BANNER_ACTIONS#}
{$item->Bannername}{$item->Bannertags}{$item->banner_name}{$item->banner_file} {foreach from=$kategs item=k} - {if $k->Id==$item->KatId}{$k->KatName}{/if} + {* Id -> id, KatId -> category_id, KatName -> category_name *} + {if $k->id==$item->category_id}{$k->category_name}{/if} {/foreach} {if $item->ZStart<10}0{/if}{$item->ZStart}:00 - {if $item->ZEnde<10}0{/if}{$item->ZEnde}:00{$item->Klicks} / {if $item->MaxKlicks==0}~{else}{$item->MaxKlicks}{/if}{$item->Views} / {if $item->MaxViews==0}~{else}{$item->MaxViews}{/if}{if $item->start_hour<10}0{/if}{$item->start_hour}:00 - {if $item->end_hour<10}0{/if}{$item->end_hour}:00{$item->clicks} / {if $item->max_clicks==0}~{else}{$item->max_clicks}{/if}{$item->views} / {if $item->max_views==0}~{else}{$item->max_views}{/if} -  +  -  + 
{#BANNER_STATUS#}Aktiv==1}checked{/if} />is_active==1}checked{/if} />
{#BANNER_NAME_FORM#}
{#BANNER_CATEGORY_FORM#} - {foreach from=$kategs item=k} - + {/foreach}
{#BANNER_TARGET_URL#}
{#BANNER_TARGET_TYPE#} - + +
{#BANNER_OLD_IMAGE#} - {if $item->Bannertags==''}-{else} - {if $item->swf == false} - - {else} - - - - - - - {/if} + {if $item->banner_file==''}-{else} + {* Убрали проверку на SWF, выводим только картинку *} + {/if}
{if $smarty.request.moduleaction != 'newbanner'} @@ -85,7 +82,7 @@ function check_name() {ldelim} {if $folder_protected==1 && $smarty.request.moduleaction!='newbanner'} {#BANNER_NOT_WRITABLE2#} {else} {/if}
{#BANNER_OLD_DELETE#}
{#BANNER_ALT_TEXT#}
{#BANNER_PRIOR#} - + + + {#BANNER_PRIOR_DESC#}
{#BANNER_VIEW_RESET#}
{#BANNER_VIEWS_MAX#}
{#BANNER_VIEWS_INFO#}
{#BANNER_UNLIMIT#} {#BANNER_UNLIMIT#}
{#BANNER_CLICK_RESET#}
{#BANNER_CLICKS#}
{#BANNER_CLICKS_INFO#}
{#BANNER_UNLIMIT#} {#BANNER_UNLIMIT#}
{#BANNER_HOUR_START#}
{#BANNER_START_INFO#}
- {section name=s loop=25 start=1} - + {/section} {#BANNER_START_INFO2#} @@ -140,21 +137,21 @@ function check_name() {ldelim}
{#BANNER_HOUR_END#}
{#BANNER_END_INFO#}
- {section name=e loop=25 start=1} - + {/section} {#BANNER_END_INFO2#}
{#BANNER_WIDTH_SWF#}
{#BANNER_FOR_SWF#}
{#BANNER_WIDTH#}
{#BANNER_FOR_SWF#}
(px)
{#BANNER_HEIGHT_SWF#}
{#BANNER_FOR_SWF#}
{#BANNER_HEIGHT#}
{#BANNER_FOR_SWF#}
(px)

{if $smarty.request.moduleaction == 'newbanner'} diff --git a/templates/kategs.tpl b/templates/kategs.tpl index 3638ba6..01c2b52 100644 --- a/templates/kategs.tpl +++ b/templates/kategs.tpl @@ -1,16 +1,20 @@ +
{#BANNER_MODULE_NAME#}
+
{#BANNER_MOD_ALLOWS#} @@ -21,25 +25,41 @@ function check_name() {ldelim}
+ + +
+ + + + + @@ -48,33 +68,44 @@ function check_name() {ldelim} {foreach from=$items item=item} {/foreach}
 
  {#BANNER_CATEGORY_TAG#}
- + {* Id -> id *} + - +
+ + + +
- + {* KatName -> category_name *} +

+
{#BANNER_CATEGORY_NEW#}
+
- +
- - -
{#BANNER_CATEGORY#}
-   - +
+ + {#BANNER_CATEGORY#} + + + + +