/**
  * Callback at ended constructor.
  */
 protected function init()
 {
     parent::init();
     $this->setTitle('user_form_permission.form_title');
     $this->setNote('user_form_permission.form_note');
     $role = $this->getRole();
     app()->emitter()->emit('onBeforeInitUserPermissionForm', $this);
     /**
      * Add privacy options
      */
     if (!$role->isGuest() && $role->getModuleName() == 'user') {
         $relationTypes = app()->relation()->getAllSystemRelationType('user');
         $privacyOptions = [['value' => RELATION_TYPE_ANYONE, 'label' => app()->text('core.public')], ['value' => RELATION_TYPE_REGISTERED, 'label' => app()->text('core.registered')]];
         foreach ($relationTypes as $type) {
             if (!$type instanceof RelationType) {
                 continue;
             }
             $privacyOptions[] = ['value' => $type->getRelationType(), 'label' => $type->getDescription()];
         }
         $privacyOptions[] = ['value' => RELATION_TYPE_MEMBER_OF_MEMBER, 'label' => 'Friends of Friends'];
         $privacyOptions[] = ['value' => RELATION_TYPE_CUSTOM, 'label' => 'Custom List'];
         $privacyValues = [];
         foreach ($privacyOptions as $option) {
             $privacyValues[] = $option['value'];
         }
         $this->addElement(['plugin' => 'multicheckbox', 'name' => 'user__privacy_option', 'label' => 'user_form_permission.privacy_option', 'note' => 'user_form_permission.privacy_option_note', 'options' => $privacyOptions, 'value' => $privacyValues]);
     }
     if (!$role->isGuest()) {
         $this->addElement(['plugin' => 'yesno', 'name' => 'user__invite_guest', 'label' => 'user_form_permission.invite_guest', 'note' => 'user_form_permission.invite_guest_note', 'required' => true, 'value' => 1]);
     }
     $this->addElement(['plugin' => 'yesno', 'name' => 'user__friend_tab_view', 'label' => 'user_form_permission.friend_tab_view', 'note' => 'user_form_permission.friend_tab_view_note', 'required' => true, 'value' => 1]);
     if (!$role->isGuest()) {
         $this->addElement(['plugin' => 'yesno', 'name' => 'user__friend_tab_exists', 'label' => 'user_form_permission.friend_tab_exists', 'note' => 'user_form_permission.friend_tab_exists_note', 'required' => true, 'value' => 1]);
     }
     if (!$role->isGuest()) {
         $this->addElement(['plugin' => 'yesno', 'name' => 'user__friend_request', 'label' => 'user_form_permission.friend_request', 'note' => 'user_form_permission.friend_request_note', 'required' => true, 'value' => 1]);
     }
     if (!$role->isGuest()) {
         $this->addElement(['plugin' => 'yesno', 'name' => 'user__friend_list_create', 'label' => 'user_form_permission.friend_list_create', 'note' => 'user_form_permission.friend_list_create_note', 'required' => true, 'value' => 1]);
     }
     if (!$role->isGuest()) {
         $this->addElement(['plugin' => 'yesno', 'name' => 'user__friend_list_limit', 'label' => 'user_form_permission.friend_list_limit', 'note' => 'user_form_permission.friend_list_limit_note', 'required' => true, 'value' => 1]);
     }
     if (!$role->isGuest()) {
         $this->addElement(['plugin' => 'yesno', 'name' => 'user__profile_name_edit', 'label' => 'user_form_permission.profile_name_edit', 'note' => 'user_form_permission.profile_name_edit_note', 'required' => true, 'value' => 1]);
     }
     if (!$role->isGuest()) {
         $this->addElement(['plugin' => 'text', 'name' => 'user__profile_name_edit_limit', 'label' => 'user_form_permission.profile_name_edit_limit', 'note' => 'user_form_permission.profile_name_edit_limit_note', 'required' => true, 'value' => 5]);
     }
     if (!$role->isGuest()) {
         $this->addElement(['plugin' => 'yesno', 'name' => 'user__email_edit', 'label' => 'user_form_permission.email_edit', 'note' => 'user_form_permission.email_edit_note', 'required' => true, 'value' => 1]);
     }
     if (!$role->isGuest()) {
         $this->addElement(['plugin' => 'text', 'name' => 'user__email_edit_limit', 'label' => 'user_form_permission.email_edit_limit', 'note' => 'user_form_permission.email_edit_limit_note', 'required' => true, 'value' => 5]);
     }
     app()->emitter()->emit('onAfterInitUserPermissionForm', $this);
 }
 /**
  * Callback at ended constructor.
  */
 protected function init()
 {
     parent::init();
     $this->setTitle('message_form_permission.form_title');
     $this->setNote('message_form_permission.form_note');
     $role = $this->getRole();
     if (!$role->isGuest()) {
         $this->addElement(['plugin' => 'yesno', 'name' => 'message__chat', 'label' => 'message_form_permission.chat', 'note' => 'message_form_permission.chat_note', 'required' => true, 'value' => 1]);
     }
     if (!$role->isGuest()) {
         $this->addElement(['plugin' => 'yesno', 'name' => 'message__message', 'label' => 'message_form_permission.message', 'note' => 'message_form_permission.message_note', 'required' => true, 'value' => 1]);
     }
 }