K4:Константы
From In-Portal Developers Guide
| This article was transferred! You see this message because current Article was transferred to http://community.in-portal.org/pages/viewpage.action?pageId=14155811. | 
| 
 | ||
|---|---|---|
| Статьи в этой категории | ||
В К4 константы делятся по смыслу исходя из места их определения на:
-  системные - определяются в "core/kernel/startup.php"
-  общего применения - определяются в "core/kernel/constants.php"
-  модульные - определяются в необязательном файле "<название_модуля>/constants.php"
Системные константы
| название | описание | 
|---|---|
| FULL_PATH | Полный путь к сайту в файловой системе сервера. | 
| BASE_PATH | Директория, в которой находится сайт (относительно $_SERVER['DOCUMENT_ROOT']) | 
| REL_PATH | Путь от корня проекта до PHP-файла (обычно это " index.php"), на который заходит пользователь. Объявление данной константы должно происходить до или сразу после объявления константы FULL_PATH в этом PHP-файле. Данная константа должна задаваться во всех случаях, когда PHP-файл не находиться в корне проекта или в его "admin" директории. Примеры:файл: testing/folder/index.php - константа: "testing/folder" файл: sub_folder/index.php - констана "sub_folder" Данная константа используется только для корректного получения значения константы BASE_PATH. Если своевременно не определить данную константу, то ссылки, построенные при помощи метода " | 
| SERVER_NAME | Имя виртуального хоста ( VirtualHost), под которым запущен данный сайт (содержание переменной $_SERVER['SERVER_NAME']). В случае, если название виртуального хоста получить не удалось, то будет использован хост, указанный в константе DOMAIN (из файла "config.php"). Функциональность работающая в случае, когда не удалось получить имя виртуального хоста доступна начиная с Core v 4.3.9. | 
| WRITEABLE | Содержание констант FULL_PATH и WRITEABLE_BASE вместе. | 
| MAX_UPLOAD_SIZE | Максимальный размер файла, который можно загрузить на сервер (в байтах). | 
| Исходный код требует реорганизации ( refactoring).Константы WRITEABLE и WRITEBALE_BASE неправильно названы. По английски они правильно должны называться WRITABLEиWRITABLE_BASEсоответственно. | 
Пример:
http://alex.prod.intechnic.lv/test_project - путь в web browser FULL_PATH - "/home/sites/alex/web/test_project" BASE_PATH - "/test_project" SERVER_NAME - "alex.prod.intechnic.lv" WRITEBALE_BASE - "/system" WRITEBALE - "/home/sites/alex/web/test_project/system"
Константы общего применения
- распространённые типы записей (статусы) в базе данных:
| название | описание | значение | 
|---|---|---|
| STATUS_ACTIVE | Запись активна. |  | 
| STATUS_DISABLED | Запись не активна. |  | 
| STATUS_PENDING | Запись требует подтверждения администратора. |  | 
- статусы секций в дереве в административной консоли:
| название | описание | 
|---|---|
| stTREE | Секция присутствует только в дереве (почти все секции). | 
| stTAB | Секция присутствует только как закладка (см. в In-Commerce:Discounts & Coupons). | 
- статусы завершения событий в K4:
| название | описание | 
|---|---|
| erSUCCESS | Событие успешно завершило своё выполнение. После выполнения события будет сделано перенаправление, выполняемое для того, чтобы пользователь перезагрузив страницу (F5) повторно не вызвал это событие. | 
| erFAIL | Событие завершило свою работу, но не выполнило одну или более требуемых задач. Перенаправление происходить не будет. | 
| erFATAL | Событие полностью не сделало свою работу (хуки не будут выполняться). Перенаправление происходить не будет. | 
| erPERM_FAIL | Проверка прав доступа не прошла успешно. Автоматически будет выполнено перенаправление на шаблон сообщающий пользователю об отсутствии у него прав на данное событие. | 
| erSTOP | Событие возвращает ответ в AJAX запрос. Шаблон не будет обработан после выполнения события, код отладчика тоже добавлен не будет. | 
- константы, использующиеся при редактировании содержания сайта через административную консоль.
| название | описание | 
|---|---|
| EDITING_MODE | Данная константа, начиная с Core v 5.0.0, заменяет собой методы EditModeв обработчике событий и тэгов префикса "st" и "cms". Значение этой константы может быть равно значению описанных ниже 3 констант или нулю, что будет означать, что пользователь не находиться в режиме редактирования содержания сайта. В независимости от режима редактирования содержания сайта оранжевые кнопки "Edit" будут появляться над теми фрагментами содержания страницы, которые можно изменить. Данная константа доступна начиная с Core v 5.0.0. | 
| EDITING_MODE_CMS | Режим редактирования сайта, при котором изменяться может только содержание cms-блоков (это был единственный возможный режим редактирования сайта до Core v 5.0.0). Данная константа доступна начиная с Core v 5.0.0. | 
| EDITING_MODE_LAYOUT | Режим редактирования сайта, при котором изменяться может изменяться только содержание блоков, при подключении которых был передан параметр " layout_view":<inp2:m_RenderElement name="block_name" layout_view="1"/>В теме " | 
| EDITING_MODE_DESIGN | Режим редактирования сайта, при котором изменяться может только дизайн показываемых на шаблоне блоков, т.е. блоков, которые были указаны в параметре " <inp2:m_RenderElement name="element_name" design="design_block_name"/>В теме " | 
- разное:
| название | описание | значение | 
|---|---|---|
| ENV_VAR_NAME | Значение данной константы используется для определения названия переменной окружения в запросе к серверу. | env | 
| VALUE_LIST_SEPARATOR | Значение, которое будет использоваться для объединения возможных опций в полях ValueList(во всех таблицах, кроме таблицы ConfigurationAdmin). | || | 
| REGEX_EMAIL_USER | Регулярное выражение, которое проверяет части с именем пользователя в адресе электронной почты ( email). Используя константы REGEX_EMAIL_USER и REGEX_EMAIL_DOMAIN можно составить регулярное выражение для проверки адреса электронной почты:$regexp = '/^(' . REGEX_EMAIL_USER . '@' . REGEX_EMAIL_DOMAIN . ')$/i'; Константа доступна начиная с Core v 4.0.1. | [-a-zA-Z0-9!\#$%&*+\/=?^_`{|}~.]+ | 
| REGEX_EMAIL_DOMAIN | Регулярное выражение, которое проверяет части с доменом ( domain) в адресе электронной почты (email). Используя константы REGEX_EMAIL_USER и REGEX_EMAIL_DOMAIN можно составить регулярное выражение для проверки адреса электронной почты:$regexp = '/^(' . REGEX_EMAIL_USER . '@' . REGEX_EMAIL_DOMAIN . ')$/i'; Константа доступна начиная с Core v 4.0.1. | [a-zA-Z0-9]{1}[-.a-zA-Z0-9_]*\.[a-zA-Z]{2,6} | 
| ALLOW_DEFAULT_SETTINGS | Данная константа задумана для передачи в метод " kApplication::RecallPersistentVar" в качестве значения по умолчанию. Это подробнее показано на приведённом ниже примере.$value = $this->Application->RecallPersistentVar('VarName', ALLOW_DEFAULT_SETTINGS); Если требуемой переменной в таблице PersistentSessionData нету и используется эта константа, то будет возвращено значение этой переменной взятое у пользователя, указанного в конфигурационной переменной DefaultSettingsUserId. Данная константа доступна начиная с Core v 4.2.2. | _USE_DEFAULT_USER_DATA_ | 
Константы это идентификаторы значений, которые не могут изменяться по ходу выполнения скрипта.
Константы из config.php
В базовой директории проекта (той, что в FULL_PATH константе) находиться файл config.php, который содержит настройки для подключения к базе данных и ряд других параметров, которые при инициализации K4 превращаются в константы. На данный файл нельзя, не в коем случае, делать commit. По своему формату этот файл похож на обычный ini файл. Единственное отличие это расширение файла и защитная php конструкция в его начале.
| название константы | название опции | описание | 
|---|---|---|
| SQL_TYPE | DBType | Тип сервера баз данных. Пока поддерживается только MySQL. | 
| SQL_SERVER | DBHost | IP адрес или имя сервера баз данных. | 
| SQL_USER | DBUser | Имя пользователя, для подключения к базе данных. | 
| SQL_PASS | DBUserPassword | Пароль, для подключения к базе данных. | 
| SQL_DB | DBName | Название базы данных. | 
| SQL_COLLATION | DBCollation | Тип сопоставления строк, используемый при работе базой данных (напр. " utf8_general_ci"). | 
| SQL_CHARSET | DBCharset | Кодировка данных, используемая при работе базой данных (напр. " utf8"). | 
| TABLE_PREFIX | TablePrefix | Префикс таблиц проекта в базе данных. | 
| DOMAIN | Domain | Домен, на котором сайт находиться. Используется для выхода из SSL-режима, а также для проверки лицензии в In-Portal. | 
| ADMIN_DIRECTORY | AdminDirectory | Расположение директории с административной консолью относительно FULL_PATH. Доступна, начиная с Core v 4.3.0. | 
| EDITOR_PATH | EditorPath | Расположение директории с FCKEditorотносительно FULL_PATH (обычно "/core/editor/"). Доступна, начиная с Core v 4.3.2. | 
| WRITEABLE_BASE | WriteablePath | Директория, в которую имеет право писать сервер (обычно " /system"). | 
| APPLICATION_CLASS | ApplicationClass | Класс, который используется для создания объекта Application, например " EApplication". | 
| APPLICATION_PATH | ApplicationPath | Расположение файла с классом, указанным в APPLICATION_CLASS относительно корня сайта (с указанием " /" спереди), например. "/custom/units/sections/e_application.php". | 




