2016-05-31 20:24:43 +03:00
< ? 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 )
{
2016-06-03 17:51:22 +03:00
$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>' ;
2016-05-31 20:24:43 +03:00
}
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 ;
}
}
?>