Компонент 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
- ответ об отсутствии комментариев.При использовании расширенного вывода комментариев в настройках (указано выше) можно предусмотреть ссылки на пути со специфичными представлениями комментариев.