Компонент xtables\components\Builder предназначен для:
При проведении сборки компонент обходит файлы и обрабатывает файлы PHP, добавляя в их начало текст короткой лицензии и
удаляя из кода переводы строк и комментарии (минифицирует).
Не подвергаются такой обработке файлы настроек (config.php, settings.php).
Файлы со слепками сборок сохраняются в каталоге /accessory/builds. Названия файлов соответствуют
индивидуальным номерам сборок.
Для использования компонента нужно обладать высшими правами пользователя.
Использование осуществляется путем вызова системных роутов:
/xtables-builder/app - сборка всего приложения в пределах каталога, указанного в настройках;
/xtables-builder/files - сборка только файлов, указанных в настройках;
/xtables-builder/check-builds - проверка двух сборок: эталонной и тестируемой.
Настройка осуществляется в файле /config/builder/settings.php.
Для настройки необходимо определить данные в ассоциативном массиве:
build_dir (string)
Каталог, в который нужно сохранить все файлы сборки.
Необходимо указать абсолютный путь до каталога.
'build_dir' либо
использовать для него значение false.
'build_dir' => FileEngine::TMP . '/AppBuild'
'build_dir' => false // set false or don't set it for only make info file in /accessory/builds/
appname (string)
Название приложения, как оно будет указано в тексте короткой лицензии.
'appname' => 'xTables'
domain (string)
Домен, для которого создано приложение, как это будет указано в тексте короткой лицензии.
'domain' => 'some-domain.ru'
person (string)
Лицо, которому предоставлено приложение, как это будет указано в тексте короткой лицензии.
'person' => 'Some person'
skip_dirs (array)
Массив директорий, которые нужно пропустить и не включать в сборку.
'skip_dirs' => [
'/SomeDir',
'/ElseDir/Dir'
]
copy_dirs (array)
Массив директорий, PHP файлы в которых не нужно обрабатывать, а только скопировать.
'copy_dirs' => [
'/SomeCopyDir',
'/Else/Copy'
]
start_dirs (string)
Так как приложение разделено на две логические части, одна из которых находится по пути веб корня, а другая соответствует
защищенной папке, которая может находиться вне веб каталога, то здесь необходимо указать абсолютные пути к каталогам,
начиная с которых необходимо провести сборку. В сборку будут включены все
файлы, расположенные в каталоге и подкаталогах.
При этом нужно использовать два ключа при создании массива этой настройки:
web_root - здесь можно указать любой каталог внутри веб корня, например ROOT_PATH;
protected - здесь можно указать любой каталог внутри защищенной папки.
Каталоги со сборками будут распределены в две папки с названиями, соответствующими данным ключам.
'start_dirs' => [
'web_root' => ROOT_PATH,
'protected' => XTABLES_BASE . '/xtables'
]
file_names (array)
Массив файловых путей, которые должны быть включены в сборку по-файлово.
В качестве ключей массива нужно указывать относительные пути, а в качестве значений
абсолютный путь-префикс до соответствующей папки.
'file_names' => [
'web_root' => [
'/index.php' => ROOT_PATH
],
'protected' => [
'/xtables/xTables.php' => XTABLES_BASE,
'/xtables/base/HeadConnector.php' => XTABLES_BASE
]
]
reference_build (string)
Путь к эталонному файлу сборки для сравнения с ним.
'reference_build' => '/accessory/builds/7f638699022f1058b69909bc807d882a7f9ea430.ini'
test_build (string)
Путь к тестируемому файлу сборки для сравнения с эталонным.
'test_build' => '/accessory/builds/601737fea185071921801e84e456d64de808e92f.ini'
/config/Builder/license-short.md.<!--{appname}-->
<!--{version}-->
<!--{year}-->
<!--{person}-->
<!--{domain}-->
<!--{buildnum}-->
Класс xtables\components\Cache используется для обеспечения работы кешей.
Класс поддерживает разные типы хранения кеша. Новый провайдер кеша должен наследовать класс
xtables\components\cache\EngineAbstract.
Выбор типа провайдера кеша осуществляется в файле настроек /config/config.php.
Cache::FILE - базовый тип, использует для хранения кеша файлы сервера; используется по умолчанию, если тип не определен;
Cache::MEMCACHE - используется хранилище memcached; кеш хранится в оперативной памяти;Cache::REDIS - используется no-sql сервер Redis;Cache::DB - используется база данных из пула подключений
Для использования кеша нужно использовать статическими интерфейсами:
exists(string $key): bool
проверка наличия данного ключа в кеше; возвращает true при обнаружении;
get(string $key)
получение значения из кеша по ключу
set(string $key, $value, int $ttl = 0): bool
сохранение значения в кеше
key - обозначение ключа для сохранения в кеш;
value - значение для сохранения, может быть любым
сериализуемым значеним (string, array, int, boolean, object),
возвращается как было передано в соответствии с требованиями PSR-6;
ttl - время жизни кеша в секундах, если параметр не передается, то время жизни не ограничивается.
appendToTag(string $tag, string $key): bool - создание коллекций записей кеша;
delete(string $key): bool - удаление одной записи из кеша;
clear(array|string $keys): bool - удаление одной или нескольких
записей из кеша.
proxy().
use xtables\components\Cache\model\Cache;
if (Cache::exists('some')) {
return Cache::get('some');
}
Cache::set('some', 'value');
Cache::set('some', 'value', 60);
Cache::proxy()->set('key', 'value', 60);
Cache::delete('some');
Cache::clear([
'one',
'two',
'three'
]);
/xtables-settings/clear-all-cache (роут доступен только для пользователей в высшими правами доступа).opcache для кеширования байт-кода. При использовании
данного роута opcache также сбрасывается.
Начиная с версии cv1.3.12, приложение содержит PSR-6 совместимые классы для работы с кешем:
CacheItemPool
CacheItem
Взаимодействие с данными классами осуществляется по правилам, определенным интерфейсами PSR-6.
Для получения экземпляра класса CacheItemPool
с драйвером кеша, соответствующим вышеуказанной настройке в файле config.php для обычного кеша (other),
можно использовать статический интерфейс Cache::itemPool()
Если требуется использование специфичного драйвера, то необходимо создать экземляр
класса CacheItemPool, в конструктор которого передать драйвер кеша, реализующий
интерфейс xtables\components\cache\interfaces\EngineInterface.
$pool = Cache::itemPool();
//$engine = new FileEngine(); // or other implements EngineInterface
//$pool = new CacheItemPool($engine);
$item = $pool->getItem('some_cache_key');
if ($item->isHit()) {
return $item->get();
}
$item->expiresAfter(3000)->set('some value: string, array, object, int');
$pool->save($item);
Для неиспользования кеша при построении системными компонентами cardView и tableView используется настройка
'no_cache' => true (см. описание данных компонентов).
В главном конфигурационном файле /config/config.php определяются глобальные типы
используемых хранилищ кешей для 'sql_output' и 'other'.
Если нужно использовать значения для подключения сервера по умолчанию, то параметр server
для memcache и redis можно не определять. Будет подключаться локальный хост с портом по умолчанию.
'cache' => [
'type' => Cache::FILE //Cache::MEMCACHE, Cache::REDIS
/*
* OR
*
'type' => Cache::MEMCACHE,
'server' => [
[
'host' => '127.0.0.1',
'port' => 11211,
'weight' => 100
],
*
* OR
*
[
'host' => '127.0.0.1',
'port' => 11211,
'weight' => 30
],
[
'host' => '127.0.0.1',
'port' => 11211,
'weight' => 70
]
]
*
* OR
*
'type' => Cache::REDIS,
'server' => [
'params' => [
],
'options' => [
]
]
*
*/
]
Класс xtables\base\Db использует класс PDO для работы
с базами данных и обеспечивает создание пула подключений к ним.
Каждое подключение автоматически, исходя из настроек подключения, получает специальный класс конкретной СУБД
(в настоящее время имеются классы MysqlEngine, PgsqlEngine, SqlsrvEngine, SqliteEngine, DefaultEngine),
который вносит изменения в запросы, исходя
из специфики типа базы данных, в том числе учитывая логику xTables.
Осуществляется отложенное подключение к базе данных: оно происходит только в тот момент, когда происходит первое обращение к базе данных с реальным запросом.
Также в рамках подключения имеется возможность создания класса создателя запросов QueryBuilder,
используя метод builder() (since cv1.7.13, @deprecated getBuilder()).
Имеется возможность создать пул билдеров, передавая идентификатор
в данный метод, что обеспечивает возможность одновременного строительства множества запросов в циклах.
Для подключения к базе данных нужно воспользоваться статическим интерфейсом getConnect(),
указав в параметре имя требуемого подключения как оно определено в настройках в файле /config/config.php.
Данный метод при необходимости создаст singleton класса xtables\base\Db и возвратит его инстанс.
Для каждого подключения будет создаваться свой singleton. Если имя будет не указано, то будет осуществлено
подключение к первому подключению, указанному в настройках.
Можно добавлять подключения к базе данных в разных местах, не боясь повторных подключений, так как в данном классе используется singleton.
use xtables\base\Db;
$connection = Db::getConnect(); // Db::getConnect('main'); or other db connection name
//$connection = Db::proxy()->getConnect();
$result = $connection->prepare($query);
$result->execute($query);
Построитель запросов автоматически помещает небезопасные внешние данные в массив для подготавливаемого запроса, связывая их с создаваемыми псевдопеременными.
Построитель запросов удобен, когда необходимо собирать параметры для запроса (например, условия WHERE) в разных классах.
Имеется возможность использования методов построителя запросов:
select(array|string $select): QueryBuilder - в метод нужно
передать простой массив наименований колонок либо строку с колонкой;
метод может вызываться много раз в разных классах для полного формирования списка выбираемых колонок;
insert(string $table): QueryBuilder - в метод
нужно передать наименование sql таблицы, в которой будет выполняться вставка данных;
update(string $table): QueryBuilder - в метод нужно передать
наименование sql таблицы, в которой будет выполняться обновление данных;
delete(string $table): QueryBuilder - в метод нужно передать
наименование sql таблицы, в которой будет выполняться удаление данных;
set(array $set): QueryBuilder - в метод нужно передать
массив, в котором ключами будут наименования колонок, а значениями -
данные для вставки (будут заменены псевдопеременными и помещены в подготавливаемый запрос);
values(array $values): QueryBuilder - в метод нужно передать
массив, в котором ключами будут наименования колонок, а значениями -
данные для вставки (будут заменены псевдопеременными и помещены в подготавливаемый запрос);
where(array|string $where): QueryBuilder - в метод нужно передать
массив, в котором ключами будут наименования колонок со знаком сравнения,
а значениями - данные для вставки (будут заменены псевдопеременными и помещены в подготавливаемый запрос);
также можно передать не массив, а строку, тогда она будет вставлена в условие без дополнительной обработки;
orderBy(string $orderBy): QueryBuilder - строка с наименованием
колонки для сортировки; метод может вызываться несколько раз для
добавления колонок сортировки;
from(string $table, string $tableAdd = '') - в метод нужно
передать два строковых параметра: название sql таблицы и sql выражение для
объедения с другими таблицами JOIN;
limit(int $limit = 0): QueryBuilder - если нужно ограничение
числа показываемых записей, то можно использовать данный метод,
передав в него числовое значение.
Исполнение построенного запроса осуществляется:
all(int|string $iBuilder = 0): \PDOStatement -
если построителей запросов несколько, то в метод нужно передать идентификатор построителя запроса.
Данный метод возвращает result pdo statement;
exec(int|string $iBuilder = 0): \PDOStatement - алиас для метода all
execGetid(int|string $iBuilder = 0): int -
исполняется запрос и возвращается идентификатор вставленной записи.
use xtables\components\db\Db;
$connection = Db::getConnection();
$connection->builder()
->select(['table_t.col1', 'table_t.col2', 'table_t.col2', 'table_t.col3'])
->from('table_t')
->where(['table_t.col1 = ' => 'some_external_unsafe_value'])->limit(10);
$connection->all();
use xtables\components\db\Db;
$connection = Db::getConnection();
$builder1 = $connection->builder(1);
$builder2 = $connection->builder(2);
$builder3 = $connection->builder(3);
$builder1->update('table_t')->set(['col1' => 'some'])->where(['id = ' => 1]);
$builder2->update('table_t')->set(['col1' => 'some'])->where(['id = ' => 2]);
$builder3->update('table_t')->set(['col1' => 'some'])->where(['id = ' => 3]);
$connection->all(1);
$connection->all(2);
$connection->all(3);
Для создания sql таблиц в базе данных можно использовать класс xtables\components\db\Schema.
В конструктор класса нужно передать параметры:
dbc - название подключения к БД, где будут создаваться таблицы; если не указано,
то будет по умолчанию использоваться первое подключение в пуле;
При описании таблиц нужно использовать нижеуказанные типовые наименования, которые будут откорректированы автоматически в зависимости от типа СУБД, в которой будут создаваться таблицы.
Нужно создать массив, где ключами будут названия таблиц, а их значениями массивы columns,
indexes с параметрами.
id как первичный ключ с авто инкрементом, что необходимо для работы xTables и обеспечит
эффективную связь таблиц и быстродействие базы данных.
Массив параметров columns в качестве ключей должен содержать имена колонок,
а в качестве значений параметры:
type - тип колонки с одним из значений:
varchar - поле VARCHAR с определенной длиной, при длине более 8000 она будет обрезана до 8000
для унификации с SQL SERVER;
char - фиксированный тип CHAR;
text - в зависимости от типа СУБД (MySQL - text, PostgreSQL - VARCHAR, SQL SERVER - VARCHAR(8000));
int - разные типы числовых полей, которые поддерживаются конкретным типом СУБД, который выбирается
автоматически в зависимости от выбираемой длины, например: SMALLINT, INT ...;
boolean - поле для сохранения значений 0 и 1 (ложь, истина);
date - тип дата;
datetime - дата и время;
decimal - поле для чисел с десятичной дробью, по умолчанию равняется 10, 2;
в качестве параметра нужно передать строку с длиной '10,2' ('5,1' ...).
len - длина поля, применяется не ко всем типам;
unique - если нужно создание уникального индекса по этому полю.
Массив параметров indexes с массивами в качестве параметров (параметры для каждого индекса
должны быть обернуты в массив, имена индексов подставляются автоматически):
columns - одна или несколько колонок для создания по ним индекса;
unique - для создания уникального индекса добавить данный параметр
со значением 'unique' => true.
'table_name' => [
'columns' => [
'column_name' => [
'type' => 'varchar',
'len' => 20,
'unique' => true
],
'column_name_else' => [
'type' => 'int',
'len' => 5
]
],
'indexes' => [
[
'columns' => [
'column3',
'column5'
]
],
[
'columns' => [ // one or more columns for composite index
'column1'
],
'unique' => true
]
]
]
use xtables\components\db\Schema;
$tables = include 'db-structure.php'; // or array with params
//$tables['dbc'] = 'some_db_connection_name'; // if need
$schema = new Schema($tables);
$schema->run();
$warnings = $schema->getWarnings();
$success = $schema->getSuccess();
Для настройки подключения к базам данных нужно создать массив 'db' с настройками в конфигурационном
файле /config/config.php, в качестве ключа массивом можно использовать свободные обозначения
подключений:
'dsn' - соответствующие настройке PDO указание на драйвер подключения с данными о БД;
'user' - имя пользователя базы данных;
'pass' - пароль пользователя базы данных.
'options' - специфические для соответствующего драйвера PDO опции; по умолчанию, если не определено,
то пустой массив.
Например:
'db' => [ // pool of data base connections
'main' => [ // free name for current connection
'dsn' => 'mysql:dbname=some_dbname;host=localhost;charset=UTF8',
'user' => 'user_name',
'pass' => 'some_password',
/**
* by default if not set is empty array
* may be set specific options for current db pdo driver
*/
//'options' => []
],
'else_dbc' => [ // free name for current connection
'dsn' => 'pgsql:dbname=some_dbname_else;host=localhost',
'user' => 'user_name_else',
'pass' => 'some_password_else'
],
'some_mssql' => [
'dsn' => 'sqlsrv:server=(local)\sqlexpress;database=some_db_name',
'user' => '', // windows authentication, empty values
'pass' => ''
]
]
Компонент xtables\components\Infobox предназначен для отображения информационных сообщений, которые
завершают выполнение скрипта. Они показываются в модальном окне.
Внешний вид сообщения об отсутствующей странице может быть откорректирован в файле 404.php
в каталоге /config/InfoBoxes.
Для использования информационных сообщений необходимо вызвать статический интерфейс
Info::throwBox($params).
В метод должна быть передана строка с текстом сообщения либо массив с параметрами.
Info::throwBox('some text');
Info::throwBox(2);
Info::throwBox([
'content' => 'some',
'debug' => 'some for debug'
]);
Информационное сообщение также может быть вызвано по ссылке URL /xtables-info/show/.
Массив параметров может состоять из:
content (string)
Здесь может быть указан один из вариантов:
1 - Вся почта отправлена успешно;
2 - Данные сохранены успешно;
3 - Ваша сессия истекла. Пожалуйста, авторизуйтесь;
4 - У Вас нет прав для просмотра данной страницы;
5 - Пароль или логин не верны;
6 - Произошла ошибка. Попробуйте еще раз;
7 - Произошла ошибка при шифровании. Попробуйте еще раз;
8 - Приложение может работать неправильно с этим браузером,
попробуйте другой браузер;
9 - Почта не отправлена. Попробуйте еще раз;
10 - Приложение не будет работать при выключенном JavaScript. Пожалуйста, включите его в браузере;
11 - Произошла ошибка. Пройдите авторизацию снова;
12 - Пользователь удален успешно;
13 - Минимальная длина поискового запроса - 3 символа
17 - Карточка удалена успешно;
18 - В связи со сбросом служебных ключей или по другим причинам Ваш аккаунт нуждается в
перегенерации данных авторизации. Обратитесь к администратору;
19 - Произошла ошибка загрузки ajax содержимого. Перезагрузите страницу;
20 - Файл-документ подписан ЭП;
403 - Доступ запрещен;
404 - Страница не найдена (имеет специальный дизайн, который может быть
отредактирован в файле /config/infoBoxex/404.php).
title (string)
Заголовок сообщения; может быть использован ключ мультиязычности.
js (string)
JS код, который должен быть выполнен при нажатии на кнопку в информационном сообщении; по умолчанию будет осуществляться перезагрузка страницы.
ajax (string)
Данный параметр имеет больший приоритет по сравнению с параметров js.
URL, по которому должен быть сделан ajax запрос при нажатии на кнопку OK, закрытия информационного окна;
ответ на запрос по такому url можно отформатировать с помощью метода xtables\base\AjaxDispatcher::getReply;
он должен содержать в качестве ключа имя css селектора(ов) для вставки данных
debug (string | array | callable | Exception)
Расширенная информация, которая выводится при включенном режиме debug.
Может использоваться один из типов:
instanceof \Exception - объект исключения (в этом случае в отладочной информации будет показан
исходный код файла, где было выброшено исключение);
callable функция, которая вернет расширенную информацию.
debug_params (array)
В случае, если в качестве debug будет использоваться
callable функция, то в данном параметре можно передать массив параметров, которые
могут быть обработаны в пользовательской функции.
size (string)
Размер окна сообщения; по умолчанию - средний размер, возможен маленький размер (значения
small, little, sm), большой размер (значения lg, big, large).
btn_close (boolean)
По умолчанию, кнопка-крестик для закрытия модального информационного окна не показывается,
если нужно показать ее то нужно включить данный параметр со значением true.
btn_ok (boolean)
По умолчанию, в информационном окне используется кнопка OK, которая служит для его закрытия;
если не нужно показывать данную кнопку, то нужно определить данный параметр со значением false.
inlayout (boolean)
По умолчанию, информационное окно загружается как независимая страница (с head частью со скриптами js, css);
если необходимо, чтобы html код с модальным окном добавлялся к странице, то нужно определить данный параметр
со значением false
same_page (boolean)
Для показа информационного сообщения поверх имеющейся страницы.
background (string | int)
По умолчанию, фон окна сообщения - белый, для изменения цвета можно использовать:
warning, err, success
xtables\base\Log:Log::ALERT, Log::ERROR ...
json массив в соответствующем языковом файле в каталоге /config/InfoBox/lang.title, content, debug можно использовать обозначения ключей мультиязычности,
соответствующих содержащимся в указанном соответствующем языковом файле, в этом случае текст сообщений
будет меняться в зависимости от выбранного языка.
use xtables\components\InfoBox\Info;
try {
$this->result = Db::$db[$this->dbc]->prepare($query);
$this->result->execute();
} catch (\PDOException $ex) {
Info::throwBox([
'content' => 'Ошибка при выборке данных',
'debug' => $ex,
'inlayout' => false,
'ajax' => '/some/url',
'size' => 'lg'
]);
}
Дополнительные настройки не предусмотрены.
Компонент xtables\components\Requirements предназначен для:
Обновления ядра и расширений
Производит по запросу проверку обновлений, связываясь с xtables.ru. Получает патч с изменениями (если есть), который может быть установен вручную или автоматически.
Изготовление слепка ядра
Изготовления файла-слепка необходимых для работы ядра xTables файлов для проверки целостности их состава
в будущем.
В состав этого слепка входят файлы из каталогов:
/xtables - каталог с файлами ядра xTables;
/config - каталог с файлами настроек xTables;
/ext - каталог с файлами типовых расширений xTables;
/css - каталог с файлами стилей, где находятся необходимые для работы стили
Bootstrap, style.css, font-awesome, offcanvas;
/js - каталог с файлами JS, где находятся необходимые для работы xtables.js, user.js,
jquery, jsencrypt и др.
/fonts - каталог с файлами, необходимыми для отображения шрифтовых иконок.
Желательно, чтобы в момент изготовления слепка файлов, необходимых для ядра xTables, в данных папках
отсутствовали лишние файлы. Либо можно удалить их потом вручную из файла-слепка
/xtables/config/Settings/file-list.ini для обеспечения чистоты проверок.
Изготовления слепка проекта
Изготовления файла-слепка необходимых для работы проекта файлов для проверки целостности их состава в будущем.
Перечень каталогов, которые входят в состав проекта нужно определить в виде массива в файле
/config/requirements/app-folders.php.
Проверка приложения
Проверки приложения на соответствие минимальным требованиям, в том числе на предмет целостности состава файлов проекта и файлов, необходимых для работы ядра.
В ходе данной операции проверяется:
.htaccess с директивой deny from all
во всех каталогах ядра и проекта, за исключением свободных каталогов /js, /css, /images.
Если файл не обнаружен, то он добавляется в соответствующий каталог.
'/accessory/cache/sql', '/accessory/cache/output', '/accessory/cache/other'. При необходимости они создаются.
Для использования компонента необходимо:
/.htaccess в веб корне приложения, что необходимо для работы роутов.
После этого могут быть вызваны системные роуты:
/xtables-requirements - включение проверки с выводом на экран браузера информации о ее результатах,
здесь становится доступна кнопка для проверки обновлений ядра и расширений;
/config/requirements/own-tests.php.
/xtables-requirements/ext - показ всех доступных расширений с информацией о том, что расширение
установлено, требуется обновление системы для его установки или установка возможна (кнопка Установить);
/xtables-requirements/xtables-file-list - создание слепка файлов, необходимых для работы ядра;
/xtables-requirements/app-file-list - создание слепка файлов, необходимых для работы проекта.
Перечень каталогов, которые входят в состав проекта нужно определить в виде массива в файле
/config/appRequirements/app-folders.php.
Массив нужно разбить на два подмассива:
- dirs - каталоги, будут включены все файлы из этих каталогов;
- files - отдельные файлы.
В качестве ключей нужно указывать относительные пути, а в качестве значений абсолютные пути-префикты с данным папкам(файлам).
Файл-слепок файлов проекта будет сохранен в файле /config/appRequirements/file-list.ini.
'dirs' => [
'/app' => XTABLES_BASE,
'/images' => ROOT_PATH
],
'files' => [
//'/relative/path/file.txt' => ROOT_PATH
]
Данный компонент состоит из двух основных частей:
Первичная настройка
Первичная настройка является одним из первых действий при установке xTables после переноса файлов на сервер и настройки доступа к СУБД.
Создается первый пользователь, которому присваиваются высшие права,
согласно настройкам в файле /config/xtables-classes-access.php, необходимые
для создания других пользователей.
В базе данных создаются (если не существуют) минимально необходимые sql таблицы.
Создаются каталоги
/accessory/cache
Отдельные настройки в процессе работы
Для использования компонента нужно вызвать соответствующий системный роут.
/xtables-primary - первичная настройка приложения;
/xtables-settings/mail - настройка данных для отправки почты по SMTP;
/xtables-settings/yadi - настройка Яндекс.Диска;
/xtables-settings/mainsms - настройка СМС сервиса;
/xtables-primary/reset - сброс сервисных ключей и создание первого пользователя.
/config/free-primary-access.ini. После проведения настройки НЕОБХОДИМО ОБЯЗАТЕЛЬНО
отключить данный свободный доступ, так как он предоставляет возможность свободного создания
пользователя с высшими правами.
free-primary-access=true
free-primary-access=on
free-primary-access=false
free-primary-access=off
Имеется возможность создать начальную схему базы данных - структуру таблиц для проекта.
Для этого необходимо указать нужные таблицы в массиве в файле /config/requirements/db-structure.php.
Если таблица уже существует она не будет изменяться или удаляться, поэтому данный компонент можно повторно
использовать для добавления новых таблиц проекта.
/xtables/config/settings/db-structure.php и не должна изменяться,
как не должны меняться и другие файлы в каталоге /xtables для обеспечения возможности обновления.
При описании таблиц нужно использовать типовые наименования, которые будут откорректированы автоматически в зависимости от типа СУБД, в которой будут создаваться таблицы. См. описание Schema
Comment
Описание
Данный компонент может использоваться для стандартизированного вывода комментариев к определенной карточке (записи) в таблице.
Использование
Возможно использование компонента двумя путями:
Вызвать статический метод
getForm()классаxtables\components\comment\Comment.В качестве параметров в метод нужно передать:
for_table- обязательно название sql таблицы, для которой были созданы комментарии;for_id- обязательно номер идентификатора, для которого созданы комментарии;table- необязательно название sql таблицы, в которой сохранены комментарии, по умолчанию используетсяcomment.Создать экземпляр класса
xtables\components\comment\Comment, вызвать методget().В конструктор класса передать параметры:
dbc- необязательно название подключения к БД из пула подключений в файлеconfig.php, если не указано, то использует первое по списку подключение;for_table- название sql таблицы, для которой были созданы комментарии;for_id- номер идентификатора, для которого созданы комментарии;table- необязательно название sql таблицы, в которой сохранены комментарии, по умолчанию используетсяcomment.form_sample- необязательно расположение файла представления для специфической формы комментариев с указанием пути до базового каталога, соответствующего константеXTABLES_BASE;row_sample- необязательно расположение файла представления для специфического комментария с указанием пути до базового каталога, соответствующего константеXTABLES_BASE;nocomment_sample- необязательно расположение файла представления для специфического ответа об отсутствии комментариев с указанием пути до базового каталога, соответствующего константеXTABLES_BASE.После вызова данного метода на странице отображается форма для показа и ввода комментариев, включающая все необходимые JS функции для сохранения новых и обновления комментариев.
поэтому на одну страницу можно вставить несколько таких форм с разными параметрами.
Настройки
Настройка внешнего вида данного компонента может быть осуществлена путем редактирования файлов представлений в папке
/config/comment:comment-form.php- форма для показа и ввода комментариев;comment-row.php- вид одного комментария;nocomment-reply.php- ответ об отсутствии комментариев.При использовании расширенного вывода комментариев в настройках (указано выше) можно предусмотреть ссылки на пути со специфичными представлениями комментариев.