/** * Добавляет строку таблицы для выбора и загрузки изображения * @param $Title * @param $LoadTitle * @param $FileName * @param $Dir * @param string $Name * @param string $LoadName * @param string $FormName * @return void */ function AdminImageControl($Title, $LoadTitle, $FileName, $Dir, $Name = 'image', $LoadName = 'up_image', $FormName = 'edit_form') { $max_file_size = ini_get('upload_max_filesize'); $images_data = array(); $Dir = RealPath2($Dir) . '/'; $images = array(); $images = GetFiles($Dir, false, true, '.gif.png.jpeg.jpg'); $images[-1] = 'no_image/no_image.png'; System::admin()->DataAdd($images_data, $images[-1], 'Нет картинки', $FileName == ''); $selindex = -1; for ($i = 0, $c = count($images) - 1; $i < $c; $i++) { if ($FileName == $images[$i]) { $sel = true; $selindex = $i; } else { $sel = false; } System::admin()->DataAdd($images_data, $images[$i], $images[$i], $sel); } $select = System::admin()->Select($Name, $images_data, false, 'onchange="document.' . $FormName . '.iconview.src=\'' . $Dir . '\'+document.' . $FormName . '.' . $Name . '.value;"'); $ctrl = <<<HTML <table cellspacing="0" cellpadding="0" border="0" width="100%"> \t<tr> \t\t<td valign="top" style="border-bottom:none;">{$select}</td> \t</tr> \t<tr> \t\t<td style="border-bottom:none; padding-top: 5px;" width="100%" align="left"><img height="80" id="iconview" src="{$Dir}{$images[$selindex]}"></td> \t</tr> </table> HTML; System::admin()->FormRow($Title, $ctrl); System::admin()->FormRow($LoadTitle, System::admin()->FFile($LoadName) . '<br /><small>Формат изображений только *.jpg,*.jpeg,*.gif,*.png</small><br /><small>Максимальный размер файла: ' . $max_file_size . '</small>'); }
function AdminFileManager() { UseScript('elfinder'); $options = array('url' => 'index.php?name=plugins&p=connectors&mod=elfinder', 'lang' => 'ru', 'docked' => true, 'height' => 490); System::admin()->AddOnLoadJS('var elfinder = $("#finder").elfinder(' . JsonEncode($options) . ')'); System::admin()->AddTextBox('�איכמג�י לוםוהזונ', '<div id="finder">finder</div>'); }
public function AddTable($Title = '', $DivName = 'jqueryuitable') { if ($Title != '') { System::admin()->AddCenterBox($Title); } System::admin()->AddOnLoadJS('$("#' . $DivName . '").table(' . $this->GetOptions() . ');'); System::admin()->AddText('<div id="' . $DivName . '"></div>'); }
function AdminFeedBackDepartments() { System::database()->Select('feedback', ''); $text = '<table cellspacing="0" cellpadding="0" class="cfgtable">'; $text .= '<tr><th>Название</th><th>E-mail</th><th>Статус</th><th>Функции</th></tr>'; while ($row = System::database()->FetchRow()) { $fid = SafeDB($row['id'], 11, int); $st = System::admin()->SpeedStatus('Вкл.', 'Выкл.', ADMIN_FILE . '?exe=feedback&a=changestatus&id=' . $fid, $row['active'] == '1'); $func = System::admin()->SpeedButton('Редактировать', ADMIN_FILE . '?exe=feedback&a=edit&id=' . $fid, 'images/admin/edit.png') . System::admin()->SpeedConfirm('Удалить', ADMIN_FILE . '?exe=feedback&a=delete&id=' . $fid, 'images/admin/delete.png', 'Удалить департамент?'); $text .= '<tr> <td><b>' . System::admin()->Link(SafeEnv($row['name'], 255, str), ADMIN_FILE . '?exe=feedback&a=edit&id=' . $fid, 'Редактировать') . '</b></td> <td>' . PrintEmail($row['email']) . '</td> <td>' . $st . '</td> <td>' . $func . '</td> </tr>'; } $text .= '</table>'; AddTextBox('Департаменты', $text); }
function AdminCacheMain() { AddCenterBox('Очистка кэша'); if (!System::cache()->Enabled) { if (USE_CACHE) { System::admin()->HighlightError('<strong style="color: #FF0000;">Внимание!</strong> Папка "' . System::cache()->Path . '" не доступна для записи. Функция кэширования отключена.'); } else { System::admin()->HighlightError('<strong style="color: #FF0000;">Внимание!</strong> Функция кэширования отключена в конфигурационном файле "config/config.php".'); } } $text = '<table cellspacing="0" cellpadding="0" class="cfgtable">'; $text .= '<tr><th>Группа</th><th>Папка</th><th>Записей</th><th>Занимаемое место</th><th>Функции</th></tr>'; $num_rows = 0; $total_size = 0; $groups = System::cache()->GetGroups(); foreach ($groups as $g) { $file_size = 0; $num_files = 0; $folder = System::cache()->Path . $g; $files = scandir($folder); foreach ($files as $file) { if ($file != '.' && $file != '..') { $f = $folder . '/' . $file; if (!is_dir($f)) { $file_size += filesize($f); } $num_files++; } } $func = SpeedButton('Очистить', ADMIN_FILE . '?exe=cache&a=clear&group=' . SafeDB($g, 255, str), 'images/admin/cleanup.png'); $rows = floor($num_files / 2); $text .= '<tr>' . '<td>' . SafeDB($g, 255, str) . '</td>' . '<td>' . SafeDB($folder, 255, str) . '</td>' . '<td>' . $rows . '</td>' . '<td>' . FormatFileSize($file_size) . '</td>' . '<td>' . $func . '</td>' . '</tr>'; $num_rows += $rows; $total_size += $file_size; } $text .= '</table><br />'; $text .= 'Итого <b>' . count($groups) . '</b> групп(ы), <b>' . $num_rows . '</b> записей и <b>' . FormatFileSize($total_size) . '</b> занято. ' . System::admin()->SpeedButton('Очистить все группы', ADMIN_FILE . '?exe=cache&a=cleanup', '', true, true); $text .= '<br /><br />'; AddText($text); }
function AdminSiteMessagesMain() { System::database()->Select('messages', ''); $text = '<table cellspacing="0" cellpadding="0" class="cfgtable">'; $text .= '<tr><th>Название</th><th>Осталось времени</th><th>Кто видит</th><th>Статус</th><th>Функции</th></tr>'; while ($msg = System::database()->FetchRow()) { $mid = SafeDB($msg['id'], 11, int); $st = System::admin()->SpeedStatus('Вкл.', 'Выкл.', ADMIN_FILE . '?exe=messages&a=changestatus&id=' . $mid, $msg['active'] == '1'); $resettime = ''; if ($msg['expire'] != '0') { $total = TotalTime(time(), SafeDB($msg['date'], 11, int) + Day2Sec * SafeDB($msg['expire'], 11, int)); if ($total['days'] > 0 || $total['hours'] > 0) { if ($total['days'] > 0) { $resettime .= $total['sdays']; if ($total['hours'] > 0) { $resettime .= ' и '; } } if ($total['hours'] > 0) { $resettime .= $total['shours']; } } else { $resettime = 'Время вышло'; } } else { $resettime = 'Неограниченно'; } $func = ''; $func .= SpeedButton('Редактировать', ADMIN_FILE . '?exe=messages&a=msgeditor&id=' . $mid, 'images/admin/edit.png'); $func .= System::admin()->SpeedConfirm('Удалить', ADMIN_FILE . '?exe=messages&a=delete&id=' . $mid . '&ok=0', 'images/admin/delete.png', 'Удалить сообщение?'); $text .= '<tr><td><b>' . System::admin()->Link(SafeDB($msg['title'], 250, str), ADMIN_FILE . '?exe=messages&a=msgeditor&id=' . $mid) . '</b></td> <td>' . $resettime . '</td> <td>' . ViewLevelToStr(SafeDB($msg['view'], 1, int)) . '</td> <td>' . $st . '</td> <td>' . $func . '</td> </tr>'; } $text .= '</table>'; AddTextBox('Все сообщения', $text); }
/** * Выводит дерево в html-коде для отображения в админ-панели * @param int $ParentId * @return bool|string */ public function ShowCats($ParentId = 0) { UseScript('jquery_ui_treeview'); if ($ParentId == 0 && isset($_GET['_cat_parent'])) { $ParentId = SafeEnv($_GET['_cat_parent'], 11, int); } $elements = array(); if ($ParentId == 0 && !isset($this->Cats[$ParentId])) { return 'Нет категорий'; } foreach ($this->Cats[$ParentId] as $cat) { $id = SafeDB($cat['id'], 11, int); $icon = trim(SafeDB($cat['icon'], 255, str)); $info = ''; if ($icon != '') { $info .= '<img src="' . $icon . '">'; } if ($this->index_id_par_name != '') { $link_go = Ufu('index.php?name=' . $this->module . '&' . $this->index_id_par_name . '=' . $id, $this->module . '/{' . $this->index_id_par_name . '}/'); $info .= ($icon != '' ? '<br>' : '') . '<b>Адрес</b>: <a href="' . $link_go . '" target="_blank">/' . $link_go . '</a>'; } $icon = 'images/folder.png'; $add_cat_link = ADMIN_FILE . '?exe=' . $this->module . '&' . $this->action_par_name . '=' . $this->edit_met . '&_cat_adto=' . $id; $edit_cat_link = ADMIN_FILE . '?exe=' . $this->module . '&' . $this->action_par_name . '=' . $this->edit_met . '&' . $this->id_par_name . '=' . $id; $func = ''; $func .= System::admin()->SpeedButton('Добавить дочернюю категорию', $add_cat_link, 'images/admin/folder_add.png'); $func .= System::admin()->SpeedButton('Редактировать', $edit_cat_link, 'images/admin/edit.png'); $func .= System::admin()->SpeedConfirmJs('Удалить категорию', '$(\'#cats_tree_container\').treeview(\'deleteNode\', ' . $id . ');', 'images/admin/delete.png', 'Уверены что хотите удалить? Все дочерние объекты так-же будут удалены.'); $obj_counts = $this->GetCountersRecursive($id); $elements[] = array('id' => $id, 'icon' => $icon, 'title' => '<b>' . System::admin()->Link(SafeDB($cat['title'], 255, str) . ' (' . $obj_counts['files'] . ')', $edit_cat_link) . '</b>', 'info' => $info, 'func' => $func, 'isnode' => isset($this->Cats[$id]), 'child_url' => ADMIN_FILE . '?exe=' . $this->module . '&' . $this->action_par_name . '=' . $this->showcats_met . '&_cat_parent=' . $id); } if ($ParentId == 0) { System::admin()->AddOnLoadJS('$("#cats_tree_container").treeview({del: \'' . ADMIN_FILE . '?exe=' . $this->module . '&' . $this->action_par_name . '=' . $this->del_met . '&ok=1\', delRequestType: \'GET\', tree: ' . JsonEncode($elements) . '});'); return '<div id="cats_tree_container"></div>'; } else { echo JsonEncode($elements); exit; } }
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ // Восстановление БД из резервной копии $name = RealPath2(System::config('backup_dir') . $_GET['name']); if (isset($_GET['table'])) { $table = $_GET['table']; System::admin()->AddCenterBox('Восстановление таблицы "' . $table . '"'); $table = System::database()->Prefix() . $table; } else { $table = ''; System::admin()->AddCenterBox('Восстановление базы данных'); } $restore_r = System::database()->RestoreBackupFile($name, $table); if ($restore_r == 3) { System::admin()->HighlightError('Ошибка. Неверный формат файла, либо это бекап другого типа Базы данных.'); } elseif ($restore_r == 2) { System::admin()->Highlight('Произошли ошибки при восстановлении некоторых таблиц.'); } else { if ($table == '') { System::admin()->Highlight('База данных успешно восстановлена из резервной копии.'); Audit('Управление БД: База данных восстановлена из резервной копии "' . $name . '"'); } else { System::admin()->Highlight('Таблица "' . $table . '" успешно восстановлена из резервной копии.'); Audit('Управление БД: Таблица "' . $table . '" восстановлена из резервной копии "' . $name . '"'); } }
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' : '')); } }
/** * Сохраняет данные формы сгенерированной фукцией AdminUserEditor * * @param $back_link * @param string $a * @param int $id * @param bool $IsAdmin * @return void */ function AdminUserEditSave($back_link, $a = 'insert', $id = 0, $IsAdmin = false) { $SystemAdmin = System::user()->isSuperUser(); $edit = $a == 'update'; $editProfile = $edit && !$SystemAdmin && $id == System::user()->Get('u_id'); // Администратор редактирует свой профиль $editStatus = false; // Разрешено редактирование статуса $editType = false; // Разрешено редактировать тип пользователя // Загружаем данные пользователя из БД if ($edit) { $user = System::database()->SelectOne('users', "`id`='{$id}'" . ($IsAdmin ? " and `type`='1'" : " and `type`='2'")); if (!$user) { AddTextBox('Ошибка', '<p align="center">Пользователь не найден, либо у вас не достаточно прав для редактирования администраторов.</p>'); return; } } // Устанавливаем ограничения доступа if ($IsAdmin) { // Редактируем администратора if ($SystemAdmin) { // Только системные администраторы могут редактировать статус и тип администраторов if (!$edit) { $editStatus = true; } elseif (!(groupIsSystem(SafeEnv($user['access'], 11, int)) && GetSystemAdminsCount() <= 1)) { // Если он не системный или системных больше 1 $editStatus = true; } $editType = $editStatus; } } else { // Если пользователь $editStatus = true; // Все администраторы с доступом могут редактировать статус пользователя $editType = $SystemAdmin; // Только системные администраторы могут создавать администраторов } // Обрабатываем данные $errors = array(); // Логин if (isset($_POST['login']) && CheckLogin($_POST['login'], $errors, !$edit)) { $login = SafeEnv($_POST['login'], 30, str); } else { $login = ''; } // Пароль $pass = ''; if (!$edit || $_POST['pass'] != '') { $pass_generate_message = ''; if (isset($_POST['pass']) && CheckPass($_POST['pass'], $errors)) { $pass = SafeEnv($_POST['pass'], 30, str); if (!isset($_POST['rpass']) || SafeEnv($_POST['rpass'], 30, str) != $pass) { $errors[] = 'Пароли не совпадают.'; } } else { $pass = ''; } if (isset($_POST['pass']) && $_POST['pass'] == '') { srand(time()); $pass = GenBPass(rand(System::config('user/pass_min_length'), 15)); $pass_generate_message = '<br />Так как вы не указали пароль, он был сгенерирован автоматически и выслан на указанный E-mail пользователя.'; } $pass2 = md5($pass); } // e-mail if (isset($_POST['email']) && $_POST['email'] != '') { if (!CheckEmail($_POST['email'])) { $errors[] = 'Не правильный формат E-mail. Он должен быть вида: <b>domain@host.ru</b> .'; } $email = SafeEnv($_POST['email'], 50, str, true); } else { $email = ''; $errors[] = 'Вы не ввели E-mail.'; } // Скрыть e-mail if (isset($_POST['hideemail'])) { $hide_email = '1'; } else { $hide_email = '0'; } // Имя пользователя на сайте if (isset($_POST['nikname']) && CheckNikname($_POST['nikname'], $errors, !$edit)) { $nik_name = SafeEnv($_POST['nikname'], 50, str, true); } else { $nik_name = ''; } // Полное имя if (isset($_POST['realname'])) { $real_name = SafeEnv($_POST['realname'], 250, str, true); } else { $real_name = ''; } // Возраст if (isset($_POST['age'])) { if ($_POST['age'] == '' || is_numeric($_POST['age'])) { $age = SafeEnv($_POST['age'], 3, int); } else { $errors[] = 'Ваш возраст должен быть числом!'; } } else { $age = ''; } // Домашняя страница if (isset($_POST['homepage'])) { if ($_POST['homepage'] != '' && substr($_POST['homepage'], 0, 7) == 'http://') { $_POST['homepage'] = substr($_POST['homepage'], 7); } $homepage = SafeEnv($_POST['homepage'], 250, str, true); } else { $homepage = ''; } // Номер ICQ if (isset($_POST['icq'])) { if ($_POST['icq'] == '' || is_numeric($_POST['icq'])) { $icq = SafeEnv($_POST['icq'], 15, str, true); } else { $errors[] = 'Номер ICQ должен содержать только числа!'; } } else { $icq = ''; } // Город if (isset($_POST['city'])) { $city = SafeEnv($_POST['city'], 100, str, true); } else { $city = ''; } // Часовой пояс if (isset($_POST['gmt'])) { $gmt = SafeEnv($_POST['gmt'], 255, str); } else { $gmt = System::config('general/default_timezone'); } // О себе if (isset($_POST['about'])) { $about = SafeEnv($_POST['about'], System::config('user/about_max_length'), str, true); } else { $about = ''; } // Подписка на новости if (isset($_POST['snews'])) { $server_news = '1'; } else { $server_news = '0'; } //Обрабатываем аватар $updateAvatar = true; if (isset($_POST['avatar'])) { if (System::config('user/avatar_transfer') == '1' && isset($_FILES['upavatar']) && file_exists($_FILES['upavatar']['tmp_name'])) { if ($edit) { $avatar = $user['avatar']; $a_personal = $user['a_personal']; } else { $avatar = ''; $a_personal = '0'; } UserLoadAvatar($errors, $avatar, $a_personal, $avatar, $a_personal, $edit); } elseif ($_POST['avatar'] == '') { $updateAvatar = false; } elseif (file_exists(RealPath2(System::config('general/avatars_dir') . $_POST['avatar']))) { if ($edit) { if ($user['a_personal'] == '1') { UnlinkUserAvatarFiles($user['avatar']); } } $a_personal = '0'; $avatar = $_POST['avatar']; } else { $avatar = ''; $a_personal = '0'; } } else { $avatar = ''; $a_personal = '0'; } $SendActivation = false; if ($edit) { $active = SafeEnv($user['active'], 11, int); $code = SafeEnv($user['activate'], 11, int); } else { $active = '1'; $code = ''; } if ($editStatus) { $activate = $_POST['activate']; $lastactivate = 'manual'; if ($active == '0' && $code != '') { $lastactivate = 'mail'; } elseif ($active == '1' && $code == '') { $lastactivate = 'auto'; } if ($activate != $lastactivate) { switch ($activate) { case 'manual': $active = '0'; $code = ''; $SendActivation = false; break; case 'auto': $active = '1'; $code = ''; $SendActivation = false; break; case 'mail': $active = '0'; $code = GenRandomString(8, 'qwertyuiopasdfghjklzxcvbnm'); $SendActivation = true; break; } } } if ($edit) { $access = SafeEnv($user['type'], 11, int); $user_type = SafeEnv($user['access'], 11, int); } else { $access = '2'; $user_type = '-1'; } if ($editType && $_POST['status'] != 'member') { $access = '1'; $user_type = SafeEnv($_POST['status'], 11, int); } $reg_date = time(); $last_visit = time(); $ip = getip(); $points = 0; $visits = 0; if ($SendActivation) { UserSendActivationMail($nik_name, $email, $login, $pass, $code, $reg_date); } elseif (!$edit) { UserSendEndRegMail($email, $nik_name, $login, $pass, $reg_date); } if (!$edit) { $values = Values('', $login, $pass2, $nik_name, $real_name, $age, $email, $hide_email, $city, $icq, $homepage, $gmt, $avatar, $about, $server_news, $reg_date, $last_visit, $ip, $points, $visits, $active, $code, $access, $user_type, $a_personal, serialize(array())); System::database()->Insert('users', $values); } else { $set = "`login`='{$login}',`email`='{$email}',`hideemail`='{$hide_email}',`name`='{$nik_name}'," . "`truename`='{$real_name}',`age`='{$age}',`url`='{$homepage}',`icq`='{$icq}',`city`='{$city}'," . "`timezone`='{$gmt}'" . ($updateAvatar == true ? ",`avatar`='{$avatar}',`a_personal`='{$a_personal}'" : '') . "," . "`about`='{$about}',`servernews`='{$server_news}'" . ($pass != '' ? ",`pass`='{$pass2}'" : '') . ",`type`='{$access}'," . "`access`='{$user_type}',`active`='{$active}',`activate`='{$code}'"; System::database()->Update('users', $set, "`id`='" . $id . "'"); System::user()->UpdateMemberSession(); UpdateUserComments($id, $id, $nik_name, $email, $hide_email, $homepage); } if (count($errors) > 0) { $text = 'Аккаунт сохранен, но имели место следующие ошибки:<br /><ul>'; foreach ($errors as $error) { $text .= '<li>' . $error; } $text .= '</ul>'; AddTextBox('Внимание', $text); } else { // Очищаем кэш пользователей System::cache()->Delete(system_cache, 'users'); if (!$editProfile) { GO(ADMIN_FILE . '?exe=' . $back_link); } else { System::admin()->AddCenterBox('Редактирование профиля'); System::admin()->Highlight('Ваш профиль сохранён, обновите страницу.'); } } }
if (!isset($col['default'])) { $col['default'] = ''; } if (!isset($col['attributes'])) { $col['attributes'] = ''; } if (!isset($col['auto_increment'])) { $col['auto_increment'] = false; } $func = ''; $func .= SpeedButton('Просмотреть информацию для установки', ADMIN_FILE . '?exe=dbadmin&a=viewcollinfo&name=' . $name . '&collid=' . $i, 'images/admin/info.png'); $func .= System::admin()->SpeedConfirm('Удалить колонку', ADMIN_FILE . '?exe=dbadmin&a=deletecoll&name=' . $name . '&collid=' . $i, 'images/admin/delete.png', 'Удалить колонку?'); $text .= '<tr> <td>' . $i . '</td> <td>' . SafeDB($col['name'], 255, str) . '</td> <td>' . SafeDB($col['type'], 255, str) . (isset($col['length']) ? '(' . SafeDB($col['length'], 11, int) . ')' : '') . '</td> <td>' . SafeDB($col['attributes'], 255, str) . '</td> <td>' . ($col['notnull'] ? '<font color="#0000FF">Нет</font>' : '<font color="#FF0000">Да</font>') . '</td> <td>' . SafeDB($col['default'], 255, str) . '</td> <td>' . ($col['auto_increment'] ? '<font color="#FF0000">Да</font>' : '<font color="0000FF">Нет</a>') . '</td> <td>' . $func . '</td>'; System::site()->DataAdd($selcoldata, $i, SafeDB($col['name'], 255, str), $i == $colcount); $i++; } $text .= '</table><br />'; AddCenterBox('Структура таблицы "' . $name . '"'); AddText($text); System::admin()->FormTitleRow('Вставить колонку'); FormRow('После', System::site()->Select('toindex', $selcoldata)); AddForm('<form action="' . ADMIN_FILE . '?exe=dbadmin&a=newcoll&name=' . $name . '" method="post">', $site->Submit('Далее', 'title="Перейти к след. шагу добавления колонки."')); AdminFdbAdminGenTableMenu($name);
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } $name = SafeEnv($_GET['name'], 255, str); $onid = SafeEnv($_POST['toindex'], 11, int); $text = ''; $text .= '<form action="' . ADMIN_FILE . '?exe=dbadmin&a=addcoll&to=' . $name . '&onid=' . $onid . '" method="post"><table cellspacing="0" cellspacing="0" class="cfgtable">' . '<tr><th>Поле</th><th>Тип</th><th>Длина/значения</th><th>Атрибуты</th><th>Ноль</th><th>По умолчанию</th><th>Авто приращение</th><th>Первичный</th><th>Индекс</th><th>Уникальное</th><th> - </th><th>Полный текст</th></tr>'; $type = array('varchar', 'tinyint', 'text', 'date', 'smallint', 'mediumint', 'int', 'bigint', 'float', 'double', 'decimal', 'datetime', 'time', 'year', 'char', 'tinyblob', 'tinytext', 'blob', 'mediumblob', 'mediumtext', 'longblob', 'longtext', 'enum', 'set'); for ($i = 0; $i < count($type); $i++) { System::admin()->DataAdd($types, $type[$i], $type[$i]); } $Attributes = array(array('none', ''), array('binary', 'binary'), array('unsigned', 'unsigned'), array('unsigned_zerofill', 'unsigned zerofill')); $AtrData = array(); for ($i = 0; $i < count($Attributes); $i++) { System::admin()->DataAdd($AtrData, $Attributes[$i][0], $Attributes[$i][1]); } $i = '0'; $text .= '<tr><td>' . System::admin()->Edit('name' . $i, '', false, 'style="width:80px;" class="autofocus"') . '</td><td>' . System::admin()->Select('type' . $i, $types) . '</td><td>' . System::admin()->Edit('length' . $i, '', false, 'style="width:50px"') . '</td><td>' . System::admin()->Select('atributes' . $i, $AtrData) . '</td><td>' . System::admin()->Check('null' . $i, 'null') . '</td><td>' . System::admin()->Edit('default' . $i, '', false, 'style="width:80px;"') . '</td><td>' . System::admin()->Check('auto_increment' . $i, 'val') . '</td><td>' . System::admin()->Radio('params' . $i, 'primary') . '</td><td>' . System::admin()->Radio('params' . $i, 'index') . '</td><td>' . System::admin()->Radio('params' . $i, 'unique') . '</td><td>' . System::admin()->Radio('params' . $i, 'noparams', true) . '</td><td>' . System::admin()->Check('fulltext' . $i, '1') . '</td></tr>'; $text .= '</table>'; $text .= System::admin()->Hidden('cols', '1') . "<br><br>" . System::site()->Button('Отмена', 'onclick="history.go(-1)"') . System::admin()->Submit('Добавить') . '</form>'; AddTextBox('Форма добавления колонки в таблицу "' . $name . '"', $text);
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } $count = 10; $title = 'Настройка блока для показа последних тем на форуме'; if ($a == 'edit') { $count = SafeDB($block_config, 11, int); } FormRow('Сколько последних тем показывать', System::admin()->Edit('count', $count, false, 'style="width:400px;"'));
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } $topic_id = 0; if ($a == 'edit') { $topic_id = SafeDB($block_config, 11, int); } System::database()->Select('mail_topics', ''); $topicdata = array(); while ($topic = System::database()->FetchRow()) { System::admin()->DataAdd($topicdata, $topic['id'], $topic['title'], $topic['id'] == $topic_id); } FormRow('Тема рассылки', System::admin()->Select('topic', $topicdata, false, '')); $title = 'Настройка блока рассылки';
function AdminArticlesResetRating() { global $editarticles; if (!$editarticles) { System::admin()->AccessDenied(); } $id = SafeEnv($_GET['id'], 11, int); System::database()->Select('articles', "`id`='{$id}'"); $r = System::database()->FetchRow(); System::database()->Update('articles', "num_votes='0',all_votes='0'", "`id`='{$id}'"); Audit('Статьи: Сброс рейтинга для "' . $r['title'] . '"'); GoRefererUrl($_REQUEST['back']); }
function AdminFdbAdminAddTableForm(&$text, $tablename, $SetComment = '', $SetTableType = '') { $tabletypes = array(array('default', 'По умолчанию'), array('myisam', 'MyISAM'), array('heap', 'MyISAM'), array('merge', 'Merge'), array('berkeleydb', 'Berkeley DB'), array('isam', 'ISAM')); for ($i = 0; $i < 4; $i++) { if ($SetTableType == $tabletypes[$i][0]) { $checked = true; } else { $checked = false; } System::admin()->DataAdd($tabletype, $tabletypes[$i][0], $tabletypes[$i][1]); } $text .= '<font size="2">Комментарий к таблице ' . System::admin()->Edit('comment', $SetComment, false, 'style="width: 300px;"') . ' Тип ' . System::admin()->Select('tabletype', $tabletype) . '</font>' . System::admin()->Hidden('tablename', $tablename); }
<?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));
function AdminCommentsFind() { if (System::config('comments/disable_posts_engine')) { System::admin()->AddCenterBox('Ошибка'); System::admin()->HighlightError('Система комментариев отключена.'); return; } // Рекурсивная функция для поиска родителя комментария верхнего уровня function CommentsFindTopLevelPost(&$posts, $post_id, $post_parent_id) { if (isset($posts[$post_parent_id])) { if ($posts[$post_parent_id]['post_parent_id'] == 0) { return $posts[$post_parent_id]['id']; } return CommentsFindTopLevelPost($posts, $posts[$post_parent_id]['id'], $posts[$post_parent_id]['post_parent_id']); } else { return $post_id; } } // id таблицы комментариев в таблице comments и id комментария $table_id = SafeEnv($_GET['table'], 11, int); $post_id = SafeEnv($_GET['post_id'], 11, int); System::database()->Select('comments', "`id`='{$table_id}'"); if (!System::database()->NumRows()) { System::admin()->AddCenterBox('Ошибка'); System::admin()->HighlightError('Таблица комментариев не найдена.'); return; } $table = System::database()->FetchRow(); // Загружаем комментарий System::database()->Select($table['table'], "`id`='{$post_id}'"); if (!System::database()->NumRows()) { System::admin()->AddCenterBox('Ошибка'); System::admin()->HighlightError('Комментарий не найден.'); return; } $post = System::database()->FetchRow(); // Загружаем объект комментария $id_coll = SafeEnv($table['id_coll'], 255, str); $object_id = SafeEnv($post['object_id'], 11, int); System::database()->Select($table['objects_table'], "`{$id_coll}`='{$object_id}'"); if (!System::database()->NumRows()) { System::admin()->AddCenterBox('Ошибка'); System::admin()->HighlightError('Объект комментария не найден.'); return; } $object = System::database()->FetchRow(); $en_navigation = System::config('comments/ennav'); $navigation_page = 1; if ($en_navigation) { // Включена постраничная навигация в комментариях // Количество комментарий на страницу $comments_on_page = System::config('comments/onpage'); // Загружаем комментарии объекта $object_postsdb = System::database()->Select($table['table'], "`object_id`='{$object_id}'"); SortArray($object_postsdb, 'post_date', !System::config('comments/decreasesort')); if (count($object_postsdb) <= $comments_on_page) { // Навигация не требуется $en_navigation = false; } else { // Определяем страницу на котором отображается комментарий if ($post['post_parent_id'] == 0) { // Комментарий верхнего уровня $post_top_id = $post_id; } else { // Поиск родительского комментария верхнего уровня // Агрегируем комментарии объекта по id $object_posts = array(); foreach ($object_postsdb as $p) { $object_posts[$p['id']] = $p; } $post_top_id = CommentsFindTopLevelPost($object_posts, $post_id, $post['post_parent_id']); } // Берём только комментарии верхнего уровня $object_top_posts = array(); foreach ($object_postsdb as $p) { if ($p['post_parent_id'] == 0) { $object_top_posts[$p['id']] = true; } } // Узнаём порядковый номер post_top_id $index = array_search($post_top_id, array_keys($object_top_posts)); $navigation_page = ceil(($index + 1) / $comments_on_page); // Определили страницу if ($navigation_page > 1) { $en_navigation = true; } } } if (System::config('general/ufu')) { if ($en_navigation) { $url_template = $table['nav_ufu']; } else { $url_template = $table['ufu']; } } else { $url_template = $table['url']; if ($en_navigation) { $url_template .= '&' . urlencode($table['page_param']) . '=' . $navigation_page; } } // Парсим шаблон URL $keys = array(); foreach ($object as $key => &$val) { $val = urlencode($val); $keys['{' . $key . '}'] =& $val; } $keys['{' . $table['page_param'] . '}'] = $navigation_page; $url = str_replace(array_keys($keys), array_values($keys), $url_template); GO($url . '#post_' . $post_id); }
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ // Здесь осуществляется вывод элементов формы которые потребуются для настройки блока // Так же надо учитывать что может вызываться метод редактирования блока, тогда нужно // все поля заполнить на основе переданной конфигурации блока в переменной $block_config // Указателем на то, что происходит редактирование блока может служить переменная $a. При // редактировании она должна иметь значение 'edit'. // Вы можете использовать переменную $title для изменения заголовка формы. if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } $mod_text = ''; if ($a == 'edit') { $mod_text = SafeDB($block_config, 0, str, false); } FormTextRow('Текст', System::admin()->HtmlEditor('mod_text', $mod_text, 600, 400)); $title = 'Настройка текстового блока';
/** * Восстанавливает базу данных из резервной копии. * @param type $BackupFile Имя файла бекапа * @param type $Table Имя таблицы, если нужно восстановить одну таблицу */ public function RestoreBackupFile($BackupFile, $Table = '') { $zip = new ZipArchive(); $iferrors = false; if (GetSecondFileExt($BackupFile, true) == $this->Name && $zip->open($BackupFile) === true) { for ($i = 0; $i < $zip->numFiles; $i++) { $filename = $zip->getNameIndex($i); if ($Table == '' || $Table == GetFileName($filename, true)) { $sql = $zip->getFromIndex($i); $sql = explode(";", $sql); foreach ($sql as $query) { if (trim($query) == '') { continue; } if (System::database()->MySQLQuery($query) === false) { if (defined('ADMIN_SCRIPT')) { System::admin()->HighlightError(System::database()->MySQLGetErrMsg() . ' (' . $filename . ')'); } $iferrors = true; } } } } $zip->close(); // Обрабытываем ошибки if ($iferrors) { return 2; // Ошибки при восстановлении таблиц } return 1; // Успешно восстановлено } else { return 3; // Неверный формат файла } }
Admin.HideSplashScreen(); } }); }; '); $backup_files = GetFiles($backup_dir, false, true, '.zip'); rsort($backup_files, SORT_STRING); $backup_files2 = array(); foreach ($backup_files as $file) { if (GetSecondFileExt($file, true) == System::database()->Name) { $backup_files2[] = $file; } } $text = ''; $text .= '<table cellspacing="0" cellpadding="0" class="cfgtable">'; $text .= '<tr><th>Имя файла (дата-время...)</th><th>Функции</th></tr>'; foreach ($backup_files2 as $file) { $file = SafeDB($file, 255, str); $func = System::admin()->SpeedConfirm('Восстановить', ADMIN_FILE . '?exe=dbadmin&a=backup_restore&name=' . $file, 'images/admin/restore.png', 'Все текущие данные будут затёрты. Восстановить БД из резервной копии?'); $func .= System::admin()->SpeedConfirm('Удалить', ADMIN_FILE . '?exe=dbadmin&a=backup_delete&name=' . $file, 'images/admin/delete.png', 'Удалить?'); $text .= '<tr> <td><a href="' . $backup_dir . $file . '">' . $file . '</a></td> <td>' . $func . '</td> </tr>'; } if (count($backup_files2) == 0) { $text .= '<tr><td colspan="2" style="text-align: left;">Нет резервных копий.</td></tr>'; } $text .= '</table>'; $text .= '<a href="#" id="backup_button" class="button" onclick="CreateBackup(); return false;">Создать резервную копию</a>'; AddText($text);
$("#perform").button("option", "label", "Запуск <img src=\\"images/ajax-loader.gif\\">"); $("#result_container").hide(); $("#perform_result").html(""); $("#perform_result").hide(); $.ajax({ type: "POST", url: "' . ADMIN_FILE . '?exe=dbadmin&a=performsql", data: {code: $("#sqlcode").val()}, success: function(data){ $("#perform").button("option", "label", label); $("#perform_result").html("<pre>"+data+"</pre>"); $("#result_container").show(); $("#sqlcode_replace").animate({height: "100"}, 500); $("#perform_result").slideDown(); } }); };'); $html = <<<HTML <textarea id="sqlcode" style="width: 100%; height: 400px;">SELECT * FROM `table_news` WHERE `enabled`=1 ORDER BY `date`;</textarea> <div style="margin: 2px 0 0 0; "> \t<div style="float: right; margin-top: 1px;"> \t\t<a href="#" id="perform" class="button" onclick="PerformSqlCode(); return false;" title="Отправить код на выполнение и вывести результат">Запуск<img src="images/arrow_blue_right.png" /></a> \t</div> \t<div style="clear: both;"></div> </div> <div id="result_container" style="margin: 8px 0; width: 100%; background-color: #EEE; display: none; text-align: left; border: 3px #DDD solid; border-radius: 3px;-moz-border-radius: 3px;"> \t<div id="perform_result" style="display: none; padding: 5px; overflow-x: auto;"></div> </div> HTML; System::admin()->AddText($html);
if ($action == 'editfield') { if (isset($_GET['where'])) { $where = $_GET['where']; $where_url = '&where=' . SafeDB($_GET['where'], 255, str); } $edit = true; $index = SafeEnv($_GET['index'], 255, int); $rows = System::database()->Select($table, $where); $row = $rows[$index]; } $i = 0; foreach ($columns as $col) { if ($edit) { $val = HtmlChars($row[$columns[$i]['name']]); $cap = 'Сохранить'; $title = 'Редактирование записи'; } else { $val = ''; $cap = 'Добавить'; $title = 'Добавление записи'; } if (strtolower($col['type']) != 'text') { FormRow('<font color="#0000FF">' . (isset($col['auto_increment']) && $col['auto_increment'] == true ? '<u>' . $col['name'] . '</u>' : $col['name']) . '</font>' . '<br /><font color="#666666">' . $col['type'] . (isset($col['length']) ? '(' . $col['length'] . ')</font>' : '</font>'), System::admin()->Edit($col['name'], $val, false, 'style="width: 400px;"' . ($i == 0 ? ' class="autofocus"' : ''))); } else { FormRow('<font color="#0000FF">' . $col['name'] . '</font>', System::admin()->TextArea($col['name'], $val, 'style="width: 400px; height: 200px;"' . ($i == 0 ? ' class="autofocus"' : ''))); } $i++; } AddCenterBox($title); AddForm('<form action="' . ADMIN_FILE . '?exe=dbadmin&a=' . ($edit ? 'editsave' : 'insertsave') . '&name=' . $table . ($edit ? '&index=' . $index : '') . $where_url . $back . '" method="post">', ($edit ? System::site()->Button('Отмена', 'onclick="history.go(-1)"') : '') . System::admin()->Submit($cap)); AdminFdbAdminGenTableMenu($table);
function AdminUserSaveAvatar() { $alloy_mime = array('image/gif' => '.gif', 'image/jpeg' => '.jpg', 'image/pjpeg' => '.jpg', 'image/png' => '.png', 'image/x-png' => '.png'); include_once System::config('inc_dir') . 'picture.class.php'; $asize = getimagesize($_FILES['avatar']['tmp_name']); $alloy_mime = array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/png', 'image/x-png'); $alloy_exts = array('.gif', '.jpg', '.jpeg', '.png'); if (in_array($_FILES['avatar']['type'], $alloy_mime) && in_array(strtolower(GetFileExt($_FILES['avatar']['name'])), $alloy_exts)) { $NewName = $_FILES['avatar']['name']; if ($asize[0] > System::config('user/max_avatar_width') || $asize[1] > System::config('user/max_avatar_height')) { $thumb = new TPicture($_FILES['avatar']['tmp_name']); $thumb->SetImageSize(System::config('user/max_avatar_width'), System::config('user/max_avatar_height')); $thumb->SaveToFile(System::config('general/avatars_dir') . $NewName); } else { copy($_FILES['avatar']['tmp_name'], System::config('general/avatars_dir') . $NewName); } Audit('Пользователи: Добавление аватара в галерею аватар "' . $NewName . '"'); } else { System::admin()->AddCenterBox('Загрузка аватара'); System::admin()->HighlightError('Неправильный формат аватара. Ваш аватар должен быть формата GIF, JPEG или PNG.<br /><a href="javascript:history.go(-1)">Назад в галерею</a>'); } GO(ADMIN_FILE . '?exe=user&a=avatars'); }
function AdminBlocksMain() { System::database()->Select('block_types', ''); while ($type = System::database()->FetchRow()) { $types[SafeDB($type['folder'], 255, str)] = SafeDB($type['name'], 255, str); } unset($type); $b_pos = array('L' => 'Левые блоки', 'R' => 'Правые блоки', 'T' => 'Верхние блоки', 'B' => 'Нижние блоки', 'A' => 'A Нижние блоки'); $text = ''; $text .= '<table cellspacing="0" cellpadding="0" class="cfgtable">' . '<tr> <th>Заголовок</th> <th>Положение</th> <th>Тип</th> <th>Кто видит</th> <th>Статус</th> <th>Функции</th> </tr>'; foreach ($b_pos as $pos => $pos_title) { System::database()->Select('blocks', "`position`='" . SafeEnv($pos, 255, str) . "'"); $maxplace = System::database()->NumRows() - 1; if ($maxplace + 1 > 0) { $text .= '<tr><th colspan="6">' . SafeDB($pos_title, 255, str) . '</th></tr>'; } usort(System::database()->QueryResult, 'AdminBlocksSort'); while ($block = System::database()->FetchRow()) { $block_id = SafeDB($block['id'], 11, int); $st = System::admin()->SpeedStatus('Вкл.', 'Выкл.', ADMIN_FILE . '?exe=blocks&a=changestatus&id=' . $block_id, $block['enabled'] == '1'); $vi = ViewLevelToStr(SafeDB($block['view'], 1, int)); $move_menu = ''; if ($maxplace == 0) { // Единственный элемент в списке $move_menu .= ' - '; } else { if ($block['place'] >= 0 && $block['place'] < $maxplace) { // Первый элемент $move_menu .= System::admin()->SpeedButton('Вниз', ADMIN_FILE . '?exe=blocks&a=move&to=down&id=' . $block_id, 'images/admin/down.png'); } if ($block['place'] <= $maxplace && $block['place'] > 0) { $move_menu .= System::admin()->SpeedButton('Вверх', ADMIN_FILE . '?exe=blocks&a=move&to=up&id=' . $block_id, 'images/admin/up.png'); } } $func = ''; $func .= System::admin()->SpeedButton('Редактировать', ADMIN_FILE . '?exe=blocks&a=edit&id=' . $block_id, 'images/admin/edit.png'); $func .= System::admin()->SpeedConfirm('Удалить', ADMIN_FILE . '?exe=blocks&a=del&id=' . $block_id, 'images/admin/delete.png', 'Удалить блок?'); $text .= '<tr> <td><b>' . System::admin()->Link(SafeDB($block['title'], 255, str), ADMIN_FILE . '?exe=blocks&a=edit&id=' . $block_id) . '</b></td> <td>' . $move_menu . '</td> <td>' . $types[SafeDB($block['type'], 255, str)] . '</td> <td>' . $vi . '</td> <td>' . $st . '</td> <td>' . $func . '</td> </tr>'; } } $text .= '</table><br />'; AddCenterBox('Блоки'); AddText($text); }
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']); }
function AdminExtensionsConfig() { System::admin()->AddSubTitle('Настройки модуля'); $name = SafeEnv($_GET['name'], 255, str); System::database()->Select('modules', "`folder`='" . $name . "'"); $mod = System::database()->FetchRow(); System::admin()->FormRow('Имя', System::admin()->Edit('name', $mod['name'], false, 'style="width:200px;" class="autofocus"')); $dir = System::config('tpl_dir') . System::config('general/site_template') . '/themes/'; if (is_dir($dir)) { $templates = GetFiles($dir, false, true, ".html"); } else { $templates = array(); } System::admin()->DataAdd($templates_data, '', 'Стандартный "theme.html"', $mod['theme'] == ''); foreach ($templates as $template) { System::admin()->DataAdd($templates_data, $template, $template, $mod['theme'] == $template); } System::admin()->FormRow('Шаблон страницы', System::admin()->Select('theme', $templates_data)); System::admin()->FormRow('Кто видит', System::admin()->Select('view', GetUserTypesFormData(SafeDB($mod['view'], 1, int)))); System::admin()->FormRow('Включить', System::admin()->Select('enabled', GetEnData((bool) $mod['enabled'], 'Да', 'Нет'))); System::admin()->AddCenterBox('Настройка модуля "' . SafeDB($mod['name'], 255, str) . '"'); System::admin()->AddForm(System::admin()->FormOpen(ADMIN_FILE . '?exe=extensions&a=mod_configsave&name=' . SafeDB($mod['folder'], 255, str)), System::admin()->Button('Отмена', 'onclick="history.go(-1)"') . System::admin()->Submit('Сохранить')); }
function AdminNewsTopicSave() { global $news_access_edittopics, $action; if (!$news_access_edittopics) { System::admin()->AccessDenied(); } $image = SafeEnv($_POST['topic_image'], 255, str, true); if ($action == 'addtopic') { $values = Values('', SafeEnv($_POST['topic_name'], 255, str), SafeEnv($_POST['topic_description'], 255, str), $image, '0'); System::database()->Insert('news_topics', $values); Audit('Новости: Добавление новостного раздела "' . $_POST['topic_name'] . '"'); } elseif ($action == 'savetopic') { $id = SafeEnv($_GET['id'], 11, int); System::database()->Select('news_topics', "`id`='" . $id . "'"); $topic = System::database()->FetchRow(); $values = Values('', SafeEnv($_POST['topic_name'], 255, str), SafeEnv($_POST['topic_description'], 255, str), $image, SafeEnv($topic['counter'], 11, int)); System::database()->Update('news_topics', $values, "`id`='{$id}'", true); Audit('Редактирование новостного раздела "' . $_POST['topic_name'] . '"'); } GO(ADMIN_FILE . '?exe=news&a=topics'); }
/** * Подключает модуль. * @param $ClassName * @param bool $Admin * @return mixed */ public static function run($ClassName, $Admin = false) { $anns = GetAnnotations($ClassName); $action_param = isset($anns['class']['ActionParam']) ? $anns['class']['ActionParam'] : 'a'; $action = isset($_GET[$action_param]) ? $_GET[$action_param] : 'main'; $title = isset($anns['class']['Title']) ? $anns['class']['Title'] : ''; if ($Admin && $title != '') { self::admin()->AddSubTitle($title); } foreach ($anns['methods'] as $method => $params) { if (!isset($params['Action'])) { continue; } $actions = array(); $titles = array(); if (is_string($params['Action'])) { $actions[] = $params['Action']; } else { $actions = $params['Action']; } /* * Параметр ActionParam класса модуля совпадает с параметром Action метода. */ if (($s = array_search($action, $actions)) !== false) { $params['Action'] = $action; $anns['Action'] = $action; /* * Проверка доступа. * Если есть заголовок аннотации Access проверяем доступ для администратора. */ if (isset($params['Access']) && !System::user()->CheckAccess2($params['Access'][0], $params['Access'][1])) { if ($Admin) { System::admin()->AccessDenied(); } else { Header('HTTP/1.1 403 Forbidden'); System::site()->InitPage(); System::site()->AddTextBox('Ошибка', '<p align="center">Доступ запрещен.</p>'); System::site()->TEcho(); exit; } } /* * Генерируем массив заголовков. */ if (isset($params['Title'])) { if (is_string($params['Title'])) { $titles[] = $params['Title']; } else { $titles = $params['Title']; } } else { $titles[] = $title; } /* * Берём заголовок для этого действия (Action) */ $title = $titles[$s]; $params['Title'] = $title; $anns['Title'] = $title; if ($title != '') { if ($Admin) { self::admin()->AddSubTitle($title); } else { self::site()->SetTitle($title); } } /* * Создаём объект и вызываем метод. */ $mod_obj = new $ClassName($anns); call_user_func(array($mod_obj, $method), $params); } } }
function AdminsDelete() { $userid = SafeEnv($_GET['id'], 11, int); System::database()->Select('users', "`id`='" . $userid . "' and `type`='1'"); $user = System::database()->FetchRow(); if (groupIsSystem(SafeEnv($user['access'], 11, int)) && GetSystemAdminsCount() <= 1) { System::admin()->AddCenterBox('Ошибка'); System::admin()->HighlightError('Нельзя удалить последнего системного администратора.'); return; } if (isset($_GET['ok']) && $_GET['ok'] == '1') { // Удалить $id = SafeEnv($_GET['id'], 11, int); if (!isset($_POST['del_comments'])) { System::database()->Select('users', "`id`='{$id}'"); if (System::database()->NumRows() > 0) { $suser = System::database()->FetchRow(); UpdateUserComments($id, '0', SafeEnv($suser['name'], 50, str), SafeEnv($suser['email'], 50, str), SafeEnv($suser['hideemail'], 1, bool), SafeEnv($suser['url'], 250, str)); } } else { DeleteAllUserComments($id); } System::database()->Delete('users', "`id`='{$id}' and `type`='1'"); System::cache()->Delete(system_cache, 'users'); Audit('Администраторы: Удаление администратора "' . $user['name'] . '"'); GO(ADMIN_FILE . '?exe=admins'); } elseif (isset($_GET['ok']) && $_GET['ok'] == '2') { // Сделать пользователем System::database()->Update('users', "type='2',access='-1'", "`id`='" . SafeEnv($_GET['id'], 11, int) . "' and `type`='1'"); System::cache()->Delete(system_cache, 'users'); Audit('Администраторы: "' . $user['name'] . '" разжалован в пользователи'); GO(ADMIN_FILE . '?exe=admins'); } else { System::admin()->AddJS(' AjaxDeleteAdmin = function(){ var del = $("#del_comments:checked").val(); if(del == null){ del = "0"; } Admin.LoadPage("' . ADMIN_FILE . '?exe=admins&a=deladmin&id=' . $userid . '&ok=1&del_comments="+del, undefined, "Удаление"); }; AjaxAdminSetToUser = function(){ Admin.LoadPage("' . ADMIN_FILE . '?exe=admins&a=deladmin&id=' . $userid . '&ok=2"); }; '); AddCenterBox('Удаление администратора'); $Text = 'Что вы хотите сделать с администратором "' . SafeDB($user['name'], 255, str) . '"?'; $Text .= '<br /><br />' . System::admin()->Check('del_comments', '1', false, 'id="del_comments"') . '<label for="del_comments" style="cursor: pointer;">Удалить все комментарии этого пользователя</label><br /><br />' . System::admin()->SpeedButton('Отмена', 'javascript:history.go(-1)', 'images/admin/cancel.png', false, true) . ' ' . System::admin()->SpeedConfirmJs('Удалить', 'AjaxDeleteAdmin();', 'images/admin/delete.png', '', true) . ' ' . System::admin()->SpeedConfirmJs('Сделать пользователем', 'AjaxAdminSetToUser();', 'images/user_green.png', '', true); System::admin()->Highlight($Text); } }