/** * Преобразует строки объекта или массива из UTF-8 кодировки в CP1251 * @param $var * @return array|string * @since 1.3.5 */ function ObjectUtf8ToCp1251(&$var) { if (is_array($var)) { foreach ($var as &$v) { $v = ObjectUtf8ToCp1251($v); } } elseif (is_object($var)) { $vars = get_object_vars($var); foreach ($vars as $f => &$v) { $var->{$f} = ObjectUtf8ToCp1251($v); } } elseif (is_string($var)) { $var = Utf8ToCp1251($var); } return $var; }
public function __construct($Url = '', $Utf8 = false) { if ($Url == '') { return; } $info = parse_url($Url); if ($info === false) { return; } if (isset($info['scheme'])) { $this->Protocol = $info['scheme']; } if (isset($info['host'])) { $this->Host = $info['host']; } if (isset($info['port'])) { $this->Port = $info['port']; } if (isset($info['user'])) { $this->User = $info['user']; } if (isset($info['pass'])) { $this->Password = $info['pass']; } if (isset($info['path'])) { $this->Path = GetPathName($info['path']); $this->Document = GetFileName($info['path']); } if (isset($info['fragment'])) { $this->Anchor = $info['fragment']; } if (isset($info['query'])) { parse_str($info['query'], $params); parent::__construct($params); if ($Utf8) { foreach ($this as $key => $value) { $value = Utf8ToCp1251($value); $this[$key] = $value; } } } else { parent::__construct(); } }
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ if (System::database()->Name != 'MySQL') { echo "Только базы данных с поддержкой SQL."; exit; } if (isset($_POST['code'])) { $sql = Utf8ToCp1251($_POST['code']); } else { echo "Code is Empty"; exit; } $result = ''; $sql = explode(";", $sql); foreach ($sql as $query) { if (trim($query) == '') { continue; } $qr = System::database()->MySQLQueryResult($query); Audit('Управление БД: Perform SQL:' . "\n" . $query); if ($qr === false) { echo System::database()->MySQLGetErrNo() . ': ' . System::database()->MySQLGetErrMsg() . "\n"; } elseif (count($qr) > 0) { print_r($qr); echo "\n"; } else { echo "Запрос успешно выполнен.";
function AdminGalleryUpload() { // TODO: неправильный порядок изображений при мультизагрузке if (!isset($_POST['action']) || !isset($_GET['formid']) || !isset($_SESSION['uploadforms'][$_GET['formid']])) { AdminGalleryUploadForm(); return; } global $GalleryDir, $ThumbsDir; $formid = $_GET['formid']; // Загрузка фотографий if ($_POST['action'] == 'upload') { // SwfUpload кодирует имена файлов в UTF-8 $_FILES['up_image']['name'] = Utf8ToCp1251($_FILES['up_image']['name']); $Error = false; $_SESSION['uploadforms'][$formid]['photos'][] = LoadImage('up_image', $GalleryDir, $ThumbsDir, System::config('gallery/thumb_max_width'), System::config('gallery/thumb_max_height'), '', $Error, true, System::config('gallery/optimize_originals'), System::config('gallery/original_width'), System::config('gallery/original_height')); if ($Error) { exit('ERROR 2'); } exit('OK'); } // Предпросмотр добавляемых фотографий $_SESSION['uploadforms'][$formid]['category'] = $_POST['category']; $_SESSION['uploadforms'][$formid]['allow_comments'] = EnToInt($_POST['allow_comments']); $_SESSION['uploadforms'][$formid]['allow_votes'] = EnToInt($_POST['allow_votes']); $_SESSION['uploadforms'][$formid]['show'] = EnToInt($_POST['show']); $_SESSION['uploadforms'][$formid]['view'] = ViewLevelToInt($_POST['view']); AddCenterBox('Мультизагрузка - предпросмотр'); $count_photos = count($_SESSION['uploadforms'][$formid]['photos']); $text = '<form action="' . ADMIN_FILE . '?exe=gallery&a=saveuploaded&formid=' . $formid . '" method="post">'; $submits = System::admin()->Submit('Отмена', 'name="submit_cancel" value="cancel"') . System::admin()->Submit('Сохранить', 'name="submit_save" value="save"'); $text .= '<div class="cfgboxsubmit"><div style="float: left;">Загружено ' . $count_photos . ' изображений.</div>' . $submits . '</div>'; foreach ($_SESSION['uploadforms'][$formid]['photos'] as $id => $photo) { $func = System::admin()->SpeedAjax('Удалить', ADMIN_FILE . '?exe=gallery&a=deleteuploaded&id=' . $id . '&formid=' . $formid, 'images/admin/delete.png', '', '', "jQuery('#photo_box_{$id}').fadeOut();"); $text .= Indent(' <div class="cfgbox" id="photo_box_' . $id . '"> <table cellspacing="0" cellpadding="0" border="0" style="width: 100%;"> <tr> <td style="vertical-align: top; width: 160px;"> <a href="' . $GalleryDir . $photo . '" target="_blank"><img src="' . $ThumbsDir . $photo . '" /></a> ' . $photo . ' </td> <td style="vertical-align: top;"> <table cellspacing="2" cellpadding="4" style="width: 100%;" class="cfgtable"> <tr> <td>Заголовок</td> <td colspan="3" style="text-align: left;">' . System::admin()->Edit('title_' . $id, '', false, 'maxlength="250" style="width:400px;"') . '</td> </tr> <tr> <td>Описание (HTML)</td> <td colspan="3" style="text-align: left;">' . System::admin()->TextArea('description_' . $id, '', 'style="width: 400px; height: 120px;"') . '</td> </tr> <tr> <td>Автор</td> <td style="text-align: left;">' . System::admin()->Edit('author_' . $id, '', false, 'maxlength="250" style="width:200px;"') . '</td> <td>Email автора</td> <td style="text-align: left;">' . System::admin()->Edit('email_' . $id, '', false, 'maxlength="250" style="width:200px;"') . '</td> </tr> <tr> <td>Сайт автора</td> <td colspan="3" style="text-align: left;">' . System::admin()->Edit('www_' . $id, '', false, 'maxlength="250" style="width:200px;"') . '</td> </tr> </table> </td> <td style="vertical-align: top; text-align: right; width: 50px;">' . $func . '</td> </tr> </table> </div> '); } $text .= '<div class="cfgboxsubmit">' . $submits . '</div>'; $text .= '</form>'; AddText($text); }
/** * Оптимизирует строку(параметр) для использования в ЧПУ и ссылках с поддержкой юникода. * * @param $text * @return mixed */ function UfuLink($text) { $text = preg_replace('/[^[\\pL_\\-\\.\\ 0-9]+]*/u', '', Cp1251ToUtf8($text)); $text = str_replace(array(' ', '_'), '-', $text); return Utf8ToCp1251($text); }
<?php /* * LinkorCMS 1.4 * © 2012 LinkorCMS Development Group */ if (!defined('VALID_RUN')) { header("HTTP/1.1 404 Not Found"); exit; } System::site()->SetTitle('Страницы'); // Удаляем хлебную крошку с именем модуля unset(System::site()->BreadCrumbs[count(System::site()->BreadCrumbs) - 1]); if (isset($_GET['file']) && $_GET['file'] != '') { $link = SafeEnv(Utf8ToCp1251(rawurldecode($_GET['file'])), 255, str); } else { $link = System::config('pages/default_page'); } System::database()->Select('pages', "`link`='{$link}' and `enabled`='1' and `type`='page'"); if (System::database()->NumRows() > 0) { $page = System::database()->FetchRow(); $hits = SafeEnv($page['hits'], 11, int) + 1; System::database()->Update('pages', "`hits`='{$hits}'", "`link`='{$link}'"); if (AccessIsResolved($page['view'])) { System::site()->SetTitle(SafeDB($page['title'], 255, str)); System::site()->Seo(SafeDB($page['seo_title'], 255, str), SafeDB($page['seo_keywords'], 255, str), SafeDB($page['seo_description'], 255, str)); System::site()->AddTemplatedBox('', 'module/page.html'); System::site()->AddBlock('page'); $vars = array(); ErrorsOff(); $vars['show_title'] = $page['info_showmode'][0] == '1';
function AdminCodetesterPerform() { ob_start(); $test = eval(Utf8ToCp1251($_POST['code'])); $source = ob_get_clean(); if ($source == '') { ob_start(); print_r($test); $source = ob_get_clean(); } echo $source; Audit('Тестирование кода:' . "\n" . Utf8ToCp1251($_POST['code']) . ''); exit; }
/** * Перемименование файла. */ public function RenameFile() { $old_name = $_POST['filename']; $new_name = $_POST['newname']; $dir = RealPath2($_POST['path']); $dir2 = DIR_FILES . '/' . $dir; // Новое имя файла $new_file = Translit4Url(Utf8ToCp1251($new_name)) . GetFileExt($old_name); $old_file_name = RealPath2($dir2 . '/' . $old_name); $new_file_name = RealPath2($dir2 . '/' . $new_file); $new_link = URL_FILES . '/' . ($dir != '' ? $dir . '/' : '') . $new_file; if (!is_file($old_file_name)) { return JsonEncode(array('error' => 'Ошибка. Файл не существует.')); } if ($old_file_name != $new_file_name) { if (is_file($new_file_name)) { return JsonEncode(array('error' => 'Ошибка. Невозможно переименовать, файл с таким именем уже существует.')); } if (!rename($old_file_name, $new_file_name)) { // Переименование return JsonEncode(array('error' => 'Ошибка переименования файла.')); } } echo JsonEncode(array('ok' => GetFileName($new_file, true), 'ok2' => GetFileName($new_file), 'linkto' => $new_link)); exit; }
/** * Генерирует Ajax дерево страниц * @return void */ function AdminPagesAjaxTree() { UseScript('jquery_ui_treeview'); if (CheckGet('parent')) { $parent = SafeEnv($_GET['parent'], 11, int); } else { $parent = 0; } $pages = System::database()->Select('pages'); SortArray($pages, 'order'); $pages_tree = new Tree($pages); $elements = array(); if ($parent == 0) { $func = ''; $func .= SpeedButton('Добавить дочернюю страницу', ADMIN_FILE . '?exe=pages&a=editor', 'images/admin/page_add.png'); $func .= SpeedButton('Добавить дочернюю ссылку', ADMIN_FILE . '?exe=pages&a=link', 'images/admin/link_add.png'); $func .= SpeedButton('Добавить дочернюю категорию', ADMIN_FILE . '?exe=pages&a=cat', 'images/admin/folder_add.png'); $site_node = array('id' => '0', 'title' => System::config('general/site_name'), 'icon' => 'images/globe.png', 'func' => $func, 'isnode' => true, 'opened' => true, 'childs' => array()); } foreach ($pages_tree->Cats[$parent] as $page) { $id = SafeDB($page['id'], 11, int); if ($page['type'] == 'page') { $link = Ufu('index.php?name=pages&file=' . SafeDB($page['link'], 255, str), 'pages:page'); $icon = 'images/page.png'; $type = 'Страница'; $counter = SafeDB($page['hits'], 11, int); $edit_link = ADMIN_FILE . '?exe=pages&a=editor&id=' . $id; } elseif ($page['type'] == 'link') { $link = SafeDB($page['text'], 255, str); if (substr($link, 0, 6) == 'mod://') { $link = Ufu('index.php?name=' . substr($link, 6), '{name}/'); } $icon = 'images/link.png'; $type = 'Ссылка'; $counter = '- '; $edit_link = ADMIN_FILE . '?exe=pages&a=link&id=' . $id; } else { $link = Ufu('index.php?name=pages&file=' . SafeDB($page['link'], 255, str), 'pages:page'); $icon = 'images/folder.png'; $type = 'Категория'; $counter = '- '; $edit_link = ADMIN_FILE . '?exe=pages&a=cat&id=' . $id; } $func = ''; $func .= System::admin()->SpeedButton('Добавить дочернюю страницу', ADMIN_FILE . '?exe=pages&a=editor&parent=' . $id, 'images/admin/page_add.png'); $func .= System::admin()->SpeedButton('Добавить дочернюю ссылку', ADMIN_FILE . '?exe=pages&a=link&parent=' . $id, 'images/admin/link_add.png'); $func .= System::admin()->SpeedButton('Добавить дочернюю категорию', ADMIN_FILE . '?exe=pages&a=cat&parent=' . $id, 'images/admin/folder_add.png'); $func .= ' '; $func .= System::admin()->SpeedStatus('Скрыть из меню', 'Показать в меню', ADMIN_FILE . '?exe=pages&a=changemenu&id=' . $id, $page['showinmenu'] == '1', 'images/menu_enabled.png', 'images/menu_disabled.png'); $func .= System::admin()->SpeedStatus('Выключить', 'Включить', ADMIN_FILE . '?exe=pages&a=changestatus&id=' . $id, $page['enabled'] == '1', 'images/bullet_green.png', 'images/bullet_red.png'); $func .= ' '; $func .= System::admin()->SpeedButton('Редактировать', $edit_link, 'images/admin/edit.png'); $func .= System::admin()->SpeedConfirmJs('Удалить', '$(\'#tree_container\').treeview(\'deleteNode\', ' . $id . ');', 'images/admin/delete.png', 'Уверены что хотите удалить? Все дочерние страницы и ссылки так-же будут удалены.'); $view = ViewLevelToStr(SafeDB($page['view'], 1, int)); $info = Indent("\n\t\t\t<b>Тип</b>: {$type}<br />\n\t\t\t" . ($page['type'] == 'page' ? "<b>Просмотров</b>: {$counter}<br />" : '') . "\n\t\t\t<b>Видят</b>: {$view}<br />\n\t\t\t<b>Адрес</b>: <a href=\"{$link}\" target=\"_blank\">/" . Utf8ToCp1251(rawurldecode($link)) . "</a>\n\t\t"); $elements[] = array('id' => $id, 'icon' => $icon, 'title' => '<b>' . System::admin()->Link(SafeDB($page['title'], 255, str), $edit_link) . '</a></b>', 'info' => $info, 'func' => $func, 'isnode' => isset($pages_tree->Cats[$id]), 'child_url' => 'admin.php?exe=pages&a=ajaxtree&parent=' . $id); } if ($parent == 0) { $site_node['childs'] =& $elements; $tree = array(&$site_node); } else { $tree =& $elements; } if ($parent == 0) { System::admin()->AddOnLoadJS('$("#tree_container").treeview({move: \'' . ADMIN_FILE . '?exe=pages&a=ajaxmove\', del: \'' . ADMIN_FILE . '?exe=pages&a=delete\', tree: ' . JsonEncode($tree) . '});'); AddTextBox('Страницы', '<div id="tree_container"></div>'); } else { echo JsonEncode($tree); exit; } }