Перейти к содержимому

Справочник API XOOPS

Добро пожаловать в полную справочную документацию API XOOPS. В этом разделе представлена подробная документация по всем основным классам, методам и системам, которые составляют контент-менеджер XOOPS.

API XOOPS организован на несколько основных подсистем, каждая из которых отвечает за определенный аспект функциональности CMS. Понимание этих API необходимо для разработки модулей, тем и расширений для XOOPS.

Базовые классы, на которых строятся все остальные компоненты XOOPS.

ДокументацияОписание
XoopsObjectБазовый класс для всех объектов данных в XOOPS
XoopsObjectHandlerПаттерн обработчика для операций CRUD

Утилиты абстракции базы данных и построения запросов.

ДокументацияОписание
XoopsDatabaseУровень абстракции базы данных
Система CriteriaКритерии запроса и условия
QueryBuilderСовременное построение запросов с fluent API

Создание HTML-форм и валидация.

ДокументацияОписание
XoopsFormКонтейнер форм и отрисовка
Элементы формВсе доступные типы элементов форм

Основные компоненты системы и сервисы.

ДокументацияОписание
Классы ядраСистемное ядро и основные компоненты

Управление модулями и жизненный цикл.

ДокументацияОписание
Система модулейЗагрузка, установка и управление модулями

Интеграция шаблонов Smarty.

ДокументацияОписание
Система шаблоновИнтеграция Smarty и управление шаблонами

Управление пользователями и аутентификация.

ДокументацияОписание
Система пользователейАккаунты пользователей, группы и разрешения
flowchart TB
subgraph "Foundation Layer"
XO[XoopsObject<br/>Base Class]
XD[XoopsDatabase<br/>DB Abstraction]
XF[XoopsForm<br/>Form Generation]
end
subgraph "Handler Layer"
XOH[XoopsObjectHandler<br/>CRUD Operations]
CR[Criteria<br/>Query Building]
XFE[XoopsFormElement<br/>Input Types]
end
subgraph "Module Layer"
XM[XoopsModule<br/>Module Management]
end
subgraph "Presentation Layer"
XT[XoopsTpl<br/>Template Engine]
end
XO --> XOH
XD --> CR
XF --> XFE
XOH --> XM
CR --> XM
XFE --> XM
XM --> XT
classDiagram
class XoopsObject {
<<Base>>
+getVar()
+setVar()
+toArray()
}
XoopsObject <|-- XoopsUser
XoopsObject <|-- XoopsGroup
XoopsObject <|-- XoopsModule
XoopsObject <|-- XoopsBlock
XoopsObject <|-- XoopsComment
XoopsObject <|-- XoopsNotification
classDiagram
class XoopsObjectHandler {
<<Base>>
+create()
+get()
+insert()
+delete()
}
class XoopsPersistableObjectHandler {
+getObjects()
+getCount()
+deleteAll()
}
XoopsObjectHandler <|-- XoopsPersistableObjectHandler
XoopsPersistableObjectHandler <|-- XoopsUserHandler
XoopsPersistableObjectHandler <|-- XoopsGroupHandler
XoopsPersistableObjectHandler <|-- XoopsModuleHandler
XoopsPersistableObjectHandler <|-- XoopsBlockHandler
XoopsObjectHandler <|-- CustomModuleHandlers
classDiagram
class XoopsForm {
<<Base>>
+addElement()
+render()
+display()
}
XoopsForm <|-- XoopsThemeForm
XoopsForm <|-- XoopsSimpleForm
class XoopsFormElement {
<<Base>>
+getName()
+render()
+getValue()
}
XoopsFormElement <|-- XoopsFormText
XoopsFormElement <|-- XoopsFormTextArea
XoopsFormElement <|-- XoopsFormSelect
XoopsFormElement <|-- XoopsFormCheckBox
XoopsFormElement <|-- XoopsFormRadio
XoopsFormElement <|-- XoopsFormButton
XoopsFormElement <|-- XoopsFormFile
XoopsFormElement <|-- XoopsFormHidden
XoopsFormElement <|-- XoopsFormLabel
XoopsFormElement <|-- XoopsFormPassword
XoopsFormElement <|-- XoopsFormEditor

API XOOPS реализует несколько хорошо известных паттернов проектирования:

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

$db = XoopsDatabase::getInstance();
$container = XoopsContainer::getInstance();

Обработчики объектов создают объекты домена последовательно.

$handler = xoops_getHandler('user');
$user = $handler->create();

Формы содержат несколько элементов форм; критерии могут содержать вложенные критерии.

$criteria = new CriteriaCompo();
$criteria->add(new Criteria('status', 1));
$criteria->add(new CriteriaCompo(...)); // Вложенные критерии

Система событий позволяет слабую связанность между модулями.

$dispatcher->addListener('module.news.article_published', $callback);
// Получить обработчик
$handler = xoops_getHandler('user');
// Создать новый объект
$user = $handler->create();
$user->setVar('uname', 'newuser');
$user->setVar('email', 'user@example.com');
// Сохранить в базу данных
$handler->insert($user);
// Построить критерии
$criteria = new CriteriaCompo();
$criteria->add(new Criteria('level', 0, '>'));
$criteria->setSort('uname');
$criteria->setOrder('ASC');
$criteria->setLimit(10);
// Получить объекты
$handler = xoops_getHandler('user');
$users = $handler->getObjects($criteria);
$form = new XoopsThemeForm('User Profile', 'userform', 'save.php', 'post', true);
$form->addElement(new XoopsFormText('Username', 'uname', 50, 255, $user->getVar('uname')));
$form->addElement(new XoopsFormTextArea('Bio', 'bio', $user->getVar('bio')));
$form->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
echo $form->render();
ТипСоглашениеПример
КлассыPascalCaseXoopsUser, CriteriaCompo
МетодыcamelCasegetVar(), setVar()
СвойстваcamelCase (защищено)$_vars, $_handler
КонстантыUPPER_SNAKE_CASEXOBJ_DTYPE_INT
Таблицы БДsnake_caseusers, groups_users_link

XOOPS определяет стандартные типы данных для переменных объектов:

КонстантаТипОписание
XOBJ_DTYPE_TXTBOXStringТекстовый ввод (санированный)
XOBJ_DTYPE_TXTAREAStringСодержимое области текста
XOBJ_DTYPE_INTIntegerЧисловые значения
XOBJ_DTYPE_URLStringВалидация URL
XOBJ_DTYPE_EMAILStringВалидация электронной почты
XOBJ_DTYPE_ARRAYArrayСериализованные массивы
XOBJ_DTYPE_OTHERMixedПользовательская обработка
XOBJ_DTYPE_SOURCEStringИсходный код (минимальная санитизация)
XOBJ_DTYPE_STIMEIntegerКороткая временная метка
XOBJ_DTYPE_MTIMEIntegerСредняя временная метка
XOBJ_DTYPE_LTIMEIntegerДлинная временная метка

API поддерживает несколько методов аутентификации:

X-API-Key: your-api-key
Authorization: Bearer your-oauth-token

Использует существующую сессию XOOPS при входе в систему.

Когда REST API включен:

Конечная точкаМетодОписание
/api.php/rest/usersGETСписок пользователей
/api.php/rest/users/{id}GETПолучить пользователя по ID
/api.php/rest/usersPOSTСоздать пользователя
/api.php/rest/users/{id}PUTОбновить пользователя
/api.php/rest/users/{id}DELETEУдалить пользователя
/api.php/rest/modulesGETСписок модулей
  • Руководство по разработке модулей
  • Руководство по разработке тем
  • Конфигурация системы
  • Лучшие практики безопасности
ВерсияИзменения
2.5.11Текущий стабильный выпуск
2.5.10Добавлена поддержка GraphQL API
2.5.9Улучшена система Criteria
2.5.8Поддержка автозагрузки PSR-4

Эта документация является частью базы знаний XOOPS. Для последних обновлений посетите репозиторий XOOPS на GitHub.