Список таблиц
CEntityList
Список примеров
Аннотация
Ядро системы содержит классы для работы с данными и класс CCore
, который содержит набор стандартных функций.
Класс содержит основные функции, которые используются ядром и могут быть полезны в модулях. Все методы класса статические и могут вызываться без создания экземпляра класса.
bindtextdomain() — Устанавливается путь поиска домена для интернационализации
void bindtextdomain(string $domain,
string $path);
Метод CCore::bindtextdomain()
определяет путь к каталогу, в котором хранятся файлы переводов интерфейса.
check_data() — Проверка данных на допустимость
array check_data(array &$data,
array $fields);
Метод проверяет данные на допустимость. Такая проверка уместна при обработке данных, полученных из формы.
Данные для проверки передаются в параметре $data
в виде ассоциативного массива, в котором ключи обозначают названия полей.
В процессе проверки массив $data
может быть изменен.
Это уместно для тех типов данных, которые преобразовываются перед
сохранением их в систему, например, для изображений или файлов.
Массив $fields
содержит множество объектов fldAbstract
,
которые описывают правила проверки данных.
Метод возвращает массив ошибок. Если массив пустой, значит, данные соответствуют условиям проверки. Массив ошибок имеет следующий формат:
check_login() — Проверка, авторизировался ли пользователь
ctx_load() — Восстановление контекста
do_event() — Инициирование обработки события
bool do_event(int $event,
array $params);
Посылка системе сообщения.
Метод производит запуск всех зарегистрированных обработчиков событий. В качестве обработчиков событий обычно выступают модули.
В параметре $event
передается тип вызываемого события, а в атрибуте
$params передаются все параметры для вызываемого события. В
нижеприведенной таблице указаны типы событий и параметры, которые должны
передаваться с вызовом событий.
Таблица 1.1. События, обрабатываемые ядром
Идентификатор события | Параметры события | Описание |
---|---|---|
EVENT_ADD_CHILD | (parentid, childentid, entacid, link_type, child_entity) | Добавление ребенка в сущность или создание ссылки на него. |
EVENT_UPDATE_ENTITY | (entid, entity) | Обновление сущности. |
EVENT_UNLINK_ENTITY | (ecid, entid, entacid, entity) | Удаление сущности или ссылки на нее. |
EVENT_READ_ENTITY | (entid, entity) | Чтение сущности. |
error_dup() — Получение последнего сообщения из стека ошибок
error_pop() — Получение последней ошибки из стека
error_push() — Добавление ошибки в системный стек
factory() — Создание экземпляра класса
mixed factory(string $path,
string $class_name,
mixed $params);
Метод создает экземпляр класса по его имени. Если файл, содержащий класс не был подключен, то метод пытается его найти и подключить.
Файл, содержащий класс, должен называться
<$class_name>.php
и находится в каталоге
$path
или в других системных каталогах. Каталоги, в
которых будет искаться файл класса описаны в параметре
general.paths
в файле /etc/core.ini
.
Если конструктор класса требует параметров, то они передаются в
аргументе $params
.
Метод возвращает созданный экземпляр класса либо
false
в случае неудачи.
get_dictionary_elements() — Получение элементов справочника
array get_dictionary_elements(int $dicid);
Возвращает массив элементов справочника с идентификатором
$dicid
, отсортированных по имени. Элемент справочника
представляется в виде массива со следующими ключами:
value
- значение элементов справочника
alias
- имя элемента справочника
comment
- комментарий к элементу
справочника
get_entaccept_by_entids() — Получение настроек связи на основе идентификаторов сущности и ее родителя
array get_entaccept_by_entids(int $parentid,
int $childentid);
Метод получает данные из таблиц ent_content
и
ent_accept
. На основе идентификатора сущности ребенка и
родителя она получает настройки связей, которыми объединены родитель и
ребенок.
Возвращается массив настроек связей. Каждый элемент массива представляет собой ассоциативный массив.
Таблица 1.2. Параметры настройки связи
Ключ | Описание |
---|---|
entacid | Идентификатор связи. |
etacid | Идентификатор типа связи. |
entid | Идентификатор родителя. |
childetypeid | Идентификатор типа ребенка. |
childalias | Псевдоним типа ребенка. |
sym_link | Типы ссылок, которые разрешено добавлять в связь. |
ent_limit | Ограничение на количество ссылок в связи. |
need_pos | Необходимо ли определение порядка детей в связи. |
Если между родителем и ребенком связи нет, то возвращается пустой массив.
get_entity_traces() — Получение "путей" к сущностям
array get_entity_traces(mixed $entid,
bool $need_title= CORE_TRACES_NO_TITLES,
string $where_tpl= "",
array $sql_params= NULL);
Метод возвращает все пути к сущностям в дереве каталога.
Если необходимо определить пути только к одной сущности, то в
аргументе $entid
необходимо передать идентификатор
сущности. Если же необходимо получить пути для нескольких сущностей, тогда
в параметр $entid
передается массив
идентификаторов.
Параметр $need_title
определяет, необходимо ли
получать заголовки сущностей-предков. Он может принимать одно из двух
значений:
CORE_TRACES_NO_TITLES
- не получать
заголовки
CORE_TRACES_TITLES
- получать
заголовки
Если необходимо ограничить выбор родителей по какому-либо условию,
можно использовать атрибуты $where_tpl
и
$sql_params
. Атрибут $where_params содержит шаблон
SQL
-запроса, а массив $sql_params
-
параметры запроса.
Подробнее о построении шаблонов запросов можно узнать на странице
описания метода CSystem::sql_query()
.
В зависимости от значения параметра $need_title
метод возвращает различные данные. Если $need_title
равен CORE_TRACES_NO_TITLES
и $entid
- целое, то метод возвращает массив путей к сущности. Если же
$entid
- массив, то будет возвращен ассоциативный
массив с ключами по идентификаторам сущностей. Элементами массива являются
массивы путей к сущностям.
Если $need_title
равен
CORE_TRACES_TITLES
и $entid
- целое,
то результат функции приобретает следующий вид:
Где подмассив titles
содержит заголовки всех
сущностей, встречающихся в путях, а traces
содержит все
пути к сущности.
Если же $entid
является массивом, то метод вернет
массив следующей структуры:
get_groups_list() — Получение списка групп пользователей
array get_groups_list(string $where_tpl= "",
array $sql_params= NULL);
Функция возвращает список всех групп пользователей, удовлетворяющих параметрам фильтрации. Поля сортируются по названию группы.
Группы возвращаются в виде объектов CGroup
.
get_last_modified() — Возвращает дату последней модификации
get_module_permission() — Определение прав на модуль
bool get_module_permission(string $s_module,
int $c_uid= 0,
array $c_gid= NULL);
Метод проверяет, имеет ли пользователь $c_uid
,
входящий в группы $c_gid
, работать с модулем
$s_module
. Если не указаны идентификаторы пользователя
и групп, то проверяется право текущего пользователя работать с
модулем.
Если пользователь имеет право работать с модулем, то метод
возвращает true
, иначе возвращается
false
.
Разделение прав доступа к модулям осуществляется в файле /etc/login.ini
.
get_permission() — Определение прав на сущность
int get_permission(int $perm,
int $uid,
int $gid,
int $c_uid,
array $c_gid);
По переданному триплету прав и идентификатору пользователя
$uid
и идентификатору группы $gid
вычисляем
права пользователя. Информация о пользователе берется из переменных
$c_uid
и $c_gid
.
Если параметры $c_uid
и $c_gid
не переданы, то проверяются права текущего пользователя.
Метод возвращает целое, определяющее права пользователя на заданную сущность.
get_titles_by_trace() — Получение заголовков сущностей
get_top_entities() — Получение корневых сущностей
array get_top_entities(array $accept_etids,
int $perm= PERM_W);
Возвращает список сущностей верхнего уровня, на которые у текущего пользователя есть указанные права.
В массиве $accept_etids
передаются идентификаторы
подтипов, которые необходимо выбрать. Параметр $perm
определяет минимальные права, которые должны быть у текущего пользователя
для вывода сущностей.
Список сущностей возвращается в виде массива следующей структуры:
get_types_list() — Получение списка типов сущностей
array get_types_list(string $where_tpl= "",
array $sql_params= NULL,
bool $need_count= false);
Функция возвращает список всех типов/подтипов, удовлетворяющих параметрам фильтрации. Поля сортируются по типам и подтипам.
Список типов/подтипов возвращается в виде объектов CType
.
Если необходимо подсчитать количество сущностей каждого типа в
системе, то необходимо в параметре $need_count
передать
значение true
. В этом случае количество сущностей
помещается в свойство
CType::params["child_num"]
.
get_users_list() — Получение списка пользователей
array get_users_list(string $where_tpl= "",
array $sql_params= NULL);
Функция возвращает список всех пользователей, удовлетворяющих параметрам фильтрации. Поля сортируются по нику пользователя.
Список пользователей возвращается в виде массива объектов CUser
.
include_template() — Подключение шаблона
mixed include_template(string $dir,
string $tpl,
array $alt_tpl= NULL,
bool $need_print= CORE_INCLUDE_PRINT);
Метод подключает шаблон $tpl
. Шаблон ищется в
каталоге $dir
, затем по списку альтернативных каталогов
$alt_tpl
и после этого в системных каталогах.
Если флаг $need_print
равен
CORE_INCLUDE_PRINT
, то содержимое шаблона будет
выводится в выходной поток, если же значение параметра будет равным
CORE_INCLUDE_PRINT_NONE
, то резутьтат работы шаблона
будет возвращен методом в виде строки.
В случае неудачи метод возвращает false
.
login() — Авторизация в системе
bool login(string $login,
string $password);
Проверяется имя и пароль пользователя, переданные в параметрах $login
и $password
соответственно. Если они есть в базе, то в сессию заносится ассоциативный массив $cairo_login
со следующими элементами:
uid - идентификатор пользователя
gid - массив групп, в которые входит пользователь
last_login - UNIX Timestamp дата/время последней авторизации
last_ip - IP, с которого последний раз авторизировался
-
Кроме того, в сессии регистрируются дополнительные переменные:
auuid - идентификатор пользователя
augid - массив групп, в которые входит пользователь
logout() — Выход пользователя из системы
setlocale() — Выбор текущей локали
void setlocale(int $category,
string $locale);
Метод устанавливает текущую локаль и заносит в глобальную переменную
$_SYSTEM["locale"]
информацию о локали.
Таблица 1.3. Категории распространения локали
Категория | Описание |
---|---|
LC_ALL | Все категории. |
LC_COLLATE | Локаль используется для сравнения строк. |
LC_CTYPE | Локаль используется для преобразования символов. Например, для изменения регистра. |
LC_MONETARY | Локаль используется для денежных функций, таких как
localeconv() . |
LC_NUMERIC | Локаль определяет формат вывода чисел. |
LC_TIME | Локаль определяет формат вывода даты и времени. |
time() — Текущее время пользователя
int time(int $i_stamp= 0);
Метод корректирует время, переданное в параметре $i_stamp в соответствии с часовым поясом клиента, указанном в системной настройке general.gmt.client
в файле /etc/core.ini
. Время должно передаваться в формате UNIX timestamp. Если метод вызывается без параметра, то будет возвращено текущее скорректированное время.
update_last_modified() — Обновление глобальной переменной Last-Modified
Класс "сущность" позволяет работать с отдельной сущностью. С его помощью можно получать данные о сущности, добавлять, обновлять, удалять сущность и создавать жесткие и символические ссылки на нее.
array $accept_subtypes
Свойство содержит информацию о подтипах, доступных для вложения в сущность.
Информация представлена в виде ассоциативного массива следующей структуры:
Каждая связь имеет идентификатор (entacid
). Этот
идентификатор уникален и однозначно определяет именно эту связь именно
этой сущности.
Каждая связь ассоциируется с одним из типов, если у типа есть подтипы, то свойство будет содержать название и количество детей для каждого подтипа.
array $accept_types
Свойство содержит информацию о допустимых для вложения типах. Содержится только информация о связях:
create() — Создание объекта CEntity
CEntity(int $entid,
array $params= NULL);
Конструктор создает экземпляр класса CEntity.
Если $entid
не равен нулю, то создается сущность
с указанным идентификатором. Если же $entid
равен нулю
и массив $params
не пуст, то создается сущность с
параметрами, указанными в массиве.
В случае успеха метод возвратит объект CEntity
. Если же произошла ошибка, то будет возвращено значение false
.
add() — Добавление сущности в систему
bool add(int $etacid,
int $parentid);
Добавление новой сущности.
Сущность прикрепляется к родительской сущности $parentid
в связь с идентификатором
$etacid
. Перед добавлением проверяются данные на
допустимость, если верификация не прошла успешно, то ошибки содержаться в
свойстве CEntity::etype->check_errors
.
В случае успеха метод возвращает true
и
false
иначе.
get_accept_subtypes() — Получение расширенной информации о типах, доступных для вложения
bool get_accept_subtypes();
К расширенной информации относится информация, извлекаемая в методе
CEntity::get_accept_types()
,
плюс список всех подтипов для каждой связи и количество сущностей каждого
подтипа для связей.
В случае успеха метод возвращает true
и
false
иначе.
get_accept_types() — Получение информации о типах, доступных для вложения
get_type_info() — Получение расширенной информации о типе сущности
bool get_type_info();
Метод получает информацию о типе сущности.
На основе данных из массива params получаем информацию о типе
сущности. Для этого необходимо задание поля
CEntity::$params["etid"]
. Информация о типе заносится в
свойство CEntity::$etype
.
В случае успеха метод возвращает true
и
false
иначе.
link() — Создание ссылки на сущность
bool link(int $etacid,
int $parentid,
int $entid,
int $link_type);
Метод создает в сущности $parentid
d связи $etacid
ссылку на
сущность $entid
. Тип ссылки указывается в параметре
$link_type
:
0 - жесткая
1 - символическая
Для работы метода нет необходимости создавать экземпляр класса.
В случае успеха метод возвращает true
и
false
иначе.
unlink() — Удаление ссылки на сущность
bool unlink(int $ecid);
Удаляет ссылку с идентификатором $ecid
.
Если удаляемая ссылка - последняя жесткая ссылка на сущность, то удаляется не только эта ссылка, но все оставшиеся символические сущности и информация о сущности со всем и вложенными сущностями.
Метод статический и не требует создания экземпляра сущности.
В случае успеха метод возвращает true
и
false
иначе.
update() — Обновление сущности
bool update();
Обновление сущности.
Информация о типе сущности и идентификатор сущности берутся из
массива CEntity::$params
.
Перед сохранением, метод проверяет переданные параметры. В случае, если
параметры не правильны, то сообщения об ошибках содержатся в свойстве
CEntity::$etype->check_errors
.
В случае успеха метод возвращает true
и
false
иначе.
Класс позволяет делать запросы к структуре данных и получать списки сущностей, удовлетворяющих определенным параметрам.
Таблица 1.4. Константы, используемые в классе CEntityList
Константа | Описание |
---|---|
CENTITYLIST_COUNT_NONE | Используется в методе CEntityList::get_list() . Указывает, что при получении списка сущностей их общее количество подсчитываться не должно. |
CENTITYLIST_COUNT_FILTER | Используется в методе CEntityList::get_list() . Указывает, что должно подсчитываться количество сущностей с учетом условий, переданных в параметре $filter . |
CENTITYLIST_COUNT_TOTAL | Используется в методе CEntityList::get_list() . Указывает, что должно подсчитываться количество сущностей без учета условий, переданных в параметре $filter . |
CENTITYLIST_RT_OBJECT | Используется в методе CEntityList::create() . Определяет, что данные должны возвращаться в виде списка объектов. |
CENTITYLIST_RT_ASSOC | Используется в методе CEntityList::create() . Определяет, что данные должны возвращаться в виде списка ассоциативных массивов. |
Класс CEntityList
зависит от классов CCore
, CEntity
, CType
, CSystem
.
CType $etype
Информация о типе сущности. Тип сущности описывается объектом CType
. Свойство устанавливается в
конструкторе класса.
array $items
Список сущностей, соответствующих заданному запросу.
Значение свойства $items
определяется методом CCore::get_list()
. Формат хранимых данных определяется параметром $return_type
при создании объекта. Это может быть список объектов CEntity
либо список ассоциативных массивов.
int $items_affected
Количество извлеченных сущностей.
Значение свойства $items_affected
определяется методом CCore::get_list()
.
int $items_filter_num
Количество сущностей в списке с учетом фильтров.
Значение свойства устанавливается методом CEntityList::get_list()
в случае, если в параметре $need_count
передано
значение CENTITYLIST_COUNT_FILTER
.
int $items_total_num
Общее количество сущностей в списке.
Устанавливается методом CEntityList::get_list()
в
случае, если в параметре $need_count
передано значение
CENTITYLIST_COUNT_TOTAL
.
create() — Создание объекта CEntityList
create(int $etypeid,
int $etid= 0,
int $return_type= CENTITYLIST_RT_OBJECT);
Создает экземпляр класса CEntityList
.
Если не указан ни $etid
ни
$etypeid
, то будет извлекаться базовая информация о
сущности Если указан $etypeid
, то извлекается
информация о типе. Если указан $etid
, то извлекается
информация о подтипе.Если передан только $etid
и это -
главный тип, то выводятся все сущности этого типа (все подтипы).
Параметр $return_type
определяет вид, в котором будет возвращаться результат. Если он примет значение CENTITYLIST_RT_OBJECT
, то данные будут возвращены в виде массива объектов CEntity
. Если же параметр принимает значение CENTITYLIST_RT_ASSOC
, то данные будут возвращены в виде списка ассоциативных массивов.
В случае успеха метод возвратит объект CEntityList
. Если же произошла ошибка, то будет возвращено значение false
.
get_list() — Получение спсика сущностей
Метод получает список сущностей.
bool get_list(string $fields_tpl= "",
string $tables_tpl= "",
string $where_tpl= "",
string $filter_tpl= "",
string $group_tpl= "",
string $order_tpl= "",
string $limit_tpl= "",
int $need_count= CENTITYLIST_COUNT_NONE,
array $sql_params= NULL,
string $assoc_key= "");
Все шаблоны передаются с именованными заполнителями. Значения
именованных заполнителей хранятся в ассоциативном массиве
$sql_params
.
В качестве параметров запроса нельзя использовать следующие ключевые слова:
tables
tbl_where
uid
gid
perm_uid
perm_gid
perm
is_root
Если задан параметр $fields_tpl
, то метод не
пытается определить выводимые поля. Аналогично, если задан параметр
$tables_tpl
, то не собирается информация о
таблицах.
Подключение таблицы ent_nodes
происходит только
в том случае, если в строке $where_tpl
явно указана
таблица ent_nodes
либо поле таблицы
node_path
.
Параметр $need_count
позволяет получить общее
число сущностей в списке, а не только те, которые определяются параметром
$limit_tpl
. Допустимые значения параметра описаны в
нижеприведенной таблице.
Таблица 1.5. Значение параметра, отвечающего за подсчет количества сущностей
Значение | Описание |
---|---|
CENTITYLIST_COUNT_NONE | Подсчет количества сущностей не производится. |
CENTITYLIST_COUNT_FILTER | Определяется число сущностей в списке с применением фильтра. |
CENTITYLIST_COUNT_TOTAL | Определяется общее число сущностей в списке. |
Если необходимо получить оба количества, то достаточно сложить аргументы.
Если установлен аргумент $assoc_key
, то метод
получит список сущностей в виде ассоциативного массива с ключом по
значению поля, указанному в аргументе.
В случае успеха метод возвращает true
и
false
иначе.
Пример 1.4. Получение списка сущностей
create() — Создание объекта CGroup
mixed create(int $gid,
array $params= NULL);
Если установлен аргумент $gid
, то метод получает
параметры группы с переданным идентификатором. Если же установлен аргумент
$params
и $gid
равен нулю, то
создается объект CGroup
с
параметрами, переданными в массиве.
В случае успеха метод возвратит объект CGroup
. Если же произошла ошибка, то будет возвращено значение false
.
Класс "Тип сущности" позволяет получать информацию о настройках типов, проверять данные на соответствияе ограничениям данного типа и др.
Класс CEntity
зависит от классов CCore
и fldAbstract
.
array $check_errors
Массив, в который заносятся все сообщения об ошибках при проверке
данных на достоверность методом CType::check_data()
.
array $fields
Массив настроек полей типа. Настройки полей хранятся в виде объектов
fldAbstract
.
array $fields_name
Массив экземпляров класса fldAbstract
,
содержащий настройки полей с ключами по именам полей.
array $fields_tbl
Массив экземпляров класса fldAbstract
,
содержащий настройки полей с ключами по таблицам, в которых эти поля
содержатся.
array $indexes
Массив индексов типа. Индексы указывают, на каких полях типа построен ключ.
array $params
Ассоциативный массив параметров типа сущности.
Таблица 1.7. Параметры типа сущности
Параметр | Описание |
---|---|
etid | Идентификатор подтипа сущности. |
etypeid | Идентификатор типа сущности. |
is_main | Флаг, указывающи, является ли подтип главным. |
etype | Название подтипа |
etype_plural | Название типа в множественном числе (зарезервировано). |
icon | Иконка типа (зарезервировано). |
ent_perm | Права, которые будут присваиваться вновь созданным сущностям этого типа. |
table_name | Имя таблицы, в которой хранятся поля подтипа. |
handler | Класс-обработчик подтипа. |
template | Префикс шаблона, используемого для отображения сущностей указанного подтипа. |
comment | Комментарий к подтипу. |
create() — Создание объекта CType
CType(int $etypeid,
int $etid= 0,
array $params= NULL);
Если параметр $etypeid
не равен нулю, то
создается объект, описывающий главный подтип типа
$etypeid
. Если $etypeid
равен нулю и
$etid
ненулевой, то создается объект, описывающий
подтип с идентификатором $etid
.
Если заполнен массив $params
и переданы нулевые
идентификаторы, то создается тип с переданными параметрами.
В случае успеха метод возвратит объект CType
. Если же произошла ошибка, то будет возвращено значение false
.
check_data() — Проверка данных на допустимость
bool check_data(array &$data);
Проверка данных на допустимость. В случае несоответствия данных
условиям, сообщения об ошибка выталкивает в стек CType::$check_errors
.
Перед началом работы, функция обнуляет стек.При сравнении
используются шаблоны полей из каталога /var/fields
.
Для анализа правильности ввода используется функция CCore::check_data
.
В случае успеха метод возвращает true
и
false
иначе.
get_fields() — Получение настроек полей
bool get_fields();
Функция анализирует данные из таблицы field_set
.
И формирует три массива CType::$fields
,
CType::$fields_name
и CType::$fields_tbl
.
В случае, если тип является подтипом, то получаем поля данного типа и поля
главного подтипа этого класса.
В случае успеха метод возвращает true
и
false
иначе.
get_indexes() — Получение табличных индексов
bool get_indexes();
Метод получает индексные поля для типа
У типа может быть первичный ключ и другие индексы. Данный метод позволяет получить имена полей, входящих в индексы. Индекс с именем "IMPORT", определяет какие поля используются как ключ при индексе.
Это метод экспериментальный и его использование может вызвать ошибку.
В случае успеха метод возвращает true
и
false
иначе.
array $params
Массив параметров пользователей.
Таблица 1.8. Параметры пользователей
Параметр | Описание |
---|---|
uid
| Идентификатор пользователя. |
nick
| Ник пользователя. |
passw
| Пароль пользователя. Пароль пользователя хранится в виде MD5-хеша. |
email
| E-mail пользователя. |
firstname
| Имя. |
lastname
| Фамилия. |
surname
| Отчество. |
city
| Город |
occupation
| Род занятий. |
company
| Компания. |
icq
| Номер ICQ. |
site
| Адрес веб-сайта. |
birthday
| Дата рождения. |
about
| О пользователе. |
create() — Создание объекта CGroup
create(int $uid,
array $params= NULL);
Если установлен аргумент $uid
, то метод получает
параметры пользователя с переданным идентификатором. Если же установлен
аргумент $params
и $uid
равен нулю,
то создается объект CUser
с параметрами,
переданными в массиве.
Аннотация
Вспомагательные библиотеки содержат классы и функции, упрощающие работу с базой данных, предоставляющие дополнительный сервис по работе с данными.
Класс CCairo
содержит статические методы, которые используются в универсальном интерфейсе администратора. Исползование их в сторонних продуктах нежелательно, так как их спецификации могут меняться.
check_login() — Проверка является ли пользователь авторизированным
bool check_login(string $s_login_url= "/auth/");
Проверяем зарегистрирован ли пользователь.
Пользователь считается зарегистрированным, если в сессии установлена
переменная $auuid
. Если переменная не установлена, то
пересылаем пользователя на страницу авторизации, указанную в параметре
$s_login_url
.
get_fields_view() — Получение настроек полей типа
array get_fields_view(int $etypeid,
int $etid= 0,
int $uid= 0);
Функция возвращает настройки полей типа для пользователя с
идентификатором $uid
. Если пользователь не задан,
берется текущий пользователь ($_SESSION["auuid"]
). Если
настроек для пользователя нет, они создаются.
Настройки полей возвращаются в виде массива объектов fldAbstract
.
handle_page_navigator() — Обработка постраничности
void handle_page_navigator(bool $b_del_only= false);
Обработка данных запроса для навигатора постраничности.
Метод выбирает их $_GET
те переменные, которые
затрагивают вывод списка.
Таблица 2.1. GET-переменные, управляющие выводом списка
Переменная | Описание |
---|---|
znpage | Номер выводимой страницы. |
znitem_num | Количество элементов, выводимых на одной странице. |
zf_* | Параметры фильтрации. |
zs_* | Параметры сортировки. |
zsmulti | Флаг множественной сортировки. |
Количество элементов на странице считается глобальной настройкой для всего ресурса и если она не переопределяется, то берется из куки.
Если установлен флаг $b_del_only
, то удаляются не
только информация о списках более верхнего уровня, но и о списке текущего
уровня. Это связано с необходимостью очищать информацию о списках вложений
сущности на странице этой сущности.
Метод предназначен для использования только в универсальном интерфейсе администратора.
create() — Создание объекта CError
create(string $message,
string $file,
int $line,
string $system_message= "",
string $addon= "");
Создает экземпляр класса CError
.
is_error() — Проверяет, является ли переданный параметр объектом CError
bool is_error(mixed $error);
Проверяет, является ли параметр $error
сообщением
об ошибке.
Функция может быть полезна для контроля параметров и может вызываться без создания экземпляра класса.
Возвращает true
, если аргумент - экзампляр класса
CError
и
false
иначе.
send() — Отправляет сообщение об ошибке администратору
void send(string $tpl_prefix= "error",
bool $need_show= false);
Отправляет сообщение об ошибке администратору. Если флаг
$need_show
учтановлен в true
, то
пользователю будет выведено сообщение об ошибке.
Параметр $tpl_prefix
определяет префикс шаблона
письма. Полное имя шаблона формируется следующим образом:
E-mail администратора задается в файле
/etc/core.ini
в параметре
email.webmaster
.
Класс используется для импорта данных в стандартном формате. Формат данных описывается в документе "Формат файла импорта данных".
Класс CJavascript
содержит функции Javascript, которые могут быть полезными при создании интерфейсов данных.
Для того, чтобы использовать функции библиотеки необходимо в шаблоне вызвать соответсвующий метод класса.
enlarge_image() — Скрипт вывода полноразмерной формы изображения
Класс CSystem
содержит набор функций для работы с источниками данных (файловая система, база данных, пользователь).
В SQL-запросах используются шаблоны, разработанные Дмитрием Котеровым. Подробнее об этой библиотеке можно узнать по адресу http://dklab.ru/lib/Database_Placeholder.
check_filepath() — Проверка существования пути к файлу
bool check_filepath(string $prefix,
string $filename,
bool $create= false);
Файлы, загружаемые пользователем на сервер распределяются внутри
каталога загрузки по подкаталогам с целью уменьшить нагрузку на файловую
систему. Функция CSystem::check_filepath()
проверяет на
существование "мнимого" пути к файлу.
Каталог загрузки файлов определяется в параметре $prefix
, имя
обрабатываемого файла - $filename
. Если включен флаг $create
, то функция
создаст мнимый путь, если его не было.
Если путь существует, то возвращает "мнимый" путь к файлу (без имени
файла), иначе, возвращает false
.
Функция зарезервирована и пока не используется.
db_connect() — Соединение с базой данных
int db_connect(string $dbhost,
string $dbuser,
string $dbpasswd,
string $dbname,
string $dbcharset);
Метод осуществляет соединение с базой данных (БД) осуществляется на основе входных параметров. Параметры:
$dbhost
- Адрес сервера БД;
$dbuser
- Имя пользователя БД;
$dbpasswd
- Пароль пользователя БД;
$dbname
- Имя БД;
$dbcharset
- Кодировка для работы с БД.
В случае успеха метод возвращает идентификатор подключения к БД, иначе - ноль.
get_browser_type() — Определение типа браузера клиента
string get_browser_type(string $user_agent);
Метод позволяет определить тип браузера клиента. Если задан параметр $user_agent
, то будет анализироваться именно он. Если же параметр не определен, то будет анализироваться заголовок HTTP_USER_AGENT
.
Метод возвращает одно из следующих значений:
opera - браузер семейства Opera;
gecko - браузер. основанный на ядре Gecko;
msie - одна из версий MS Internet Explorer;
unknown - тип браузера не определен.
glob() — Поиск файла по шаблону
mixed glob(string $path,
string $pattern);
Функция ищет в каталоге $path
все файлы, которые удовлетворяют заданному шаблону
$pattern
.
Использовать функцию CSystem::glob()
имеет смысл только при работе с PHP версии младше 4.3.0. Если же используется более новая версия, то рекомендуется использовать стандартную функцию glob()
.
sql_compile_placeholder() — Компиляция шаблона SQL-запроса
array sql_compile_placeholder(string $tmpl);
Функция компилирует шаблон SQL-запроса
$tmpl
для его последующего множественного
использования. Возвращает массив следующей структуры:
Пример 2.2. Использование предварительной компиляции шаблонов
sql_placeholder() — Генерация SQL-запроса на основе шаблона
mixed sql_placeholder(string $s_tpl,
mixed $param1);
Генерирует SQL-запрос на основе шаблона
$s_tpl
и списка параметров.
Первым параметром в функцию передается шаблон. Далее следует список параметров, которые будут подставляться в шаблон.
Если используется хотя бы один именованный заполнитель, то не именованные использовать нельзя.
Пример 2.3. Подстановка в запрос констант и скалярных переменных
Пример 2.4. Подстановка списка в шаблон
Пример 2.5. Подстановка в запрос списков и скаляров
Пример 2.6. Подстановка в запрос именованных заполнителей
sql_placeholder_ex() — Генерация SQL-запроса на основе шаблона
sql_query() — Выполнение SQL-запроса
sql_query_ex() — Выполнение SQL-запроса
int sql_query_ex(string $sql_tpl,
array $params);
Функция очень похожа на CSystem::sql_query()
,
но аргументы шаблона передаются в одном массиве. Шаблон запроса можно
передавать как в откомпилированном виде, так и в виде строки.
sql_result_array() — Получение простого массива из результата MySQL-запроса
sql_result_assoc() — Получение ассоциативного массива из результата MySQL-запроса
array sql_result_assoc(resource $result);
Метод по переданному идентификатору результата запроса возвращает массив ассоциативных массивов. Ключом в массиве является поле, указанное в параметре $key
.
Если поле с именем $key
отсутствует в наборе данных, вернется массив из одного элемента с ключом ""
В случае ошибки возвращает false.
sql_result_element() — Получение элемента из результата MySQL-запроса
sql_result_ids() — Получение массива идентификаторов из результата MySQL-запроса
sql_result_row() — Получение простого массива из результата MySQL-запроса
sql_rollback_transaction() — Откат транзакции
sql_start_transaction() — Начало транзакции
bool sql_start_transaction(bool $b_break);
Начало транзакции
Метод запускает транзакцию. Если параметр
$b_break
установлен в true, то при вызове этого метода
будет прервана работающая транзакция, иначе будет использоваться ранее
запущенная транзакция.
В случае успеха метод возвращает true
и
false
иначе.
unlink() — Удаление файла
void unlink(string $prefix,
string $filename,
bool $rm_dir= false);
Удаляет файл из каталога с "умным" расположением файлов.
Файлы, загружаемые пользователем на сервер распределяются внутри каталога загрузки по подкаталогам с целью уменьшить нагрузку на файловую систему.
Функция unlink
удаляет файл
$filename
из каталога $prefix
. Если
включен флаг $rm_dir
, то "мнимые" пути будут удалятся,
если они останутся пустыми.
get_thumbnail_size() — Получение размеров эскиза изображения
array get_thumbnail_size(string $image,
integer $width,
integer $height);
Таблица 2.5. Параметры функции
Параметр | Описание |
---|---|
$image | Исходный файл с изображением |
$width | Ширина эскиза |
$height | Высота эскиза |
Метод получает на входе имя файла и желаемые размеры эскиза. Он возвращает URL изображения и размеры уменьшенной копии в виде массива следующей структуры:
Расчет размеров производится в режиме "вписания в квадрат", т.е. для функции CUtils::make_thumbnail_box()
. Так как при использовании функции CUtils::make_thumbnail()
размер эскиза всегда известен.
В случае использования автоматического расчета размеров эскиза в функции CUtils::make_thumbnail()
для получения габаритов результирующего изображения можно использовать метод CUtils::get_thumbnail_size()
.
make_thumbnail() — Создание эскиза изображения
bool make_thumbnail(string $src_file,
string $dest_file,
integer $width,
integer $height);
Таблица 2.6. Параметры функции
Параметр | Описание |
---|---|
$src_file | Исходный файл с изображением |
$dest_file | Файл, в который будет записан эскиз |
$width | Ширина эскиза |
$height | Высота эскиза |
Метод создает эскиз изображения и помещает его в указанный файл. Если в каком-либо из размеров передается 0, то этот размер вычисляется автоматически. Метод требует заполненного массива $_CONFIG
. Если пропорции изображения не соответствуют пропорциям заданного эскиза, то при уменьшении части изображения, нарушающие пропорцию, будут обрезаны.
make_thumbnail_box() — Создание эскиза изображения
bool make_thumbnail_box(string $src_file,
string $dest_file,
integer $width,
integer $height);
Таблица 2.7. Параметры функции
Параметр | Описание |
---|---|
$src_file | Исходный файл с изображением |
$dest_file | Файл, в который будет записан эскиз |
$width | Ширина эскиза |
$height | Высота эскиза |
Метод создает эскиз изображения и помещает его в указанный файл. Если в каком-либо из размеров передается 0, то этот размер вычисляется автоматически. Метод требует заполненного массива $_CONFIG
. Если пропорции изображения не соответствуют пропорциям заданного эскиза, то результирующее изображение будет вписано в прямоугольник со сторонами $width
x$height
.
nice_text_cut() — Красивое обрезание текста (по границам слов)
string nice_text_cut(string $text,
int $maxLen);
Метод обрезает текст $text
по границам слов таким образом, чтобы его
длина была меньше $max_Len символов. После обрезанного текста добавляется
многоточие.
Пример 2.12. "Красивое" обрезание текста
perm2str() — Преобразовует права на сущность из цифрового вида в строку
quotenl() — Заменяет переносы строки на их экранированный эквивалент
unhtmlspecialchars() — Заменяет спецсимволы HTML на их обычные эквиваленты
string unhtmlspecialchars(string $str);
Функция обратна стандартной функции
htmlspecialchars()
.
Аннотация
Классы полей описывают различные типы данных. Набор классов полей, поставляемых с системой охватывает большую часть потребностей при разработке веб-ресурсов. Но, в случае, если необходимо обрабатывать какой-либо особый тип данных, пользователь имеет возможность добавлять собственные типы полей и интегрировать их в систему.
Все классы полей, используемые в системе наследуются от класса fldAbstract
и переопределяют лишь некоторые его методы.
В данном разделе будет подробно рассмотрен класс fldAbstract
и упомянуты особенности некоторых порожденных классов.
Класс fldAbstract
представляет собой базовый тип данных, в котором реализована обработка строковых данных. Тип данных "строка" выбран по той причине, что он являетс яуниверсальным и может содержать в себе данные большого числа типов от целых чисел до дат и адресов электронной почты.
При создании новых типов данных их классы необходимо наследовать от fldAbstract
и переопределять необходимые методы.
Сообщение об ошибке.
string $er_msg
Устанавливается в функции fldAbstract::check_server()
,
если введены неправильные данные.
Свойства поля.
array $params
Свойства поля перечислены в нижеприведенной таблице.
Таблица 3.1. Свойства полей
Свойство | Описание |
---|---|
fieldid | Идентификатор поля. Уникальный для всех полей в системе. |
pos | Позиция поля в типе. |
etid | Идентификатор подтипа, к которому относится поле. |
table_name | Имя таблицы, в которой хранится поле. |
field_name | Имя поля в таблице, в котором хранится информация о поле. |
field_alias | Псевдоним поля, которое выводится пользователю. |
field_type | Тип поля. Все типы должны быть описаны в файле /etc/fields.ini |
field_format | Формат поля. Этот параметр не имеет конкретного предназначения. В нем каждый тип может хранить свои уникальные настройки. Например, в типе "Справочник" параметр содержит идентификатор используемого справочника. |
field_template | Префикс шаблона поля. Остальная часть имени шаблона добавляется в зависимости от места применения шаблона. |
size | Размер поля. Используется для строк для определения максимальной длины. |
format_preg | PERL-совместимое регулярное выражение, прверяющее корректность введенных пользователем значений поля. |
default_val | Значение по умолчанию. |
condition | Условие истинности. Содержит в себе PHP-строку, реализующую дополнительную проверку поля. Например данный параметр позволяет осуществить связь между несколькими полями. |
er_msg | Сообщение об ошибке. Выводится, если пользователь ввел некорректные данные в поле. |
ntf_msg | Строка предупреждения о важности поля. |
required | Важность поля. Может иметь три значения:
|
comment | Комментарий к полю. |
visible | Флаг, определяющий, является ли поле видимым или скрытым. |
in_title | Флаг, определяющий, может ли поле выводится в списке. |
is_shown | Поле выводится в списке по умолчанию. |
order_type | Тип сортировки. Допустимые значения:
|
ent_title | Флаг, определяющий, входит ли поле в заголовок сущности. |
create() — Создание объекта "Поле"
create(int $fieldid,
array $params= NULL);
Конструктор пытается по типу поля (fldAbstract::$params['field_type']
)
определить для него класс-обработчик. Если это удается и файл
класса-обработчика находится в каталоге /usr/fields
,
то подключается необходимый файл и возвращается необходимый класс. Если
класс-обработчик для типа не установлен или файл этого класса не находится
в каталоге /usr/fields
, то создается экземпляр класса
fldAbstract
.
Настройки обработчиков полей описаны в файле /etc/fields.ini
.
check_client() — Генерирует Javascript для проверки введенных данных
mixed check_client(string $tpl_dir= "");
При работе с формами для удобства пользователей можно производить
проверку вводимых полей на стороне клиента. Метод
fldAbstract::check_client()
генерирует код на языке
Javascript, который можно использовать для проверки корректности данных,
введенных в поле.
Если подключить шаблон удалось, то возвращается результата
подключения, иначе возвращается false
.
check_client_filter() — Генерирует Javascript для проверки введенных данных в фильтрах
mixed check_client_filter(array $data,
string $tpl_dir);
При работе с фильтрами на списках для удобства пользователей можно
производить проверку вводимых полей на стороне клиента. Метод
fldAbstract::check_client_filter()
генерирует код на
языке Javascript, который можно использовать для проверки корректности
данных, введенных в поле.
Если подключить шаблон удалось, то возвращается результата
подключения, иначе возвращается false
.
check_server() — Проверяет введенные данные на стороне сервера
convert_form_data() — Обработка данных, переданных формой
bool convert_form_data(array &$params);
Форма может вернуть данные в формате, не соответствующем тому, в котором эти данные хранятся в БД.
Например, поле "дата/время" формой передается в виде двух полей:
<field_name>_time
и
<field_name>_date
. И их необходимо обработать и
свести в одно поле, которое и занесется в БД.
Метод преобразовывает массив полей и возвращает его.
В случае успеха метод возвращает true
и
false
иначе.
convert_import_data() — Обработка данных, переданных импортом
bool convert_import_data(array &$params);
Импорт может вернуть данные в формате, не соответствующем тому, в котором эти данные хранятся в БД.
Например, поле "дата/время" формой передается в виде двух полей: <field_name>_time и <field_name>_date. И их необходимо обработать и свести в одно поле, которое и занесется в БД.
Метод преобразовывает массив полей и возвращает его.
В случае успеха метод возвращает true
и
false
иначе.
get_ent_title() — Возвращает часть заголовка сущности
string get_ent_title(array $params);
Заголовок сущности формируется на основе содержимого полей, отмеченных с включенным флагом "Входит в заголовк сущности". Данный метод возвращает ту часть заголовка, которая формируется на основе текущего поля. Значение параметров сущности передается в аргументе $params
.
get_sql_order_str() — Возвращает sql-сроку устанавливающую метод сортировки для поля
string get_sql_order_str(int $sort_type);
При выборке данных из базы может потребоваться особое извлечение информации поля (например, справочник). Данный метод возвращает строку для сортировки записей в соответствии с заданным полем.
Параметр "Тип сортировки" может принимать одно из следующих значений:
0 - нет сортировки;
1 - сортировка по возрастанию;
2 - сортировка по убыванию.
get_sql_search_str() — Преобразует параметры в строку, удобную для поиска
Возвращает sql-сроку списка таблиц.
string get_sql_tables_list();
При выборке данных из базы может потребоваться извлечение информации поля более, чем из одной таблицы (например, справочник). Данный метод возвращает строку списка таблиц, которые необходимо объединить для получения информации поля.
show_edit() — Выводит шаблон редактирования сущности
mixed show_edit(array $data,
string $tpl_dir= "",
bool $enabled= true);
Метод выводит элемент редактирования поля заданного типа. Параметр
$data представляет собой ассоциативный массив, который содержит элемент с
ключем, соответствующим fldAbstract::$params['field_name']
.
Этот элемент определяет, чем будет заполнено поле по умолчанию. Шаблон
будет искаться в каталоге $tpl_dir
. Если включен флаг
$enabled
, то поле будет доступно для редактирования,
иначе оно станет неактивным.
Возвращает обработанный шаблон в виде строки. Если подключить шаблон
не получилось, возвращает false
.
show_filter() — Выводит шаблон фильтра сущности
mixed show_filter(array $data,
string $tpl_dir= "",
bool $enabled= true);
Метод выводит поле фильтра заданного типа. Параметр $data
представляет собой ассоциативный массив, который содержит элемент с
ключем, соответствующим fldAbstract::$params['field_name']
.
Этот элемент определяет, чем будет заполнено поле по умолчанию. Шаблон
будет искаться в каталоге $tpl_dir
. Если включен флаг
$enabled
, то поле будет доступно для редактирования,
иначе оно станет неактивным.
Возвращает обработанный шаблон в виде строки. Если подключить шаблон
не получилось, возвращает false
.
show_static() — Выводит поле в статическом виде
mixed show_static(array $data,
string $tpl_dir= "");
Метод выводит статическое отображение поля заданного типа. Параметр
$data представляет собой ассоциативный массив, который содержит элемент с
ключем, соответствующим fldAbstract::$params['field_name']
.
Этот элемент определяет, чем будет заполнено поле по умолчанию. Шаблон
будет искаться в каталоге $tpl_dir
.
Возвращает обработанный шаблон в виде строки. Если подключить шаблон
не получилось, возвращает false
.
Большая часть типов данный, фактически, лишь дополняет возможности базового типа. Они используют собственные шаблоны, собственные предустановленные ограничения. В нижеследующей таблице перечислены простые типы данных.
Таблица 3.2. Простые типы полей
Класс поля | Описание |
---|---|
fldBool |
Логический тип Поля этого типа могут принимать значения только "0" и "1". Такие поля могут использоваться в качестве "флага" или переключателя. ЗамечаниеСледует иметь в виду, что если поле логического типа сделать обязательным то сущность не сможет быть создана со значением поля "0". |
fldDate |
Дата Поле хранит дату. Содержимое поля выводится в виде "dd.mm.yyyy". |
fldDateTime |
Дата/время В отличие от предыдущего типа, данный, хранит еще и информацию о времени. |
fldFloat |
Вещественное число При вводе вещественного числа в качестве десятичного разделителя принимается как точка так и запятая. |
fldFrmText |
Форматированный текст Поле "Форматированный текст" позволяет управлять выводом текста с помощью HTML-тегов. |
fldPermissions |
Права пользователя Данный тип поля используется в универсальном интерфейсе администратора и в большинстве случаев его использование на ресурсах данных необходимым не является. |
fldSet |
Множество Тип "Множество" позволяет хранить информацию о подмножестве значений (аналогично типу SET в MySQL). |
fldSelect |
Перечисление Тип поля "Перечисление" позволяет выбирать одно из нескольких значений. |
fldTime |
Время Аналогичен типам |
Информация о простых типах полей отображается на одно поле в БД, не требует соединения с другими таблицами и при выборке возвращают результат в виде одного поля.
Ко второй группе относятся типы данных, отображающиеся более чем на одно поле в базе данных. Информация о таких типах может хранится как в одной таблице, так и в нескольких. При запросах, сложные поля возвращают одно или несколько значений.
Таблица 3.3. Типы полей со сложным отображением на БД
Класс поля | Возвращаемые поля | Описание |
---|---|---|
fldDictionary |
|
Справочник Поле справочник аналогично полю |
fldEntity |
|
Ссылка на сущность Поле похоже на справочник, но в роли элементов справочника выступают сущности определенного типа. Идентификатор используемого типа сущностей должен быть определен в параметре "формат поля" при определении набора параметров сущности. |
fldEtype |
|
Тип сущности Данный тип поля используется в системе администрирования. Он позволяет типами сущностей как с элементами справочника. Поле может работать как только главными типами, так и с подтипами. Для того, чтобы в выпадающем списке появились только главные типы, необходимо в параметре "формат поля" ввести строку |
fldFile |
|
Файл Данный тип поля позволяет хранить файлы. Фактически, сам файл хранится на диске, а в базе данных содержатся только его описание. Имена файлов на сервере всегда начинаются с префикса |
fldGroup |
|
Группа пользователей Тип поля позволяет работать с группами пользователей. |
fldImage |
|
Данный тип поля позволяет хранить изображения. Фактически, сам файл изображения хранится на диске, а в базе данных содержатся только его описание. Имена файлов изображений на сервере всегда начинаются с префикса |
fldMoney |
|
Денежный тип Данный тип поля хранить денежные типы. Он позволяет вводит значение и выбирать валюту, в которой представлена цена. Кроме того, поддерживается пересчет значений в соответствии с курсом валют. |
fldUser |
|
Пользователь Тип поля позволяет работать с пользователями. |
Рассмотрим подробнее наиболее сложные типы полей.
Класс fldDictionary
описывает работу типа данных "Справочник". Тип данных «Справочник» предоставляет возможность выбора из множества предопределенных значений. Главным отличием от типа данных "Перечисление", предлагающего аналогичную функциональность, является то, что один справочник может использоваться для нескольких типов объектов.
Важной особенностью типа данных "Справочник" является возможность создавать связанные справочники. Данная особенность используется в тех случаях, когда необходимо связать отдельный элемент родительского справочника с несколькими элементами дочернего справочника. Например, есть два справочника: справочник городов и справочник улиц. Причем в справочнике улиц присутствуют улицы разных городов. Связывание справочников позволит установить соответствие между городами и улицами.
Один и тот же справочник может одновременно выступать в качестве родительского для второго справочника и в качестве дочернего для третьего справочника. Таким образом, могут создаваться цепочки связанных справочников.
Класс fldDictionary
зависит от классов CCore
и fldAbstract
.
Тип данный "Файл" предназначен для хранения файлов, загруженных пользователем на сервер. Обработка типа данных "Файл" отличается от простых типов тем, что данные хранятся лишь частично в БД, а именно - описание файла. Сам же файл хранится на диске. Такой подход позволяет значительно снизить нагрузку на сервер и уменьшить объемы используемой памяти, поскольку нет необходимости получать весь файл целиком из БД и отправлять его пользователю.
Для описания файла в БД используется 5 полей:
<field_name> - Имя файла на сервере
<field_name>_filesize - Размер файла в байтах
<field_name>_width - Зарезервировано
<field_name>_height -Зарезервировано
<field_name>_mime - MIME-тип файла
Тип данный "Изображение" предназначен для хранения изображений и FLASH-роликов, загруженных пользователем на сервер. По способу хранения данных тип "Изображение" аналогичен типу "Файл", т.е. в базе данных ханится только описание файла изображения, а само изображение находится в файловой системе сервера.
Следует учесть, что корректная работа с FLASH-роликами зависит от установленной версии билииотеки GD. В некоторых случаях система не сможет определить автоматически размер области видимости FLASH-ролика.
Для описания файла в БД используется 5 полей:
<field_name> - Имя файла изображения на сервере
<field_name>_filesize - Размер файла изображения в байтах
<field_name>_width - Ширина изображения
<field_name>_height -Высота изображения
<field_name>_mime - MIME-тип изображения
Тип данный "Денежный" предназначен для хранения количественных данных о валюте. Его имеет смысл использовать в тех местах, где необходимо хранить денежные суммы в различных валютах. Отличительной особенностью денежного типа является то, что данные могут возвращаться в текущей валюте веб-интерфейса, а не в той валюте, в которой они были введены.
Курсы валют хранятся в базе данных в таблице money_currencies
. Таблиц валют содержит следующие поля:
mcurid - внутрисистемный идентификатор валюты (используется при определении константы FLDABSTRACT_CURRENCY_CONVERT
);
title - название валюты (поле носит информативный характер);
short - краткое название валюты (например UAH или USD);
koef - коэффициент преобразования относительно валюты по умолчанию (курс);
is_def - является ли валютой по умолчанию (допустимые значения 0/1).
Коэффициент преобразования (курс) рассчитывается следующим образом. Например, валюты по умолчанию - USD. Это значит, что коэффициент у доллара будет равен 1, а у гривны: 1 / 5 = 0.2. Т.к. за 1 доллар дают 5 гривен. В то же время коэффициент для евро, при курсе 1.2 евро за доллар, равен 1.20.
Для выбора валюты веб-интерфейса перед созданием объекта fldMoney
необходимо определить константу FLDABSTRACT_CURRENCY_CONVERT
. Константа должна содержать идентификатор (mcurid) текущей валюты. Если константа не определена, то данные возвращаются в той валюте, в которой они хранятся.
Аннотация
Ядро системы включает в себя всю функциональность, необходимую для работать со структурами данных произвольной сложности. Но может возникнуть необходимость в расширении возможностей системы. Для этого используется механизм модулей.
Модули могут нести в себе две функции: обработка событий ядра и расширение универсального веб-интерфейса. Каждый отдельный модуль может выполнять как обе функции сразу, так и какую-либо одну из них. В настоящий момент с помощью механизма модулей реализованы такие функции универсального веб-интерфейса как управление пользователями, структурой данных, справочниками и импортом.
Разработчики могут сами добавлять новые модули без вмешательства в ядро системы. Потребуется только установить файлы модуля в каталог системы и описать его в файлах настроек. Каждый модуль состоит из класса модуля и файлов его интерфейса.
Все классы модулей, используемые в системе наследуются от класса modAbstract
и переопределяют лишь некоторые его методы. Подробное описание процесса создания модуля можно найти в разделе "Работа с платформой" документа "Система управления контентом CAIRO: Руководство разработчика".
Класс modAbstract
является базовым классом для всех модулей системы и описывает методы и свойства, необходимые для интеграции модуля в систему.
При создании новых модулей их классы необходимо наследовать от modAbstract
. Сам класс modAbstract
является абстрактным и создавать объекты этого класса невозможно.
Класс modAbstract
зависит от класса CCore
.
do_event() — Обработчик событий
bool do_event(int $event,
array $params);
Если модуль должен обрабатывать события, то именно этот метод будет анализировать запросы. Тип события передается в параметре $event
, а параметр $params
содержит данные, полезные при обработке события. О типах событий и их параметрах можно прочитать в разделе, посвященному методу CCore::do_event()
.
get_submenu() — Возвращает элементы подменю модуля
array get_submenu(mixed $active_item= 0);
Данные, возвращаемые модулем, используются для вывода подменю модуля в левой части универсального интерфейса администратора. В параметре $active_item
передается идентификатор активного пункта меню.
Метод возвращает данные в виде списка, каждый элемент которого является ассоциативным массивом со следующими значениями:
title - Заголовок (будет выводится в качестве пункта меню)
hint - Всплывающая подсказка
url - URL, на который указывает пункт меню
active - логическое значение, является ли активным.
get_title() — Возвращает название модуля
string get_title(int $title_type);
Метод используется для получения названия модуля на языке локали. Параметр $title_type
используется для определения типа получаемого заголовка. Поддерживается два типа заголовков:
MOD_TITLE_SHORT - краткое название (для закладки на странице сущности);
MOD_TITLE_MENU - управление модулем (для главного меню).
show() — Работа с интерфейсом модуля
bool show(array $params);
Вся работа с пользовательским интерфейсом модуля производится через данный метод. Массив параметров содержит переменные, переданные методом GET а также следующие значения:
proj - Имя проекта, соответствующее содержимому файла /ets/login.ini
module - Имя класса модуля
path - Локальный путь к данной странице (путь внутри модуля)
Модуль работы со справочниками реализует визульный интерфейс управления справочниками. Кроме того, модуль предоставляет программный интерфейс для работы со справочниками.
Класс modDict
зависит от классов CCore
, Csystem
и modAbstract
.