Модуль Баннер v2.26.0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

448 lines
14 KiB

9 years ago
<?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 . '&amp;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 . '&amp;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;
}
}
?>