Объекты

Объекты - один из базовых компонентов в архитектуре системы. Это основные сущности, с которыми работает CMS. Объекты разделяются на типы: пользователи, баннеры, и т.д..

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

<?php
 header("Content-type: text/html; charset=utf-8");
 include "standalone.php";
 
 /*
  Документация: работа с объектами. Получение объектов и свойств.
 */

 OutputBuffer::current('HTTPOutputBuffer');
 
 //Получаем id текущего пользователя
 $permissions = permissionsCollection::getInstance();
 $currentUserId = $permissions->getUserId();
 echo "Id текущего пользователя: \"", $currentUserId, "\"<br />\n";
 
 //Получаем объект, который соответствует текущему пользователю
 $objects = umiObjectsCollection::getInstance();
 $userObject = $objects->getObject($currentUserId);
 
 //Проверяем, получился ли у нас объект
 if($userObject instanceof umiObject) {
  echo "Логин текущего пользователя: \"", $userObject->getValue("login"), "\"<br />\n";
  echo "Имя текущего пользователя: \"", $userObject->getValue("fname"), "\"<br /><br />\n";
  echo "Id типа данных объекта текущего пользователя: \"", $userObject->getTypeId(), "\"<br />\n";
 } else {
  echo "Ошибка. Объекта с таким id не существует.<br />\n";
 }
?>

В результате скрипт должен показать примерно такой результат.

Id текущего пользователя: "2373"
Логин текущего пользователя: "Гость"
Имя текущего пользователя: "Посетитель"

Id типа данных объекта текущего пользователя: "4"

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

<?php
 header("Content-type: text/html; charset=utf-8");
 include "standalone.php";
 
 /*
  Документация: работа с объектами. Создание новых объектов и редактирование свойств.
 */
 
 //Получаем id типа данных "Пользователь"
 $objectTypes = umiObjectTypesCollection::getInstance();
 $usersObjectTypeId = $objectTypes->getBaseType("users", "user");
 
 //Такие свойства будет иметь новый пользователь
 $userLogin = "mylogin"; //Логин
 $userPassword = "mypassword"; //Пароль
 $userFirstName = "Bat"; //Имя
 $userLastName = "Man"; //Фамилия
 $userEmail = "batman@lgh.org"; //E-mail
 
 $objects = umiObjectsCollection::getInstance();
 
 //Создаем новый объект типа "Пользователь" и получаем его id
 $newUserId = $objects->addObject($userLogin, $usersObjectTypeId);
 echo "Новый пользователь с id: \"", $newUserId, "\"<br />\n";
 
 //Получаем объект пользователя
 $newUser = $objects->getObject($newUserId);
 if($newUser instanceof umiObject) {
  //Заполняем объект пользователя новыми свойствами
  $newUser->setValue("login", $userLogin);
  $newUser->setValue("password", md5($userPassword)); //Пароль должен храниться в MD5
  $newUser->setValue("fname", $userFirstName);
  $newUser->setValue("lname", $userLastName);
  $newUser->setValue("e-mail", $userEmail);
  $newUser->setValue("is_activated", true); //Без этого свойства пользователь будет неактивен
  
  //Подтверждаем внесенные изменения
  $newUser->commit();
  
  echo "Все получилось!<br />\n";
  echo "Создан пользователь ", $newUser->getValue("login");
  echo " (", $newUser->getValue('fname'), " ", $newUser->getValue('lname'), ")";
 } else {
  echo "Ничего не вышло.";
 }
 
?>

Мы должны получить примерно такой результат.

Новый пользователь с id: "27151"
Все получилось!
Создан пользователь mylogin (Bat Man)

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

<?php
 header("Content-type: text/html; charset=utf-8");
 include "standalone.php";
 
 /*
  Документация: работа с объектами. Удаление объектов из системы.
 */

 $userObjectId = 27151;
 
 $objects = umiObjectsCollection::getInstance();
 if($objects->delObject($userObjectId)) {
  echo "Объект #{$userObjectId} удален.";
 } else {
  echo "Удалить объект #{$userObjectId} почему-то не получилось. Скорее всего, он вообще не существует.";
 }
?>

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

Объект #27151 удален.

При повторном запуске мы получим сообщение о том, что такого объекта больше не существует.

Удалить объект #27151 почему-то не получилось. Скорее всего, он вообще не существует