Работа с 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
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.