Система управления контентом CAIRO

Справочное руководство по API

Виктор Грищенко


Содержание

1. Ядро системы
1.1. CCore
1.2. CEntity
1.3. CEntityList
1.4. CGroup
1.5. CType
1.6. CUser
2. Вспомагательные библиотеки
2.1. CCairo
2.2. CError
2.3. CImport
2.4. CJavascript
2.5. CSystem
2.6. CUtils
3. Классы полей
3.1. fldAbstract
3.2. Простые типы полей
3.3. fldDictionary
3.4. fldFile
3.5. fldImage
3.6. fldMoney
4. Модули
4.1. modAbstract
4.2. modDict

Список таблиц

1.1. События, обрабатываемые ядром
1.2. Параметры настройки связи
1.3. Категории распространения локали
1.4. Константы, используемые в классе CEntityList
1.5. Значение параметра, отвечающего за подсчет количества сущностей
1.6. Параметры группы пользователей
1.7. Параметры типа сущности
1.8. Параметры пользователей
2.1. GET-переменные, управляющие выводом списка
2.2. Параметры ошибки
2.3. Параметры скрипта
2.4. Параметры скрипта
2.5. Параметры функции
2.6. Параметры функции
2.7. Параметры функции
3.1. Свойства полей
3.2. Простые типы полей
3.3. Типы полей со сложным отображением на БД

Список примеров

1.1. Подключение домена интернационализации
1.2. Создание новой ссылки на сущность
1.3. Удаление ссылки на сущность
1.4. Получение списка сущностей
2.1. Пример включения функции Javascript в шаблон
2.2. Использование предварительной компиляции шаблонов
2.3. Подстановка в запрос констант и скалярных переменных
2.4. Подстановка списка в шаблон
2.5. Подстановка в запрос списков и скаляров
2.6. Подстановка в запрос именованных заполнителей
2.7. Подстановка в запрос именованных заполнителей для списка
2.8. Вставляем в запрос списки пар "ключ=>значение"
2.9. Вставляем в запрос именованные заполнители для списка пар
2.10. Выполнение простого запроса
2.11. Выполнение простого запроса с массивом параметров
2.12. "Красивое" обрезание текста
2.13. Преобразование прав в строковый вид
2.14. Пример использования метода quotenl

Глава 1. Ядро системы

Аннотация

Ядро системы содержит классы для работы с данными и класс CCore, который содержит набор стандартных функций.

1.1. CCore

Базовые функции системы

1.1.1. Описание

Класс содержит основные функции, которые используются ядром и могут быть полезны в модулях. Все методы класса статические и могут вызываться без создания экземпляра класса.

1.1.2. Зависимости

Класс CCore зависит от классов CType, CSystem, CError и CUtils.

bindtextdomain()

bindtextdomain() — Устанавливается путь поиска домена для интернационализации

Описание

void bindtextdomain(string $domain,
                    string $path);

Метод CCore::bindtextdomain() определяет путь к каталогу, в котором хранятся файлы переводов интерфейса.

Примеры

Пример 1.1. Подключение домена интернационализации

  1. <?php
  2. CCore::bindtextdomain("widgets", "../locale");
  3. ?>

check_data()

check_data() — Проверка данных на допустимость

Описание

array check_data(array &$data,
                 array $fields);

Метод проверяет данные на допустимость. Такая проверка уместна при обработке данных, полученных из формы.

Данные для проверки передаются в параметре $data в виде ассоциативного массива, в котором ключи обозначают названия полей. В процессе проверки массив $data может быть изменен. Это уместно для тех типов данных, которые преобразовываются перед сохранением их в систему, например, для изображений или файлов.

Массив $fields содержит множество объектов fldAbstract, которые описывают правила проверки данных.

Метод возвращает массив ошибок. Если массив пустой, значит, данные соответствуют условиям проверки. Массив ошибок имеет следующий формат:

  1.     array(
  2.         "field_name" => <Имя поля, в котором произошла ошибка>,
  3.         "error"      => <Сообщение об ошибке>
  4.     ),
  5.     ...
  6. )

Смотри также

fldAbstract.


check_login()

check_login() — Проверка, авторизировался ли пользователь

Описание

bool check_login();

Метод проверяет авторизирован ли пользователь. Если он авторизирован, то возвращается true, иначе возвращается false.

Смотри также

CCore::login(), CCore::logout().


check_object()

check_object() — Проверка принадлежности объекта классу

Описание

bool check_object(mixed $val,
                  string $class_name);

Возвращает true, если параметр $val является экземпляром класса $class_name или экземпляром класса, порожденного от $classname и false иначе.


convert_gmt()

convert_gmt() — Конвертирует временную зону

Описание

float convert_gmt(string $gmt);

Метод конвертирует временную зону, переданную в параметре $gmt, из формата "+0300" в вещественное число, означающее смещение в часах относительно Гринвича.

В случае ошибки возвращает 0.


ctx_load()

ctx_load() — Восстановление контекста

Описание

bool ctx_load(array $ctx);

Метод позволяет восстановить сохраненное ранее состояние контекста по параметру $ctx.

В настоящий момент под контекстом понимается значение массивов $_TRASH_FILES и $_COPY_FILES.

Смотри также

CCore::ctx_store().


ctx_store()

ctx_store() — Генерация состояния контекста

Описание

array ctx_store();

Метод возвращает массив, описывающий текущий контекст.

Смотри также

CCore::ctx_load().


do_event()

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_dup() — Получение последнего сообщения из стека ошибок

Описание

mixed error_dup();

Метод возвращает последнее сообщение об ошибке из системного стека ошибок без его удаления. Если стек пуст, возвращается false.


error_get_stack()

error_get_stack() — Получение стека ошибок

Описание

array error_get_stack();

Метод возвращает весь системный стек ошибок.


error_pop()

error_pop() — Получение последней ошибки из стека

Описание

mixed error_pop();

Метод удаляет последнее сообщение в стеке ошибок и возвращает его. В системном стеке ошибок хранятся все ошибки, которые произошли за время выполнения скрипта.


error_push()

error_push() — Добавление ошибки в системный стек

Описание

bool error_push(CError $error);

Метод добавляет новую ошибку в стек ошибок.

В системном стеке ошибок хранятся все ошибки, которые произошли за время выполнения скрипта.

В случае, если аргумент не является ошибкой, возвращается false.


factory()

factory() — Создание экземпляра класса

Описание

mixed factory(string $path,
              string $class_name,
              mixed $params);

Метод создает экземпляр класса по его имени. Если файл, содержащий класс не был подключен, то метод пытается его найти и подключить.

Файл, содержащий класс, должен называться <$class_name>.php и находится в каталоге $path или в других системных каталогах. Каталоги, в которых будет искаться файл класса описаны в параметре general.paths в файле /etc/core.ini.

Если конструктор класса требует параметров, то они передаются в аргументе $params.

Метод возвращает созданный экземпляр класса либо false в случае неудачи.


fatal_error()

fatal_error() — Обработка фатальной ошибки

Описание

void fatal_error();

Метод вызывается, если необходимо обработать фатальную ошибку. После отработки метод завершает работу скрипта.


get_charset()

get_charset() — Возвращает кодировку по текущей локали

Описание

string get_charset();

Метод возвращает кодировку документов по текущей локали. Во всех документах, отдаваемых пользователю желательно использовать эту функцию для определения кодировки документов.


get_dictionary_elements()

get_dictionary_elements() — Получение элементов справочника

Описание

array get_dictionary_elements(int $dicid);

Возвращает массив элементов справочника с идентификатором $dicid, отсортированных по имени. Элемент справочника представляется в виде массива со следующими ключами:

  • value - значение элементов справочника

  • alias - имя элемента справочника

  • comment - комментарий к элементу справочника

Смотри также

fldDictionary


get_entaccept_by_entids()

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()

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 - массив, то будет возвращен ассоциативный массив с ключами по идентификаторам сущностей. Элементами массива являются массивы путей к сущностям.

  1.     <entid> => array(<ent_path>[, <ent_path>]),
  2.     <entid> => array(<ent_path>[, <ent_path>]),
  3.     ...
  4. )

Если $need_title равен CORE_TRACES_TITLES и $entid - целое, то результат функции приобретает следующий вид:

  1.     'titles' => array(<entid1> => <title1> [, <entid2> => <title2>, ...]),
  2.     'traces' => array(<ent_path>[, <ent_path>])
  3. )

Где подмассив titles содержит заголовки всех сущностей, встречающихся в путях, а traces содержит все пути к сущности.

Если же $entid является массивом, то метод вернет массив следующей структуры:

  1.     'titles' => array(<entid1> => <title1> [, <entid2> => <title2>, ...]),
  2.     'traces' => array(
  3.         <entid> => array(<ent_path>[, <ent_path>]),
  4.         <entid> => array(<ent_path>[, <ent_path>]),
  5.         ...
  6.     )
  7. )

Смотри также

CSystem::sql_query().


get_full_dump()

get_full_dump() — Получение дампа внутренних переменных

Описание

string get_full_dump();

Возвращает полный дамп внутренних переменных. Дамп внутренних переменных возвращается в виде HTML-кода, который впоследствии может быть встроен в отчет об ошибке, отладочную информацию, и т.п.


get_groups_list()

get_groups_list() — Получение списка групп пользователей

Описание

array get_groups_list(string $where_tpl= "",
                      array $sql_params= NULL);

Функция возвращает список всех групп пользователей, удовлетворяющих параметрам фильтрации. Поля сортируются по названию группы.

Группы возвращаются в виде объектов CGroup.


get_last_modified()

get_last_modified() — Возвращает дату последней модификации

Описание

int get_last_modified();

Метод возвращает дату последней модификации контента в формате UNIX timestamp.

Для определения даты последней модификации контента вычисляется максимальная дата изменения сущностей, используемых в скрипте.

Смотри также

CCore::update_last_modified().


get_module_permission()

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_net_by_ip()

get_net_by_ip() — Возвращает номер сети по IP

Описание

string get_net_by_ip(string $ip);

Метод возвращает адрес сети по IP-адресу. Адрес сети вычисляется без учета маски.


get_permission()

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_titles_by_trace() — Получение заголовков сущностей

Описание

array get_titles_by_trace(string $trace);

Возвращает список заголовков сущностей по пути. Путь передается в виде '1/2/3'. Возвращается массив следующей структуры:

  1. array(<entid1> => <title1> [, <entid2> => <title2>, ...])

get_top_entities()

get_top_entities() — Получение корневых сущностей

Описание

array get_top_entities(array $accept_etids,
                       int $perm= PERM_W);

Возвращает список сущностей верхнего уровня, на которые у текущего пользователя есть указанные права.

В массиве $accept_etids передаются идентификаторы подтипов, которые необходимо выбрать. Параметр $perm определяет минимальные права, которые должны быть у текущего пользователя для вывода сущностей.

Список сущностей возвращается в виде массива следующей структуры:

  1.     array(
  2.         "ent_path"  => <ent_path>,
  3.         "entid"     => <entid>,
  4.         "ent_title" => <ent_title>
  5.     ),
  6.     ...
  7. )

get_types_list()

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"].

Смотри также

CType


get_users_list()

get_users_list() — Получение списка пользователей

Описание

array get_users_list(string $where_tpl= "",
                     array $sql_params= NULL);

Функция возвращает список всех пользователей, удовлетворяющих параметрам фильтрации. Поля сортируются по нику пользователя.

Список пользователей возвращается в виде массива объектов CUser.

Смотри также

CUser


get_version()

get_version() — Возвращает версию системы

Описание

string get_version();

Метод возвращает версию системы.


include_template()

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.


lc()

lc() — Интернационализация строки

Описание

string lc(string $str,
          string $domain= "");

Метод переводит строку $str в ее аналог, согласно установленной локали. Параметр $domain используется, если строка описана в отличном от корневого домене.


login()

login() — Авторизация в системе

Описание

bool login(string $login,
           string $password);

Проверяется имя и пароль пользователя, переданные в параметрах $login и $password соответственно. Если они есть в базе, то в сессию заносится ассоциативный массив $cairo_login со следующими элементами:

  • uid - идентификатор пользователя

  • gid - массив групп, в которые входит пользователь

  • last_login - UNIX Timestamp дата/время последней авторизации

  • last_ip - IP, с которого последний раз авторизировался

  • -

Кроме того, в сессии регистрируются дополнительные переменные:

  • auuid - идентификатор пользователя

  • augid - массив групп, в которые входит пользователь

Смотри также

CCore::check_login(), CCore::logout().


logout()

logout() — Выход пользователя из системы

Описание

bool logout();

Метод осуществляет выход пользователя из системы. После его вызова текущий пользователь воспринимается как anonymous.

Смотри также

CCore::check_login(), CCore::login().


print_errors()

print_errors() — Вывод стека ошибок

Описание

void print_errors();

Выводит HTML-таблицу, которая содержит информацию об ошибках, хранящихся в системном стеке.


print_sql_log()

print_sql_log() — Вывод журнала SQL-запросов

Описание

void print_sql_log();

Выводит HTML-таблицу, которая содержит журнал SQL-запросов.

Замечание

Журнал SQL-запросов ведется только в том случае, если включен параметр debug.sql_stat в файле настроек /etc/core.ini.


setlocale()

setlocale() — Выбор текущей локали

Описание

void setlocale(int $category,
               string $locale);

Метод устанавливает текущую локаль и заносит в глобальную переменную $_SYSTEM["locale"] информацию о локали.

Таблица 1.3. Категории распространения локали

КатегорияОписание
LC_ALLВсе категории.
LC_COLLATEЛокаль используется для сравнения строк.
LC_CTYPEЛокаль используется для преобразования символов. Например, для изменения регистра.
LC_MONETARYЛокаль используется для денежных функций, таких как localeconv().
LC_NUMERICЛокаль определяет формат вывода чисел.
LC_TIMEЛокаль определяет формат вывода даты и времени.

textdomain()

textdomain() — Выбор текущего текстового домена

Описание

void textdomain(string $domain);

Метод устанавливает текущий домен для интернационализации.


time()

time() — Текущее время пользователя

Описание

int time(int $i_stamp= 0);

Метод корректирует время, переданное в параметре $i_stamp в соответствии с часовым поясом клиента, указанном в системной настройке general.gmt.client в файле /etc/core.ini. Время должно передаваться в формате UNIX timestamp. Если метод вызывается без параметра, то будет возвращено текущее скорректированное время.

Смотри также

CCore::convert_gmt().


update_last_modified()

update_last_modified() — Обновление глобальной переменной Last-Modified

Описание

bool update_last_modified(int $modified);

Метод обновляет глобальную переменную "Last-Modified". Переменная будет обновлена только в том случае, если $modified больше ее текущего значения. Параметр $modified передается ф формате UNIX timestamp.

Смотри также

CCore::get_last_modified().


var_dump()

var_dump() — Получение дампа переменной

Описание

string var_dump(mixed $val);

Функция аналогична var_dump() и print_r(), но вывод возвращает в виде строки.


write_log()

write_log() — Запись строки в лог-файл

Описание

bool write_log(string $log_name,
               string $log_msg);

Метод записывает строку $log_msg в лог-файл с именем $log_name. Все лог-файлы хранятся в каталоге /var/log/.

1.2. CEntity

Класс "сущность"

1.2.1. Описание

Класс "сущность" позволяет работать с отдельной сущностью. С его помощью можно получать данные о сущности, добавлять, обновлять, удалять сущность и создавать жесткие и символические ссылки на нее.

1.2.2. Зависимости

Класс CEntity зависит от классов CCore, CType, CSystem.

1.2.3. Свойства

1.2.3.1. $accept_subtypes

1.2.3.1.1. Описание

array $accept_subtypes

Свойство содержит информацию о подтипах, доступных для вложения в сущность.

Информация представлена в виде ассоциативного массива следующей структуры:

  1.     <entacid> => array(
  2.         <etid> => array(
  3.             'child_num' => <Количество детей заданного подтипа>,
  4.             'etype'     => <Имя подтипа>
  5.         ),
  6.         ...
  7.     ),
  8.     ...
  9. )

Каждая связь имеет идентификатор (entacid). Этот идентификатор уникален и однозначно определяет именно эту связь именно этой сущности.

Каждая связь ассоциируется с одним из типов, если у типа есть подтипы, то свойство будет содержать название и количество детей для каждого подтипа.

1.2.3.2. $accept_types

1.2.3.2.1. Описание

array $accept_types

Свойство содержит информацию о допустимых для вложения типах. Содержится только информация о связях:

  1.     "entacid"      => <Идентификатор связи>,
  2.     "etacid"       => <Идентификатор типа связи>,
  3.     "entid"        => <Идентификатор родительской сущности>,
  4.     "childetypeid" => <Идентификатор типа детей>,
  5.     "childalias"   => <Псевдоним типа детей>,
  6.     "sym_link"     => <Тип ссылок, которые можно использовать в связи>,
  7.     "ent_limit"    => <Лимит на количество детей в связи>,
  8.     "need_pos"     => <Необходимо ли поддерживать порядок детей связи>
  9. )

$etype

Описание

CType $etype

Информация о типе сущности.

Тип сущности описывается объектом CType. Свойство устанавливается в конструкторе класса.

Смотри также

CType

1.2.3.3. $params

1.2.3.3.1. Описание

array $params

Параметры сущности.

Параметры сущности определяются в конструкторе. Они содержат все параметры, как основные параметры сущности, так и параметры, соответствующие типу сущности.

create()

create() — Создание объекта CEntity

Описание

CEntity(int $entid,
        array $params= NULL);

Конструктор создает экземпляр класса CEntity.

Если $entid не равен нулю, то создается сущность с указанным идентификатором. Если же $entid равен нулю и массив $params не пуст, то создается сущность с параметрами, указанными в массиве.

В случае успеха метод возвратит объект CEntity. Если же произошла ошибка, то будет возвращено значение false.


add()

add() — Добавление сущности в систему

Описание

bool add(int $etacid,
         int $parentid);

Добавление новой сущности.

Сущность прикрепляется к родительской сущности $parentid в связь с идентификатором $etacid. Перед добавлением проверяются данные на допустимость, если верификация не прошла успешно, то ошибки содержаться в свойстве CEntity::etype->check_errors.

В случае успеха метод возвращает true и false иначе.


get_accept_subtypes()

get_accept_subtypes() — Получение расширенной информации о типах, доступных для вложения

Описание

bool get_accept_subtypes();

К расширенной информации относится информация, извлекаемая в методе CEntity::get_accept_types(), плюс список всех подтипов для каждой связи и количество сущностей каждого подтипа для связей.

В случае успеха метод возвращает true и false иначе.

Смотри также

CEntity::get_acept_types().


get_accept_types()

get_accept_types() — Получение информации о типах, доступных для вложения

Описание

bool get_accept_types();

Получаем информацию о типах, доступных для вложения.

Информация берется из таблицы ent_accept. В качестве условия отбора используется CEntity::$params['entid'].

В случае успеха метод возвращает true и false иначе.


get_type_info()

get_type_info() — Получение расширенной информации о типе сущности

Описание

bool get_type_info();

Метод получает информацию о типе сущности.

На основе данных из массива params получаем информацию о типе сущности. Для этого необходимо задание поля CEntity::$params["etid"]. Информация о типе заносится в свойство CEntity::$etype.

В случае успеха метод возвращает true и false иначе.

Смотри также

CEntity::$params, CEntity::$etype.


link()

link() — Создание ссылки на сущность

Описание

bool link(int $etacid,
          int $parentid,
          int $entid,
          int $link_type);

Метод создает в сущности $parentid d связи $etacid ссылку на сущность $entid. Тип ссылки указывается в параметре $link_type:

  • 0 - жесткая

  • 1 - символическая

Для работы метода нет необходимости создавать экземпляр класса.

В случае успеха метод возвращает true и false иначе.

Пример 1.2. Создание новой ссылки на сущность

  1. <?php
  2. $entacid   = 1// Идентификатор связи
  3. $entid     = 56; // Идентификатор прикрепляемой сущности
  4. $link_type = 0// Создаем "жесткую" ссылку
  5.  
  6. if (!CEntity::link($entacid, $entid, $link_type)) {
  7.     CCore::error_push(CError::create("Ошибка создания ссылки", __FILE__, __LINE__));
  8.     exit;
  9. }
  10. ?>

unlink()

unlink() — Удаление ссылки на сущность

Описание

bool unlink(int $ecid);

Удаляет ссылку с идентификатором $ecid.

Если удаляемая ссылка - последняя жесткая ссылка на сущность, то удаляется не только эта ссылка, но все оставшиеся символические сущности и информация о сущности со всем и вложенными сущностями.

Метод статический и не требует создания экземпляра сущности.

В случае успеха метод возвращает true и false иначе.

Пример 1.3. Удаление ссылки на сущность

  1. <?php
  2. $ecid = 1// Идентификатор удаляемой ссылки
  3.  
  4. if (!CEntity::unlink($ecid)) {
  5.     CCore::error_push(CError::create("Ошибка удаления ссылки", __FILE__, __LINE__));
  6.     exit;
  7. }
  8. ?>

update()

update() — Обновление сущности

Описание

bool update();

Обновление сущности.

Информация о типе сущности и идентификатор сущности берутся из массива CEntity::$params. Перед сохранением, метод проверяет переданные параметры. В случае, если параметры не правильны, то сообщения об ошибках содержатся в свойстве CEntity::$etype->check_errors.

В случае успеха метод возвращает true и false иначе.

1.3. CEntityList

Получение списка сущностей

1.3.1. Описание

Класс позволяет делать запросы к структуре данных и получать списки сущностей, удовлетворяющих определенным параметрам.

1. Константы

Таблица 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(). Определяет, что данные должны возвращаться в виде списка ассоциативных массивов.

1.3.2. Зависимости

Класс CEntityList зависит от классов CCore, CEntity, CType, CSystem.

1.3.3. Свойства

1.3.3.1. $etype

1.3.3.1.1. Описание

CType $etype

Информация о типе сущности. Тип сущности описывается объектом CType. Свойство устанавливается в конструкторе класса.

1.3.3.1.2. Смотри также

CType.

1.3.3.2. $items

1.3.3.2.1. Описание

array $items

Список сущностей, соответствующих заданному запросу.

Значение свойства $items определяется методом CCore::get_list(). Формат хранимых данных определяется параметром $return_type при создании объекта. Это может быть список объектов CEntity либо список ассоциативных массивов.

1.3.3.2.2. Смотри также

CEntity, CEntityList::create().

1.3.3.3. $items_affected

1.3.3.3.1. Описание

int $items_affected

Количество извлеченных сущностей.

Значение свойства $items_affected определяется методом CCore::get_list().

1.3.3.4. $items_filter_num

1.3.3.4.1. Описание

int $items_filter_num

Количество сущностей в списке с учетом фильтров.

Значение свойства устанавливается методом CEntityList::get_list() в случае, если в параметре $need_count передано значение CENTITYLIST_COUNT_FILTER.

1.3.3.4.2. Смотри также

CEntityList::get_list()

1.3.3.5. $items_total_num

1.3.3.5.1. Описание

int $items_total_num

Общее количество сущностей в списке.

Устанавливается методом CEntityList::get_list() в случае, если в параметре $need_count передано значение CENTITYLIST_COUNT_TOTAL.

1.3.3.5.2. Смотри также

CEntityList::get_list()

create()

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()

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. Получение списка сущностей

  1. <?php
  2. $i_etid = 4// Тип извлекаемых сущностей
  3.  
  4. // Создание объекта CEntityList
  5. if (!$o_list = CEntityList::create(0, $i_etid)) {
  6.     CCore::error_push(CError::create("Ошибка создания списка сущностей", __FILE__, __LINE__));
  7.     exit;
  8. }
  9.  
  10. // Получаем список сущностей
  11. if (!$o_list->get_list(
  12.          "entid, ent_title",      // Извлекаемые поля
  13.          "",                      // Дополнительных таблиц не подключаем
  14.          "ent_updated > ?date",   // Извлекам только сущности, которые были обновлены после даты date
  15.          "",                      // Фильтры не используются
  16.          "",                      // Группировки нет
  17.          "ent_updated DESC",      // Сортировка в порядке убывания даты обновления
  18.          "0,10",                  // Получаем первые 10 записей
  19.          CENTITYLIST_COUNT_TOTAL, // Подсчитываем общее количество сущностей
  20.          array(
  21.              "date" => "2004-10-25"
  22.          ),
  23.          ""                       // Не делаем ассоциативного массива
  24.      )) {
  25.     CCore::error_push(CError::create("Ошибка получения списка сущностей", __FILE__, __LINE__));
  26.     exit;
  27. }
  28.  
  29. // Выводим полученный список
  30. var_dump($o_list->items);
  31. ?>

1.4. CGroup

Класс "Группа пользователей"

1.4.1. Описание

Класс позволяет получать информацию о группах пользователей.

1.4.2. Зависимости

Класс CGroup зависит от класса CCore.

1.4.3. Свойства

1.4.3.1. $params

1.4.3.1.1. Описание

array $params

Массив параметров группы пользователей.

Таблица 1.6. Параметры группы пользователей

ПараметрОписание
gidИдентификатор группы пользователей.
group_nameИмя группы.

create()

create() — Создание объекта CGroup

Описание

mixed create(int $gid,
             array $params= NULL);

Если установлен аргумент $gid, то метод получает параметры группы с переданным идентификатором. Если же установлен аргумент $params и $gid равен нулю, то создается объект CGroup с параметрами, переданными в массиве.

В случае успеха метод возвратит объект CGroup. Если же произошла ошибка, то будет возвращено значение false.

1.5. CType

Класс "Тип сущности"

1.5.1. Описание

Класс "Тип сущности" позволяет получать информацию о настройках типов, проверять данные на соответствияе ограничениям данного типа и др.

1.5.2. Зависимости

Класс CEntity зависит от классов CCore и fldAbstract.

1.5.3. Свойства

1.5.3.1. $accept_types

1.5.3.1.1. Описание

array $accept_types

Массив типов, доступных для вложения.

1.5.3.2. $check_errors

1.5.3.2.1. Описание

array $check_errors

Массив, в который заносятся все сообщения об ошибках при проверке данных на достоверность методом CType::check_data().

1.5.3.2.2. Смотри также

CType::check_data()

1.5.3.3. $fields

1.5.3.3.1. Описание

array $fields

Массив настроек полей типа. Настройки полей хранятся в виде объектов fldAbstract.

1.5.3.3.2. Смотри также

fldAbstract.

1.5.3.4. $fields_name

1.5.3.4.1. Описание

array $fields_name

Массив экземпляров класса fldAbstract, содержащий настройки полей с ключами по именам полей.

1.5.3.4.2. Смотри также

fldAbstract.

1.5.3.5. $fields_tbl

1.5.3.5.1. Описание

array $fields_tbl

Массив экземпляров класса fldAbstract, содержащий настройки полей с ключами по таблицам, в которых эти поля содержатся.

1.5.3.5.2. Смотри также

fldAbstract

1.5.3.6. $indexes

1.5.3.6.1. Описание

array $indexes

Массив индексов типа. Индексы указывают, на каких полях типа построен ключ.

1.5.3.6.2. Смотри также

CType::get_indexes().

1.5.3.7. $params

1.5.3.7.1. Описание

array $params

Ассоциативный массив параметров типа сущности.

Таблица 1.7. Параметры типа сущности

ПараметрОписание
etidИдентификатор подтипа сущности.
etypeidИдентификатор типа сущности.
is_mainФлаг, указывающи, является ли подтип главным.
etypeНазвание подтипа
etype_pluralНазвание типа в множественном числе (зарезервировано).
iconИконка типа (зарезервировано).
ent_permПрава, которые будут присваиваться вновь созданным сущностям этого типа.
table_nameИмя таблицы, в которой хранятся поля подтипа.
handlerКласс-обработчик подтипа.
templateПрефикс шаблона, используемого для отображения сущностей указанного подтипа.
commentКомментарий к подтипу.

create()

create() — Создание объекта CType

Описание

CType(int $etypeid,
      int $etid= 0,
      array $params= NULL);

Если параметр $etypeid не равен нулю, то создается объект, описывающий главный подтип типа $etypeid. Если $etypeid равен нулю и $etid ненулевой, то создается объект, описывающий подтип с идентификатором $etid.

Если заполнен массив $params и переданы нулевые идентификаторы, то создается тип с переданными параметрами.

В случае успеха метод возвратит объект CType. Если же произошла ошибка, то будет возвращено значение false.

Смотри также

CType::$params.


check_data()

check_data() — Проверка данных на допустимость

Описание

bool check_data(array &$data);

Проверка данных на допустимость. В случае несоответствия данных условиям, сообщения об ошибка выталкивает в стек CType::$check_errors.

Перед началом работы, функция обнуляет стек.При сравнении используются шаблоны полей из каталога /var/fields. Для анализа правильности ввода используется функция CCore::check_data.

В случае успеха метод возвращает true и false иначе.

Смотри также

CType::$check_errors, CCore::check_data().


get_accept_types()

get_accept_types() — Получение списка доступных для вложения типов

Описание

bool get_accept_types();

Получение списка доступных для вложения типов.

В случае успеха метод возвращает true и false иначе.


get_fields()

get_fields() — Получение настроек полей

Описание

bool get_fields();

Функция анализирует данные из таблицы field_set. И формирует три массива CType::$fields, CType::$fields_name и CType::$fields_tbl. В случае, если тип является подтипом, то получаем поля данного типа и поля главного подтипа этого класса.

В случае успеха метод возвращает true и false иначе.


get_indexes()

get_indexes() — Получение табличных индексов

Описание

bool get_indexes();

Метод получает индексные поля для типа

У типа может быть первичный ключ и другие индексы. Данный метод позволяет получить имена полей, входящих в индексы. Индекс с именем "IMPORT", определяет какие поля используются как ключ при индексе.

Внимание

Это метод экспериментальный и его использование может вызвать ошибку.

В случае успеха метод возвращает true и false иначе.

Смотри также

CType::$indexes

1.6. CUser

Класс "Пользователь"

1.6.1. Описание

Класс позволяет получать информацию о пользователе.

1.6.2. Зависимости

Класс CUser зависит от класса CCore.

1.6.3. Свойства

1.6.3.1. $params

1.6.3.1.1. Описание

array $params

Массив параметров пользователей.

Таблица 1.8. Параметры пользователей

ПараметрОписание
uid Идентификатор пользователя.
nick Ник пользователя.
passw Пароль пользователя. Пароль пользователя хранится в виде MD5-хеша.
email E-mail пользователя.
firstname Имя.
lastname Фамилия.
surname Отчество.
city Город
occupation Род занятий.
company Компания.
icq Номер ICQ.
site Адрес веб-сайта.
birthday Дата рождения.
about О пользователе.

create()

create() — Создание объекта CGroup

Описание

create(int $uid,
       array $params= NULL);

Если установлен аргумент $uid, то метод получает параметры пользователя с переданным идентификатором. Если же установлен аргумент $params и $uid равен нулю, то создается объект CUser с параметрами, переданными в массиве.

Глава 2. Вспомагательные библиотеки

Аннотация

Вспомагательные библиотеки содержат классы и функции, упрощающие работу с базой данных, предоставляющие дополнительный сервис по работе с данными.

2.1. CCairo

Вспомагательные бибилиотеки для универсального интерфейса администратора

2.1.1. Описание

Класс CCairo содержит статические методы, которые используются в универсальном интерфейсе администратора. Исползование их в сторонних продуктах нежелательно, так как их спецификации могут меняться.

2.1.2. Зависимости

Класс CCairo зависит от класса CCore.

check_login()

check_login() — Проверка является ли пользователь авторизированным

Описание

bool check_login(string $s_login_url= "/auth/");

Проверяем зарегистрирован ли пользователь.

Пользователь считается зарегистрированным, если в сессии установлена переменная $auuid. Если переменная не установлена, то пересылаем пользователя на страницу авторизации, указанную в параметре $s_login_url.


get_fields_view()

get_fields_view() — Получение настроек полей типа

Описание

array get_fields_view(int $etypeid,
                      int $etid= 0,
                      int $uid= 0);

Функция возвращает настройки полей типа для пользователя с идентификатором $uid. Если пользователь не задан, берется текущий пользователь ($_SESSION["auuid"]). Если настроек для пользователя нет, они создаются.

Настройки полей возвращаются в виде массива объектов fldAbstract.

Смотри также

fldAbstract


get_ip_string()

get_ip_string() — Получение IP-адреса клиента

Описание

string get_ip_string();

Если удается определить только один IP-адрес клиента, то возвращается именно он. если же удается определить как внешний, так и внутренний IP-адрес, то возвращается строка в виде "xxx.xxx.xxx.xxx/yyy.yyy.yyy.yyy", где первый IP-адрес внешний, а второй -- внутренний.


handle_page_navigator()

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, то удаляются не только информация о списках более верхнего уровня, но и о списке текущего уровня. Это связано с необходимостью очищать информацию о списках вложений сущности на странице этой сущности.

Внимание

Метод предназначен для использования только в универсальном интерфейсе администратора.

2.2. CError

Класс "Ошибка"

2.2.1. Описание

Класс используется для обработки ошибок и помагает при отладке продуктов.

2.2.2. Зависимости

Класс CError зависит от класса CCore.

2.2.3. Свойства

2.2.3.1. $addon

2.2.3.1.1. Описание

string $addon

Дополнительная информация об ошибке. В эту переменную помещается SQL-запрос.

2.2.3.2. $file

2.2.3.2.1. Описание

string $file

Файл, в котором произошла ошибка.

2.2.3.3. $line

2.2.3.3.1. Описание

int $line

Строка, в которой произошла ошибка.

2.2.3.4. $message

2.2.3.4.1. Описание

string $message

Пользовательское сообщение об ошибке.

2.2.3.5. $system_message

2.2.3.5.1. Описание

string $system_message

Системное сообщение об ошибке. Например, ошибка MySQL.

create()

create() — Создание объекта CError

Описание

create(string $message,
       string $file,
       int $line,
       string $system_message= "",
       string $addon= "");

Создает экземпляр класса CError.

Таблица 2.2. Параметры ошибки

ПараметрОписание
$messageСообщение об ошибке.
$fileФайл, в котором произошла ошибка.
$lineСтрока, в которой произошла ошибка.
$system_messageСистемное сообщение об ошибке.
$addonДополнительная информация об ошибке.

is_error()

is_error() — Проверяет, является ли переданный параметр объектом CError

Описание

bool is_error(mixed $error);

Проверяет, является ли параметр $error сообщением об ошибке.

Функция может быть полезна для контроля параметров и может вызываться без создания экземпляра класса.

Возвращает true, если аргумент - экзампляр класса CError и false иначе.


send()

send() — Отправляет сообщение об ошибке администратору

Описание

void send(string $tpl_prefix= "error",
          bool $need_show= false);

Отправляет сообщение об ошибке администратору. Если флаг $need_show учтановлен в true, то пользователю будет выведено сообщение об ошибке.

Параметр $tpl_prefix определяет префикс шаблона письма. Полное имя шаблона формируется следующим образом:

  1. $s_template = $tpl_prefix.'_letter.tpl.php';

E-mail администратора задается в файле /etc/core.ini в параметре email.webmaster.


show()

show() — Вывод сообщения об ошибке

Описание

void show(string $tpl_prefix= "error");

Метод выводит сообщение об ошибке и отправляет письмо администратору.

Параметр $tpl_prefix определяет префикс шаблона письма. Полное имя шаблона формируется следующим образом:

  1. $s_template = $tpl_prefix.'_letter.tpl.php';

2.3. CImport

Импорт данных

2.3.1. Описание

Класс используется для импорта данных в стандартном формате. Формат данных описывается в документе "Формат файла импорта данных".

2.3.2. Зависимости

Класс CImport зависит от классов CCore, CEntity и CType.

create()

create() — Создание объекта CImport

Описание

create();

Конструктор инициализирует основные свойства класса.


import_file()

import_file() — Импортирование файла

Описание

bool import_file(int $parentid,
                 string $file_name);

Метод импортирует файл $file_name в базу данных. Если не указано иное, то данные из файла будут импортироваться в сущность с идентификатором $parententid.

2.4. CJavascript

Набор функций Javascript

2.4.1. Описание

Класс CJavascript содержит функции Javascript, которые могут быть полезными при создании интерфейсов данных.

Для того, чтобы использовать функции библиотеки необходимо в шаблоне вызвать соответсвующий метод класса.

Пример 2.1. Пример включения функции Javascript в шаблон

  1. <html>
  2. <header>
  3.     <title>Test string</title>
  4. </header>
  5. <script type="text/javascript">//<![CDATA[
  6. <?CJavascript::win()?>
  7. //]]></script>
  8. <body>
  9. <a href="javascript:;" onclick="win('about:blank', 300, 300);">Open window 300x300</a>
  10. </body>
  11. </html>

enlarge_image()

enlarge_image() — Скрипт вывода полноразмерной формы изображения

Описание

void enlarge_image();

Метод добавляет на страницу скрипт вывода изображения в новом окне. При этом размер окна будет автоматически рассчитан по размеру изображения.

Таблица 2.3. Параметры скрипта

ПараметрОписание
urlURL изображения
b_widthШирина изображения в пикселях
b_heightВысота изображения в пикселях

win()

win() — Скрипт открытия URL в новом окне

Описание

void win();

Метод добавляет на страницу скрипт, который можно использовать для открытия ссылок в новом окне заданного размера.

Таблица 2.4. Параметры скрипта

ПараметрОписание
urlОткрываемый URL
b_widthШирина окна в пикселях
b_heightВысота окна в пикселях

2.5. CSystem

Набор функций для работы с источниками данных

2.5.1. Описание

Класс CSystem содержит набор функций для работы с источниками данных (файловая система, база данных, пользователь).

В SQL-запросах используются шаблоны, разработанные Дмитрием Котеровым. Подробнее об этой библиотеке можно узнать по адресу http://dklab.ru/lib/Database_Placeholder.

can_gz_out()

can_gz_out() — Проверка способности браузера обрабатывать сжатый контент

Описание

string can_gz_out();

Функция анализирует заголовок HTTP_ACCEPT_ENCODING, переданный браузером пользователя и по его содержимому определяет, может ли браузер принимать сжатый контент.


check_filepath()

check_filepath() — Проверка существования пути к файлу

Описание

bool check_filepath(string $prefix,
                    string $filename,
                    bool $create= false);

Файлы, загружаемые пользователем на сервер распределяются внутри каталога загрузки по подкаталогам с целью уменьшить нагрузку на файловую систему. Функция CSystem::check_filepath() проверяет на существование "мнимого" пути к файлу.

Каталог загрузки файлов определяется в параметре $prefix, имя обрабатываемого файла - $filename. Если включен флаг $create, то функция создаст мнимый путь, если его не было.

Если путь существует, то возвращает "мнимый" путь к файлу (без имени файла), иначе, возвращает false.

Внимание

Функция зарезервирована и пока не используется.


db_connect()

db_connect() — Соединение с базой данных

Описание

int db_connect(string $dbhost,
               string $dbuser,
               string $dbpasswd,
               string $dbname,
               string $dbcharset);

Метод осуществляет соединение с базой данных (БД) осуществляется на основе входных параметров. Параметры:

  • $dbhost - Адрес сервера БД;

  • $dbuser - Имя пользователя БД;

  • $dbpasswd - Пароль пользователя БД;

  • $dbname - Имя БД;

  • $dbcharset - Кодировка для работы с БД.

В случае успеха метод возвращает идентификатор подключения к БД, иначе - ноль.


get_browser_type()

get_browser_type() — Определение типа браузера клиента

Описание

string get_browser_type(string $user_agent);

Метод позволяет определить тип браузера клиента. Если задан параметр $user_agent, то будет анализироваться именно он. Если же параметр не определен, то будет анализироваться заголовок HTTP_USER_AGENT.

Метод возвращает одно из следующих значений:

  • opera - браузер семейства Opera;

  • gecko - браузер. основанный на ядре Gecko;

  • msie - одна из версий MS Internet Explorer;

  • unknown - тип браузера не определен.


get_microtime()

get_microtime() — Получение метки времени

Описание

float get_microtime();

Возвращает текущее время в виде секунд и микросекунд.


glob()

glob() — Поиск файла по шаблону

Описание

mixed glob(string $path,
           string $pattern);

Функция ищет в каталоге $path все файлы, которые удовлетворяют заданному шаблону $pattern.

Замечание

Использовать функцию CSystem::glob() имеет смысл только при работе с PHP версии младше 4.3.0. Если же используется более новая версия, то рекомендуется использовать стандартную функцию glob().


page_out()

page_out() — Вывод страницы с возможностью сжатия

Описание

void page_out(int $gz_level= 5);

Функция анализирует, может ли пользователь принять сжатый вывод, и если может, то сжимает весь предыдущий вывод и отдает пользователю. Параметр $gz_level определяет степень сжатия. Допустимые значения: 0-9.


sql_commit_transaction()

sql_commit_transaction() — Подтверждение транзакции

Описание

bool sql_commit_transaction();

Метод подтверждает транзакцию. Все изменения, которые были внесены с начала транзакции будут записаны в базу данных.

В случае успеха метод возвращает true и false иначе.


sql_compile_placeholder()

sql_compile_placeholder() — Компиляция шаблона SQL-запроса

Описание

array sql_compile_placeholder(string $tmpl);

Функция компилирует шаблон SQL-запроса $tmpl для его последующего множественного использования. Возвращает массив следующей структуры:

  1. <?
  2.     array(
  3.         $key,   // ключ точки подстановки
  4.         $type// '@'|'%'|'#'|''
  5.         $start, // начальная позиция точки подстановки
  6.         $length // длина строки подстановки
  7.     ),
  8.     $tmpl,      // исходный шаблон
  9.     $has_named  // есть ли в этом шаблоне именованные точки подстановки
  10. );
  11. ?>

Пример 2.2. Использование предварительной компиляции шаблонов

  1. <?php
  2. //Предварительная компиляция шаблона запроса для более быстрого исполнения:
  3.  
  4. # Компиляция...
  5.  
  6. $compiled  = CSystem::sql_compile_placeholder(
  7.   'UPDATE t SET ?%new WHERE a=?some'
  8. );
  9.  
  10.  
  11. # ...а затем исполнение множества запросов.
  12.  
  13. foreach ($some_data as $k=>$new) {
  14.   $result = CSystem::sql_query(
  15.     $compiled, # откомпилированная версия
  16.     array(
  17.       "new"  => $new,
  18.       "some" => $k
  19.     )
  20.   ) or die('SQL error');
  21. );
  22.  
  23. }
  24.  
  25. //То же, но без именованных заполнителей:
  26.  
  27. # Вначале компилируем...
  28. $compiled  = CSystem::sql_compile_placeholder(
  29.   'UPDATE t SET ?% WHERE a=?',
  30. );
  31.  
  32.  
  33. # ...а затем исполняем много запросов.
  34.  
  35. foreach ($some_data as $k=>$new) {
  36.   $result = CSystem::sql_query($compiled, $new, $k)
  37.     or die("SQL error: ".__FILE__.":".__LINE__.": $sql");
  38. }
  39. ?>

sql_lock_tables()

sql_lock_tables() — Блокировка таблиц

Описание

bool sql_lock_tables(string $s_method);

Метод блокирует все таблицы в базе способом, указанным в параметре $s_method. Параметр $s_method может принимать значения:

  • READ - блокировка на чтение;

  • WRITE - блокировка на запись.

В случае успеха метод возвращает true и false иначе.


sql_placeholder()

sql_placeholder() — Генерация SQL-запроса на основе шаблона

Описание

mixed sql_placeholder(string $s_tpl,
                      mixed $param1);

Генерирует SQL-запрос на основе шаблона $s_tpl и списка параметров.

Первым параметром в функцию передается шаблон. Далее следует список параметров, которые будут подставляться в шаблон.

Внимание

Если используется хотя бы один именованный заполнитель, то не именованные использовать нельзя.

Примеры

Пример 2.3. Подстановка в запрос констант и скалярных переменных

  1. <?php
  2. define("MY_TABLE", "t");
  3.  
  4. $sql = CSystem::sql_placeholder(
  5.     'SELECT * FROM ?#MY_TABLE WHERE a=?, b=?',
  6.     10, 20
  7. );
  8. ?>

Пример 2.4. Подстановка списка в шаблон

  1. <?php
  2. $sql = CSystem::sql_placeholder(
  3.     'SELECT * FROM ?#MY_TABLE WHERE a IN (?@)',
  4.     array(10, 20, 30, 40, 50, 60, 70, 80)
  5. );
  6. ?>

Пример 2.5. Подстановка в запрос списков и скаляров

  1. <?php
  2. $sql = CSystem::sql_placeholder(
  3.     'SELECT * FROM t WHERE a IN (?@) AND b=?',
  4.     array(10, 20, 30, 40, 50, 60, 70, 80), 1000
  5. );
  6. ?>

Пример 2.6. Подстановка в запрос именованных заполнителей

  1. <?php
  2. $sql = CSystem::sql_placeholder(
  3.     'SELECT * FROM t WHERE a=?vA b=?vB',
  4.     array(
  5.         'vA' => "cat's house",
  6.         'vB' => "dog's house",
  7.     )
  8. );
  9. ?>

Пример 2.7. Подстановка в запрос именованных заполнителей для списка

  1. <?php
  2. $sql  = CSystem::sql_placeholder(
  3.     'SELECT * FROM t WHERE a IN (?@aa) AND b=?bb',
  4.     array(
  5.         'aa' => array(1,2,3,4,5),
  6.         'bb' => "dog's house",
  7.     )
  8. );
  9. ?>

Пример 2.8. Вставляем в запрос списки пар "ключ=>значение"

  1. <?php
  2. $sql  = CSystem::sql_placeholder(
  3.     'UPDATE t SET ?% WHERE a IN (?@)',
  4.     array(
  5.         array(
  6.             "a" => "cat's",
  7.             "b" => "dog's",
  8.         ),
  9.         array(1,2,3,4),
  10.     )
  11. );
  12. ?>

Пример 2.9. Вставляем в запрос именованные заполнители для списка пар

  1. <?php
  2. $sql  = CSystem::sql_placeholder(
  3.     'UPDATE t SET ?%new WHERE a IN (?@some)',
  4.     array(
  5.         "new"  => array(
  6.             "a"    => "cat's",
  7.             "b"    => "dog's",
  8.         ),
  9.         "some" => array(1,2,3,4)
  10.     )
  11. );
  12. ?>

sql_placeholder_ex()

sql_placeholder_ex() — Генерация SQL-запроса на основе шаблона

Описание

Составляет SQL-запрос на основе шаблона и параметров.

 sql_placeholder_ex(string $tmpl,
                    array $args);

В случае, если шаблон передается в неоткомпилированном виде, то вызывается компилятор шаблонов. После компиляции в шаблон подставляются параметры из массива $args.


sql_query()

sql_query() — Выполнение SQL-запроса

Описание

int sql_query(string $sql_tpl,
              mixed $param_1);

Первым параметром в функцию передается шаблон. Далее следует список параметров, которые будут подставлятся в шаблон.

Пример 2.10. Выполнение простого запроса

  1. <?php
  2. $result = CSystem::sql_query("SELECT * FROM tables WHERE a=? AND b=?", 10, 20)
  3.     or die('SQL error');
  4. ?>

sql_query_ex()

sql_query_ex() — Выполнение SQL-запроса

Описание

int sql_query_ex(string $sql_tpl,
                 array $params);

Функция очень похожа на CSystem::sql_query(), но аргументы шаблона передаются в одном массиве. Шаблон запроса можно передавать как в откомпилированном виде, так и в виде строки.

Пример 2.11. Выполнение простого запроса с массивом параметров

  1. <?php
  2. $result = CSystem::sql_query_ex("SELECT * FROM tables WHERE a=? AND b=?", array(10, 20))
  3.     or die('SQL error');
  4. ?>

sql_result_array()

sql_result_array() — Получение простого массива из результата MySQL-запроса

Описание

array sql_result_array(resource $result);

Метод по переданному идентификатору результата запроса $result возвращает список ассоциативных массивов.

В случае ошибки возвращает false.


sql_result_assoc()

sql_result_assoc() — Получение ассоциативного массива из результата MySQL-запроса

Описание

array sql_result_assoc(resource $result);

Метод по переданному идентификатору результата запроса возвращает массив ассоциативных массивов. Ключом в массиве является поле, указанное в параметре $key.

Если поле с именем $key отсутствует в наборе данных, вернется массив из одного элемента с ключом ""

В случае ошибки возвращает false.


sql_result_element()

sql_result_element() — Получение элемента из результата MySQL-запроса

Описание

mixed sql_result_element(resource $result);

Метод по переданному идентификатору результата запроса $result возвращает элемент, содержащийся в первой колонке первой строки.

В случае ошибки возвращает false.


sql_result_ids()

sql_result_ids() — Получение массива идентификаторов из результата MySQL-запроса

Описание

array sql_result_ids(resource $result);

Метод по переданному идентификатору результата запроса $result возвращает массив, собранный из значений первого столбца результата.

В случае ошибки возвращает false.


sql_result_row()

sql_result_row() — Получение простого массива из результата MySQL-запроса

Описание

array sql_result_row(resource $result);

Метод по переданному идентификатору результата запроса $result возвращаает значения первой строки результата в виде ассоциативного массива.

В случае ошибки возвращает false.


sql_rollback_transaction()

sql_rollback_transaction() — Откат транзакции

Описание

bool sql_rollback_transaction();

Метод откатывает транзакцию. Все изменения, которые были внесены с начала транзакции будут отменены.

В случае успеха метод возвращает true и false иначе.

Смотри также

CSystem::sql_start_transaction()


sql_start_transaction()

sql_start_transaction() — Начало транзакции

Описание

bool sql_start_transaction(bool $b_break);

Начало транзакции

Метод запускает транзакцию. Если параметр $b_break установлен в true, то при вызове этого метода будет прервана работающая транзакция, иначе будет использоваться ранее запущенная транзакция.

В случае успеха метод возвращает true и false иначе.


unlink()

unlink() — Удаление файла

Описание

void unlink(string $prefix,
            string $filename,
            bool $rm_dir= false);

Удаляет файл из каталога с "умным" расположением файлов.

Файлы, загружаемые пользователем на сервер распределяются внутри каталога загрузки по подкаталогам с целью уменьшить нагрузку на файловую систему.

Функция unlink удаляет файл $filename из каталога $prefix. Если включен флаг $rm_dir, то "мнимые" пути будут удалятся, если они останутся пустыми.


unlink_dir()

unlink_dir() — Удаление каталога

Описание

bool unlink_dir (string $dir);

Метод рекурентно удаляет файлы из каталога, затем удаляет сам каталог. Имя каталога задается в параметре $dir.

2.6. CUtils

Библиотека утилит

2.6.1. Описание

Класс представляет собой бибилиотеку вспомагательных утилит.

get_file_ext()

get_file_ext() — Возвращает расширение файла

Описание

string get_file_ext(string $fname);

Определяет расширение файла $fname по его имени. Расширением считается часть имени файла от последней точки и до конца строки. Если точек в имени файла нет, то возвращается пустая строка.


get_thumbnail_size()

get_thumbnail_size() — Получение размеров эскиза изображения

Описание

array get_thumbnail_size(string $image,
                         integer $width,
                         integer $height);

Таблица 2.5. Параметры функции

ПараметрОписание
$imageИсходный файл с изображением
$widthШирина эскиза
$heightВысота эскиза

Метод получает на входе имя файла и желаемые размеры эскиза. Он возвращает URL изображения и размеры уменьшенной копии в виде массива следующей структуры:

  1.      "width"  => "<Ширина полученного эскиза>",
  2.      "height" => "<Высота полученного эскиза>",
  3.  )

Расчет размеров производится в режиме "вписания в квадрат", т.е. для функции CUtils::make_thumbnail_box(). Так как при использовании функции CUtils::make_thumbnail() размер эскиза всегда известен.

В случае использования автоматического расчета размеров эскиза в функции CUtils::make_thumbnail() для получения габаритов результирующего изображения можно использовать метод CUtils::get_thumbnail_size().


iso2mysql()

iso2mysql() — Преобразовывает дату в формате iso в MySQL - дату

Описание

string iso2mysql(string $s_date);

Дата в вормате ISO представляет собой строку вида "YYYYMMDDHHmmSS" или "YYMMDD".


iso2timestamp()

iso2timestamp() — Преобразовывает дату в формате iso в формат UNIX-timestamp

Описание

string iso2timestamp(string $s_date);

Дата в вормате ISO представляет собой строку вида "YYYYMMDDHHmmSS" или "YYMMDD".


make_seed()

make_seed() — Инициация генератора случайных чисел

Описание

float make_seed();

Задание начального значения для генератора случайных чисел.


make_thumbnail()

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()

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. Если пропорции изображения не соответствуют пропорциям заданного эскиза, то результирующее изображение будет вписано в прямоугольник со сторонами $widthx$height.


nice_text_cut()

nice_text_cut() — Красивое обрезание текста (по границам слов)

Описание

string nice_text_cut(string $text,
                     int $maxLen);

Метод обрезает текст $text по границам слов таким образом, чтобы его длина была меньше $max_Len символов. После обрезанного текста добавляется многоточие.

Пример 2.12. "Красивое" обрезание текста

  1. <?php
  2. $str = CUtils::nice_text_cut("Заголовок первого уровня", 20);
  3.  
  4. echo $str;
  5.  
  6. // Будет выведено "Заголовок первого..."
  7. ?>

perm2str()

perm2str() — Преобразовует права на сущность из цифрового вида в строку

Описание

string perm2str(ineteger $perm);

Права вида представлены в виде триплета операций, которые записаны в целое число. Функция преобразовывает их к виду 'rwx rwx rwx'.

Пример 2.13. Преобразование прав в строковый вид

  1. <?php
  2. echo CUtils::perm2str(0775);
  3.  
  4. // Будет выведено "rwx rwx r-x"
  5. ?>

pretty_file_size()

pretty_file_size() — Возвращает размер файла в "красивом" формате

Описание

string pretty_file_size(int $bytes);

Преобразовывает число байт в файле в строку, удобную для чения пользователем.


quotenl()

quotenl() — Заменяет переносы строки на их экранированный эквивалент

Описание

string quotenl(string $str);

Функция применяется для конвертации многострочных текстов в однострочные, разделенные символом '\n'. Функцию удобно использовать для вывода сообщений средствами Javascript.

Пример 2.14. Пример использования метода quotenl

  1. <?php
  2. $long_str = "Текст в
  3. несколько строк";
  4. ?>
  5. <script language="javascript">
  6. alert('<?=CUtils::quotenl(addslashes($long_str))?>');
  7. </script>

space2nbsp()

space2nbsp() — Замена в строке пробелов на &nbsp;

Описание

string space2nbsp(string $str);

Все пробелы в строке заменяются на &nbsp;.


unhtmlspecialchars()

unhtmlspecialchars() — Заменяет спецсимволы HTML на их обычные эквиваленты

Описание

string unhtmlspecialchars(string $str);

Функция обратна стандартной функции htmlspecialchars().

Глава 3. Классы полей

Аннотация

Классы полей описывают различные типы данных. Набор классов полей, поставляемых с системой охватывает большую часть потребностей при разработке веб-ресурсов. Но, в случае, если необходимо обрабатывать какой-либо особый тип данных, пользователь имеет возможность добавлять собственные типы полей и интегрировать их в систему.

Все классы полей, используемые в системе наследуются от класса fldAbstract и переопределяют лишь некоторые его методы.

В данном разделе будет подробно рассмотрен класс fldAbstract и упомянуты особенности некоторых порожденных классов.

3.1. fldAbstract

Базовый тип данных

3.1.1. Описание

Класс fldAbstract представляет собой базовый тип данных, в котором реализована обработка строковых данных. Тип данных "строка" выбран по той причине, что он являетс яуниверсальным и может содержать в себе данные большого числа типов от целых чисел до дат и адресов электронной почты.

При создании новых типов данных их классы необходимо наследовать от fldAbstract и переопределять необходимые методы.

3.1.2. Зависимости

Класс fldAbstract зависит от классов CCore, CSystem, и CUtils.

3.1.3. Свойства

3.1.3.1. $er_msg

3.1.3.1.1. Описание

Сообщение об ошибке.

string $er_msg

Устанавливается в функции fldAbstract::check_server(), если введены неправильные данные.

3.1.3.1.2. Смотри также

fldAbstract::check_server()

3.1.3.2. $params

3.1.3.2.1. Описание

Свойства поля.

array $params

Свойства поля перечислены в нижеприведенной таблице.

Таблица 3.1. Свойства полей

СвойствоОписание
fieldidИдентификатор поля. Уникальный для всех полей в системе.
posПозиция поля в типе.
etidИдентификатор подтипа, к которому относится поле.
table_nameИмя таблицы, в которой хранится поле.
field_nameИмя поля в таблице, в котором хранится информация о поле.
field_aliasПсевдоним поля, которое выводится пользователю.
field_typeТип поля. Все типы должны быть описаны в файле /etc/fields.ini
field_formatФормат поля. Этот параметр не имеет конкретного предназначения. В нем каждый тип может хранить свои уникальные настройки. Например, в типе "Справочник" параметр содержит идентификатор используемого справочника.
field_templateПрефикс шаблона поля. Остальная часть имени шаблона добавляется в зависимости от места применения шаблона.
sizeРазмер поля. Используется для строк для определения максимальной длины.
format_pregPERL-совместимое регулярное выражение, прверяющее корректность введенных пользователем значений поля.
default_valЗначение по умолчанию.
conditionУсловие истинности. Содержит в себе PHP-строку, реализующую дополнительную проверку поля. Например данный параметр позволяет осуществить связь между несколькими полями.
er_msgСообщение об ошибке. Выводится, если пользователь ввел некорректные данные в поле.
ntf_msgСтрока предупреждения о важности поля.
required

Важность поля. Может иметь три значения:

  • 0 - поле необязательное;

  • 1 - поле "важное", если оно будет оставлено пустым, будет выведено предупреждение;

  • 2 - поле обязательное.

commentКомментарий к полю.
visibleФлаг, определяющий, является ли поле видимым или скрытым.
in_titleФлаг, определяющий, может ли поле выводится в списке.
is_shownПоле выводится в списке по умолчанию.
order_type

Тип сортировки. Допустимые значения:

  • нет - по умолчанию сортировка не производится;

  • ASC - по умолчанию список сортируется в порядке возрастания значений поля;

  • DESC - по умолчанию список сортируется в порядке убывания значений поля;

  • DISABLED - сортировка отключена.

ent_titleФлаг, определяющий, входит ли поле в заголовок сущности.

create()

create() — Создание объекта "Поле"

Описание

create(int $fieldid,
       array $params= NULL);

Конструктор пытается по типу поля (fldAbstract::$params['field_type']) определить для него класс-обработчик. Если это удается и файл класса-обработчика находится в каталоге /usr/fields, то подключается необходимый файл и возвращается необходимый класс. Если класс-обработчик для типа не установлен или файл этого класса не находится в каталоге /usr/fields, то создается экземпляр класса fldAbstract.

Замечание

Настройки обработчиков полей описаны в файле /etc/fields.ini.


check_client()

check_client() — Генерирует Javascript для проверки введенных данных

Описание

mixed check_client(string $tpl_dir= "");

При работе с формами для удобства пользователей можно производить проверку вводимых полей на стороне клиента. Метод fldAbstract::check_client() генерирует код на языке Javascript, который можно использовать для проверки корректности данных, введенных в поле.

Если подключить шаблон удалось, то возвращается результата подключения, иначе возвращается false.


check_client_filter()

check_client_filter() — Генерирует Javascript для проверки введенных данных в фильтрах

Описание

mixed check_client_filter(array $data,
                          string $tpl_dir);

При работе с фильтрами на списках для удобства пользователей можно производить проверку вводимых полей на стороне клиента. Метод fldAbstract::check_client_filter() генерирует код на языке Javascript, который можно использовать для проверки корректности данных, введенных в поле.

Если подключить шаблон удалось, то возвращается результата подключения, иначе возвращается false.


check_server()

check_server() — Проверяет введенные данные на стороне сервера

Описание

mixed check_server(array &$params,,
                   int $i_convert_type);

Проверка включает в себя сравнение с регулярным выражением и дополнительные проверки и операции над данными.


clear_trash()

clear_trash() — Действия в случае удаления сущнсоти

Описание

bool clear_trash(array $data);

Метод обеспечивает целостность данных и ничтожение мусора в случае удаления сущности.

В случае успеха метод возвращает true и false иначе.


convert_form_data()

convert_form_data() — Обработка данных, переданных формой

Описание

bool convert_form_data(array &$params);

Форма может вернуть данные в формате, не соответствующем тому, в котором эти данные хранятся в БД.

Например, поле "дата/время" формой передается в виде двух полей: <field_name>_time и <field_name>_date. И их необходимо обработать и свести в одно поле, которое и занесется в БД.

Метод преобразовывает массив полей и возвращает его.

В случае успеха метод возвращает true и false иначе.


convert_import_data()

convert_import_data() — Обработка данных, переданных импортом

Описание

bool convert_import_data(array &$params);

Импорт может вернуть данные в формате, не соответствующем тому, в котором эти данные хранятся в БД.

Например, поле "дата/время" формой передается в виде двух полей: <field_name>_time и <field_name>_date. И их необходимо обработать и свести в одно поле, которое и занесется в БД.

Метод преобразовывает массив полей и возвращает его.

В случае успеха метод возвращает true и false иначе.


get_addon_fields()

get_addon_fields() — Возвращает список дополнительных полей типа данных

Описание

array get_addon_fields();

Некоторые типы полей, такие как изображение, хранятся в нескольких полях таблиц. Метод возвращает список дополнительных полей.


get_ent_title()

get_ent_title() — Возвращает часть заголовка сущности

Описание

string get_ent_title(array $params);

Заголовок сущности формируется на основе содержимого полей, отмеченных с включенным флагом "Входит в заголовк сущности". Данный метод возвращает ту часть заголовка, которая формируется на основе текущего поля. Значение параметров сущности передается в аргументе $params.


get_sql_field_list()

get_sql_field_list() — Возвращает sql-сроку для списка полей

Описание

string get_sql_field_list();

При выборке данных из базы может потребоваться особое извлечение информации поля (например, справочник). Данный метод возвращает строку для списка полей.


get_sql_order_str()

get_sql_order_str() — Возвращает sql-сроку устанавливающую метод сортировки для поля

Описание

string get_sql_order_str(int $sort_type);

При выборке данных из базы может потребоваться особое извлечение информации поля (например, справочник). Данный метод возвращает строку для сортировки записей в соответствии с заданным полем.

Параметр "Тип сортировки" может принимать одно из следующих значений:

  • 0 - нет сортировки;

  • 1 - сортировка по возрастанию;

  • 2 - сортировка по убыванию.


get_sql_search_str()

get_sql_search_str() — Преобразует параметры в строку, удобную для поиска

Описание

string get_sql_search_str(array $param);

Метод обрабатывает данные $param, пришедшие из фильтров на списках.


get_sql_search_str()

get_sql_search_str() — Преобразует параметры в строку, удобную для поиска

Описание

Возвращает sql-сроку списка таблиц.

string get_sql_tables_list();

При выборке данных из базы может потребоваться извлечение информации поля более, чем из одной таблицы (например, справочник). Данный метод возвращает строку списка таблиц, которые необходимо объединить для получения информации поля.


get_sql_type()

get_sql_type() — Возвращает SQL-сроку для описания типа поля

Описание

string get_sql_type();

При добавлении, изменении информации о поле может понадобится каким-либо специальным образом описать тип колонки, например VARCHAR(255) или ENUM('on', 'off').

Метод вернет SQL-строку, описывающую тип.


set_js_onblur()

set_js_onblur() — Устанавливает обработчик на потерю фокуса

Описание

bool set_js_onblur(string $s_handler);

Метод позволяет установить обработчик на потерю фокуса.

В случае успеха метод возвращает true и false иначе.


set_js_onchange()

set_js_onchange() — Устанавливает обработчик на изменение содержимого

Описание

bool set_js_onchange(string $s_handler);

Метод позволяет установить обработчик на изменение содержимого.

В случае успеха метод возвращает true и false иначе.


set_js_onclick()

set_js_onclick() — Устанавливает обработчик на щелчек мыши

Описание

bool set_js_onclick(string $s_handler);

Метод позволяет установить обработчик на щелчек мыши.


set_js_onfocus()

set_js_onfocus() — Устанавливает обработчик на получение фокуса

Описание

bool set_js_onfocus(string $s_handler);

Метод позволяет установить обработчик на получение фокуса.

В случае успеха метод возвращает true и false иначе.


set_js_onselect()

set_js_onselect() — Устанавливает обработчик на получение фокуса

Описание

Устанавливает обработчик на выделение содержимого.

bool set_js_onselect(string $s_handler);

Метод позволяет установить обработчик на выделение содержимого.

В случае успеха метод возвращает true и false иначе.


show_edit()

show_edit() — Выводит шаблон редактирования сущности

Описание

mixed show_edit(array $data,
                string $tpl_dir= "",
                bool $enabled= true);

Метод выводит элемент редактирования поля заданного типа. Параметр $data представляет собой ассоциативный массив, который содержит элемент с ключем, соответствующим fldAbstract::$params['field_name']. Этот элемент определяет, чем будет заполнено поле по умолчанию. Шаблон будет искаться в каталоге $tpl_dir. Если включен флаг $enabled, то поле будет доступно для редактирования, иначе оно станет неактивным.

Возвращает обработанный шаблон в виде строки. Если подключить шаблон не получилось, возвращает false.

Смотри также

fldAbstract::$params


show_filter()

show_filter() — Выводит шаблон фильтра сущности

Описание

mixed show_filter(array $data,
                  string $tpl_dir= "",
                  bool $enabled= true);

Метод выводит поле фильтра заданного типа. Параметр $data представляет собой ассоциативный массив, который содержит элемент с ключем, соответствующим fldAbstract::$params['field_name']. Этот элемент определяет, чем будет заполнено поле по умолчанию. Шаблон будет искаться в каталоге $tpl_dir. Если включен флаг $enabled, то поле будет доступно для редактирования, иначе оно станет неактивным.

Возвращает обработанный шаблон в виде строки. Если подключить шаблон не получилось, возвращает false.

Смотри также

fldAbstract::$params


show_static()

show_static() — Выводит поле в статическом виде

Описание

mixed show_static(array $data,
                  string $tpl_dir= "");

Метод выводит статическое отображение поля заданного типа. Параметр $data представляет собой ассоциативный массив, который содержит элемент с ключем, соответствующим fldAbstract::$params['field_name']. Этот элемент определяет, чем будет заполнено поле по умолчанию. Шаблон будет искаться в каталоге $tpl_dir.

Возвращает обработанный шаблон в виде строки. Если подключить шаблон не получилось, возвращает false.

Смотри также

fldAbstract::$params

3.2. Простые типы полей

Большая часть типов данный, фактически, лишь дополняет возможности базового типа. Они используют собственные шаблоны, собственные предустановленные ограничения. В нижеследующей таблице перечислены простые типы данных.

Таблица 3.2. Простые типы полей

Класс поляОписание
fldBool

Логический тип

Поля этого типа могут принимать значения только "0" и "1". Такие поля могут использоваться в качестве "флага" или переключателя.

Замечание

Следует иметь в виду, что если поле логического типа сделать обязательным то сущность не сможет быть создана со значением поля "0".

fldDate

Дата

Поле хранит дату. Содержимое поля выводится в виде "dd.mm.yyyy".

fldDateTime

Дата/время

В отличие от предыдущего типа, данный, хранит еще и информацию о времени.

fldFloat

Вещественное число

При вводе вещественного числа в качестве десятичного разделителя принимается как точка так и запятая.

fldFrmText

Форматированный текст

Поле "Форматированный текст" позволяет управлять выводом текста с помощью HTML-тегов.

fldPermissions

Права пользователя

Данный тип поля используется в универсальном интерфейсе администратора и в большинстве случаев его использование на ресурсах данных необходимым не является.

fldSet

Множество

Тип "Множество" позволяет хранить информацию о подмножестве значений (аналогично типу SET в MySQL).

fldSelect

Перечисление

Тип поля "Перечисление" позволяет выбирать одно из нескольких значений.

fldTime

Время

Аналогичен типам fldDate и fldDateTime, но хранит только время в формате "hh:mm:ss".

Информация о простых типах полей отображается на одно поле в БД, не требует соединения с другими таблицами и при выборке возвращают результат в виде одного поля.

Ко второй группе относятся типы данных, отображающиеся более чем на одно поле в базе данных. Информация о таких типах может хранится как в одной таблице, так и в нескольких. При запросах, сложные поля возвращают одно или несколько значений.

Таблица 3.3. Типы полей со сложным отображением на БД

Класс поляВозвращаемые поляОписание
fldDictionary
  • <Имя_поля>

    Значение справочника

  • <Имя_поля>_alias

    Псевдоним справочника

  • <Имя_поля>_alias

    Псевдоним справочника

  • <Имя_поля>_comment

    Комментарий к значению

  • <Имя_поля>_comment

    Комментарий к значению

Справочник

Поле справочник аналогично полю fldSelect с той лишь разницей, что одни и те же множества значений могут использоваться в различных сущностях. Идентификатор используемого справочника должен быть определен в параметре "формат поля" при определении набора параметров сущности.

fldEntity
  • <Имя_поля>

    Идентификатор подключаемой сущности

  • <Имя_поля>_title

    Заголовок связанной сущности

Ссылка на сущность

Поле похоже на справочник, но в роли элементов справочника выступают сущности определенного типа. Идентификатор используемого типа сущностей должен быть определен в параметре "формат поля" при определении набора параметров сущности.

fldEtype
  • <Имя_поля>

    Идентификатор подтипа/подтипа (etid или etypeid)

  • <Имя_поля>_type

    Название типа сущности

  • <Имя_поля>_etypeid

    Идентификатор тип сущности

  • <Имя_поля>_etid

    Идентификатор подтипа

Тип сущности

Данный тип поля используется в системе администрирования. Он позволяет типами сущностей как с элементами справочника.

Поле может работать как только главными типами, так и с подтипами. Для того, чтобы в выпадающем списке появились только главные типы, необходимо в параметре "формат поля" ввести строку etypeid, если же требуется работа с подтипами, то необходимо использовать значение etid.

fldFile
  • <Имя_поля>

    Имя файла на сервере.

  • <Имя_поля>_realname

    Настоящее имя файла.

  • <Имя_поля>_filesize

    Размер файла в байтах.

  • <Имя_поля>_width

    Зарезервировано.

  • <Имя_поля>_height

    Зарезервировано

  • <Имя_поля>_mime

    MIME-тип файла

Файл

Данный тип поля позволяет хранить файлы. Фактически, сам файл хранится на диске, а в базе данных содержатся только его описание. Имена файлов на сервере всегда начинаются с префикса media_.

fldGroup
  • <Имя_поля>

    Идентификатор группы.

  • <Имя_поля>_groupname

    Имя группы.

Группа пользователей

Тип поля позволяет работать с группами пользователей.

fldImage
  • <Имя_поля>

    Имя файла на сервере.

  • <Имя_поля>_realname

    Настоящее имя файла.

  • <Имя_поля>_filesize

    Размер файла в байтах.

  • <Имя_поля>_width

    Ширина изображения в пикселях.

  • <Имя_поля>_height

    Высота изображения в пикселях.

  • <Имя_поля>_mime

    MIME-тип изображения.

Данный тип поля позволяет хранить изображения. Фактически, сам файл изображения хранится на диске, а в базе данных содержатся только его описание. Имена файлов изображений на сервере всегда начинаются с префикса image_.

fldMoney
  • <Имя_поля>

    Приведенная к строке цена в текущей валюте.

  • <Имя_поля>_orig

    Введенное значение цены

  • <Имя_поля>_curr

    Идентификатор валюты

  • <Имя_поля>_short

    Краткое обозначение валюты

Денежный тип

Данный тип поля хранить денежные типы. Он позволяет вводит значение и выбирать валюту, в которой представлена цена. Кроме того, поддерживается пересчет значений в соответствии с курсом валют.

fldUser
  • <Имя_поля>

    Идентификатор пользователя.

  • <Имя_поля>_nick

    Ник пользователя.

  • <Имя_поля>_firstname

    Имя пользователя.

  • <Имя_поля>_surname

    Фамилия пользователя.

Пользователь

Тип поля позволяет работать с пользователями.

Рассмотрим подробнее наиболее сложные типы полей.

3.3. fldDictionary

Тип данных "Справочник"

3.3.1. Описание

Класс fldDictionary описывает работу типа данных "Справочник". Тип данных «Справочник» предоставляет возможность выбора из множества предопределенных значений. Главным отличием от типа данных "Перечисление", предлагающего аналогичную функциональность, является то, что один справочник может использоваться для нескольких типов объектов.

Важной особенностью типа данных "Справочник" является возможность создавать связанные справочники. Данная особенность используется в тех случаях, когда необходимо связать отдельный элемент родительского справочника с несколькими элементами дочернего справочника. Например, есть два справочника: справочник городов и справочник улиц. Причем в справочнике улиц присутствуют улицы разных городов. Связывание справочников позволит установить соответствие между городами и улицами.

Один и тот же справочник может одновременно выступать в качестве родительского для второго справочника и в качестве дочернего для третьего справочника. Таким образом, могут создаваться цепочки связанных справочников.

3.3.2. Зависимости

Класс fldDictionary зависит от классов CCore и fldAbstract.

prepare_linked_dictionaries()

prepare_linked_dictionaries() — Подготовка связанных справочников

Описание

array prepare_linked_dictionaries(array $fields);

Проверяется наличие в переданном наборе полей связанных справочников. Если в полях есть связанные справочники, то они подготавливаются для вывода в форме.

Метод возвращает преобразованный массив $fields.

3.4. fldFile

Тип данных "Файл"

Тип данный "Файл" предназначен для хранения файлов, загруженных пользователем на сервер. Обработка типа данных "Файл" отличается от простых типов тем, что данные хранятся лишь частично в БД, а именно - описание файла. Сам же файл хранится на диске. Такой подход позволяет значительно снизить нагрузку на сервер и уменьшить объемы используемой памяти, поскольку нет необходимости получать весь файл целиком из БД и отправлять его пользователю.

Для описания файла в БД используется 5 полей:

  • <field_name> - Имя файла на сервере

  • <field_name>_filesize - Размер файла в байтах

  • <field_name>_width - Зарезервировано

  • <field_name>_height -Зарезервировано

  • <field_name>_mime - MIME-тип файла

3.5. fldImage

Тип данных "Изображение"

Тип данный "Изображение" предназначен для хранения изображений и FLASH-роликов, загруженных пользователем на сервер. По способу хранения данных тип "Изображение" аналогичен типу "Файл", т.е. в базе данных ханится только описание файла изображения, а само изображение находится в файловой системе сервера.

Замечание

Следует учесть, что корректная работа с FLASH-роликами зависит от установленной версии билииотеки GD. В некоторых случаях система не сможет определить автоматически размер области видимости FLASH-ролика.

Для описания файла в БД используется 5 полей:

  • <field_name> - Имя файла изображения на сервере

  • <field_name>_filesize - Размер файла изображения в байтах

  • <field_name>_width - Ширина изображения

  • <field_name>_height -Высота изображения

  • <field_name>_mime - MIME-тип изображения

3.6. fldMoney

Тип данных "Денежный"

Тип данный "Денежный" предназначен для хранения количественных данных о валюте. Его имеет смысл использовать в тех местах, где необходимо хранить денежные суммы в различных валютах. Отличительной особенностью денежного типа является то, что данные могут возвращаться в текущей валюте веб-интерфейса, а не в той валюте, в которой они были введены.

Курсы валют хранятся в базе данных в таблице 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) текущей валюты. Если константа не определена, то данные возвращаются в той валюте, в которой они хранятся.

Глава 4. Модули

Аннотация

Ядро системы включает в себя всю функциональность, необходимую для работать со структурами данных произвольной сложности. Но может возникнуть необходимость в расширении возможностей системы. Для этого используется механизм модулей.

Модули могут нести в себе две функции: обработка событий ядра и расширение универсального веб-интерфейса. Каждый отдельный модуль может выполнять как обе функции сразу, так и какую-либо одну из них. В настоящий момент с помощью механизма модулей реализованы такие функции универсального веб-интерфейса как управление пользователями, структурой данных, справочниками и импортом.

Разработчики могут сами добавлять новые модули без вмешательства в ядро системы. Потребуется только установить файлы модуля в каталог системы и описать его в файлах настроек. Каждый модуль состоит из класса модуля и файлов его интерфейса.

Все классы модулей, используемые в системе наследуются от класса modAbstract и переопределяют лишь некоторые его методы. Подробное описание процесса создания модуля можно найти в разделе "Работа с платформой" документа "Система управления контентом CAIRO: Руководство разработчика".

4.1. modAbstract

Базовый класс модуля

4.1.1. Описание

Класс modAbstract является базовым классом для всех модулей системы и описывает методы и свойства, необходимые для интеграции модуля в систему.

При создании новых модулей их классы необходимо наследовать от modAbstract. Сам класс modAbstract является абстрактным и создавать объекты этого класса невозможно.

4.1.2. Зависимости

Класс modAbstract зависит от класса CCore.

do_event()

do_event() — Обработчик событий

Описание

bool do_event(int $event,
              array $params);

Если модуль должен обрабатывать события, то именно этот метод будет анализировать запросы. Тип события передается в параметре $event, а параметр $params содержит данные, полезные при обработке события. О типах событий и их параметрах можно прочитать в разделе, посвященному методу CCore::do_event().

Смотри также

CCore::do_event().


get_submenu()

get_submenu() — Возвращает элементы подменю модуля

Описание

array get_submenu(mixed $active_item= 0);

Данные, возвращаемые модулем, используются для вывода подменю модуля в левой части универсального интерфейса администратора. В параметре $active_item передается идентификатор активного пункта меню.

Метод возвращает данные в виде списка, каждый элемент которого является ассоциативным массивом со следующими значениями:

  • title - Заголовок (будет выводится в качестве пункта меню)

  • hint - Всплывающая подсказка

  • url - URL, на который указывает пункт меню

  • active - логическое значение, является ли активным.


get_title()

get_title() — Возвращает название модуля

Описание

string get_title(int $title_type);

Метод используется для получения названия модуля на языке локали. Параметр $title_type используется для определения типа получаемого заголовка. Поддерживается два типа заголовков:

  • MOD_TITLE_SHORT - краткое название (для закладки на странице сущности);

  • MOD_TITLE_MENU - управление модулем (для главного меню).


show()

show() — Работа с интерфейсом модуля

Описание

bool show(array $params);

Вся работа с пользовательским интерфейсом модуля производится через данный метод. Массив параметров содержит переменные, переданные методом GET а также следующие значения:

  • proj - Имя проекта, соответствующее содержимому файла /ets/login.ini

  • module - Имя класса модуля

  • path - Локальный путь к данной странице (путь внутри модуля)

4.2. modDict

Модуль работы со справочниками

4.2.1. Описание

Модуль работы со справочниками реализует визульный интерфейс управления справочниками. Кроме того, модуль предоставляет программный интерфейс для работы со справочниками.

4.2.2. Зависимости

Класс modDict зависит от классов CCore, Csystem и modAbstract.

get_dictionary_items()

get_dictionary_items() — Возвращает элементы справочника

Описание

array get_dictionary_items(int $dicid);

Метод по идентификатору справочника $dicid возвращает массив его элементов. В случае ошибки возвращается false.


get_dictionary_params()

get_dictionary_params() — Возвращает параметры справочника

Описание

array get_dictionary_items(int $dicid);

Метод по идентификатору справочника $dicid возвращает массив его параметров. В случае ошибки возвращается false.