Jump to content
  • Работы с пользователями и их данными

       (0 reviews)

    invisionbyte

    При разработке приложений и плагинов для IPS4 вы рано или поздно столкнётесь с взаимодействием с учётными записями пользователей. В данной статье приведены примеры взаимодействия в Invision Community 4.

    Основной класс пользователей в IPS4 - \IPS\Member.

    /* Получить авторизованного пользователя */
    $member = \IPS\Member::loggedIn();
    
    /* Загрузить определённого пользователя по его ID */
    $member = \IPS\Member::load( 1 );
    
    /* Загрузить определённого пользователя по его e-mail адресу */
    $member = \IPS\Member::load( 'john@doe.com', 'email' );
    
    /* Получить гостя или создать нового пользователя */
    $member = new \IPS\Member;

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

    /* Загружаем пользователя */
    $member = \IPS\Member::load( 1 );
    $member->language = 2;
    $member->save();

    Вы должны вызвать метод save() после внесения соответствующих изменений, чтобы они были сохранены в базе данных, иначе изменения будут применены только до обновления страницы.  Если вы работаете с объектом гостя и вызываете метод save(), запись о новом пользователе будет сохранена в базе данных (то есть будет создан новый пользователь).

    Для облегчения работы, в классе присутствуют некоторые методы, так называемые получатели и установщики. Например, при установке имени пользователя, автоматически обновится seo имя пользователя (seo name) и появится запись в журнале смены имён пользователей.

    Некоторые особые свойства доступны через получателей:

    • $member->group: специальный получатель (это свойство, не метод), который вернёт данные группы пользователя. Этот метод автоматически объединит разрешения основной группы с одной или всеми вторичными группами, выдав таким образом наилучшие разрешения из всех групп.
    • $member->groupName: Вернёт название группы пользователя, форматированное на основе соответствующей настройки в админцентре.
    • $member->groups: Вернёт идентификаторы (ID) всех групп, в которых состоит пользователь.
    • $member->real_name: Вернёт имя пользователя или пустую строчку для гостя.
    • $member->birthday: Вернёт локализованный день рождения пользователя, принимая во внимание тот факт, что предоставление года рождения необязательно.
    • $member->photo: Свойство возвращает фотографию пользователя в качестве объекта \IPS\Url (который может быть приведён в строку для получения URL адреса фотографии). Фото безопасно для просмотра в админцентре.
    • $member->rank: Свойство возвращает массив заголовка пользователя и изображение ранга на основе соответствующих настроек в админцентре.

    Есть ещё немаловажные методы в классе:

    • $member->delete( $setAuthorToGuest=TRUE ): Вызовите этот метод для удаления пользователя. Принимается один параметр, позволяющий установить авторство контента удаляемого пользователя в качестве гостя, если параметр TRUE. Если FALSE - контент будет удалён. Обратите внимание, если вы используете внешние методы авторизации, поддерживающие удаление пользователей, пользователь также будет удалён и во внешней базе данных.
    • $member->flagAsSpammer(): Метод отметит пользователя спамером, удалив или скрыв его контент (на основе конфигурации администратора) и сообщит о спамере в IPS анти-спам (если указано в настройках).
    • $member->unflagAsSpammer(): Метод снимет отметку спамера с пользователя и сообщит об изменениях в IPS анти-спам (если настроено).
    • $member->age( $date=NULL ): Вернёт возраст пользователя. Если объект \IPS\DateTime поставляется в качестве единственного параметра метода, то возраст рассчитывается на основе заданной даты.
    • $member->location(): Возвращает текущее местонахождение пользователя на сайте, если он онлайн.
    • $member->isAdmin(): Возвращает администратор пользователь, или нет.
    • $member->isOnline(): Возвращает онлайн ли пользователь, или нет.
    • $member->isBanned(): Возвращает забанен ли пользователь, или нет. Включая временный бан..
    • $member->inGroup( $group, $permissionArray=FALSE ): Проверяет, принадлежит ли пользователь группе или нескольким группам.  $group может быть ID группы (целое число), или массив ID групп. Если пользователь принадлежит ЛЮБОЙ группе массива, метод вернёт значение TRUE. Если $permissionArray передаётся как TRUE, пользователь проверяется по массиву разрешений вместо ID групп.
    • $member->language(): Возвращает экземпляр \IPS\Lang для пользователя на основе его предпочтения, либо на основе автоматически выбранного языка по умолчанию, если пользователь не выбрал язык. Это используется для получения языковых строк, например: \IPS\Member::loggedIn()->language()->addToStack( 'языковая_строка' );
    • $member->url(): Возвращает URL адрес на профиль пользователя как экземпляр \IPS\Http\Url.
    • $member->acpUrl(): Возвращает URL адрес на страницу редактирования пользователя в админцентре как экземпляр \IPS\Http\Url.
    • $member->link( $warningRef=NULL, $groupFormatting=FALSE ): Возвращает HTML ссылку на профиль пользователя. Если $warningRef передаётся в виде строки, будет представлен ключ предупреждения пользователя (если пользователь предупреждён).  $groupFormatting обозначает форматировать или нет отображаемое имя пользователя на основе настройки форматирования в админцентре.
    • $member->profileFields(): Возвращает дополнительные поля профиля пользователя в виде массива.
    • $member->contentProfileFields(): Похоже на profileFields() , но возвращает контент полей профиля.
    • $member->ipAddresses(): Возвращает IP адреса, используемые пользователем.
    • $member->markAllAsRead(): Отмечает сайт прочитанным для пользователя.
    • $member->markersItems( $app, $key ): Извлекает маркеры элементов для пользователя для данного приложения и ключа.
    • $member->markersResetTimes( $app ): Извлекает количество сбросов маркеров элементов для данного приложения.
    • $member->warnings( $limit, $acknowledged=NULL, $type=NULL ): Извлекает предупреждения пользователя. Лимит может быть передан как целое число, чтобы ограничить количество извлекаемых элементов. Если $acknowledged указано NULL, будут извлечены все предупреждения, или TRUE и FALSE будут извлечены только признанные или непризнанные предупреждения соответственно.  Если $type передаётся в виде строки, будут извлечены предупреждения только этого типа.
    • $member->reputation(): Метод возвращает репутацию пользователя в качестве языковой строки.
    • $member->reputationImage(): Метод возвращает изображение репутации пользователя.
    • $member->encryptedPassword( $password ): Шифрование простого текстового пароля с использованием соли пользователя (вы можете обновить соль перед вызовом этого для нового пароля).
    • $member->generateSalt(): Генерирует новую соль для пользователя.
    • $member->notificationsConfiguration(): Возвращает конфигурацию уведомлений пользователя.
    • $member->following( $app, $area, $id ): Определяет, если пользователь подписан на определённое приложение, область , ID (все значения должны быть указаны)
    • $member->acpRestrictions(): Возвращает ограничения пользователя в админцентре, к каким областям админцентра пользователь имеет доступ.
    • $member->modPermissions(): Возвращает модераторские разрешения пользователя, если имеются.
    • $member->reportCount(): Получить количество элементов контента с жалобами, которое пользователь может просмотреть в центре жалоб.
    • $member->isIgnoring( \IPS\Member $member, $type ): Определяет игнорируют ли пользователя другие участники.  $type должен быть указан и должен быть 'signatures', 'topics' или 'messages'.
    • $member->createMenu(): Возвращает созданное пользователем меню. Это кэшируются (и при необходимости автоматически очищается).
    • $member->moderateNewContent(): Определяет, должен ли новый контент пользователя пройти модерацию.
    • $member->coverPhoto(): Возвращает обложку пользователя, если она имеется.
    • $member->hasAcpRestriction( $app, $module=NULL, $key=NULL ): Определяет, если пользователь имеет ограничения в админцентре, установленные для данного $app, $module или $key (обязательно только $app). Если у пользователя есть набор ограничений, имеется ввиду, что он имеет доступ к ним.
    • $member->modPermission( $key=NULL ): Определяет, если пользователь имеет доступные модераторские разрешения.
    • $member->canWarn( \IPS\Member $member ): Может ли текущий пользователь предупредить другого пользователя.
    • $member->checkLoginKey(): Проверяет ключ авторизации пользователя на срок его хранения.
    • $member->recountNotifications(): Пересчитывает непрочитанные уведомления пользователя.
    • $member->recountContent(): Пересчитывает количество контента пользователя.
    • $member->recountReputation(): Пересчитывает репутацию пользователя.
    • $member->canAccessModule( $module ): $module должен быть экземпляром \IPS\Application\Module и метод возвращает имеет ли пользователь доступ к модулю или нет.
    • $member->validate(): Отмечает пользователя подтверждённым.
    • $member->merge( \IPS\Member $otherMember ): Объединяет текущий аккаунт пользователя с другим (обратите внимание, что слияние происходит в фоновом режиме и не может произойти сразу; кроме того, аккаунт пользователя, который будет удалён, не сможет удалить, пока не объединится весь контент).
    • $member->checkPostsPerDay(): Проверяет ограничение сообщений в день.
    • $member->checkGroupPromotion(): Проверяет, должен ли пользователь продвинуться в другую группу и продвигает, если это так. Обратите внимание, что необходимо опять вызвать save() вручную для сохранения изменений.
    • $member->clearCreateMenu(): Очистка кеша создания меню для пользователя.
    •  


    User Feedback

    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

    • This will not be shown to other users.
    • Add a review...

      ×   Pasted as rich text.   Paste as plain text instead

        Only 75 emoji are allowed.

      ×   Your link has been automatically embedded.   Display as a link instead

      ×   Your previous content has been restored.   Clear editor

      ×   You cannot paste images directly. Upload or insert images from URL.

      Loading...

Messenger

    ×
    ×
    • Create New...

    Important Information

    By using our site you agree to our Privacy Policy