Jump to content

Работа с members . Документация разработчика.

Прежде чем приступить к разработке плагинов или приложений для IPS Community Suite, вам необходимо включить режим разработчика. В режиме разработчика программное обеспечение загружает необходимые файлы непосредственно из файловой системы, а не из кэшированных версий или из базы данных.

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

Основным классом-членом в версии 4.0 является \IPS\Member.

/* Получить текущего участника, вошедшего в систему */

$member = \IPS\Member :: loggedIn (); /* Загрузить определенный элемент по идентификатору */

$member = \IPS\Member :: load ( 1 ); /* Загрузить конкретного участника по адресу электронной почты */

$member = \IPS\Member :: load ( '[email protected]' , 'email' ); /* Получаем гостевой объект или создаем нового участника */

$member = new \IPS\Member ;

Если у вас есть экземпляр \IPS\Member для работы, вы можете настроить значения для этой учетной записи участника, просто установив свойства объекта, которые соответствуют столбцам в таблице базы данных core_members. Например, чтобы изменить выбор языка участника, вы можете сделать следующее:

/* Получаем ссылку на член */

$member = \IPS\Member::load( 1 );

$member->language = 2;

$member->save();

Вам необходимо вызвать метод save() после изменения значения, чтобы оно было сохранено в базе данных, в противном случае изменение будет сохраняться только в течение текущего просмотра страницы (или до тех пор, пока не будет вызван save() в какой-то более поздний момент, особенно если работая с \IPS\Member::loggedIn()). Если вы работаете с гостевым объектом и вызываете функцию save() для этого объекта, новая запись члена будет сохранена в базе данных (т. е. именно так вы создаете новый член).

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

Работа с участниками

Некоторые специальные свойства, доступные через геттеры:

  • $member->group: это специальный метод получения (свойство, а не метод), который возвращает данные группы участника. Этот метод автоматически объединит разрешения основной группы и одной или нескольких вторичных групп, предоставляя участнику максимально возможные разрешения в зависимости от его членства в группах.

  • $member->groupName: вернет имя группы пользователя, отформатированное на основе  конфигурации группы ACP  .

  • $member->groups: вернет массив идентификаторов всех групп, к которым принадлежит участник.

  • $member->real_name: это вернет имя участника или пустую строку для гостя вместо возврата языковой строки для гостя, если пользователь на самом деле является гостем.

  • $member->birthday: вернет локализованный день рождения участника, принимая во внимание тот факт, что указание года рождения не является обязательным.

  • $member->photo: это свойство возвращает фотографию участника в виде объекта \IPS\Url (который можно преобразовать в строку, чтобы получить URL-адрес фотографии). Фотография сделана безопасной для просмотра в  АШП  при необходимости.

  • $member->rank: Этот метод возвращает массив, представляющий заголовок и изображение для текущего «ранга» участника на основе  конфигурации рангов ACP  , принимая во внимание тот факт, что поддерживаются как загруженное изображение, так и изображения «pip».

В классе \IPS\Member есть несколько методов, с которыми вам следует ознакомиться.

  • $member->location(): возвращает текущее местоположение участника на сайте, если он онлайн.

  • $member->isAdmin(): Возвращает информацию о том, является ли участник администратором или нет.

  • $member->isOnline(): Возвращает информацию о том, находится ли участник в сети в данный момент или нет.

  • $member->isBanned(): Возвращает информацию о том, забанен ли участник или нет, включая временные баны.

  • $member->profileFields(): возвращает настраиваемые поля профиля для участника в виде массива объектов полей профиля.

  • $member->contentProfileFields(): это похоже на ProfileFields(), но вместо этого возвращает только поля профиля, предназначенные для отображения рядом с контентом пользователя (например, на левой боковой панели рядом с публикацией).

  • $member->ipAddresses(): возвращает IP-адреса, используемые участником.

  • $member->language(): возвращает экземпляр \IPS\Lang для участника на основе его предпочтений или на основе автоматического определения/настройки языка по умолчанию, если участник не выбрал язык. Это используется для получения языковых строк, например, \IPS\Member::loggedIn()->language()->addToStack( 'language_string' );

  • $member->reputation(): этот метод возвращает репутацию участника в виде языковой строки.

  • $member->reputationImage(): этот метод возвращает изображение репутации участника.

  • $member->delete($setAuthorToGuest=TRUE);  Вызовите этот метод, чтобы удалить члена. Единственный принятый параметр указывает, следует ли устанавливать какой-либо контент, созданный участником, в гостевую учетную запись, если это TRUE, или удалять этот контент, если FALSE. Имейте в виду, что если вы используете какие-либо внешние обработчики входа в систему, которые поддерживают удаление участника, этот участник также будет удален в этих внешних базах данных.

  • $member->flagAsSpammer(): этот метод помечает учетную запись пользователя как спамера, удаляя или скрывая его содержимое в зависимости от конфигурации администратора, и сообщает о спамере в службу спама IPS (если это настроено).

  • $member->unflagAsSpammer(): этот метод снимет пометку с учетной записи пользователя как спамера, сообщив об изменении статуса в службу спама IPS, если она настроена на это.

  • $member->age($date=NULL);  Возвращает возраст участника. Если объект \IPS\DateTime предоставляется в качестве единственного параметра метода, возраст рассчитывается на основе предоставленной даты.

  • $member->inGroup($group, $permissionArray=FALSE);  Проверьте, принадлежит ли участник группе или набору групп. $group может быть идентификатором группы (целое число), экземпляром \IPS\Member\Group или массивом идентификаторов групп или экземпляров \IPS\Member\Group. Если пользователь является членом ЛЮБОЙ группы в массиве, метод возвращает TRUE. Если $permissionArray передается как TRUE, участник проверяется по массиву разрешений участника, а не по идентификаторам группы.

  • $member->url(): возвращает URL-адрес профиля участника в виде экземпляра \IPS\Http\Url.

  • $member->acpUrl(): возвращает URL-адрес страницы редактирования участника в  ACP  как экземпляр \IPS\Http\Url.

  • $member->link($warningRef=NULL, $groupFormatting=FALSE) ; Верните HTML-ссылку на профиль участника. Если $warningRef передается как строка, это будет ссылочный ключ для предупреждения участника (если пользователь предупрежден). $groupFormatting указывает, следует ли форматировать отображаемое имя с использованием параметров форматирования группы участника, установленных администратором.

  • $member->markAllAsRead(): пометить весь сайт как прочитанный для участника.

  • $member->markersItems($app, $key);  Получите маркеры элементов для участника для данного приложения и ключа.

  • $member->markersResetTimes($app);  Получите время сброса маркера элемента для участника для данного приложения.

  • $member->warnings($limit, $acknowledged=NULL, $type=NULL);  Получить предупреждения участника. Limit можно передать как целое число, чтобы ограничить количество возвращаемых значений. Если $acknowledged имеет значение NULL, возвращаются все предупреждения, или можно передать TRUE или FALSE, чтобы ограничить предупреждения только подтвержденными или неподтвержденными предупреждениями. Если $type передается как строка, будут извлекаться только предупреждения этого типа.

  • $member->encryptedPassword($password);  Зашифруйте простой текстовый пароль для участника, используя соль участника (вы можете обновить соль перед вызовом этого метода для получения нового пароля).

  • $member->generateSalt(): создаёт новую соль для члена.

  • $member->notificationsConfiguration(): возвращает конфигурацию уведомлений участника.

  • $member->following($app, $area, $id); Определите, следует ли участник определенной комбинации приложения, региона и идентификатора (необходимо передать все значения)

  • $member->acpRestrictions(): Возвращает ограничения ACP участника   , чтобы определить, к каким областям  ACP  участник может получить доступ.

  • $member->modPermissions(): Возвращает права модератора участника, если таковые имеются.

  • $member->reportCount(): Получите количество элементов контента, о которых сообщается, которые участник может просмотреть в центре отчетов.

  • $member->isIgnoring(\IPS\Member $member, $type); Определите, игнорирует ли участник другого участника. $type должен быть передан и должен быть одним из «подписей», «тем» или «сообщений».

  • $member->createMenu(): Получить меню создания участника. Это кэшируется (и автоматически очищается при необходимости).

  • $member->moderateNewContent(): определяет, следует ли модерировать новый контент, созданный участником.

  • $member->coverPhoto(): Возвращает обложку участника, если таковая имеется.

  • $member->hasAcpRestriction($app, $module=NULL, $key=NULL); Определите, установлено ли у участника  ограничение ACP  для данной комбинации $app, $module и $key (требуется только $app). Если у участника установлено ограничение, это означает, что он может получить доступ к данной области.

  • $member->modPermission($key=NULL); Определите, есть ли у участника данное разрешение модератора для его учетной записи (передайте NULL, чтобы определить, есть ли у участника какие-либо доступные права модератора).

  • $member->canWarn(\IPS\Member $member); Определите, может ли текущий участник предупредить другого участника.

  • $member->checkLoginKey(): убедитесь, что у участника установлен ключ входа и срок его действия не истек.

  • $member->recountNotifications(): пересчитывает непрочитанные уведомления участника.

  • $member->recountContent(): пересчитывает вклады участников в элементы контента.

  • $member->recountReputation(): пересчитывает репутацию участника.

  • $member->canAccessModule($module); $module должен быть экземпляром \IPS\Application\Module, и метод возвращает, может ли участник получить доступ к модулю или нет.

  • $member->merge(\IPS\Member $otherMember); Объедините текущего участника с другой учетной записью участника (обратите внимание, что объединение контента происходит в фоновом режиме и может произойти не сразу; кроме того, учетная запись участника, которая будет удалена, не будет удалена до тех пор, пока весь контент не будет объединен, он ставится в очередь).

  • $member->checkPostsPerDay(): проверьте ограничения на количество публикаций в день, чтобы узнать, может ли участник посещать их.

  • $member->checkGroupPromotion(): проверьте, следует ли перевести участника в другую группу, и сделайте это, если да. Обратите внимание, что save() после этого все равно необходимо вызывать вручную.

  • $member->clearCreateMenu(): Очистить кэшированное меню создания для участника.

Обратите внимание, что приложения могут определять расширения MemberSync для выполнения определенных действий в следующих точках:

  • onDelete: этот метод в расширении MemberSync вызывается при удалении участника (имейте в виду, что его содержимое все еще может существовать в базе данных и находиться в очереди на удаление).

  • onCreateAccount: вызывается при создании новой учетной записи.

  • onProfileUpdate: вызывается при обновлении существующей учетной записи.

Расширения создаются в Центре разработчиков приложения в панели управления администратора.

Перевод: Google

User Feedback

Recommended Comments

Комментариев пока нет

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Добавить комментарий...