Beispiel #1
0
 /**
  * Validates POSTed data
  * @return array List of errors in the POSTed data
  */
 public function validate()
 {
     $post = Http::getParameter('POST');
     $errors = array();
     // create payment ruleset
     if (!array_key_exists('Payment', $post)) {
         $errors[] = 'No payment submitted';
         return $errors;
     }
     $v = new Validation();
     $v->addRule('Payment.invoice_id', Validation::NOT_EMPTY, 'Invoice ID must not be empty');
     $v->addRule('Payment.invoice_id', Validation::NUMERIC, 'Invoice ID must be numeric');
     $v->addRule('Payment.billed', Validation::NOT_EMPTY, "Payment date must not be empty");
     $v->addRule('Payment.billed', '~\\d{8}~', "Payment date must have a valid date");
     $v->addRule('Payment.type', Validation::NOT_EMPTY, 'Payment type must not be empty');
     $v->addRule('Payment.total', Validation::NOT_EMPTY, 'Payment total must not be empty');
     $v->addRule('Payment.total', Validation::NUMERIC, 'Payment total must be numeric');
     $errors = $v->validateList(Set::flatten($post));
     // return
     return $errors;
 }
Beispiel #2
0
 ############################################################################################
 case 'register':
     $logs = check(strval($_POST['logs']));
     $pars = check(strval($_POST['pars']));
     $pars2 = check(strval($_POST['pars2']));
     $provkod = check(strtolower($_POST['provkod']));
     $invite = !empty($config['invite']) ? check(strval($_POST['invite'])) : '';
     $meil = !empty($config['regmail']) ? strtolower(check(strval($_POST['meil']))) : '';
     $domain = !empty($config['regmail']) ? utf_substr(strrchr($meil, '@'), 1) : '';
     $gender = $_POST['gender'] == 1 ? 1 : 2;
     $registration_key = '';
     $_SESSION['reglogs'] = $logs;
     $_SESSION['regmeil'] = $meil;
     $_SESSION['gender'] = $gender;
     $validation = new Validation();
     $validation->addRule('equal', array($provkod, $_SESSION['protect']), 'Проверочное число не совпало с данными на картинке!')->addRule('regex', array($logs, '|^[a-z0-9\\-]+$|i'), 'Недопустимые символы в логине. Разрешены знаки латинского алфавита, цифры и дефис!', true)->addRule('regex', array($pars, '|^[a-z0-9\\-]+$|i'), 'Недопустимые символы в пароле. Разрешены знаки латинского алфавита, цифры и дефис!', true)->addRule('email', $meil, 'Вы ввели неверный адрес e-mail, необходим формат name@site.domen!', $config['regmail'])->addRule('string', $invite, 'Слишком длинный или короткий пригласительный ключ!', $config['invite'], 15, 20)->addRule('string', $logs, 'Слишком длинный или короткий логин!', true, 3, 20)->addRule('string', $pars, 'Слишком длинный или короткий пароль!', true, 6, 20)->addRule('equal', array($pars, $pars2), 'Ошибка! Введенные пароли отличаются друг от друга!')->addRule('not_equal', array($logs, $pars), 'Пароль и логин должны отличаться друг от друга!');
     if (ctype_digit($pars)) {
         $validation->addError('Запрещен пароль состоящий только из цифр, используйте буквы!');
     }
     if (substr_count($logs, '-') > 2) {
         $validation->addError('Запрещено использовать в логине слишком много дефисов!');
     }
     if (!empty($logs)) {
         // Проверка логина или ника на существование
         $reglogin = DB::run()->querySingle("SELECT `users_id` FROM `users` WHERE LOWER(`users_login`)=? OR LOWER(`users_nickname`)=? LIMIT 1;", array(strtolower($logs), strtolower($logs)));
         $validation->addRule('empty', $reglogin, 'Пользователь с данным логином или ником уже зарегистрирован!');
         // Проверка логина в черном списке
         $blacklogin = DB::run()->querySingle("SELECT `black_id` FROM `blacklist` WHERE `black_type`=? AND `black_value`=? LIMIT 1;", array(2, strtolower($logs)));
         $validation->addRule('empty', $blacklogin, 'Выбранный вами логин занесен в черный список!');
     }
     if (!empty($config['regmail']) && !empty($meil)) {
Beispiel #3
0
     ##                                   Действие при оплате                                  ##
     ############################################################################################
 ############################################################################################
 ##                                   Действие при оплате                                  ##
 ############################################################################################
 case 'add':
     $config['newtitle'] = 'Оплата рекламы';
     if (is_user()) {
         $uid = !empty($_GET['uid']) ? check($_GET['uid']) : 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', array($uid, $_SESSION['token']), 'Неверный идентификатор сессии, повторите действие!')->addRule('max', array($udata['users_point'], 50), 'Для покупки рекламы вам необходимо набрать ' . points(50) . '!')->addRule('equal', array($provkod, $_SESSION['protect']), 'Проверочное число не совпало с данными на картинке!')->addRule('regex', array($site, '|^http://([а-я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', array($color, '|^#+[A-f0-9]{6}$|'), 'Недопустимый формат цвета ссылки! (пример #ff0000)', false);
         if ($validation->run()) {
             DBM::run()->delete('rekuser', array('rek_time' => array('<', SITETIME)));
             $total = DBM::run()->count('rekuser', array('rek_time' => array('>', SITETIME)));
             if ($total < $config['rekusertotal']) {
                 $rekuser = DBM::run()->selectFirst('rekuser', array('rek_user' => $log));
                 if (empty($rekuser)) {
                     $price = $config['rekuserprice'];
                     if (!empty($color)) {
                         $price = $price + $config['rekuseroptprice'];
                     }
                     if (!empty($bold)) {
                         $price = $price + $config['rekuseroptprice'];
                     }
                     if ($udata['users_money'] >= $price) {
                         $rek = DBM::run()->insert('rekuser', array('rek_site' => $site, 'rek_name' => $name, 'rek_color' => $color, 'rek_bold' => $bold, 'rek_user' => $log, 'rek_time' => SITETIME + $config['rekusertime'] * 3600));
Beispiel #4
0
     }
     echo '<img src="/images/img/back.gif" alt="image" /> <a href="account.php">Вернуться</a><br />';
     break;
     ############################################################################################
     ##                                     Изменение пароля                                   ##
     ############################################################################################
 ############################################################################################
 ##                                     Изменение пароля                                   ##
 ############################################################################################
 case 'editpass':
     $uid = !empty($_GET['uid']) ? check($_GET['uid']) : 0;
     $newpass = isset($_POST['newpass']) ? check($_POST['newpass']) : '';
     $newpass2 = isset($_POST['newpass2']) ? check($_POST['newpass2']) : '';
     $oldpass = isset($_POST['oldpass']) ? check($_POST['oldpass']) : '';
     $validation = new Validation();
     $validation->addRule('equal', array($uid, $_SESSION['token']), 'Неверный идентификатор сессии, повторите действие!')->addRule('equal', array(md5(md5($oldpass)), $udata['users_pass']), 'Введенный пароль не совпадает с данными в профиле!')->addRule('equal', array($newpass, $newpass2), 'Новые пароли не одинаковые!')->addRule('string', $newpass, 'Слишком длинный или короткий новый пароль!', true, 6, 20)->addRule('regex', array($newpass, '|^[a-z0-9\\-]+$|i'), 'Недопустимые символы в пароле, разрешены знаки латинского алфавита, цифры и дефис!', true)->addRule('not_equal', array($log, $newpass), 'Пароль и логин должны отличаться друг от друга!');
     if (ctype_digit($newpass)) {
         $validation->addError('Запрещен пароль состоящий только из цифр, используйте буквы!');
     }
     if ($validation->run()) {
         DB::run()->query("UPDATE `users` SET `users_pass`=? WHERE `users_login`=? LIMIT 1;", array(md5(md5($newpass)), $log));
         if (!empty($udata['users_email'])) {
             sendMail($udata['users_email'], 'Изменение пароля на сайте ' . $config['title'], nl2br("Здравствуйте, " . nickname($log) . " \nВами была произведена операция по изменению пароля \n\nВаш новый пароль: " . $newpass . " \nСохраните его в надежном месте \n\nДанные инициализации: \nIP: " . $ip . " \nБраузер: " . $brow . " \nВремя: " . date('j.m.y / H:i', SITETIME)));
         }
         unset($_SESSION['log'], $_SESSION['par']);
         notice('Пароль успешно изменен!');
         redirect("login.php");
     } else {
         show_error($validation->getErrors());
     }
     echo '<img src="/images/img/back.gif" alt="image" /> <a href="account.php">Вернуться</a><br />';
Beispiel #5
0
         redirect("index.php");
     }
     break;
     ############################################################################################
     ##                                   Добавление сообщения                                 ##
     ############################################################################################
 ############################################################################################
 ##                                   Добавление сообщения                                 ##
 ############################################################################################
 case 'add':
     $uid = !empty($_GET['uid']) ? check($_GET['uid']) : 0;
     $msg = isset($_POST['msg']) ? check($_POST['msg']) : '';
     if (is_user()) {
         $topics = DB::run()->queryFetch("SELECT `topics`.*, `forums`.`forums_parent` FROM `topics` LEFT JOIN `forums` ON `topics`.`topics_forums_id`=`forums`.`forums_id` WHERE `topics`.`topics_id`=? LIMIT 1;", array($tid));
         $validation = new Validation();
         $validation->addRule('equal', array($uid, $_SESSION['token']), 'Неверный идентификатор сессии, повторите действие!')->addRule('not_empty', $topics, 'Выбранная вами тема не существует, возможно она была удалена!')->addRule('empty', $topics['topics_closed'], 'Запрещено писать в закрытую тему!')->addRule('equal', array(is_quarantine($log), true), 'Карантин! Вы не можете писать в течении ' . round($config['karantin'] / 3600) . ' часов!')->addRule('equal', array(is_flood($log), true), 'Антифлуд! Разрешается отправлять сообщения раз в ' . flood_period() . ' сек!')->addRule('string', $msg, 'Слишком длинное или короткое сообщение!', true, 5, $config['forumtextlength']);
         // Проверка сообщения на схожесть
         $post = DB::run()->queryFetch("SELECT * FROM `posts` WHERE `posts_topics_id`=? ORDER BY `posts_id` DESC LIMIT 1;", array($tid));
         $validation->addRule('not_equal', array($msg, $post['posts_text']), 'Ваше сообщение повторяет предыдущий пост!');
         if ($validation->run()) {
             $msg = antimat($msg);
             if ($log == $post['posts_user'] && $post['posts_time'] + 600 > SITETIME && utf_strlen($msg) + utf_strlen($post['posts_text']) <= $config['forumtextlength']) {
                 $newpost = $post['posts_text'] . "\n\n" . '[i][size=1]Добавлено через ' . maketime(SITETIME - $post['posts_time']) . ' сек.[/size][/i]' . "\n" . $msg;
                 DB::run()->query("UPDATE `posts` SET `posts_text`=? WHERE `posts_id`=? LIMIT 1;", array($newpost, $post['posts_id']));
                 $lastid = $post['posts_id'];
             } else {
                 DB::run()->query("INSERT INTO `posts` (`posts_topics_id`, `posts_forums_id`, `posts_user`, `posts_text`, `posts_time`, `posts_ip`, `posts_brow`) VALUES (?, ?, ?, ?, ?, ?, ?);", array($tid, $topics['topics_forums_id'], $log, $msg, SITETIME, $ip, $brow));
                 $lastid = DB::run()->lastInsertId();
                 DB::run()->query("UPDATE `users` SET `users_allforum`=`users_allforum`+1, `users_point`=`users_point`+1, `users_money`=`users_money`+5 WHERE `users_login`=? LIMIT 1;", array($log));
                 DB::run()->query("UPDATE `topics` SET `topics_posts`=`topics_posts`+1, `topics_last_user`=?, `topics_last_time`=? WHERE `topics_id`=?;", array($log, SITETIME, $tid));
                 DB::run()->query("UPDATE `forums` SET `forums_posts`=`forums_posts`+1, `forums_last_id`=?, `forums_last_themes`=?, `forums_last_user`=?, `forums_last_time`=? WHERE `forums_id`=?;", array($tid, $topics['topics_title'], $log, SITETIME, $topics['topics_forums_id']));
Beispiel #6
0
     echo '<img src="/images/img/back.gif" alt="image" /> <a href="lostpassword.php">Вернуться</a><br />';
     break;
     ############################################################################################
     ##                            Ответ на секретный вопрос                                   ##
     ############################################################################################
 ############################################################################################
 ##                            Ответ на секретный вопрос                                   ##
 ############################################################################################
 case 'answer':
     $uz = check(strval($_POST['uz']));
     $answer = check(strval($_POST['answer']));
     $provkod = check($_POST['provkod']);
     $user = DB::run()->queryFetch("SELECT * FROM `users` WHERE `users_login`=? LIMIT 1;", array($uz));
     if (!empty($user)) {
         $validation = new Validation();
         $validation->addRule('equal', array($provkod, $_SESSION['protect']), 'Проверочное число не совпало с данными на картинке!')->addRule('not_empty', $answer, 'Не введен ответ на секретный вопрос для восстановления!')->addRule('not_empty', $user['users_secquest'], 'У данного пользователя не установлен секретный вопрос!')->addRule('equal', array(md5(md5($answer)), $user['users_secanswer']), 'Ответ на секретный вопрос не совпадает с данными в профиле!');
         if ($validation->run()) {
             $newpass = generate_password();
             $mdnewpas = md5(md5($newpass));
             DB::run()->query("UPDATE `users` SET `users_pass`=?, `users_keypasswd`=?, `users_timepasswd`=? WHERE `users_login`=?;", array($mdnewpas, '', 0, $uz));
             echo '<b>Пароль успешно восстановлен!</b><br />';
             echo 'Ваши новые данные для входа на сайт<br /><br />';
             echo 'Логин: <b>' . $user['users_login'] . '</b><br />';
             echo 'Пароль: <b>' . $newpass . '</b><br /><br />';
             echo '<img src="/images/img/open.gif" alt="image" /> ';
             echo '<b><a href="/input.php?login='******'users_login'] . '&amp;pass='******'">Вход на сайт</a></b><br /><br />';
             echo 'Запомните и постарайтесь больше не забывать данные, а лучше сделайте сразу закладку на наш сайт ' . $config['home'] . '/input.php?login='******'users_login'] . '&amp;pass='******'<br /><br />';
             echo 'Пароль вы сможете поменять в своем профиле<br /><br />';
         } else {
             show_error($validation->getErrors());
         }
Beispiel #7
0
     ############################################################################################
     ##                                       Изменение                                        ##
     ############################################################################################
     case 'edit':
         $uid = !empty($_GET['uid']) ? check($_GET['uid']) : 0;
         $name = isset($_POST['name']) ? check($_POST['name']) : '';
         $country = isset($_POST['country']) ? check($_POST['country']) : '';
         $city = isset($_POST['city']) ? check($_POST['city']) : '';
         $icq = !empty($_POST['icq']) ? check(str_replace('-', '', $_POST['icq'])) : '';
         $skype = isset($_POST['skype']) ? check(strtolower($_POST['skype'])) : '';
         $site = isset($_POST['site']) ? check($_POST['site']) : '';
         $birthday = isset($_POST['birthday']) ? check($_POST['birthday']) : '';
         $gender = isset($_POST['gender']) ? intval($_POST['gender']) : 0;
         $info = isset($_POST['info']) ? check($_POST['info']) : '';
         $validation = new Validation();
         $validation->addRule('equal', array($uid, $_SESSION['token']), 'Неверный идентификатор сессии, повторите действие!')->addRule('regex', array($site, '#^http://([а-яa-z0-9_\\-\\.])+(\\.([а-яa-z0-9\\/])+)+$#u'), 'Недопустимый адрес сайта, необходим формата http://my_site.domen!', false)->addRule('regex', array($birthday, '#^[0-9]{2}+\\.[0-9]{2}+\\.[0-9]{4}$#'), 'Недопустимый формат даты рождения, необходим формат дд.мм.гггг!', false)->addRule('regex', array($icq, '#^[0-9]{5,10}$#'), 'Недопустимый формат ICQ, только цифры от 5 до 10 символов!', false)->addRule('regex', array($skype, '#^[a-z]{1}[0-9a-z\\_\\.\\-]{5,31}$#'), 'Недопустимый формат Skype, только латинские символы от 6 до 32!', false)->addRule('numeric', $gender, 'Вы не указали ваш пол!', true, 1, 2)->addRule('string', $info, 'Слишком большая информация о себе, не более 1000 символов!', true, 0, 1000);
         if ($validation->run()) {
             $name = utf_substr($name, 0, 20);
             $country = utf_substr($country, 0, 30);
             $city = utf_substr($city, 0, 50);
             DB::run()->query("UPDATE `users` SET `users_name`=?, `users_country`=?, `users_city`=?, `users_icq`=?, `users_skype`=?, `users_site`=?, `users_birthday`=?, `users_gender`=?, `users_info`=? WHERE `users_login`=? LIMIT 1;", array($name, $country, $city, $icq, $skype, $site, $birthday, $gender, $info, $log));
             notice('Ваш профиль успешно изменен!');
             redirect("profile.php");
         } else {
             show_error($validation->getErrors());
         }
         echo '<img src="/images/img/back.gif" alt="image" /> <a href="profile.php">Вернуться</a><br />';
         break;
     default:
         redirect("profile.php");
 }
Beispiel #8
0
/**
 * Returns configuration errors
 * @param array $config
 * @return array 
 */
function find_configuration_errors($config)
{
    // create ruleset
    $v = new Validation();
    //$v->addRule('base_url', Validation::NOT_EMPTY, 'Base URL must not be empty');
    //$v->addRule('base_url', Validation::URL, 'Base URL must be a valid URL');
    $v->addRule('db.host', Validation::NOT_EMPTY, 'Database Host must not be empty');
    $v->addRule('db.host', Validation::STRING, 'Database Host must be a string');
    $v->addRule('db.name', Validation::NOT_EMPTY, 'Database Name must not be empty');
    $v->addRule('db.name', Validation::STRING, 'Database Name must be a string');
    $v->addRule('db.username', Validation::NOT_EMPTY, 'Database Username must not be empty');
    $v->addRule('db.username', Validation::STRING, 'Database Username must be a string');
    //$v->addRule('db.password', Validation::NOT_EMPTY, 'Database Password must not be empty');
    $v->addRule('db.password', Validation::STRING, 'Database Password must be a string');
    $v->addRule('user.name', Validation::NOT_EMPTY, 'User Name must not be empty');
    $v->addRule('user.name', Validation::STRING, 'User Name must be a string');
    $v->addRule('user.email', Validation::NOT_EMPTY, 'E-mail must not be empty');
    $v->addRule('user.email', Validation::STRING, 'E-mail must be a string');
    $v->addRule('user.email', Validation::EMAIL, 'E-mail must be a valid e-mail address');
    $v->addRule('user.address1', Validation::STRING, 'Address 1 must be a string');
    $v->addRule('user.address2', Validation::STRING, 'Address 2 must be a string');
    $v->addRule('user.city', Validation::STRING, 'City must be a string');
    $v->addRule('user.state', Validation::STRING, 'State/Province must be a string');
    $v->addRule('user.zip', Validation::STRING, 'Postal Code must be a string');
    $v->addRule('user.country', Validation::STRING, 'Country must be a string');
    $v->addRule('default_invoice_theme', Validation::STRING, 'Default Invoice Theme must be a string');
    $v->addRule('default_receipt_theme', Validation::STRING, 'Default Receipt Theme must be a string');
    $v->addRule('default_wage', Validation::NUMERIC, 'Default Wage must be a decimal number');
    // get errors
    $errors = $v->validateList(Set::flatten($config));
    // test database connnection
    try {
        get_database($config);
    } catch (Exception $e) {
        $errors[] = 'Could not connect to database with the given database information';
    }
    // return
    return Set::flatten($errors);
}
Beispiel #9
0
     echo '<img src="/images/img/back.gif" alt="image" /> <a href="news.php">Вернуться</a><br />';
     break;
     ############################################################################################
     ##                                  Добавление новости                                    ##
     ############################################################################################
 ############################################################################################
 ##                                  Добавление новости                                    ##
 ############################################################################################
 case 'addnews':
     $uid = !empty($_GET['uid']) ? check($_GET['uid']) : 0;
     $msg = isset($_POST['msg']) ? check($_POST['msg']) : '';
     $title = isset($_POST['title']) ? check($_POST['title']) : '';
     $top = empty($_POST['top']) ? 0 : 1;
     $closed = empty($_POST['closed']) ? 0 : 1;
     $validation = new Validation();
     $validation->addRule('equal', array($uid, $_SESSION['token']), 'Неверный идентификатор сессии, повторите действие!')->addRule('string', $title, 'Слишком длинный или короткий заголовок события!', true, 5, 50)->addRule('string', $msg, 'Слишком длинный или короткий текст события!', true, 5, 10000);
     if ($validation->run()) {
         DB::run()->query("INSERT INTO `news` (`news_title`, `news_text`, `news_author`, `news_time`, `news_comments`, `news_closed`, `news_top`) VALUES (?, ?, ?, ?, ?, ?, ?);", array($title, $msg, $log, SITETIME, 0, $closed, $top));
         $lastid = DB::run()->lastInsertId();
         // Выводим на главную если там нет новостей
         if (!empty($top) && empty($config['lastnews'])) {
             DB::run()->query("UPDATE `setting` SET `setting_value`=? WHERE `setting_name`=?;", array(1, 'lastnews'));
             save_setting();
         }
         // ---------------------------- Загрузка изображения -------------------------------//
         if (is_uploaded_file($_FILES['image']['tmp_name'])) {
             $handle = upload_image($_FILES['image'], $config['filesize'], $config['fileupfoto'], $lastid);
             if ($handle) {
                 $handle->process(BASEDIR . '/upload/news/');
                 if ($handle->processed) {
                     DB::run()->query("UPDATE `news` SET `news_image`=? WHERE `news_id`=? LIMIT 1;", array($handle->file_dst_name, $lastid));
Beispiel #10
0
            show_error('Ошибка! Данная страница доступна только администрации!');
        }
        echo '<img src="/images/img/back.gif" alt="Назад" /> <a href="user.php?uz=' . $uz . '">Вернуться</a><br />';
        break;
        ############################################################################################
        ##                                    Изменене заметки                                    ##
        ############################################################################################
    ############################################################################################
    ##                                    Изменене заметки                                    ##
    ############################################################################################
    case 'editnote':
        $uid = !empty($_GET['uid']) ? check($_GET['uid']) : 0;
        $note = isset($_POST['note']) ? check($_POST['note']) : '';
        if (is_admin()) {
            $validation = new Validation();
            $validation->addRule('equal', array($uid, $_SESSION['token']), 'Неверный идентификатор сессии, повторите действие!')->addRule('not_empty', user($uz), 'Пользователя с данным логином не существует!')->addRule('string', $note, 'Слишком большая заметка, не более 1000 символов!', true, 0, 1000);
            if ($validation->run()) {
                DB::run()->query("INSERT INTO `note` (`note_user`, `note_text`, `note_edit`, `note_time`) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE `note_text`=?, `note_edit`=?, `note_time`=?;", array($uz, $note, $log, SITETIME, $note, $log, SITETIME));
                notice('Заметка успешно сохранена!');
                redirect("user.php?uz={$uz}");
            } else {
                show_error($validation->getErrors());
            }
        } else {
            show_error('Ошибка! Данная страница доступна только администрации!');
        }
        echo '<img src="/images/img/back.gif" alt="Назад" /> <a href="user.php?act=note&amp;uz=' . $uz . '">Вернуться</a><br />';
        break;
    default:
        redirect('user.php');
}
Beispiel #11
0
            redirect("notice.php?act=edit&id={$id}");
        } else {
            show_error($validation->getErrors());
        }
        render('includes/back', array('link' => 'notice.php?act=edit&amp;id=' . $id, 'title' => 'Вернуться'));
        break;
        /**
         * Удаление шаблона
         */
    /**
     * Удаление шаблона
     */
    case 'del':
        $uid = !empty($_GET['uid']) ? check($_GET['uid']) : 0;
        $notice = DBM::run()->selectFirst('notice', array('notice_id' => $id));
        $validation = new Validation();
        $validation->addRule('equal', array($uid, $_SESSION['token']), 'Неверный идентификатор сессии, повторите действие!')->addRule('not_empty', $notice, 'Не найден шаблон для удаления!')->addRule('empty', $notice['notice_protect'], 'Запрещено удалять защищенный шаблон!');
        if ($validation->run()) {
            $delete = DBM::run()->delete('notice', array('notice_id' => $id));
            notice('Выбранный шаблон успешно удален!');
            redirect("notice.php");
        } else {
            show_error($validation->getErrors());
        }
        render('includes/back', array('link' => 'notice.php', 'title' => 'Вернуться'));
        break;
    default:
        redirect("notice.php");
}
render('includes/back', array('link' => '/admin/', 'title' => 'В админку', 'icon' => 'panel.gif'));
include_once '../themes/footer.php';
Beispiel #12
0
 /**
  * Validates POSTed data
  */
 public function validate()
 {
     $post = Http::getParameter('POST');
     $errors = array();
     // create invoice ruleset
     if (!array_key_exists('Invoice', $post)) {
         $errors[] = 'No invoice submitted';
         return $errors;
     }
     $v = new Validation();
     $v->addRule('Invoice.project', Validation::NOT_EMPTY, 'Project name must not be empty');
     $v->addRule('Invoice.total', Validation::IS_NULL, 'Project total must be empty');
     $errors = $v->validateList(Set::flatten($post));
     // create entry ruleset
     if (!array_key_exists('Entry', $post['Invoice'])) {
         $errors[] = 'No billable entries submitted';
         return $errors;
     }
     foreach ($post['Invoice']['Entry'] as $i => $entry) {
         $v = new Validation();
         // check name
         $v->addRule('name', Validation::NOT_EMPTY, "Entry '{$i}' must have a name");
         if (!array_key_exists('name', $entry)) {
             $entry['name'] = '#' . $i;
         }
         // etc...
         $v->addRule('billed', Validation::NOT_EMPTY, "Entry '{$entry['name']}' must not have an empty date");
         $v->addRule('billed', '~\\d{8}~', "Entry '{$entry['name']}' must have a valid date");
         $v->addRule('quantity', Validation::NUMERIC, "Entry '{$entry['name']}' must have a valid quantity");
         $v->addRule('amount_per', Validation::NUMERIC, "Entry '{$entry['name']}' must have a valid price");
         // validate
         $errors = array_merge($errors, $v->validateList($entry));
     }
     // create discount ruleset
     foreach ($post['Invoice']['Discount'] as $i => $discount) {
         $v = new Validation();
         // check type
         $types = array('fixed', 'percent');
         if (!array_key_exists('type', $discount) || !in_array($discount['type'], $types)) {
             throw new Exception('Discount has no type', 500);
         }
         // check quantity
         $v->addRule('quantity', Validation::NUMERIC, "Discount must have a valid quantity");
         // validate
         $errors = array_merge($errors, $v->validateList($entry));
     }
     // create payment ruleset
     if (array_key_exists('Payment', $post['Invoice'])) {
         foreach ($post['Invoice']['Payment'] as $i => $payment) {
             // TODO
         }
     }
     // return
     return $errors;
 }
Beispiel #13
0
     break;
     ############################################################################################
     ##                                     Cоздание темы                                      ##
     ############################################################################################
 ############################################################################################
 ##                                     Cоздание темы                                      ##
 ############################################################################################
 case 'add':
     $uid = !empty($_GET['uid']) ? check($_GET['uid']) : 0;
     $fid = isset($_POST['fid']) ? abs(intval($_POST['fid'])) : 0;
     $title = isset($_POST['title']) ? check($_POST['title']) : '';
     $msg = isset($_POST['msg']) ? check($_POST['msg']) : '';
     if (is_user()) {
         $forums = DB::run()->queryFetch("SELECT * FROM `forums` WHERE `forums_id`=? LIMIT 1;", array($fid));
         $validation = new Validation();
         $validation->addRule('equal', array($uid, $_SESSION['token']), 'Неверный идентификатор сессии, повторите действие!')->addRule('not_empty', $forums, 'Раздела для новой темы не существует!')->addRule('empty', $forums['forums_closed'], 'В данном разделе запрещено создавать темы!')->addRule('equal', array(is_quarantine($log), true), 'Карантин! Вы не можете писать в течении ' . round($config['karantin'] / 3600) . ' часов!')->addRule('equal', array(is_flood($log), true), 'Антифлуд! Разрешается отправлять сообщения раз в ' . flood_period() . ' сек!')->addRule('string', $title, 'Слишком длинный или короткий заголовок темы!', true, 5, 50)->addRule('string', $msg, 'Слишком длинное или короткое сообщение!', true, 5, $config['forumtextlength']);
         /* Сделать проверку поиска похожей темы */
         if ($validation->run()) {
             $title = antimat($title);
             $msg = antimat($msg);
             DB::run()->query("UPDATE `users` SET `users_allforum`=`users_allforum`+1, `users_point`=`users_point`+1, `users_money`=`users_money`+5 WHERE `users_login`=?", array($log));
             DB::run()->query("INSERT INTO `topics` (`topics_forums_id`, `topics_title`, `topics_author`, `topics_posts`, `topics_last_user`, `topics_last_time`) VALUES (?, ?, ?, ?, ?, ?);", array($fid, $title, $log, 1, $log, SITETIME));
             $lastid = DB::run()->lastInsertId();
             DB::run()->query("INSERT INTO `posts` (`posts_topics_id`, `posts_forums_id`, `posts_user`, `posts_text`, `posts_time`, `posts_ip`, `posts_brow`) VALUES (?, ?, ?, ?, ?, ?, ?);", array($lastid, $fid, $log, $msg, SITETIME, $ip, $brow));
             DB::run()->query("UPDATE `forums` SET `forums_topics`=`forums_topics`+1, `forums_posts`=`forums_posts`+1, `forums_last_id`=?, `forums_last_themes`=?, `forums_last_user`=?, `forums_last_time`=? WHERE `forums_id`=?", array($lastid, $title, $log, SITETIME, $fid));
             // Обновление родительского форума
             if ($forums['forums_parent'] > 0) {
                 DB::run()->query("UPDATE `forums` SET `forums_last_id`=?, `forums_last_themes`=?, `forums_last_user`=?, `forums_last_time`=? WHERE `forums_id`=?", array($lastid, $title, $log, SITETIME, $forums['forums_parent']));
             }
             notice('Новая тема успешно создана!');
             redirect("topic.php?tid={$lastid}");
Beispiel #14
0
     }
     echo '<img src="/images/img/back.gif" alt="image" /> <a href="index.php">К новостям</a><br />';
     break;
     ############################################################################################
     ##                                Добавление комментариев                                 ##
     ############################################################################################
 ############################################################################################
 ##                                Добавление комментариев                                 ##
 ############################################################################################
 case 'add':
     $uid = !empty($_GET['uid']) ? check($_GET['uid']) : 0;
     $msg = isset($_POST['msg']) ? check($_POST['msg']) : '';
     if (is_user()) {
         $data = DB::run()->queryFetch("SELECT * FROM `news` WHERE `news_id`=? LIMIT 1;", array($id));
         $validation = new Validation();
         $validation->addRule('equal', array($uid, $_SESSION['token']), 'Неверный идентификатор сессии, повторите действие!')->addRule('equal', array(is_quarantine($log), true), 'Карантин! Вы не можете писать в течении ' . round($config['karantin'] / 3600) . ' часов!')->addRule('equal', array(is_flood($log), true), 'Антифлуд! Разрешается комментировать раз в ' . flood_period() . ' сек!')->addRule('not_empty', $data, 'Выбранной новости не существует, возможно она было удалена!')->addRule('string', $msg, 'Слишком длинный или короткий комментарий!', true, 5, 1000)->addRule('empty', $data['news_closed'], 'Комментирование данной новости запрещено!');
         if ($validation->run()) {
             $msg = antimat($msg);
             DB::run()->query("INSERT INTO `commnews` (`commnews_news_id`, `commnews_text`, `commnews_author`, `commnews_time`, `commnews_ip`, `commnews_brow`) VALUES (?, ?, ?, ?, ?, ?);", array($id, $msg, $log, SITETIME, $ip, $brow));
             DB::run()->query("DELETE FROM `commnews` WHERE `commnews_news_id`=? AND `commnews_time` < (SELECT MIN(`commnews_time`) FROM (SELECT `commnews_time` FROM `commnews` WHERE `commnews_news_id`=? ORDER BY `commnews_time` DESC LIMIT " . $config['maxkommnews'] . ") AS del);", array($id, $id));
             DB::run()->query("UPDATE `news` SET `news_comments`=`news_comments`+1 WHERE `news_id`=?;", array($id));
             DB::run()->query("UPDATE `users` SET `users_allcomments`=`users_allcomments`+1, `users_point`=`users_point`+1, `users_money`=`users_money`+5 WHERE `users_login`=?", array($log));
             notice('Комментарий успешно добавлен!');
             if (isset($_GET['read'])) {
                 redirect("index.php?act=read&id={$id}");
             }
             redirect("index.php?act=end&id={$id}");
         } else {
             show_error($validation->getErrors());
         }
     } else {
Beispiel #15
0
     break;
     ############################################################################################
     ##                            Редактирование выбранного события                           ##
     ############################################################################################
 ############################################################################################
 ##                            Редактирование выбранного события                           ##
 ############################################################################################
 case 'change':
     $uid = !empty($_GET['uid']) ? check($_GET['uid']) : 0;
     $msg = isset($_POST['msg']) ? check($_POST['msg']) : '';
     $title = isset($_POST['title']) ? check($_POST['title']) : '';
     $closed = empty($_POST['closed']) ? 0 : 1;
     $top = empty($_POST['top']) ? 0 : 1;
     $dataevent = DB::run()->queryFetch("SELECT * FROM `events` WHERE `event_id`=? LIMIT 1;", array($id));
     $validation = new Validation();
     $validation->addRule('equal', array($uid, $_SESSION['token']), 'Неверный идентификатор сессии, повторите действие!')->addRule('not_empty', $dataevent, 'Выбранного события не существует, возможно оно было удалено!')->addRule('string', $title, 'Слишком длинный или короткий заголовок события!', true, 5, 50)->addRule('string', $msg, 'Слишком длинный или короткий текст события!', true, 5, 10000);
     if ($validation->run()) {
         DB::run()->query("UPDATE `events` SET `event_title`=?, `event_text`=?, `event_closed`=?, `event_top`=? WHERE `event_id`=? LIMIT 1;", array($title, $msg, $closed, $top, $id));
         // ---------------------------- Загрузка изображения -------------------------------//
         if (is_uploaded_file($_FILES['image']['tmp_name'])) {
             $handle = upload_image($_FILES['image'], $config['filesize'], $config['fileupfoto'], $id);
             if ($handle) {
                 // Удаление старой картинки
                 if (!empty($dataevent['event_image'])) {
                     unlink_image('upload/events/', $dataevent['event_image']);
                 }
                 $handle->process(BASEDIR . '/upload/events/');
                 if ($handle->processed) {
                     DB::run()->query("UPDATE `events` SET `event_image`=? WHERE `event_id`=? LIMIT 1;", array($handle->file_dst_name, $id));
                     $handle->clean();
                 } else {
Beispiel #16
0
     render('includes/back', array('link' => 'smiles.php?start=' . $start, 'title' => 'Вернуться'));
     break;
     /**
      * Изменение смайла
      */
 /**
  * Изменение смайла
  */
 case 'change':
     $uid = !empty($_GET['uid']) ? check($_GET['uid']) : 0;
     $code = isset($_POST['code']) ? check(utf_lower($_POST['code'])) : '';
     $smile = DBM::run()->selectFirst('smiles', array('smiles_id' => $id));
     $checkcode = DBM::run()->selectFirst('smiles', array('smiles_code' => $code, 'smiles_id' => $id));
     $checkcode = DBM::run()->queryFirst("SELECT `smiles_id` FROM `smiles` WHERE `smiles_code`=:code AND `smiles_id`<>:id LIMIT 1;", compact('code', 'id'));
     $validation = new Validation();
     $validation->addRule('equal', array($uid, $_SESSION['token']), 'Неверный идентификатор сессии, повторите действие!')->addRule('not_empty', $smile, 'Не найден смайл для редактирования!')->addRule('empty', $checkcode, 'Смайл с данным кодом уже имеется в списке!')->addRule('string', $code, 'Слишком длинный или короткий код смайла!', true, 1, 20)->addRule('regex', array($code, '|^:+[a-яa-z0-9_\\-/\\(\\)]+$|i'), 'Код смайла должен начинаться с двоеточия. Разрешены буквы, цифры и дефис!', true);
     if ($validation->run()) {
         if (!preg_match('/[А-Яа-яЁё]/u', $code)) {
             $newname = rename_file($smile['smiles_name'], substr($code, 1));
         } else {
             $newname = $smile['smiles_name'];
         }
         if (rename(BASEDIR . '/images/smiles/' . $smile['smiles_name'], BASEDIR . '/images/smiles/' . $newname)) {
             $smile = DBM::run()->update('smiles', array('smiles_name' => $newname, 'smiles_code' => $code), array('smiles_id' => $id));
             clearCache();
             notice('Смайл успешно отредактирован!');
             redirect("smiles.php?start={$start}");
         } else {
             show_error('Ошибка! Не удалось переименовать файл смайла!');
         }
     } else {