function IndexForumEditTopic() { global $forum_lang; if (!System::user()->Auth) { System::site()->AddTextBox($forum_lang['forum'], '<p align="center">' . $forum_lang['error_auth'] . '</p>'); return; } $topic = SafeEnv($_GET['topic'], 11, int); $post = System::database()->Select('forum_posts', "`object`='{$topic}' and `delete`='0'"); SortArray($post, 'id', false); System::database()->Select('forum_topics', "`id`='{$topic}'"); $topic = System::database()->FetchRow(); if ($topic['delete'] == 0 || System::config('forum/basket') == false) { $title = ''; if (SafeDB($topic['starter_id'], 11, str) == System::user()->Get('u_id') or System::user()->IsAdmin()) { $title = SafeDB($topic['title'], 0, str); } if (System::user()->Get('u_id') == $post[0]['user_id'] || System::user()->isAdmin()) { ForumRenderPostForm(true, 0, SafeEnv($_GET['topic'], 11, int), SafeDB($post[0]['id'], 11, int), SafeDB($post[0]['message'], 0, str, false, true), $title); } else { System::site()->AddTextBox($forum_lang['forum'], '<p align="center">' . $forum_lang['no_right_comment_edit'] . '</p>'); return; } } else { System::site()->AddTextBox($forum_lang['topic_basket_current_post'], '<p align="center">' . $forum_lang['topic_basket_post'] . '<br><input type="button" value="' . $forum_lang['back'] . '"onclick="history.back();"></p>'); } }
function FormsCheckType($var, $typearr, &$error = null, &$filename = null) { if ($typearr[1] == 'file') { $file_save_dir = 'uploads/forms'; if (!is_dir($file_save_dir)) { mkdir($file_save_dir); } $UploadErrors = array(0 => '', 1 => 'Размер файла превышен', 2 => 'Размер файла превышен', 3 => 'Файл загружен только частично', 4 => 'Файл не был загружен.', 6 => 'Не найдена папка для временных файлов на сервере', 7 => 'Ошибка во время записи на диск', 8 => 'Загрузка файла была прервана расширением PHP', 9 => 'Ошибка во время записи на диск'); if ($var['error'] == UPLOAD_ERR_OK) { $filename = Translit($var['name'], true); $ext = GetFileExt($filename); $name = GetFileName($filename, true); $file_path = $file_save_dir . '/' . $name . '_' . GenRandomString(8) . $ext; copy($var['tmp_name'], $file_path); return $file_path; } else { if ($var['error'] != 4) { $error = $UploadErrors[$var['error']]; } return ''; } } if ($typearr[2] == 'false') { $strip_tags = false; } else { $strip_tags = true; } $r = SafeEnv($var, (int) $typearr[0], (string) $typearr[1], $strip_tags); if ($r === false) { $r = '0'; } elseif ($r === true) { $r = '1'; } return $r; }
function IndexForumMarkRead() { $mark_forums = array(); // Форумы на которых устанавливать метки $forums_tree = ForumTree::Instance(); if (isset($_GET['forum'])) { // Только внутри определённого форума $forum = SafeDB($_GET['forum'], 11, int); $mark_forums = $forums_tree->GetAllAccessForumId($forum); } else { // На всех форумах $mark_forums = $forums_tree->GetAllAccessForumId(); } $user_id = System::user()->Get('u_id'); if (System::user()->Auth) { // Загружаем данные о прочтении тем пользователем $read_data = Forum_Marker_GetReadData(); // Загружаем топики (агрегированы по forum_id) $topics = ForumCacheGetTopics(); $del_where = ''; $insert_values = array(); $time = time(); foreach ($mark_forums as $forum_id) { if (!isset($topics[$forum_id])) { continue; } foreach ($topics[$forum_id] as $topic) { $tid = SafeEnv($topic['id'], 11, int); // Не прочитана или метка устарела if (!isset($read_data[$topic['id']])) { $insert_values[] = "'{$user_id}','{$tid}','{$time}'"; // Добавить новую метку } elseif ($read_data[$topic['id']]['date'] < $topic['last_post']) { $del_where .= "(`tid`='{$tid}' and `mid`= '{$user_id}') or "; // Удалить текущую метку $insert_values[] = "'{$user_id}','{$tid}','{$time}'"; // Добавить новую метку } } } // Удаляем устаревшие метки if ($del_where != '') { $del_where = substr($del_where, 0, -4); // Удаляем .or. System::database()->Delete('forum_topics_read', $del_where); } // Добавляем новые метки // TODO: В будущем нужно перейти на InnoDB и использовать транзакции как в MySQL так и в FilesDB. if (count($insert_values) > 0) { foreach ($insert_values as $vals) { System::database()->Insert('forum_topics_read', $vals); } } } GO(GetSiteUrl() . Ufu('index.php?name=forum' . (isset($forum) ? '&op=showforum&forum=' . $forum : ''), 'forum/' . (isset($forum) ? '{forum}/' : ''))); }
function getconf_Pages($name) { global $config; $pages = System::database()->Select('pages', "`enabled`='1' and `type`='page'"); $r = array(); foreach ($pages as $page) { $r[] = array(SafeEnv($page['link'], 255, str), SafeEnv($page['title'], 255, str)); } return $r; }
function IndexForumSubscription() { global $forum_lang; $forums_tree = ForumTree::Instance(); // Проверки на доступ if (CheckGet('topic')) { // Тема $topic_id = SafeEnv($_GET['topic'], 11, int); System::database()->Select('forum_topics', "`id`='{$topic_id}'"); if (System::database()->NumRows() > 0) { $topic = System::database()->FetchRow(); } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_access_category']); return; } if ($topic['delete'] == '1') { // Тема на удалении System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_basket'] . '.' . $forum_lang['no_topic_basket_edit']); return; } if ($topic['close_topics'] == '1') { // Тема закрыта System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_close_for_discussion'] . '.' . $forum_lang['no_create_new_message_current_topic_add']); return; } // Форум $forum_id = SafeEnv($topic['forum_id'], 11, int); if (!isset($forums_tree->IdCats[$forum_id])) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']); return; } $forum_config = $forums_tree->GetForumConfigRecursive($forum_id); if (!$forum_config['access']) { // Доступ System::site()->AddTextBox($forum_lang['error'], $forum_config['access_reason']); return; } elseif (!$forum_config['new_message_email']) { // Разрешено ли подписываться на новые сообщения (+ защита от гостей) System::site()->AddTextBox($forum_lang['error'], $forum_config['add_post_reason']); return; } } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']); return; } Forum_Subscription($topic_id); // Подписка (обратное действие, если пользователь уже подписан) GO(Ufu('index.php?name=forum&op=showtopic&topic=' . $topic_id . '&view=lastpost', 'forum/topic{topic}-new.html')); }
/** * Записывает реферал в базу данных. * @param $referer */ function AuditWriteReferer($referer) { if (trim($referer) != '' && !IsMainHost($referer)) { $referer = SafeEnv(Url($referer), 255, str); $count = 1; System::database()->Select('referers', "`referer`='{$referer}'"); if (System::database()->NumRows() > 0) { $ref = System::database()->FetchRow(); $count = SafeDB($ref['count'], 11, int); $count++; System::database()->Update('referers', "count='{$count}'", "`referer`='{$referer}'"); } else { $values = Values('', $referer, $count); System::database()->Insert('referers', $values); } } }
function IndexForumCloseTopic() { if (!System::user()->isAdmin()) { HackOff(); return; } if (CheckGet('topic')) { $topic_id = SafeEnv($_GET['topic'], 11, int); } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']); return; } System::database()->Select('forum_topics', "`id`='{$topic_id}'"); $topic = System::database()->FetchRow(); $forum_id = SafeDB($topic['forum_id'], 11, int); System::database()->Update('forum_topics', "`close_topics`='1'", "`id`='{$topic_id}'"); GO(Ufu('index.php?name=forum&op=showforum&forum=' . $forum_id, 'forum/{forum}/')); }
} } // Добавляем новые настройки миниатюр и удаляем старые $tmb_width = System::config('news/thumb_max_width'); $tmb_height = System::config('news/thumb_max_height'); System::database()->Insert('config', "'','3','tmb_size','{$tmb_width}:{$tmb_height}','1','Размеры миниатюр изображений новостей','Ширина и высота через двоеточие, 0:0 - оставить как есть.','edit:w100','','','23,string,false','1'"); System::database()->Insert('config', "'','3','topics_tmb_size','160:160','1','Размеры миниатюр изображений разделов','Ширина и высота через двоеточие, 0:0 - оставить как есть.','edit:w100','','','23,string,false','1'"); RemoveConfig('news', 'icons_dirs'); RemoveConfig('news', 'thumb_max_width'); RemoveConfig('news', 'thumb_max_height'); // Обновление таблицы forms (добавление текстовой ссылки) System::database()->InsertColl('forms', Unserialize('a:5:{s:4:"name";s:4:"link";s:4:"type";s:7:"varchar";s:6:"length";i:255;s:7:"notnull";b:1;s:5:"index";b:1;}'), 2); $rows = System::database()->Select('forms'); foreach ($rows as $r) { $link = SafeEnv(UfuLink($r['hname']), 255, str); $id = SafeEnv($r['id'], 11, int); System::database()->Update('forms', "`link`='{$link}'", "`id`='{$id}'"); } // Обновление таблицы rewrite_rules System::database()->Truncate('rewrite_rules'); System::database()->InsertColl('rewrite_rules', Unserialize('a:4:{s:4:"name";s:4:"name";s:4:"type";s:7:"varchar";s:6:"length";i:255;s:7:"notnull";b:1;}'), 0); System::database()->InsertColl('rewrite_rules', Unserialize('a:4:{s:4:"name";s:6:"module";s:4:"type";s:7:"varchar";s:6:"length";i:255;s:7:"notnull";b:1;}'), 1); System::database()->InsertColl('rewrite_rules', Unserialize('a:4:{s:4:"name";s:11:"description";s:4:"type";s:7:"varchar";s:6:"length";i:255;s:7:"notnull";b:1;}'), 2); System::database()->InsertColl('rewrite_rules', Unserialize('a:4:{s:4:"name";s:5:"order";s:4:"type";s:3:"int";s:6:"length";i:11;s:7:"notnull";b:1;}'), 6); // Системные правила UfuAddRuleByTemplate('system', 'mod', 'Ссылка на модуль', 'name={str}', '{name}/', 1000); // Правила для страниц UfuAddRuleByTemplate('pages', 'page', 'Ссылка на страницу', 'name=pages&file={ustr}', '{file}.html'); // Правила для модуля веб форм UfuAddRuleByTemplate('forms', 'form', 'Страница с формой', 'name=forms&formlink={ustr}', 'forms/{formlink}.html'); Ufu('index.php?name=forms&form={num}', 'forms/{form}/');
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } $table = SafeEnv($_GET['name'], 255, str); $table_colls = serialize(array('cols' => System::database()->GetTableColumns($table), 'name' => $table, 'type' => 'MYISAM')); $install_code = "System::database()->CreateTable('{$table}', unserialize('{$table_colls}'));" . EOL; System::admin()->AddCenterBox('PHP код для создания'); System::admin()->FormRow('Создание', System::admin()->TextArea('code', $install_code, 'style="width: 800px; height: 200px;" class="autofocus selectall"')); System::admin()->AddForm('', System::admin()->Button('Назад', 'onclick="history.go(-1);"')); AdminFdbAdminGenTableMenu(SafeDB($table, 255, str));
function IndexPollsVoice() { if (!isset($_GET['poll_id'])) { GoBack(); } if (!isset($_POST['voice'])) { System::site()->AddTextBox('', '<p align="center">Вы не выбрали ни одного варианта ответа.</p>'); } else { $pid = SafeEnv($_GET['poll_id'], 11, int); System::database()->Select('polls', GetWhereByAccess('view', "`id`='{$pid}' and `active`='1'")); if (System::database()->NumRows() == 0) { GoBack(); } $poll = System::database()->FetchRow(); $answers = unserialize($poll['answers']); $multianswers = SafeDB($poll['multianswers'], 1, int); $voice = SafeEnv($_POST['voice'], 11, int); if (!$multianswers) { $voice = $voice[0]; } //Проверяем, учавствовал ли данный пользователь в этом опросе $ip = getip(); if (System::user()->Auth) { $uid = System::user()->Get('u_id'); } else { $uid = -1; } System::database()->Select('polls_voices', "`poll_id`='{$pid}' and (`user_ip`='{$ip}' or `user_id`='{$uid}')"); if (System::database()->NumRows() == 0) { if (!$multianswers) { if (isset($answers[$voice])) { $answers[$voice][2] = $answers[$voice][2] + 1; $answers = serialize($answers); System::database()->Update('polls', "answers='{$answers}'", "`id`='{$pid}'"); } else { GoBack(); } } else { $c = count($voice); for ($i = 0; $i < $c; $i++) { if (isset($answers[$voice[$i]])) { $answers[$voice[$i]][2] = $answers[$voice[$i]][2] + 1; } else { GoBack(); } } $answers = serialize($answers); System::database()->Update('polls', "answers='{$answers}'", "`id`='{$pid}'"); } $voice = serialize($voice); if (System::user()->Auth) { $user_id = System::user()->Get('u_id'); } else { $user_id = 0; } System::database()->Insert('polls_voices', "'','{$pid}','" . getip() . "','{$voice}','{$user_id}'"); System::user()->ChargePoints(System::config('points/polls_answer')); GoBack(); } else { System::site()->AddTextBox('', '<p align="center">Извините, Вы уже принимали участие в этом опросе.</p>'); } } }
function AdminConfigGroupDelete() { $back_url = ''; if (!AdminConfigPlugins()) { $back_url = ADMIN_FILE . '?exe=config_admin&a=view_groups&delok'; } else { $back_url = ADMIN_FILE . '?exe=config_admin&a=view_groups_plugins&plugins=1&delok'; } if (!isset($_GET['id'])) { GO($back_url); } else { $id = SafeEnv($_GET['id'], 11, int); } if (isset($_GET['ok']) && $_GET['ok'] == '1' || IsAjax()) { System::database()->Select(AdminConfigGroupTable(), "`id`='{$id}'"); $conf = System::database()->FetchRow(); System::database()->Delete(AdminConfigGroupTable(), "`id`='{$id}'"); System::database()->Delete(AdminConfigConfigTable(), "`group_id`='{$id}'"); Audit('Управление настройками: Удаление группы настроек "' . $conf['hname'] . '(' . $conf['name'] . ')" в "' . AdminConfigGroupTable() . '"'); GO($back_url); } else { $r = System::database()->Select(AdminConfigGroupTable(), "`id`='{$id}'"); AddCenterBox('Удаление группы навтроек'); System::admin()->HighlightConfirm('Это может повлиять на работу системы. Нажмите отмена, если не уверены. Удалить группу настроек "' . SafeDB($r[0]['hname'], 255, str) . '"?', ADMIN_FILE . '?exe=config_admin&a=delete&id=' . $id . '&ok=1' . (AdminConfigPlugins() ? '&plugins=1' : '')); } }
public function SavePost($ObjectId, $Edit = false) { $errors = array(); if ($Edit) { if (!isset($_GET['post_id'])) { $errors[] = 'post_id не инициализирована в GET.'; } else { $post_id = SafeEnv($_GET['post_id'], 11, int); System::database()->Select($this->PostsTable, "`id`='{$post_id}'"); $post = System::database()->FetchRow(); } } else { if (!$this->AlloyComments) { $errors[] = 'Обсуждение закрыто'; return; } if ($this->DisableComments) { $errors[] = 'Система комментариев отключена. Вы не сможете добавить комментарий.'; } } $post_message = ''; $post_parent_id = 0; if (System::user()->Auth) { // Авторизованный пользователь, добавляет комментарий if (!isset($_POST['post_message']) || !isset($_POST['parent_id'])) { $errors[] = 'Данные не инициализированы.'; } $user_id = System::user()->Get('u_id'); $user_name = System::user()->Get('u_name'); $user_email = System::user()->Get('u_email'); $user_hideemail = System::user()->Get('u_hideemail'); $user_homepage = System::user()->Get('u_homepage'); if ($Edit && !System::user()->isAdmin() && $post['user_id'] != System::user()->Get('u_id')) { $errors[] = 'У вас недостаточно прав для редактирования этого сообщения.'; } } else { // Гость, добавляет или редактирует комментарий if ($Edit && ($post['user_id'] != '0' || $post['user_ip'] != getip())) { $errors[] = 'У вас недостаточно прав для редактирования этого сообщения.'; } else { if ($this->GuestPost || $Edit) { // Разрешено комментировать гостям? if (!$Edit) { if (!isset($_POST['user_name']) || !isset($_POST['user_email']) || !isset($_POST['user_homepage']) || !isset($_POST['post_message']) || !isset($_POST['parent_id'])) { $errors[] = 'Данные не инициализированы.'; } else { $user_id = 0; $user_name = SafeEnv($_POST['user_name'], 255, str, true); CheckNikname($user_name, $er, true); System::user()->Def('u_name', $user_name); $user_email = SafeEnv($_POST['user_email'], 255, str, true); if ($user_email != '') { if (!CheckEmail($user_email)) { $errors[] = 'Формат E-mail не правильный. Он должен быть вида: <b>domain@host.ru</b> .'; } } System::user()->Def('u_email', $user_email); if (isset($_POST['hideemail'])) { $user_hideemail = '1'; } else { $user_hideemail = '0'; } System::user()->Def('u_hideemail', $user_hideemail); $user_homepage = Url(SafeEnv($_POST['user_homepage'], 250, str, true)); System::user()->Def('u_homepage', $user_homepage); } } else { if (!isset($_POST['post_message']) || !isset($_POST['parent_id'])) { $errors[] = 'Данные не инициализированы.'; } $user_id = SafeDB($post['user_id'], 11, int); $user_name = SafeDB($post['user_name'], 255, str); $user_email = SafeDB($post['user_email'], 255, str); $user_hideemail = SafeDB($post['user_hideemail'], 1, int); $user_homepage = SafeDB($post['user_homepage'], 255, str); } } else { $errors[] = 'Чтобы оставлять сообщения, вам необходимо зарегистрироваться.'; } } } if ($user_name == '') { $errors[] = 'Вы не ввели имя.'; } if ($user_email == '') { $errors[] = 'Вы не указали ваш E-mail.'; } $post_message = SafeEnv($_POST['post_message'], $this->PostMaxLength, str); if (strlen($post_message) == 0) { $errors[] = 'Вы не ввели текст сообщения.'; } // Проверяем капчу if (!System::user()->Auth || !System::user()->isAdmin() && $this->ShowKaptchaForMembers) { if (!System::user()->isDef('captcha_keystring') || System::user()->Get('captcha_keystring') != $_POST['keystr']) { $errors[] = 'Вы ошиблись при вводе кода с картинки.'; } } if (!isset($_POST['parent_id'])) { $errors[] = 'parent_id не инициализирована в POST.'; } else { if ($this->Answers == '1' || System::user()->isAdmin()) { $parent = $_POST['parent_id']; $parent = explode('_', $parent, 2); $post_parent_id = SafeEnv($parent[1], 11, int); } else { $post_parent_id = '0'; } } if ($this->CheckFlood() && !$Edit) { $errors[] = 'Флуд-защита, подождите немного.'; } $this->LastSaveErrors = $errors; if (count($errors) == 0) { if (!$Edit) { $vals = Values('', $ObjectId, $user_id, $user_name, $user_homepage, $user_email, $user_hideemail, getip(), time(), $post_message, $post_parent_id); $cols = array('id', 'object_id', 'user_id', 'user_name', 'user_homepage', 'user_email', 'user_hideemail', 'user_ip', 'post_date', 'post_message', 'post_parent_id'); System::database()->Insert($this->PostsTable, $vals, $cols); } else { System::database()->Update($this->PostsTable, "`post_message`='{$post_message}'", "`id`='{$post_id}'"); if (System::user()->isAdmin()) { Audit('Posts: Изменение комментария "' . $this->PostsTable . '"/"' . "(user: {$user_name}, object_id: {$ObjectId})" . '"'); } } return true; } else { return false; } }
if (isset($_GET['forum_basket_post'])) { IndexForumRestoreBasketPost(SafeEnv($_GET['forum_basket_post'], 11, int)); } elseif (isset($_GET['forum_basket_topics'])) { IndexForumRestoreBasketTopic(SafeEnv($_GET['forum_basket_topics'], 11, int)); } break; // Функции // Функции case 'usertopics': ForumLoadFunction('usertopics'); IndexForumUserTopics(); break; case 'viewnoread': ForumLoadFunction('viewnoread'); IndexForumViewNoRead(); break; case 'lasttopics': ForumLoadFunction('lasttopics'); IndexForumLastTopics(); break; case 'post': ForumLoadFunction('showtopic'); IndexForumShowTopic(SafeEnv($_GET['post'], 11, int)); break; case 'markread': ForumLoadFunction('markread'); IndexForumMarkRead(); break; default: HackOff(); }
function IndexFeedBackSend() { $err = array(); if (!isset($_POST['name']) || !isset($_POST['email']) || !isset($_POST['subject']) || !isset($_POST['department']) || !isset($_POST['message']) || !isset($_POST['feedback_form'])) { GO(Ufu('index.php')); } else { if ($_POST['name'] != '') { $name = SafeDB($_POST['name'], 250, str); } else { $err[] = 'Пожалуйста, укажите Ваше имя!'; } if ($_POST['email'] != '') { $email = SafeDB($_POST['email'], 50, str); } else { $err[] = 'Пожалуйста, укажите Ваш действительный адрес E-mail!'; } if ($_POST['subject'] != '') { $subject = SafeDB($_POST['subject'], 250, str, false, false, false); } else { $err[] = 'Пожалуйста, введите тему сообщения!'; } // Проверяем капчу if (!System::user()->isDef('captcha_keystring') || System::user()->Get('captcha_keystring') != $_POST['keystr']) { $err[] = 'Вы ошиблись при вводе кода с картинки.'; } if ($_POST['department'] != '') { $department = SafeEnv($_POST['department'], 11, int); System::database()->Select('feedback', "`active`='1' and `id`='{$department}'"); if (System::database()->NumRows() > 0) { $dep = System::database()->FetchRow(); $dep_email = SafeDB($dep['email'], 255, str); $department = SafeDB($dep['name'], 255, str); } else { $err[] = 'Департамент больше не существует или обратная связь с этим департаментом отключена.'; } } else { $err[] = 'Пожалуйста, выберите департамент!'; } if ($_POST['message'] != '') { $message = SafeDB($_POST['message'], 65535, str, false, false, false); } else { $err[] = 'Пожалуйста, введите сообщение!'; } } $size = $_FILES['attach']['size']; // / 1024; if ($_FILES['attach']['error'] == UPLOAD_ERR_OK && $size >= System::config('feedback/max_filesize')) { $err[] = 'Слишком большой размер файла.'; } if (count($err) == 0) { $mail = LmEmailExtended::Instance(); $mail->SetTo($dep_email, Cp1251ToUtf8($department)); $mail->SetFrom($email, Cp1251ToUtf8($name)); $mail->SetSubject(Cp1251ToUtf8($subject)); $text = Indent("\n\t\t\tЗдравствуйте!\n\n\t\t\tС помощью формы обратной связи на сайте \"" . System::config('general/site_name') . "\"\n\t\t\tвам было отправлено сообщение.\n\n\t\t\tДепартамент: {$department}\n\t\t\tИмя: {$name}\n\t\t\tE-mail: {$email}\n\t\t\tТема сообщения: {$subject}\n\t\t\tДата отправки: " . TimeRender(time(), true, false) . "\n\t\t\tСообщение: {$message}\n\t\t"); $mail->AddTextPart(Cp1251ToUtf8($text)); if ($_FILES['attach']['error'] == UPLOAD_ERR_OK) { $mail->AddAttachmentPart(file_get_contents($_FILES['attach']['tmp_name']), $_FILES['attach']['name']); } if ($mail->Send()) { System::site()->AddTextBox('Обратная связь', '<div style="text-align: center;">Ваше сообщение успешно отправлено!</div>'); } else { System::site()->AddTextBox('Обратная связь', '<div style="text-align: center;">При отправке вашего сообщения произошла ошибка, повторите попытку или обратитесь к администратору.</div>'); } } else { $text = 'Сообщение не отправлено:<br /><ul>'; foreach ($err as $error) { $text .= '<li>' . $error . '</li>'; } $text .= '</ul>'; System::site()->AddTextBox('Ошибка', $text); IndexFeedBackForm(); } }
} $text = "<div class=\"license_frame\"><div>" . $license . "</div></div>"; $this->SetContent($text); $this->AddButton('Назад', 'main&p=2'); $this->AddButton('Принимаю', 'install&p=2'); break; case 2: // Выбор типа базы данных global $db_types; $db_types = array(); SetupPlugins('db_types'); $this->SetTitle("Выбор типа Базы данных."); $this->OpenForm('install&p=3'); $text = '<p>Выберите тип Базы данных: </p>' . System::site()->Select('db_type', $db_types, true); $this->SetContent($text); $this->AddButton('Назад', 'install&p=1'); $this->AddSubmitButton('Далее'); break; case 3: // Перенаправление соответственно выбранному типу БД if (!isset($_POST['db_type'])) { $this->SetTitle('Ошибка'); $this->SetContent('Вы не выбрали тип Базы данных.'); $this->AddButton('Назад', 'install&p=2'); break; } $smod = SafeEnv($_POST['db_type'], 255, str); System::user()->Session('db_type', $smod); GO('setup.php?mod=' . $smod); break; }
} require 'config/init.php'; $default_prefix = 'table'; $bases_path = 'setup/bases/'; $info_ext = '.MYD'; $data_ext = '.FRM'; $config['s_dir'] = 'setup/'; $config['s_plug_dir'] = 'setup/plugins/'; $config['s_inc_dir'] = 'setup/inc/'; $config['s_lng_dir'] = 'setup/lng/'; $config['s_mod_dir'] = 'setup/mods/'; $config['s_tpl_dir'] = 'setup/template/'; include_once $config['s_inc_dir'] . 'functions.php'; include_once $config['s_inc_dir'] . 'template.php'; // Шаблон include_once $config['s_inc_dir'] . 'setup.class.php'; // Класс управления инсталлятором include_once $config['s_inc_dir'] . 'plugins.php'; // Поддержка плагинов include_once $config['s_lng_dir'] . 'lang-russian.php'; // Мультиязычность $site = new SetupPage(); $site->InitPage(); $site->AddJSFile($config['s_inc_dir'] . 'functions.js', true, true); $setup = new Setup(); if (isset($_GET['mod'])) { $mod = SafeEnv($_GET['mod'], 255, str); } else { $mod = ''; } $setup->Page($mod);
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } if (isset($_POST['newname'])) { System::database()->RenameTable(SafeEnv($_GET['name'], 255, str), SafeEnv($_POST['newname'], 255, str)); Audit('Управление БД: Переименование таблицы "' . $_GET['name'] . '" в "' . $_POST['newname'] . '"'); GO(ADMIN_FILE . '?exe=dbadmin'); } else { AddCenterBox('Переименовать таблицу "' . SafeDB($_GET['name'], 255, str) . '"'); FormRow('Новое имя', $site->Edit('newname', SafeDB($_GET['name'], 255, str), false, 'style="width: 210px;" class="autofocus"')); AddForm('<form action="' . ADMIN_FILE . '?exe=dbadmin&a=renametable&name=' . SafeEnv($_GET['name'], 255, str) . '" method="post">', $site->Button('Отмена', 'onclick="history.go(-1);"') . $site->Submit('Переименовать')); }
function AdminsDeleteGroup() { if (!isset($_GET['id'])) { GO(ADMIN_FILE . '?exe=admins&a=groups'); exit; } $id = SafeEnv($_GET['id'], 11, int); if (isset($_GET['ok']) && SafeEnv($_GET['ok'], 1, int) == '1') { // Очищаем кэш if (System::cache()->HasCache(system_cache, 'usertypes')) { System::cache()->Delete(system_cache, 'usertypes'); } System::database()->Select('users', "`access`='" . $id . "'"); $num_users = System::database()->NumRows(); System::database()->Select('usertypes', "`id`='{$id}'"); $group = System::database()->FetchRow(); if ($num_users > 0) { if (!isset($_GET['users'])) { $text = 'К этой группе принадлежат ' . $num_users . ' пользователей. Вы можете:<br />' . '<a href="' . ADMIN_FILE . '?exe=admins&a=delgroup&id=' . $id . '&ok=1&users=del">Удалить их...</a> <br />' . '<a href="' . ADMIN_FILE . '?exe=admins&a=delgroup&id=' . SafeEnv($_GET['id'], 11, int) . '&ok=1&users=move">Переместить их в другую группу.</a>'; AddTextBox('Внимание!', $text); } else { if ($_GET['users'] == 'del') { System::database()->Delete('users', "`access`='" . $id . "'"); } elseif ($_GET['users'] == 'move' && !isset($_POST['to'])) { $text = 'Выберите группу, в которую Вы желаете переместить пользователей:<br />' . '<form action="' . ADMIN_FILE . '?exe=admins&a=delgroup&id=' . $id . '&ok=1&users=move" method="post">'; System::database()->Select('usertypes', "`id`<>'" . $id . "'"); System::site()->DataAdd($group_data, '-1', 'Пользователи'); while ($tp = System::database()->FetchRow()) { System::site()->DataAdd($group_data, $tp['id'], $tp['name']); } $text .= System::site()->Select('to', $group_data) . '<br />'; $text .= System::site()->Submit('Продолжить') . '<br />'; $text .= '</form>'; AddTextBox('Внимание!', $text); return; } elseif ($_GET['users'] == 'move' && isset($_POST['to'])) { $to = SafeEnv($_POST['to'], 11, int); if ($to == '-1') { $set = "type='2',access='" . $to . "'"; } else { $set = "access='" . $to . "'"; } System::database()->Update('users', $set, "`access`='" . $id . "'"); } } } System::database()->Delete('usertypes', "`id`='" . $id . "'"); Audit('Администраторы: Удаление группы администраторов "' . $group['name'] . '"'); GO(ADMIN_FILE . '?exe=admins&a=groups'); } else { System::database()->Select('usertypes', "`id`='" . $id . "'"); $group = System::database()->FetchRow(); $text = 'Вы действительно хотите удалить группу "' . SafeDB($group['name'], 255, str) . '"?<br />' . '<a href="' . ADMIN_FILE . '?exe=admins&a=delgroup&id=' . $id . '&ok=1">Да</a> <a href="javascript:history.go(-1)">Нет</a>'; AddTextBox("Предупреждение", $text); } }
function AdminNewsTopicsDelete() { global $news_access_edittopics; if (!isset($_GET['id']) || !$news_access_edittopics) { exit('ERROR'); } $id = SafeEnv($_GET['id'], 11, int); System::database()->Select('news_topics', "`id`='{$id}'"); $topic = System::database()->FetchRow(); $newsdb = System::database()->Select('news', "`topic_id`='{$id}'"); foreach ($newsdb as $news) { System::database()->Delete('news_comments', '`object`=\'' . SafeEnv($news['id'], 11, int) . '\''); } System::database()->Delete('news', "`topic_id`='{$id}'"); System::database()->Delete('news_topics', "`id`='{$id}'"); AdminNewsClearBlockCache(); Audit('Новости: Удаление новостного раздела "' . $topic['title'] . '"'); exit('OK'); }
function AdminGalleryResetRating() { global $edit_images; if (!$edit_images) { System::admin()->AccessDenied(); } $id = SafeEnv($_GET['id'], 11, int); System::database()->Select('gallery', "`id`='{$id}'"); $img = System::database()->FetchRow(); System::database()->Update('gallery', "`num_votes`='0',`sum_votes`='0'", "`id`='{$id}'"); Audit('Фотогалерея: Сброс рейтинга для изображения "' . $img['title'] . '" (id: ' . $img['id'] . ')'); GoRefererUrl($_REQUEST['back']); }
/** * Функция пересчитывает инкремент поля таблицы и сбрасывает counter на количество записей в таблице. */ function AdminDbRepairResetId() { if (System::database()->Name != 'FilesDB') { return; } $table = $_GET['table']; $columns = System::database()->GetTableColumns($table); $increment_columns = array(); foreach ($columns as $c) { if (isset($c['auto_increment']) && $c['auto_increment'] == true) { $increment_columns[] = $c['name']; } } $data = System::database()->Select($table); System::database()->Truncate($table); foreach ($data as $row) { foreach ($increment_columns as $name) { $row[$name] = ''; } $row = SafeEnv($row, 0, str, false, true, false); System::database()->Insert($table, Values($row)); } }
function AdminExtensionsConfigSave() { $post = SafeR('view', 255, str) + SafeR('name, theme', 255, str) + SafeR('enabled', 3, onoff); $post['view'] = ViewLevelToInt($post['view']); System::database()->Update('modules', MakeSet($post), "`folder`='" . SafeEnv($_GET['name'], 255, str) . "'"); Audit('Расширения: Изменение настроек модуля "' . $_GET['name'] . '"'); GO(ADMIN_FILE . '?exe=extensions'); }
function AdminBlocksMove() { $move = SafeEnv($_GET['to'], 4, str); $id = SafeEnv($_GET['id'], 11, int); System::database()->Select('blocks', "`id`='" . $id . "'"); if (System::database()->NumRows() > 0) { $block = System::database()->FetchRow(); $pos = SafeDB($block['place'], 255, str); $blocks = System::database()->Select('blocks', "`position`='" . SafeDB($block['position'], 1, str) . "'"); usort($blocks, 'AdminBlocksSort'); $c = count($blocks); $cur_pos = 0; for ($i = 0; $i < $c; $i++) { $blocks[$i]['place'] = $i; if ($blocks[$i]['id'] == $id) { $cur_pos = $i; } } //Индекс перемещения $rep_pos = $cur_pos; if ($move == 'up') { $rep_pos = $cur_pos - 1; } elseif ($move == 'down') { $rep_pos = $cur_pos + 1; } else { $rep_pos = $cur_pos; } if ($rep_pos < 0 || $rep_pos >= $c) { $rep_pos = $cur_pos; } $temp = intval($blocks[$cur_pos]['place']); $blocks[$cur_pos]['place'] = intval($blocks[$rep_pos]['place']); $blocks[$rep_pos]['place'] = intval($temp); //Обновляем данные for ($i = 0; $i < $c; $i++) { System::database()->Update('blocks', "place='" . SafeDB($blocks[$i]['place'], 11, int) . "'", "`id`='" . SafeDB($blocks[$i]['id'], 11, int) . "'"); } } Audit('Блока: Перемещение блока ' . ($move == 'up' ? 'вверх' : 'вниз') . ' "' . $block['title'] . '"'); GO(ADMIN_FILE . '?exe=blocks'); }
function IndexForumUserTopics() { global $forum_lang; $forums_tree = ForumTree::Instance(); // Проверка данных if (isset($_GET['user'])) { $user_id = SafeEnv($_GET['user'], 11, int); $user = GetUserInfo($user_id); if ($user === false) { // Пользователь не найден System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_user']); return; } } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_no_data']); // Нет параметра return; } // Параметры постраничной навигации if (isset($_GET['page'])) { $page = SafeEnv($_GET['page'], 11, int); } else { $page = 1; } $topics_on_page = System::config('forum/topics_on_page'); // Устанавливаем заголовок страницы $function_title = $forum_lang['allusertopics'] . ' "' . $user['name'] . '"'; System::site()->SetTitle(SafeDB($function_title, 255, str) . ' - ' . ($page > 1 ? $forum_lang['page'] . $page . ' - ' : '') . $forum_lang['forum']); $forum_nav_url = Ufu('index.php?name=forum&op=usertopics&user='******'forum/usertopics/{user}-{page}/', true); //$forum_url = Ufu('index.php?name=forum&op=usertopics&user='******'forum/usertopics/{user}/'); // Объекты статистики и онлайн $statistics = ForumStatistics::Instance(); $online = ForumOnline::Instance('0', '0', true); // Обновляем статус онлайн // Инициализируем статистику $statistics->Initialize($forum_lang['statistics_cat']); // Хлебные крошки System::site()->BreadCrumbAdd($function_title); $auth = System::user()->Auth; $is_admin = System::user()->isAdmin(); $current_user_id = System::user()->Get('u_id'); // Загружаем данные корзины для видимых топиков $basket = ForumBasketGetData('forum_basket_topics'); // Загружаем информацию по топикам в $topics_data и считаем статистику (кэшировать статистику) $topics_data = ForumCacheGetTopics(); // Запрашиваем данные тем (агрегированы по форумам) $topics = array(); // Сюда будем добавлять топики для вывода $resolve_cats = $forums_tree->GetAllAccessForumId(0); // Считаем только в открытых для доступа форумах foreach ($resolve_cats as $resolve_cat) { if (!isset($topics_data[$resolve_cat])) { continue; } foreach ($topics_data[$resolve_cat] as $topic) { // Отсеиваем if ($topic['starter_id'] == $user_id) { // Добавляем данные из корзины, если топик удалён в корзину $topic['status'] = ''; $topic['show_delete'] = $is_admin; if ($topic['delete'] && isset($basket[$topic['id']]) && $auth && ($is_admin || $topic['starter_id'] == $current_user_id)) { // Добавляем сообщение - "Удалено в корзину" $topic['status'] = ForumBasketRender($topic['id'], $topic['title'], $basket, false); $topic['show_delete'] = false; } elseif ($topic['delete']) { continue; // Удалён топик и корзина не показывается для этого пользователя } $statistics->hits += $topic['hits']; $statistics->AddTopicAuthor($topic['starter_id'], $topic['starter_name']); $statistics->topics_count += 1; $statistics->reply_count += $topic['posts']; $topics[] = $topic; } } } unset($topics_data); // Заголовки (Темы, Ответов, Просмотры) System::site()->AddBlock('statistik', true, false, 'stat'); System::site()->SetVars('statistik', array('count_read' => '')); // Отключаем некоторые блоки System::site()->AddBlock('topic_form', false, false, 'form'); System::site()->AddBlock('topic_right', false, false, 'topic'); System::site()->AddBlock('forum', false); System::site()->AddBlock('forum_guest_message', false); // Блоки шаблона // Ссылки, Отметить все как прочитанные и показать все не прочитанные темы. $vars_is_forum_member = array(); $vars_is_forum_member['url'] = '<a href="' . Ufu('index.php?name=forum&op=markread', 'forum/markread/') . '">' . $forum_lang['mark_all_read'] . '</a>'; $vars_is_forum_member['viewnoreadurl'] = '<a href="' . Ufu('index.php?name=forum&op=viewnoread', 'forum/viewnoread/') . '">' . $forum_lang['viewnoread'] . '</a>'; $vars_is_forum_member['forum_id'] = '0'; if (!System::site()->HasBlock('is_forum_member')) { System::site()->AddBlock('is_forum_member', AccessIsResolved(2), false, 'mark'); } System::site()->SetVars('is_forum_member', $vars_is_forum_member); // Последние темы форума System::site()->AddBlock('old', true, false, 'mark'); $vars_old = array(); $vars_old['lasttopics'] = '<a href="' . Ufu('index.php?name=forum&op=lasttopics', 'forum/lasttopics/') . '">' . $forum_lang['lasttopics'] . '</a>'; System::site()->SetVars('old', $vars_old); // Блок списка топиков System::site()->AddBlock('topics', true, true, 'topic'); // Инициализируем постраничную навигацию $navigation = new Navigation($page); $navigation->FrendlyUrl = System::config('general/ufu'); // Выводим топики в шаблон if (count($topics) == 0) { // В этом форуме пока нет ни одной темы System::site()->AddBlock('no_topics', true); $navigation->DisableNavigation(); } else { // Вывод постраничной навигации $navigation->GenNavigationMenu($topics, $topics_on_page, $forum_nav_url); // Загружаем данные о прочтении тем $read_data = Forum_Marker_GetReadData(); $visable_topics = false; // Вывод тем из этой категории с постраничной навигацией foreach ($topics as $topic) { $forum_config = $forums_tree->GetForumConfigRecursive($topic['forum_id']); // Конфигурация просматриваемого форума // Статус прочитано $read = true; // прочитано if ($auth && (!isset($read_data[$topic['id']]) || $topic['last_post'] > $read_data[$topic['id']]['date'])) { $read = false; } $topic = ForumTopicFilterData($topic); // Фильтрация данных топика $topic['on'] = !$read; $topic['off'] = $read; if (!$topic['close']) { $topic['close'] = $forum_config['close']; $topic['begin'] = !$forum_config['close']; } $topic['page'] = $page; $visable_topics = true; System::site()->AddSubBlock('topics', true, $topic); } System::site()->AddBlock('no_topics', !$visable_topics); } // Блоки модерации ModerationForumTopicsBlocks(); // Подключаем шаблон System::site()->AddTemplatedBox('', 'module/forum_topics.html'); // Выводм блок онлайн $online->Render('0', '0', $forum_lang['all_online'], 'forum_topics_online'); // Выводим статистику $statistics->Render('forum_topics_statistics'); // Выбор периода и быстрый переход ForumQuickTransitionBox(0, $forum_lang['quick_transition']); }
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } $table = SafeEnv($_GET['name'], 255, str); $index = SafeEnv($_GET['index'], 11, int); $where = ''; if (isset($_GET['where'])) { $where = $_GET['where']; } $rows = System::database()->Select($table, $where); $row = $rows[$index]; $row2 = array(); $columns = System::database()->GetTableColumns($table); foreach ($columns as $col) { $row2[] = $row[$col['name']]; } $row2 = SafeEnv($row2, 0, str); $code_vals = Values($row2); $install_code = "System::database()->Insert('{$table}',\"{$code_vals}\");" . EOL; System::admin()->AddCenterBox('PHP код вставки'); System::admin()->FormRow('Установка', $site->TextArea('code', $install_code, 'style="width: 800px; height: 200px;" class="autofocus selectall"')); System::admin()->AddForm('', $site->Button('Назад', 'onclick="history.go(-1);"')); AdminFdbAdminGenTableMenu(SafeDB($table, 255, str));
/** * Сохранение категории * @param null $Id * @return bool|int Истина при успешном изменении или id категории, при добавлении новой категории. */ public function EditorSave($Id = null) { $ret = false; $title = SafeEnv($_POST['title'], 250, str); $desc = SafeEnv($_POST['desc'], 0, str); $icon = SafeEnv($_POST['icon'], 250, str); $parent = SafeEnv($_POST['cat'], 11, int); if ($Id == null) { $query = Values('', $title, $desc, $icon, 0, 0, $parent); System::database()->Insert($this->Table, $query); Audit('Категории: Добавление категории "' . $this->Table . '"/"' . $title . '"'); $ret = System::database()->GetLastId(); $this->CalcCatCounter($parent, true); } else { if (in_array($Id, $this->GetAllChildId($Id))) { $query = "`title`='{$title}',`description`='{$desc}',`icon`='{$icon}',`parent`='{$parent}'"; System::database()->Update($this->Table, $query, "`id`='{$Id}'"); Audit('Категории: Изменение категории "' . $this->Table . '"/"' . $title . '"'); $ret = true; } } System::cache()->Delete('tree', $this->Table); return $ret; }
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } $table = SafeEnv($_GET['name'], 255, str); $index = SafeEnv($_GET['index'], 255, int); $where = ''; $where_url = ''; if (isset($_GET['where'])) { $where = $_GET['where']; $where_url = '&where=' . $_GET['where']; } $rows = System::database()->Select($table, $where); $row = $rows[$index]; $columns = System::database()->GetTableColumns($table); $names = array(); foreach ($columns as $col) { $names[$col['name']] = $row[$col['name']]; } $sql = ''; foreach ($row as $key => $value) { if (isset($names[$key])) { $sql .= "`" . $key . "`='" . System::database()->EscapeString($value) . "' and "; } }
/** * Удаление ключа индивидуальной настройки пользователя в базе данных. * @param $Name Имя настройки. * @param null $UserId Идентификатор пользователя. Если не указан, то используется идентификатор текущего пользователя. * @return var|null Возвращает значение удаленной настройки, или null, если настройка не найдена. */ function UserDataDelete($Name, $UserId = null) { $this_user = false; if (!isset($UserId)) { if (System::user()->Auth) { $UserId = SafeEnv($this->Get('u_id'), 11, int); $this_user = true; } else { return null; } } $Data = GetUserInfo($UserId); $Data = $Data['data']; if (isset($Data[$Name])) { $value = $Data[$Name]; unset($Data[$Name]); $system_users_cache = GetUsers(); $system_users_cache[$UserId]['data'] = $Data; if ($this_user) { System::user()->Session('u_data', $Data); } System::database()->Update('users', "`data`='" . SafeEnv(serialize($Data), 0, str) . "'", "`id`='{$UserId}'"); return $value; } }
function IndexForumAddPost() { global $forum_lang; $forums_tree = ForumTree::Instance(); // Проверки на доступ if (CheckGet('topic')) { // Тема $topic_id = SafeEnv($_GET['topic'], 11, int); System::database()->Select('forum_topics', "`id`='{$topic_id}'"); if (System::database()->NumRows() > 0) { $topic = System::database()->FetchRow(); } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_access_category']); return; } if ($topic['delete'] == '1') { // Тема на удалении System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_basket'] . '.' . $forum_lang['no_topic_basket_edit']); return; } if ($topic['close_topics'] == '1') { // Тема закрыта System::site()->AddTextBox($forum_lang['error'], $forum_lang['topic_close_for_discussion'] . '.' . $forum_lang['no_create_new_message_current_topic_add']); return; } // Форум $forum_id = SafeEnv($topic['forum_id'], 11, int); if (!isset($forums_tree->IdCats[$forum_id])) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']); return; } $forum = $forums_tree->IdCats[$forum_id]; $forum_config = $forums_tree->GetForumConfigRecursive($forum_id); if (!$forum_config['access']) { // Доступ System::site()->AddTextBox($forum_lang['error'], $forum_config['access_reason']); return; } elseif (!$forum_config['add_post']) { // Разрешено ли добавлять новые сообщения (+ защита от гостей) System::site()->AddTextBox($forum_lang['error'], $forum_config['add_post_reason']); return; } } else { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']); return; } // Добавляем сообщение if (!CheckPost('text') || strlen($_POST['text']) == 0) { System::site()->AddTextBox($forum_lang['error'], $forum_lang['error_data']); return; } $name = System::user()->Get('u_name'); $email = System::user()->Get('u_email'); $hideemail = System::user()->Get('u_hideemail'); $site = System::user()->Get('u_homepage'); $icq = System::user()->Get('u_icq'); $uid = System::user()->Get('u_id'); $text = SafeEnv($_POST['text'], 0, str); $vals = Values('', $topic_id, $uid, time(), $name, $site, $email, $hideemail, $icq, $text, getip(), 0); System::database()->Insert('forum_posts', $vals); // Обновляем время прочтения темы автором сообщения $user_id = System::user()->Get('u_id'); System::database()->Delete('forum_topics_read', "`tid`='{$topic_id}' and `mid`='{$user_id}'"); $time = time(); $vals = "'{$user_id}','{$topic_id}','{$time}'"; System::database()->Insert('forum_topics_read', $vals); // Информация о последнем сообщении в теме и форуме $forum['posts'] = (int) $forum['posts'] + 1; $topic['posts'] = (int) $topic['posts'] + 1; IndexForumSetLastPostInfo($forum, $topic); // Добавляем очков пользователю System::user()->ChargePoints(System::config('points/forum_post')); // Увеличиваем счётчик сообщений пользователя ForumCalcUserCounters(1); // Делаем рассылку подписчикам на эту тему Forum_Subscription_Send($topic_id); // Очищаем кэш форума ForumCacheClear(); GO(Ufu('index.php?name=forum&op=showtopic&topic=' . $topic_id . '&view=lastpost#last', 'forum/topic{topic}-new.html')); }
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } $bconf['count'] = SafeEnv($_POST['count'], 11, int); $bconf['cats'] = SafeEnv($_POST['cats'], 11, int); $block_config = serialize($bconf); System::cache()->Delete('block', array('random_images1', 'random_images2', 'random_images3', 'random_images4'));