<?php /** * Класс работы с баннерами * * @package AVE.cms * @subpackage module_Banner * @filesource */ class ModulBanner { /** * СВОЙСТВА */ 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 = '<a target="' . $banner['Target'] . '" href="index.php?module=' . BANNER_DIR . '&id=' . $banner['Id'] . '"><img src="modules/' . BANNER_DIR . '/files/' . $banner['Bannertags'] . '" alt="' . $banner['Bannername'] . ': ' . $banner['BildAlt'] . '" border="0" /></a>'; } else { $output = '<div style="position:relative;border:0px;width:' . $banner['Width'] . 'px;height:' . $banner['Height'] . 'px;"><a target="' . $banner['Target'] . '" href="index.php?module=' . BANNER_DIR . '&id=' . $banner['Id'] . '" style="position:absolute;z-index:2;width:' . $banner['Width'] . 'px;height:' . $banner['Height'] . 'px;_background:red;_filter:alpha(opacity=0);"></a>'; $output .= ' <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="' . $banner['Width'] . '" height="' . $banner['Height'] . '" id="reklama" align="middle">'; $output .= ' <param name="allowScriptAccess" value="sameDomain" />'; $output .= ' <param name="movie" value="modules/' . BANNER_DIR . '/files/' . $banner['Bannertags'] . '" />'; $output .= ' <param name="quality" value="high" />'; $output .= ' <param name="wmode" value="opaque">'; $output .= ' <embed src="modules/' . BANNER_DIR . '/files/' . $banner['Bannertags'] . '" quality="high" wmode="opaque" width="' . $banner['Width'] . '" height="' . $banner['Height'] . '" name="reklama" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />'; $output .= ' </object>'; $output .= '</div>'; } 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 = ' <a class="pnav" href="index.php?do=modules&action=modedit&mod=' . BANNER_DIR . '&moduleaction=1&cp=' . SESSION . '&page={s}">{t}</a> '; $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 "<script>alert('" . $config_vars['BANNER_IS_UPLOADED'] . ': ' . $d_name . "');</script>"; $AVE_DB->Query(" UPDATE " . PREFIX . "_modul_banners SET Bannertags = '" . $d_name . "' WHERE Id = '" . $id . "' "); reportLog($_SESSION['user_name'] . ' - заменил изображение баннера на (' . $d_name . ')', 2, 2); } else { echo "<script>alert('" . $config_vars['BANNER_NO_UPLOADED'] . ': ' . $d_name . "');</script>"; } } else { echo "<script>alert('" . $config_vars['BANNER_WRONG_TYPE'] . ': ' . $d_name . "');</script>"; } } $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 "<script>alert('" . $config_vars['BANNER_IS_UPLOADED'] . ': ' . $d_name . "');</script>"; reportLog($_SESSION['user_name'] . ' - добавил изображение баннера (' . $d_name . ')', 2, 2); $file = $d_name; } else { echo "<script>alert('" . $config_vars['BANNER_NO_UPLOADED'] . ': ' . $d_name . "');</script>"; } } else { echo "<script>alert('" . $config_vars['BANNER_WRONG_TYPE'] . ': ' . $d_name . "');</script>"; } } $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; } } ?>