/**
 * Преобразует строки объекта или массива из 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 = '-&nbsp;';
            $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 = '-&nbsp;';
            $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 .= '&nbsp;';
        $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 .= '&nbsp;';
        $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;
    }
}