View file sys/plugins/classes/adt.class.php

File size: 2.95Kb
<?php

/**
 * Реклама
 */
class adt extends menu {

    function __construct() {
        parent::__construct();
        $this->menu_arr = array(
            'Под заголовком' => array('id' => 'top', 'url' => '?id=top', 'icon' => 'adt.png'),
            'Низ сайта' => array('id' => 'bottom', 'url' => '?id=bottom', 'icon' => 'adt.png')
        );
    }

    function __get($id) {
        return $this->getArrayAdtForId($id);
    }

    /**
     * Возвращает название рекламной площадки по id, если таковая существует
     * @param type $id
     * @return mixed(string||boolean)
     */
    function getNameById($id) {
        foreach ($this->menu_arr as $key => $value) {
            if (isset($value['id']) && $value['id'] == $id)
                return $key;
        }
        // в случае неудачи возвращаем false
        return false;
    }

    /**
     * Получение рекламной позиции в виде массива
     * @global dcms $dcms
     * @param string $id площадка (top, bottom)
     * @return array
     */
    private function getArrayAdtForId($id) {
        global $dcms;
        $return = array();
        if ($this->getNameById($id)) {
            $target = $dcms->browser_type == 'web' ? ' target="_blank"' : '';
            $q = mysql_query("SELECT * FROM `advertising` WHERE `space` = '" . my_esc($id) . "' AND `" . (IS_MAIN ? 'page_main' : 'page_other') . "` = '1' AND (`time_start` < '" . TIME . "' OR `time_start` = '0') AND (`time_end` > '" . TIME . "' OR `time_end` = '0') ORDER BY `time_start` ASC");
            while ($adt = mysql_fetch_assoc($q)) {
                if ($adt['url_img']) {
                    $return[]['0'] = '<a rel="nofollow" href="http://' . $_SERVER['HTTP_HOST'] . '/link.ext.php?url=' . urlencode($adt['url_link']) . '"' . $target . '><img src="' . $adt['url_img'] . '" alt="' . for_value($adt['name']) . '" /></a>';
                } else {
                    $return[]['0'] = '<a rel="nofollow" ' . ($adt['bold'] ? 'class="DCMS_font_bold"' : '') . ' href="http://' . $_SERVER['HTTP_HOST'] . '/link.ext.php?url=' . urlencode($adt['url_link']) . '"' . $target . '>' . for_value($adt['name']) . '</a>';
                }
            }
            if (!isset($_SESSION['adt'][$id]['time_show']) || $_SESSION['adt'][$id]['time_show'] < TIME - 10) {
                // показ рекламы засчитывается один раз в 10 секунд
                $_SESSION['adt'][$id]['time_show'] = TIME;
                mysql_query("UPDATE `advertising` SET `count_show_" . $dcms->browser_type . "` = `count_show_" . $dcms->browser_type . "` + 1 WHERE `space` = '" . my_esc($id) . "' AND `" . (IS_MAIN ? 'page_main' : 'page_other') . "` = '1' AND (`time_start` < '" . TIME . "' OR `time_start` = '0') AND (`time_end` > '" . TIME . "' OR `time_end` = '0')");
            }
        }
        return $return;
    }

}

?>