close

Вход

Забыли?

вход по аккаунту

?

Документация

код для вставкиСкачать
Документация для EEvoltCMS
EevoltCMS — система управления
сообществами
Руководство пользователя
1. Модули
1.1. Основы работы модулей
1.1.2 ЧПУ
Основное правило: http://example.com/латинское_название_модуля/название_метода
Все виртуальные каталоги, следующие после названия метода в массиве $_REQUEST будут иметь
ключи типа paramN
, где N - порядок виртуального каталога (начинается с 0). Так же виртуальный
каталог с названием типа pageN
, где N - число, в массиве $_REQUEST будет иметь ключ page
, а
значение - соответствующую цифру.
Например массив $_REQUEST при URI http://example.com/blogs/blog/cms/page1/someparametr
будет следующим:
Array
(
[u] => http://example.com/blogs/blog/cms/someparametr/page23
[param0] => cms
[param1] => someparametr
[page] => 23
)
1.1.3 Файловая структура модулей
Все основные файлы модулей (PHP-скрипты и шаблоны) находятся в двух каталогах:
~/kernel/modules
и ~/kernel/templates
. В первом каталоге хранятся PHP-скрипты модулей, во втором
- шаблоны. Имя конкретного каталога, где хранятся скрипты модуля должно совпадать с
латинским названием модуля, например, ~/kernel/modules/blogs
- модуль блогов (blogs). JavaScript,
CSS и изображения могут находится в различных каталогах сайта на усмотрение разработчика (в
основном это ~/js
и ~/css
).
1.1.4 Классы модулей
Весь функционал модулей реализуется в соотвествующих классах. Названия классов должны
совпадать с латинским названием модуля, например, class blogs extends Module {}
-
класс модуля блогов (blogs). Обратите внимание, что класс модуля должен обязательно
наследоваться от класса Module. Публичные не статические методы класса являются методами
модуля
, к которым может обращаться пользователь. Класс модуля должен находится в его
персональном каталоге в файле с именем class.php. Обязательным методом для каждого класса
модуля является метод __default
(без параметров), который вызывается по-умолчанию, если
пользователем не задан нужный метод.
Для работы в режиме панели администратора вместо class.php
CMS работает с файлом admin.php
.
Этот файл фактически является отдельной релизацией модуля для панели администратора, т.к.
работает он точно так же как class.php
.
1.1.5 "Ответы" модулей
При вызове метода модуля методом класса обязательно должен возвращаться объект класса
ModuleResponse. Объект этого класса может содержать в себе другие объекты, экземпляры
классов Object, Form, Array2XML и т.д.
Подробнее в разделе 1.3: XML-таблицы ответов модулей
.
1.1.6 Локализация (i18n)
Файл с языковыми настройками модуля должен находится в одном каталоге с ним. При
инициализации (загрузке) модуля он загружается автоматически; языковым константам задается
подкатегория с латинским названием модуля. В PHP-коде этого файла должен быть определен
массив $LANG
, где индексы и значение - это названия и значения языковых констант
соответсвенно.
Имя язвкового файла формируется исходя из настроек в ~/kernel/config.php
(константа LANG
), это
теоретически позволяет использовать несколько языков на одном сайте. Например i18n.ru.php
.
Для переопределения языковых констант может использоваться файл с именем i18n.ru.custom.php
.
1.1.7 Права доступа
В Explay Evolution CMS система прав доступа контролирует только отдельные методы, а не
модули полностью. В системе существует три группы пользователей: администраторы,
модераторы, зарегистрированные пользователи и гости (admin, moderator, user, guest). Метод
модуля может быть сконфигурирован, допуская обращение к нему определенных групп
пользователей или только самой системы. Настройки доступа к методам (файл premissions.php
)
должны находится в одном каталоге с модулем. В PHP-коде этого файла должен быть объявлен
массив $PREMISSIONS
, в котором ключи и значения - названия методов и массивы настроек
соответсвенно. В массиве настроек допустимы следующие пары ключ-значение: group
- группы
пользователей, macros
- отметка метода как макрос (если значение этого ключа установлено в true,
то к методу будет невозможно обратиться через URI).
Для переопределения настроек методов модуля может использоваться файл
permissions.custom.php
.
Пример файла premissions.php:
<?php $PREMISSIONS = array ( 'my_method' => array ( 'group' => array (
'admin'
, 'moderator'
, 'user'
) ), 'my_methos-macros' => array ( 'macros'
=>
1
, 'group'
=>
array
(
'admin'
,
'moderator'
,
'user'
) ) ); ?>
1.1.8 Обновления CMS и модулей
При обновлении CMS обновляются PHP-файлы стандартных модулей. Для избежания удаления
внесенных сторонним разработчиком изменений в код модулей, изначально созданы файлы
__custom_название-модуля.php
, i18n.ru.custom.php
, permissions.custom.php
, которые находятся в
каталогах модулей. Эти файлы можно использовать для переопределения методов модулей,
языковых констант и настроек доступа, при этом они никогда не будут изменены при обновлении.
1.2. Множественное наследование
На основе класса Module
в CMS реализовано множественное наследование для модулей.
Для расширения базового класса модуля, находящегося в файле class.php, в одном из его методов
(настоятельно рекомендуется делать это в конструкторе) нужно вызвать метод extend
(метод
родительского класса Module). В качестве параметра нужно указать имя подключаемого класса,
совпадающее с названием файла, содержащего этот класс, в каталоге с модулем. Например, если в
конструкторе модуля blogs
вызвать $this->extend ('__blog_mail');
, то он подключит файл
~/kernel/modules/blogs/__blog_mail.php
с реализацией класса __blog_mail
.
При расширении базового класса, обращение к неопределенным в нем методам будет
перенаправлено на один из объектов подключенных классов, в котором реализован заданный
метод.
Внимание!
Если в подключаемом классе реализованы методы, существующие в базовом, то они
будут переопределены.
Пример:
Файл
class.php: <?php class
mymodule
extends
Module
{ public
function
__construct
()
{ parent
::
__construct
(
__CLASS__
); $this
->
extend
(
'__hook_mymodule'
); } } ?> Файл
__hook_mymodule.php: <?php class
__hook_mymodule
extends
Module
{ public
function
__construct
()
{ parent
::
__construct
(
'mymodule'
);
//
Рекомендовано
для
обратно
й
совместимости } public function foo () { /*...*/ } } ?> Теперь можно обратиться к модулю mymodule так:example.com/mymodule/foo
1.3 XML-таблицы ответов модулей
Метод модуля возвращает объект класса ModuleResponse, который преобразуется в XML-таблицу.
При использовании XSLT-шаблонизатора шаблону передается именно эта XML-таблица.
Посмотреть XML-таблицу ответа модуля можно дописав в адресной строке ".xml".
1.3.2 Общий вид XML-таблицы
<
?xml
version
=
"1.0"
encoding
=
"utf-8"
?> <data
base-uri="http://localhost"
is-mainpage="1"
module="blogs"
metho
d="__default"
user-id="1"
user-group="admin"
query-string=""
lang="ru"
scode="123abc"
title="Explay Evolution CMS"> <response> <!--
XML-таблицы
объектов,
добавленных
в
ModuleResponse
--> </response> </data>
Описание атрибутов тега data: •
base-uri
- адрес сайта •
is-mainpage
- главная страница/нет •
module
- текущий модуль •
method
- текущий метод •
user-id
- id текущего пользователя •
user-group
- группа текущего пользователя •
query-string
- строка с GET-пареметрами запроса •
lang
- текущий язык •
scode
- сессионный защитный код пользователя •
title
- заголовок сайта 1.3.3 Общий вид XML-таблиц объектов
<object
id="1"
type="article"
type-id="10"> <property
field-id="45"
name="blog_id"
character="integer"> <title>Id
блога</title> <value>6</value> </property> <!--
***
--> <property
field-id="..."
name="..."
character="..."> <title>...</title> <value>...</value> </property> </object>
1.4 Написание нового модуля
В качестве примера рассмотрим процесс написания модуля mymodule, который будет выводить
список последных публикаций в блогах.
Основные файлы, которые требуется создать: ~/kernel/modules/mymodule - каталог для PHP-скриптов модуля ~/kernel/modules/mymodule/class.php - класс модуля ~/kernel/modules/mymodule/i18n.ru.php - языковой файл ~/kernel/templates/xsl/mymodule - каталог для шаблонов модуля ~/kernel/templates/xsl/mymodule/index.xsl - шаблон страницы, который будет использоваться для
вывода списка.
1.4.2 Класс
Файл ~/kernel/modules/mymodule/class.php
<?php class
mymodule
extends
Module
{ public
function
__construct
()
{ parent
::
__construct
(
__CLASS__
); } public
function
__default
()
{ $typesController
=
TypesController
::
getInstance
(); //
Получаем
типы
"статья"
и
"ссылка" $oTypeArticle
=
$typesController
->
getTypeByName
(
'article'
); $oTypeLink
=
$typesController
->
getTypeByName
(
'link'
); $onPage
=
12
;
//
Количество
объектов
на
странице $currentPage
=
getRequest
(
'page'
,
'int'
);
//
Получаем
текущюю
страницу
из
массива
$_REQUEST if
(
$currentPage
!=
0
)
{ $currentPage
--; } $sel
=
new
Selection
;
//
Иницализируем
выборку
списка
объектов
$sel
->
addType
(
$oTypeArticle
);
//
Добавляем
тип
статьи
к
типам
выбираемых
объектов $sel
->
addType
(
$oTypeLink
);
//
Аналогично
с
ссылкой $sel
->
addFilter
(
'draft'
,
'0'
);
//
Фильтр,
запрещающий
вывод
ч
ерновиков $sel
->
setOrder
(
'pubdate'
,
false
);
//
Сортируем
по
дате
публик
ации,
новые
сверху $sel
->
addLimit
(
$currentPage
*
$onPage
,
$onPage
);
//
Добавляем
л
имит //
Получаем
список
объектов
с
помощью
специального
метода $aObjects
=
ObjectsController
::
getInstance
()->
getObjectsList
(
$sel
->
getList
()); $response
=
new
ModuleResponse
;
//
Инициализируем
объект,
кото
рый
должен
возвратить
метод $response
->
setTemplate
(
'mymodule/index'
);
//
Указываем
шаблон
без
расширения
файла //
Пробегаемся
по
всем
загруженным
объектам
и
добавляем
их
в
"
ответ" foreach
(
$aObjects
as
$object
)
{ $response
->
addObject
(
$object
); } //
Добавляем
объект
класса
Array2XML,
который
будет
переведен
в
соответствующую
XML-таблицу //
для
постраничной
навигации $response
->
addObject
(new
Array2XML
(
'pages'
,
array
( 'onpage'
=>
$onPage
, 'total'
=>
$sel
->
getTotalCount
(), 'page'
=>
++
$currentPage ))); return
$response
; } }
1.4.3 Языковой файл
Если Вы собираетесь предоставлять доступ к вашему модулю пользователю напрямую, т.е. через
URI сайта, то в качестве заголовка страницы по-умолчанию будет использоваться языковая
переменная module_header
.
Файл: ~/kernel/modules/mymodule/i18n.ru.php
<?php $LANG
=
array
(
'module_header'
=>
'Последние
публикации
в
блогах'
);
1.4.4 Шаблон
После создания класса необходимо создать XSLT-шаблон, который будет транслировать XML-
таблицу списка объектов в HTML-код.
Файл ~/kernel/templates/xsl/mymodule/index.xsl
<?xml
version
=
"1.0"
encoding
=
"UTF-8"
?> <xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Tr
ansform"> <!--
Шаблоно-обработчик
постраничной
навигации
--> <xsl:include
href="../common/navigation.xsl"
/> <xsl:template
match="/data"> <html> <head> <title> <xsl:value-of
select="@title"
/> </title> </head> <body> <xsl:apply-templates
select="response/object[@type='articl
e'
or
@type='link']"
/> <xsl:apply-templates
select="pages"
mode="pages-
navigation"> <xsl:with-param
name="href"> <xsl:text>/mymodule</xsl:text> </xsl:with-param> </xsl:apply-templates> </body> </html> </xsl:template> <!--
Шаблон
для
статей
--> <xsl:template
match="object[@type='article']"> <xsl:param
name="id"
select="@id"
/> <div> <xsl:text>Cтатья:
</xsl:text> <a
href="/blogs/post/article/{$id}"> <xsl:value-of
select="property[@name='title']/value"
/
> </a> <xsl:text>
</xsl:text> <small> <xsl:value-of
select="property[@name='pubdate']/value"
/> </small> </div> </xsl:template> <!--
Шаблон
для
ссылок
--> <xsl:template
match="object[@type='link']"> <xsl:param
name="id"
select="@id"
/> <div> <xsl:text>Ссылка:
</xsl:text> <a
href="/blogs/post/link/{$id}"> <xsl:value-of
select="property[@name='title']/value"
/
> </a> <xsl:text>
</xsl:text> <small> <xsl:value-of
select="property[@name='pubdate']/value"
/> </small> </div> </xsl:template> </xsl:stylesheet>
1.4.5 Результат
Теперь результат доступен по сслке http://localhost/mymodule
2. Описание классов ядра
2.2 CacheController
Предоставляет интерфейс для доступа к движку кеширования
2.2.2 Методы
•
load
•
loadEngine
•
save
load
Описание
static mixed load (string $key, integer $lifetime = false)
Получить данные
Параметры
key ключ lifetime допустимое время жизни в секундах loadEngine
Описание
static void loadEngine (string $engineName)
Инициализация движка кеширования
Параметры
engineName название движка save
Описание
static void save (string $key, mixed $value, integer $lifetime = false)
Сохранить данные
Параметры
key ключ value данные lifetime допустимое время жизни в секундах 2.3 CMSController
Организует и контролирует доступ к модулям
2.3.2 Методы
•
getCurrentMethod
•
getCurrentModuleName
•
getInstance
•
getLink
•
getModule
•
getPageTitle
•
GSpot
•
isAdminMode
•
isMainpage
•
runModuleMethod
•
setPageTitle
getCurrentMethod
Описание
string getCurrentMethod ()
Возвращает название текущего метода
getCurrentModuleName
Описание
string getCurrentModuleName ()
Возвращает название текущего модуля
getInstance
Описание
static CMSController getInstance ()
Возвращает объект класса CMSController
getLink
Описание
static string getLink ()
Возвращает ссылку текущей страницы
getModule
Описание
object getModule (string $moduleName)
Возвращает объект модуля
Параметры
moduleName имя модуля getPageTitle
Описание
static string getPageTitle ()
Возвращает заголовок страницы
GSpot
Описание
void GSpot ()
Производит анализ и выполнение действий, переданных в URI
isAdminMode
Описание
boolean isAdminMode ()
Возвращает true если мы в панели администратора
isMainpage
Описание
boolean isMainpage ()
Главная страница или нет
runModuleMethod
Описание
ModuleResponse runModuleMethod (string $moduleName, string $method, array $aParams = false,
boolean $isMacros = false)
Запускает метод модуля и возвращает его результат в виде объекта ModuleResponse
Параметры
moduleName имя модуля method имя метода aParams массив параметров isMacros указатель на то, что медот вызван макросом из шаблона setPageTitle
Описание
static void setPageTitle (string $title)
Устанавливает заголовок страницы
2.4 DBController
Предоставляет интерфейс к базе данных
2.4.2 Методы
•
fetch_array
•
fetch_row
•
getCountQueries
•
getInstance
•
loadEngine
•
num_rows
•
query
•
reset_pointer
•
startTransaction
•
stopTransaction
fetch_array
Описание
array fetch_array (resourse $resourse)
Аналог функции mysql_fetch_array
fetch_row
Описание
array fetch_row (resourse $resourse)
Аналог функции mysql_fetch_row
getCountQueries
Описание
static integer getCountQueries ()
Возвращает количество выполненных запросов к БД
getInstance
Описание
static DBController getInstance ()
Возвращает объект класса DBController
loadEngine
Описание
void loadEngine (string $engineName)
Загружает движок, реализующий интерфейс к базе данных
num_rows
Описание
integer num_rows (resourse $resourse)
Аналог функции mysql_num_rows
query
Описание
resource query (string $sQuery, integer $insertId = 0)
Выполнить запрос к базе данных
Параметры
sQuery строка с запросом insertId ссылка на переменную, которой будет присвоен идентификатор вставленной записи reset_pointer
Описание
void reset_pointer (resourse $resourse, integer $position = 0)
Аналог функции mysql_data_seek
startTransaction
Описание
void startTransaction ()
Начинает транзакцию
stopTransaction
Описание
void stopTransaction ()
Завершает транзакию
2.4.3 Примеры
Пример №1
<?php $db
=
DBController
::
getInstance
(); $db
->
startTransaction
(); $db
->
query
(
"DUPLICATE
`sometable`"
); $db
->
query
(
"DUPLICATE
`other
table`"
); $db
->
stopTransaction
(); ?>
2.5 EMail
Объект эл. письма
2.5.2 Методы
•
getAddress
•
getBody
•
getSubject
•
setAddress
•
setBody
•
setSubject
•
__construct
getAddress
Описание
string getAddress ()
Возвращает e-mail получателя
getBody
Описание
string getBody ()
Возвращает текст письма
getSubject
Описание
string getSubject ()
Возвращает тему письма
setAddress
Описание
void setAddress (string $sEmail)
Задает e-mail получателя
setBody
Описание
void setBody (string $sBody)
Задает текст письма
setSubject
Описание
void setSubject (string $sSubject)
Задает тему письма
__construct
Описание
void __construct (string $sEmail, string $sBody, string $sSubject)
Конструктор
Параметры
sEmail e-mail получателя sBody текст письма sSubject тема пиьсма 2.6 ExplaySession
Интерфейс сессии пользователя
2.6.2 Методы
•
destroy
•
getUser
•
getUserId
•
init
destroy
Описание
static void destroy ()
Завершение сессии
getUser
Описание
static Object getUser ()
Возвращает объект текущего пользователя
getUserId
Описание
static integer getUserId ()
Возвращает id текущего пользователя
init
Описание
static void init ()
Инициализация сессии пользователя
2.7 FDump
Свалка ядерных функций
2.7.2 Методы
•
getCountObjectValues
getCountObjectValues
Описание
static array getCountObjectValues (array $aTypes, string $sFieldName, boolean $sortByItems = false,
boolean $asc = true)
Подсчитывает количество вхождений определенного свойства объекта
Параметры
aTypes массив типов sFieldName название свойства sortByItems сортировка по количеству вхождений или, в противном случае, по значениям свойства asc прямой (по-умолчанию) или обратный порядок сортировки 2.8 Field
Объекты этого класса представляют описание полей таблиц в БД, что тождественно равно
свойствам/полям типов
2.8.2 Методы
•
getAddId
•
getCharacter
•
getConnectionId
•
getErrorMessage
•
getHelp
•
getId
•
getMaxlength
•
getName
•
getPosition
•
getTitle
•
getTypeId
•
isEditable
•
isLocked
•
isReal
•
isRequired
•
isSearch
•
__construct
getAddId
Описание
integer getAddId ()
Получить дополнительный id поля
getCharacter
Описание
string getCharacter ()
Получить характер поля (текстовое, числовое, справочник и т.п.)
getConnectionId
Описание
integer getConnectionId ()
Получить id связи между типами
getErrorMessage
Описание
string getErrorMessage ()
Получить текст ошибки поля
getHelp
Описание
string getHelp ()
Получить текст подсказки для поля
getId
Описание
integer getId ()
Получить id поля
getMaxlength
Описание
integer getMaxlength ()
Получить максимально допустимое количество символов
getName
Описание
string getName ()
Получить латинское название поля
getPosition
Описание
integer getPosition ()
Получить позицию поля
getTitle
Описание
string getTitle ()
Получить название поля
getTypeId
Описание
integer getTypeId ()
Получить id типа, которому принадлежит поле
isEditable
Описание
boolean isEditable ()
Узнать, доступно ли поле для редактирования пользователем
Результат: true - редактируемо
isLocked
Описание
boolean isLocked ()
Узнать, доступно ли поле на изменение
Результат: true - заблокировано
isReal
Описание
boolean isReal ()
Проверить, является поле "настоящим" или оно принадлежит другому объекту
isRequired
Описание
boolean isRequired ()
Проверить, обязательное поле или нет
isSearch
Описание
boolean isSearch ()
Проверить, доступно поле для поиска или нет
__construct
Описание
void __construct (array $properties)
Конструктор
2.9 Form
Объекты этого класса представляют собой прототипы HTML-форм
2.9.2 Методы
•
addObjectValues
•
buildFromType
•
setError
•
setErrors
•
setValue
•
setValues
•
__construct
•
__toXML
addObjectValues
Описание
void addObjectValues (object $object)
Добавляет значения объекта в поля формы
buildFromType
Описание
void buildFromType ()
Инициализирует форму
setError
Описание
void setError (string $fieldName, string $message)
Устанавливает сообщение об ошибке поля
Параметры
fieldName имя поля message сообщение об ошибке setErrors
Описание
void setErrors (array $aErrors)
Устанавливает сообщения об ошибках нескольким полям
Параметры
aErrors массив: ключ - имя поля, значение - сообщение об ошибке setValue
Описание
void setValue (string $fieldName, mixed $value)
Устанавливает значение поля
Параметры
fieldName имя поля value значение поля setValues
Описание
void setValues (array $values)
Устанавливает значения нескольких полей
Параметры
values массив: ключ - имя поля, значение - значение поля __construct
Описание
void __construct (Type $oType, mixed $prefix)
Конструктор
Параметры
oType тип, по которому будет строится форма prefix id объекта или "new", если объект новый __toXML
Описание
DOMElement __toXML (DOMDocument $xml)
Возвращает XML-таблицу прототипа формы
2.9.3 Примеры
Пример №1
<?php //
Создание
формы
для
редактирования
текущего
пользователя $oType
=
TypesController
::
getInstance
()->
getTypeByName
(
'user'
); $form
=
new
Form
(
$oType
,
ExplaySession
::
getUserId
()); $form
->
addObjectValues
(
ExplaySession
::
getUser
()); $form
->
buildFromType
(); $response
=
new
ModuleResponse
; $response
->
setTemplate
(
'sometamplate'
); $response
->
addObject
(
$form
); return
$response
; ?>
2.10 Mailer
Контроллер отправки почты
2.10.2 Методы
•
sendEMail
sendEMail
Описание
static boolean sendEMail (EMail $oEMail, boolean $bForce = false)
Отправить письмо
Параметры
oEMail письмо bForce отправить без очереди 2.11 Module
Абстрактный родитель для объектов модулей
2.11.2 Методы
•
detectFilters
•
expectSecureGET
•
extend
•
flush
•
getRealClassName
•
getRequestData
•
getValidateErrors
•
isMethodExists
•
setPageTitle
detectFilters
Описание
void detectFilters (Type $oType, Selection $selection)
Добавляет фильтры в Selection, переданные в URI
Параметры
oType тип, поля которого будут искаться в фильтрах Примеры
Пример №1
<?php //
URI
=
http://localhost/people/search?filter[city]=Moscow //
...
Объявление
$sel
... $oType
=
TypesController
::
getInstance
()->
getTypeByName
(
'user'
); $this
->
detectFilters
(
$oType
,
$sel
); //
В
данном
случае
эквивалентно
$sel->addFilter
('city',
'Moscow'); ?>
expectSecureGET
Описание
void expectSecureGET ()
Бросает исключение AccessException при неверном GET-параметре scode
extend
Описание
void extend (string $className)
Подгружает заданных класс. При отсутствии вызванного метода у главного класса модуля будет
вызван метод подгруженного класса
Параметры
className имя класса, файл этого класса должен иметь такое же название и находиться в одной папке с
текущим модулем flush
Описание
void flush (mixed $content, string $contentType = 'text/html')
Отдает браузеру контент и заверщает программу
Параметры
content контент contentType тип контента getRealClassName
Описание
string getRealClassName ()
Возвращает реальное название класса, где реализован заданный метод
getRequestData
Описание
array getRequestData (integer $objectId, Type $type, boolean $bGetNotEditable = false)
Возвращает массив значений полей, переданных POST запросом, относящихся к объекту
Результат: массив: ключ - имя поля, значение - значение
Параметры
objectId id объекта type тип bGetNotEditable принимать значения полей, запрещенных для редактирования через форму Примеры
Пример №1
<?php $oType
=
TypesController
::
getInstance
()->
getTypeName
(
'user'
); $object
=
ObjectsController
::
getInstance
()->
getObject
(
$oType
,
123
); $aProperties
=
$this
->
getRequestData
(
123
,
$oType
); $object
->
setProperties
(
$aProperties
); ?>
getValidateErrors
Описание
array getValidateErrors (Object $object)
Проверяет значения свойств объекта на соответствие полям определенного типа
Результат: массив ошибок полей, где ключ - название поля
isMethodExists
Описание
boolean isMethodExists (string $sMethodName)
Проверяет, существует ли метод у данного модуля, учитывая множественное наследование
setPageTitle
Описание
void setPageTitle (string $sTitle)
Устанавливает заголовок страницы
2.12 ModuleResponse
Объекты этого класса используются в качестве "ответов" методов модулей
2.12.2 Методы
•
addObject
•
getAttributes
•
getObjects
•
getTemplate
•
setAttribute
•
setTemplate
•
__construct
addObject
Описание
void addObject (object $object)
Добавить объект
getAttributes
Описание
array getAttributes ()
Получить список параметров
getObjects
Описание
array getObjects ()
Получить список всех объектов
getTemplate
Описание
string getTemplate ()
Возврашает относительный путь до шаблона
setAttribute
Описание
void setAttribute (string $name, mixed $value)
Установить параметр
Параметры
name имя параметра value значение setTemplate
Описание
void setTemplate (string $template)
Устанавить путь до шаблона относительно папки с шаблонами
__construct
Описание
void __construct ()
Конструктор
2.13 Object
Объект
2.13.2 Методы
•
createNew
•
delete
•
disableHTMLFilter
•
getAttribute
•
getAttributes
•
getId
•
getType
•
getTypeName
•
getValue
•
getValues
•
isUpdated
•
save
•
setAttribute
•
setId
•
setUpdated
•
setValue
•
setValues
•
__construct
•
__toXML
createNew
Описание
boolean createNew ()
Создать новую запись об объекте в БД
delete
Описание
boolean delete ()
Удалить объект
disableHTMLFilter
Описание
void disableHTMLFilter (string $fieldName)
Отключить HTML-фильтр (Jevix) у поля
getAttribute
Описание
mixed getAttribute (string $name)
Получить значение атрибута
getAttributes
Описание
array getAttributes ()
Получить массив значений атрибутов
getId
Описание
integer getId ()
Получить id объекта
getType
Описание
Type getType ()
Получить тип объекта
getTypeName
Описание
string getTypeName ()
Получить имя типа
getValue
Описание
mixed getValue (string $fieldName)
Получить значение свойства
Параметры
fieldName имя поля getValues
Описание
array getValues ()
Получить массив свойств объекта
Результат: массив, где ключ - название поля
isUpdated
Описание
boolean isUpdated (string $fieldName = false)
Получить состояние объекта или его поля (обновлен/нет)
Параметры
fieldName название поля; если этот параметр передан, то проверяется состояние поля save
Описание
boolean save ()
Сохранить измененные значения полей объекта
setAttribute
Описание
void setAttribute (string $name, mixed $value)
Установить атрибут
Параметры
name имя value значение setId
Описание
void setId (integer $id)
Установить id объекта
setUpdated
Описание
void setUpdated (boolean $status = true)
Установить состояние объекта (обновлен/нет)
Параметры
status значение true указывает на то, что объект обновлен setValue
Описание
void setValue (string $fieldName, mixed $value, boolean $setUpdated = true)
Установить значение свойства
Параметры
fieldName имя поля value значение setUpdated отметить свойство как обновленное setValues
Описание
void setValues (array $properties, boolean $setUpdated = true)
Установить значения нескольких свойств
Параметры
properties массив: ключ - название поля, значение - значение поля setUpdated отметить свойства как обновленные __construct
Описание
void __construct (Type $oType, integer $id = 0)
Конструктор
Параметры
oType тип объекта __toXML
Описание
DOMElement __toXML (DOMDocument $xml)
Получить объект в виде XML-таблицы
2.14 ObjectsController
Обеспечивает управление объектами и их целостность
2.14.2 Методы
•
clearObjectCache
•
getInstance
•
getObject
•
getObjectsList
clearObjectCache
Описание
void clearObjectCache (Type $oType, integer $objectId)
Сбросить кеш объекта
Параметры
oType тип объекта objectId id объекта getInstance
Описание
ObjectsController getInstance ()
Возвращает объект класса ObjectsController
getObject
Описание
Object getObject (Type $type, integer $id, integer $cacheLifetime = false)
Получить объект
Параметры
type тип объекта id id объекта cacheLifetime время хранения объекта в кеше (в секундах) getObjectsList
Описание
array getObjectsList (array $aSelected, integer $cacheLifetime = false)
Получить списк объектов
Результат: массив объектов
Параметры
aSelected массив со значениями типа и id объектов (такой же возвращает Selection::getList()) cacheLifetime время хранения объекта в кеше (в секундах) 2.15 PageParser
Парсер страницы
2.15.2 Методы
•
addFormatTranslator
•
getCurrentFormat
•
getInstance
•
setCurrentFormat
addFormatTranslator
Описание
void addFormatTranslator (string $formatName, string $translatorClass, boolean $isDefault = false)
Добавить обработчик формата
Параметры
formatName название формата translatorClass класс-обработчик isDefault формат по умолчанию getCurrentFormat
Описание
string getCurrentFormat ()
Получить текущий формат отображения
getInstance
Описание
static PageParser getInstance ()
Возвращает объект класса PageParser
setCurrentFormat
Описание
void setCurrentFormat (string $formatName)
Установить текущий формат отображения
2.16 Regedit
Предоставляет централизованный доступ к всем настройкам
2.16.2 Методы
•
get
•
getInstance
•
set
get
Описание
string get (string $key)
Возвращает значение переменной реестра
Параметры
key ключ вида //родитель1/родитель2/переменная getInstance
Описание
Regedit getInstance ()
Возвращает объект класса Regedit
set
Описание
void set (string $key, mixed $value)
Записывает значение переменной реестра
Параметры
key ключ вида //родитель1/родитель2/переменная value значение 2.16.3 Примеры
Пример №1
<?php $regedit
=
Regedit
::
getInstance
(); $cacheLifetime
=
$regedit
->
get
(
"//settings/cache/default_lifetime"
); $regedit
->
set
(
"//settings/cache/default_lifetime"
,
++
$cacheLifetime
);
?>
2.17 Selection
С помощью этого класса выбираются id объектов, заданных типов, удволетворяющих условиям
фильтрации
2.17.2 Методы
•
addFilter
•
addFiltersGroup
•
addLimit
•
addSelectedProperty
•
addType
•
getList
•
getTotalCount
•
setLogicAnd
•
setLogicOr
•
setOrder
•
__construct
addFilter
Описание
void addFilter (string $fieldName, mixed $fieldValue, string $operator = '=')
Добавляет фильтр по свойству
Параметры
fieldName имя поля fieldValue значение поля operator логический оператор addFiltersGroup
Описание
void addFiltersGroup (array $arrayFilters, string $logicOperator = 'AND')
Добавляет группу фильтров
Параметры
arrayFilters массив фильтров вида: имя поля, значение поля, логический оператор (по-умолчанию "=") logicOperator оператор, соединяющий условия в группе addLimit
Описание
void addLimit (integer $start, integer $end = false)
Устанавливает лимит
addSelectedProperty
Описание
void addSelectedProperty (string $propertyName)
Добавляет произвольное поле, значения которого также будут выбраны наряду с id
addType
Описание
void addType (Type $oType)
Добавляет тип объектов
getList
Описание
array getList ()
Возвращает массив идентификаторов объектов
getTotalCount
Описание
integer getTotalCount ()
Возвращает общее число объектов, удовлетворяющих условиям фильтрации
setLogicAnd
Описание
void setLogicAnd ()
Устанавливает логоческий оператор И (AND)
setLogicOr
Описание
void setLogicOr ()
Устанавливает логоческий оператор ИЛИ (OR)
setOrder
Описание
void setOrder (string $fieldName, boolean $asc = true)
Устанавливает поле, по которому производится сортировка
Параметры
asc порядок сортировки: true - прямой, false - обратный __construct
Описание
void __construct ()
Конструктор
2.17.3 Примеры
Пример №1
<?php $oTypesController
=
TypesController
::
getInstance
(); $objectsController
=
ObjectsController
::
getInstance
(); $sel
=
new
Selection
; $sel
->
addType
(
$oTypesController
->
getTypeByName
(
'article'
)); $sel
->
addType
(
$oTypesController
->
getTypeByName
(
'question'
)); $sel
->
addSelectedProperty
(
'owner_id'
);
//
Добавляем
в
выборку
поле
с
id
автора $sel
->
addLimit
(
2
);
//
все-равно,
что
0,2 $sel
->
setOrder
(
'pubdate'
,
false
);
//
сортируем
по
дате
публикации,
гд
е
новые
будут
сверху $res
=
$sel
->
getList
(); /* 0
=
Array 0
=>
12345
(id
объекта) 1
=>
10
(id
типа
объекта) owner_id
=>
7123 1
=
Array 0
=>
12347 1
=>
13 owner_id
=>
321 */ ?>
2.18 SimpleTemplate
Этот класс используется для обработки простых шаблонов, где все переменные подставляются
заменой
2.18.2 Методы
•
display
•
setVar
•
__construct
display
Описание
string display ()
Получить обработанный контент шаблона
setVar
Описание
void setVar (string $varName, mixed $value)
Установить переменную
Параметры
varName имя переменной value значение переменной __construct
Описание
void __construct (string $sTemplatePath)
Конструктор
Параметры
sTemplatePath относительный путь до шаблона (~/kernel/templates/simple/) 2.18.3 Примеры
Пример №1
<?php //
метод
некого
модуля... $template
=
new
SimpleTemplate
(
'my_module/template.tpl'
);
//
~/kernel
/templates/simple/my_module/template.tpl: //
Привет,
{name}!
Твой
e-mail
{email} $oUser
=
ExplaySession
::
getUser
(); $template
->
setVar
(
'{name}'
,
$oUser
->
getValue
(
'name'
)); $template
->
setVar
(
'{email}'
,
$oUser
->
getValue
(
'email'
)); $this
->
flush
(
$template
->
display
(),
'text/plain'
); //
Выведет:
Привет,
SaTaGiK!
Твой
e-mail
satagik@gmail.com ?>
2.19 SystemError
Объект ошибки. Используется для вывода пользовательской ошибки в процессе обработки
шаблона
2.19.2 Методы
•
__construct
•
__toXML
__construct
Описание
void __construct (string $text)
Конструктор
Параметры
text текст ошибки __toXML
Описание
DOMEelement __toXML (DOMDocument $xml)
Возвращает XML-таблицу объекта
2.20 SystemMessage
Объект сообщения. Используется для вывода пользовательского сообщения в процессе обработки
шаблона
2.20.2 Методы
•
__construct
•
__toXML
__construct
Описание
void __construct (string $text)
Конструктор
Параметры
text текст сообщения __toXML
Описание
DOMEelement __toXML (DOMDocument $xml)
Возвращает XML-таблицу объекта
2.21 Type
Объекты этого класса представляют типы
2.21.2 Методы
•
getFieldByName
•
getFields
•
getFieldsNames
•
getId
•
getName
•
getParentId
•
getRealFieldsNames
•
getTableName
•
getTitle
•
__construct
getFieldByName
Описание
Field getFieldByName (string $fieldName)
Получить объект поля по его имени
getFields
Описание
array getFields ()
Получить массив полей
getFieldsNames
Описание
array getFieldsNames ()
Получить массив с названиями полей
getId
Описание
integer getId ()
Получить id типа
getName
Описание
string getName ()
Получить латинское название типа
getParentId
Описание
integer getParentId ()
Получить id родительского типа
getRealFieldsNames
Описание
array getRealFieldsNames ()
Получить массив имен реальных полей
getTableName
Описание
string getTableName ()
Получить название таблицы типа
getTitle
Описание
string getTitle ()
Получить название типа
__construct
Описание
void __construct (array $properties)
Конструктор
2.22 TypesController
Обеспечивает доступ к объектам типов
Методы
•
getInstance
•
getTypeById
•
getTypeByName
getInstance
Описание
TypesController getInstance ()
Возвращает объект класса TypesController
getTypeById
Описание
Type getTypeById (integer $typeId)
Возвращает объект типа
Параметры
typeId id типа getTypeByName
Описание
Type getTypeByName (string $name)
Возвращает объект типа
Параметры
name название типа 4. Протоколы
Для упрощения верстки XSLT-шаблонов была введена поддержка протоколов, реализующихся на
уровне PHP (см. классы LangStream и XMLStream).
lang
Служит для получения XML-таблиы языковых констант заданного модуля (в виде DTD-
сущностей).
Пример: lang://blogs
xobject
Служит для получения XML-таблиы заданного объекта.
Шаблон: xobject://название_типа_объекта/id_объекта
Пример: xobject://article/123
Общий вид XML-таблицы (обратите внимание на остсутствие тега response
):
<?xml
version
=
"1.0"
encoding
=
"utf-8"
?> <data> <!--
XML-таблица
объекта
--> </data>
См. Общий вид XML-таблиц объектов
.
xmodule
Служит для вызова метода модуля и получения XML-таблиы его ответа. При этом методы,
вызываемые таким образом носят название макросы
.
Шаблон: xmodule://название_модуля/название_метода/параметры
Для разделения параметров используется точка с запятой (;).
Пример: xmodule://blogs/getJoinBlogs/1;admin
См. XML-таблицы ответов модулей
.
5. Полезности
Предпрсмотр изображений (thumbs)
Для просмотра уменьшенной копии изображения, находящегося на сервере с CMS
, можно
использовать стандартный PHP-скрипт ~/thumbs.php
. Для удобства предусмотрено ЧПУ-правило:
example.com/
thumb_число-ширина_число-высота/адрес-изображения
Пример: example.com/thumb_50_40/images/70.jpg
- предпросмотр изображения ~/images/70.jpg
,
ширина превью 50, высота - 40.
Превью кешуруются на сервере в каталоге ~/images/thumbs
и на клиенте.
Защита GET-запросов
Если пользователю доступно выполнение некоторого действия, например, голосование или
удаление статьи, где параметры (id и т.д.) передаются через GET, то для предотвращения CSRF-
атак рекомендуется пользоваться следующим приемом. К запросу добавлять GET-параметр с
названием scode
, значение которого - это сессионный защитный ключ пользователя (он передается
в XML-таблице ответа модуля в значении атрибута scode
тега data
, см. XML-таблицы ответов
модулей
). Затем в вызываемом методе модуля добавить строчку $this->expectSecureGET();
(желательно в начале метода). Теперь метод модуля стработает только при правильном значении
GET-параметра scode
.
Обратите внимание, что таким образом следует защищать только GET-запросы, в результате
которых выполняется удаление, добавление или изменение объектов (особенно это критично
дейсвий в панели администратора).
Автор
satagik
Документ
Категория
Компьютеры
Просмотров
320
Размер файла
55 Кб
Теги
документация, eevolt, cms
1/--страниц
Пожаловаться на содержимое документа