-
-
Notifications
You must be signed in to change notification settings - Fork 19
Рекомендуется создавать новые php - файлы вывода в папке location, а не делать их независимыми
К таким файлам можно получить доступ по ссылке - www.example.com/?mode=название_файла_без_формата (в случае если включен mode_rewrite также www.example.com/go/название_файла_без_формата)
Встроеный таким образом файл имеет доступ ко всем переменным движка ($user, $config, $bd_names ...) без подключения системных файлов (system.php и user.class.php) и выполнения инициализации вручную ( фактически эти файлы встраиваются через index.php и формируют вывод страницы )
Пример минимального содержания для файла:
<?php if (!defined('MCR')) exit;
$page = 'Название страницы';
$content_main .= Manager::ShowStaticPage(STYLE_URL . 'start-game.html'); // 2.0 - 2.15
$content_main .= View::ShowStaticPage('start-game.html'); // 2.3 +
Где start-game.html - файл в папке стилей, с содержимым основного информационного блока.
В большинстве случаев для взаимодействия с БД используются отдельные классы и файлы вывода страницы содержат лишь логику вывода ( например location/news.php ), но есть и исключения, например location/admin.php
Файл инициализации system.php ( 2.0-2.3 ) или instruments/base.group.php ( 2.35 + ). Содержит основные функции для работы с БД, основные константы и классы.
- MCR - версия движка ( для версии 2.0-2.15 значение всегда 1 )
- MCR_ROOT - путь до корневой папки webMCR ( для подключения дополнительных библиотек ), т.е. все файлы движка в дальнейшем подключаются с использованием этой константы ( например require(MCR_ROOT.'instruments/user.class.php') )
- MCRAFT - путь до папки игровых скриптов авторизации, папок скинов, плащей, обновлений
- MCR_STYLE - путь до папки стилей
- STYLE_URL - ссылка для формирования пути до файла из папки стилей. Т.е. любая ссылка на файл из папки стилей в шаблоне прописывается например как href="img/edit.png"
- DEF_STYLE_URL - ссылка на папку темы оформления по умлочанию ( Default )
Функции BD(), BDConnect() и TextBase::Safe() устарели и работают только в режиме использования php модуля mysql.
function getDB() - возвращает объект-драйвер для работы с БД (интерфейс instruments/database/databaseInterface, методы описаны phpDoc)
instruments/database/databaseInterface - интерфейс драйвера; список аналогов методов класса PDO:
- public function query($query);
- public function quote($var);
- public function prepare($queryTpl);
- public function lastInsertId();
Работу с дополнительными методами можно посмотреть в любом файле проекта, т.к. зачастую для выполнения запросов используется метод ask (функционал prepare -> execute), а для получения одной строки из результирующего набора fetchRow (по сути prepare->execute->fetch)
instruments/database/statementInterface - интерфейс подготовленного запроса к базе данных; список аналогов методов класса PDOStatement:
- public function setFetchMode($mode = 'assoc'); // доступны режимы выборки assoc, num, both
- public function fetch($mode = null); // доступны режимы выборки assoc, num, both
- public function rowCount();
- public function execute($data = null);
- public function bindValue($index, $data, $type = 'string'); // явно заданный тип данных ($type) параметра соответствует функции settype
vtxtlog($string) - записать информацию в лог-файл ( если выставлена опция в конфиге ). Максимальный размер файла 50мб, затем перезапись.
Задумывался для хранения второстепенных настроек, не требующих инициализации в ходе установки
Список доступных опций
- rcon-port - последние настройки подключения по RCON
- rcon-serv
- rcon-pass
- next-reg-time - время следующей регистрации
- email-verification - подтверждение регистрации по почте
- email-verification-salt - соль для генератора строки подтверждения
- launcher-version - версия лаунчера
- latest-game-build - билд игры
sqlConfigGet($type) - получить значение опции $type
sqlConfigSet($type,$value) - задать значение опции $type равным $value
Подключается автоматически вместе с system.php
TextBase - статический класс. Работа со строками с учетом кодировки ( у нас UTF-8, так что например для вычесления длинны строки стандартный strlen не подойдет )
TextBase::HTMLDestruct($text) - замена всех HTML тегов на HTML сущности
TextBase::HTMLRestore($text) - обратно HTMLDestruct
TextBase::StringLen($text) - длинна строки
TextBase::CutString($text, $from = 0, $to = 255) - вырезать строку
TextBase::CutWordWrap($text) - вырезать переносы строки
TextBase::WordWrap($text, $width = 60, $break = "\n") - разбить длинные слова пробелами через каждые $width - символов
View - узконаправленый менеджер вывода ( т.к. в большинстве случаев для вывода стилей используется захват в буфер, функции такого вывода имеют в названии префикс Show )
View($style_sd) - создает объект View, $style_sd - базовая поддиректория в папки стилей
View->arrowsGenerator($link, $curpage, $itemsnum, $per_page, $prefix = false) - генерация кнопок многостраничного листинга
$link - общая ссылка
$curpage - текущая страница
$itemsnum - количество объектов всего
$per_page - количество объектов выводимых на одну страницу
$prefix - формирует название файлов оформления ( если не задавать будет использоваться оформление по умолчанию из папки темы оформления other/common )
Пример:
$arrGen = new View();
$html = $arrGen->arrowsGenerator('index.php?mode=control&do=log&', 1, 30, 5);
где $html содержит HTML код кнопок перехода по страницам с текущей страницей - 1, общим числом страниц 6
View::ShowStaticPage($page) - возвращает текст статической страницы $page .
Файл instruments/user.class.php
User
User($input, $method) - создает объект User, ищет пользователя в БД по заданым критериям $input - значение поля в БД, а $method - название поля
Если пользователь не найден по заданому критерию User->id() - возвратит false
User->id() - ID пользователя
User->ip() - IP адресс последней авторизации
User->name() - логин пользователя
User->group() - ID группы пользователя | User->getGroupName() - название группы
User->lvl() - уровень доступа ( зависит от группы )
User->getPermission($param) - значение для разрешения $param
Список доступных разрешений
- change_skin - true \ false - разрешение на смену скина
- change_pass - true \ false - разрешение на смену пароля
- lvl - integer - уровень доступа ( аналог User->lvl() )
- change_cloak - true \ false - разрешение на смену плаща
- change_login - true \ false - разрешение на смену логина
- max_fsize - integer - максимальный размер файла (кб)
- max_ratio - integer - максимальное соотношение строн
- add_news - true \ false - разрешение на добавление новостей
- adm_comm - true \ false - разрешение на удаление чужих комментариев
- add_comm - true \ false - разрешение на добавление комментариев
User->isFemale() - true \ false - пользователь женского пола
User->authenticate($pass) - проверка правильности введенного пароля
Текущий пользователь ( восстановление \ создание сессии в независимом файле )
User->login($tmp, $ip, $save = false) - авторизация и создание сессии, временных файлов на стороне клиента в случае если авторизационные данные нужно запомнить
$tmp - ID сессии ( рекомендуется использовать randString( 15 ) для генерации уникального идентификатора )
$ip - IP адресс
$save - запомнить авторизацию
MCRAuth::userLoad() - восстановление сессии пользователя - если пройдет успешно то $user != false
Так например, в случае если пользователь авторизован выведет соответствующее сообщение
require('./system.php');require(MCR_ROOT.'instruments/user.class.php');
BDConnect('login'); MCRAuth::userLoad(); if (empty($user)) exit('Please login before go to this page');
if ($user->lvl() < 1) exit('You dont have permission for that');
exit($user->name().' was here.');