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
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)
|
||
|
{
|
||
9 years ago
|
$output = '<a target="' . $banner['Target'] . '" href="index.php?module=' . BANNER_DIR . '&id=' . $banner['Id'] . '"><img style="width:100%" src="'. ABS_PATH .'modules/' . BANNER_DIR . '/files/' . $banner['Bannertags'] . '" alt="' . $banner['Bannername'] . ': ' . $banner['BildAlt'] . '" border="0" /></a>';
|
||
9 years ago
|
}
|
||
|
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;
|
||
|
}
|
||
|
}
|
||
|
?>
|