Просмотр файла app/modules/pages/reklama.php

Размер файла: 10.26Kb
<?php
App::view($config['themes'].'/index');

show_title('Реклама на сайте');

if (!empty($config['rekusershow'])) {
switch ($act):
############################################################################################
##                                    Главная страница                                    ##
############################################################################################

case 'index':

    $config['newtitle'] = 'Список всех ссылок';

    $total = DBM::run()->count('rekuser', ['time' => ['>', SITETIME]]);
    $page = App::paginate(App::setting('rekuserpost'), $total);

    if ($total > 0) {

        $reklama = DBM::run()->select('rekuser', [
            'time' => ['>', SITETIME],
        ], $config['rekuserpost'], $page['offset'], ['time'=>'DESC']);

        foreach($reklama as $data) {
            echo '<div class="b">';
            echo '<i class="fa fa-check-circle"></i> ';
            echo '<b><a href="'.$data['site'].'">'.$data['name'].'</a></b> ('.profile($data['user']).')</div>';

            echo 'Истекает: '.date_fixed($data['time']).'<br />';

            if (! empty($data['color'])) {
                echo 'Цвет: <span style="color:'.$data['color'].'">'.$data['color'].'</span>, ';
            } else {
                echo 'Цвет: нет, ';
            }

            if (! empty($data['bold'])) {
                echo 'Жирность: есть<br />';
            } else {
                echo 'Жирность: нет<br />';
            }
        }

        App::pagination($page);

        echo 'Всего ссылок: <b>'.$total.'</b><br /><br />';
    } else {
        show_error('В данный момент рекламных ссылок еще нет!');
    }

    echo '<i class="fa fa-money"></i> <a href="/reklama/create">Купить рекламу</a><br />';
    break;

############################################################################################
##                                   Добавление ссылки                                    ##
############################################################################################
case 'create':

    if (is_user()) {
        if ($udata['point'] >= 50) {

            if (Request::isMethod('post')) {
                $token = !empty($_POST['token']) ? check($_POST['token']) : 0;
                $site = isset($_POST['site']) ? check($_POST['site']) : '';
                $name = isset($_POST['name']) ? check($_POST['name']) : '';
                $color = isset($_POST['color']) ? check($_POST['color']) : '';
                $bold = (empty($_POST['bold'])) ? 0 : 1;
                $provkod = isset($_POST['provkod']) ? check(strtolower($_POST['provkod'])) : '';

                $validation = new Validation();

                $validation -> addRule('equal', [$token, $_SESSION['token']], 'Неверный идентификатор сессии, повторите действие!')
                    -> addRule('max', [$udata['point'], 50], 'Для покупки рекламы вам необходимо набрать '.points(50).'!')
                    -> addRule('equal', [$provkod, $_SESSION['protect']], 'Проверочное число не совпало с данными на картинке!')
                    -> addRule('regex', [$site, '|^https?://([а-яa-z0-9_\-\.])+(\.([а-яa-z0-9\/\-?_=#])+)+$|iu'], 'Недопустимый адрес сайта!. Разрешены символы [а-яa-z0-9_-.?=#/]!', true)
                    -> addRule('string', $site, 'Слишком длинный или короткий адрес ссылки!', true, 5, 50)
                    -> addRule('string', $name, 'Слишком длинное или короткое название ссылки!', true, 5, 35)
                    -> addRule('regex', [$color, '|^#+[A-f0-9]{6}$|'], 'Недопустимый формат цвета ссылки! (пример #ff0000)', false);

                if ($validation->run()) {

                    DBM::run()->delete('rekuser', ['time' => ['<', SITETIME]]);

                    $total = DBM::run()->count('rekuser', ['time' => ['>', SITETIME]]);

                    if ($total < $config['rekusertotal']) {

                        $rekuser = DBM::run()->selectFirst('rekuser', ['user' => $log]);

                        if (empty($rekuser)) {
                            $price = $config['rekuserprice'];

                            if (!empty($color)) {
                                $price = $price + $config['rekuseroptprice'];
                            }

                            if (!empty($bold)) {
                                $price = $price + $config['rekuseroptprice'];
                            }

                            if ($udata['money'] >= $price) {

                                $rek = DBM::run()->insert('rekuser', [
                                    'site'  => $site,
                                    'name'  => $name,
                                    'color' => $color,
                                    'bold' => $bold,
                                    'user' => $log,
                                    'time' => SITETIME + ($config['rekusertime'] * 3600),
                                ]);

                                $user = DBM::run()->update('users', [
                                    'money' => ['-', $price],
                                ], [
                                    'login' => $log
                                ]);

                                save_advertuser();

                                notice('Рекламная ссылка успешно размещена (Cписано: '.moneys($price).')');
                                redirect("/reklama");

                            } else {
                                show_error('Ошибка! Для покупки рекламы у вас недостаточно денег!');
                            }
                        } else {
                            show_error('Ошибка! Вы уже разместили рекламу, запрещено добавлять несколько сайтов подряд!');
                        }
                    } else {
                        show_error('Ошибка! В данный момент нет свободных мест для размещения рекламы!');
                    }
                } else {
                    show_error($validation->getErrors());
                }
            }


            $total = DBM::run()->count('rekuser', ['time' => ['>', SITETIME]]);

            if ($total < $config['rekusertotal']) {

                $rekuser = DBM::run()->selectFirst('rekuser', ['user' => $log, 'time' => ['>', SITETIME]]);

                if (empty($rekuser)) {
                    echo 'У вас в наличии: <b>'.moneys($udata['money']).'</b><br /><br />';

                    echo '<div class="form">';
                    echo '<form method="post" action="/reklama/create">';
                    echo '<input type="hidden" name="token" value="'.$_SESSION['token'].'">';

                    echo 'Адрес сайта:<br />';
                    echo '<input name="site" type="text" value="http://" maxlength="50" /><br />';

                    echo 'Название ссылки:<br />';
                    echo '<input name="name" type="text" maxlength="35" /><br />';

                    echo 'Код цвета:';

                    if (file_exists(BASEDIR.'/modules/services/colors.php')) {
                        echo ' <a href="/services/colors">(?)</a>';
                    }
                    echo '<br />';
                    echo '<input name="color" type="text" maxlength="7" /><br />';

                    echo 'Жирность: ';
                    echo '<input name="bold" type="checkbox" value="1" /><br />';

                    echo 'Проверочный код:<br />';
                    echo '<img src="/captcha" alt="" /><br />';
                    echo '<input name="provkod" size="6" maxlength="6" /><br />';

                    echo '<br /><input value="Купить" type="submit" /></form></div><br />';

                    echo 'Стоимость размещения ссылки '.moneys($config['rekuserprice']).' за '.$config['rekusertime'].' часов<br />';
                    echo 'Цвет и жирность опционально, стоимость каждой опции '.moneys($config['rekuseroptprice']).'<br />';
                    echo 'Ссылка прокручивается на всех страницах сайта с другими ссылками пользователей<br />';
                    echo 'В названии ссылки запрещено использовать любые ненормативные и матные слова<br />';
                    echo 'Адрес ссылки не должен направлять на прямое скачивание какого-либо контента<br />';
                    echo 'Запрещены ссылки на сайты с алярмами и порно<br />';
                    echo 'За нарушение правил предусмотрено наказание в виде строгого бана<br /><br />';

                } else {
                    show_error('Ошибка! Вы уже разместили рекламу, запрещено добавлять несколько сайтов подряд!');
                }
            } else {
                show_error('В данный момент нет свободных мест для размещения рекламы!');
            }
        } else {
            show_error('Ошибка! Для покупки рекламы вам необходимо набрать '.points(50).'!');
        }
    } else {
        show_login('Вы не авторизованы, для покупки рекламы, необходимо');
    }

    echo '<i class="fa fa-arrow-circle-left"></i> <a href="/reklama">Вернуться</a><br />';
break;

endswitch;

} else {
    show_error('Показ и размещение рекламы запрещено администрацией сайта!');
}

App::view($config['themes'].'/foot');