/** * Get user info * * @param integer $userId * @param integer $viewerId * @param string $viewerNickName * @return array */ public function getXmlRpcUserInfo($userId, $viewerId, $viewerNickName) { if (null != ($userInfo = parent::getUserInfo($userId))) { // remove all private fields foreach ($this->privateFields as $privateField) { if (isset($userInfo[$privateField])) { unset($userInfo[$privateField]); } } } // fire the get user info via XmlRpc event UserEvent::fireGetUserInfoViaXmlRpcEvent($userInfo['user_id'], $userInfo['nick_name'], $viewerId, $viewerNickName); return $userInfo; }
/** * Test delete user home directory */ public function testDeleteUserHomeDirectory() { // test user data $data = ['nick_name' => Rand::getString(32), 'email' => Rand::getString(32), 'api_key' => Rand::getString(32), 'role' => AclModelBase::DEFAULT_ROLE_MEMBER, 'language' => null]; // create a test user $query = $this->userModel->insert()->into('user_list')->values($data); $statement = $this->userModel->prepareStatementForSqlObject($query); $statement->execute(); $testUserId = $this->userModel->getAdapter()->getDriver()->getLastGeneratedValue(); // create a test user's home directory $homeUserDirectory = FileManagerBaseModel::getUserBaseFilesDir($testUserId) . '/' . FileManagerBaseModel::getHomeDirectoryName(); FileSystemUtility::createDir($homeUserDirectory); // fire the delete user event UserEvent::fireUserDeleteEvent($testUserId, $data); // delete the created user $query = $this->userModel->delete()->from('user_list')->where(['user_id' => $testUserId]); $statement = $this->userModel->prepareStatementForSqlObject($query); $statement->execute(); // home directory must be deleted $this->assertFalse(file_exists($homeUserDirectory)); }
/** * Validate nickname * * @param $value * @param array $context * @return boolean */ public function validateNickname($value, array $context = []) { return $this->model->isNickNameFree($value, $this->userId); }
/** * Init view helpers */ public function getViewHelperConfig() { return ['invokables' => ['userLoginWidget' => 'User\\View\\Widget\\UserLoginWidget', 'userRegisterWidget' => 'User\\View\\Widget\\UserRegisterWidget', 'userActivateWidget' => 'User\\View\\Widget\\UserActivateWidget', 'userForgotWidget' => 'User\\View\\Widget\\UserForgotWidget', 'userPasswordResetWidget' => 'User\\View\\Widget\\UserPasswordResetWidget', 'userDeleteWidget' => 'User\\View\\Widget\\UserDeleteWidget', 'userInfoWidget' => 'User\\View\\Widget\\UserInfoWidget', 'userAvatarWidget' => 'User\\View\\Widget\\UserAvatarWidget', 'userDashboardWidget' => 'User\\View\\Widget\\UserDashboardWidget', 'userDashboardUserInfoWidget' => 'User\\View\\Widget\\UserDashboardUserInfoWidget', 'userEditWidget' => 'User\\View\\Widget\\UserEditWidget', 'userDashboardAdministrationWidget' => 'User\\View\\Widget\\UserDashboardAdministrationWidget'], 'factories' => ['userAvatarUrl' => function () { $thumbDir = ApplicationService::getResourcesUrl() . UserBaseModel::getThumbnailsDir(); $avatarDir = ApplicationService::getResourcesUrl() . UserBaseModel::getAvatarsDir(); return new \User\View\Helper\UserAvatarUrl($thumbDir, $avatarDir); }, 'userMenu' => function () { $userMenu = $this->serviceLocator->get('Application\\Model\\ModelManager')->getInstance('User\\Model\\UserMenu'); return new \User\View\Helper\UserMenu($userMenu->getMenu()); }, 'userIdentity' => function () { return new \User\View\Helper\UserIdentity(UserIdentityService::getCurrentUserIdentity()); }, 'userIsGuest' => function () { return new \User\View\Helper\UserIsGuest(UserIdentityService::isGuest()); }]]; }
/** * Get form instance * * @return object */ public function getForm() { // get form builder if (!$this->form) { // remove the captcha field if (!$this->isCaptchaEnabled) { unset($this->formElements['captcha']); } // skip some required flags if ($this->userId) { $this->formElements['password']['required'] = false; $this->formElements['confirm_password']['required'] = false; $this->formElements['avatar']['required'] = false; } // add preview for the avatar if ($this->avatar) { $this->formElements['avatar']['extra_options']['preview'] = true; $this->formElements['avatar']['extra_options']['file_url'] = ApplicationService::getResourcesUrl() . UserBaseModel::getThumbnailsDir() . $this->avatar; } // add descriptions params $this->formElements['nick_name']['description_params'] = [SettingService::getSetting('user_nickname_min'), SettingService::getSetting('user_nickname_max')]; // add extra validators $this->formElements['slug']['validators'] = [['name' => 'callback', 'options' => ['callback' => [$this, 'validateSlug'], 'message' => 'Display name already used']]]; $this->formElements['confirm_password']['validators'] = [['name' => 'callback', 'options' => ['callback' => [$this, 'validatePassword'], 'message' => 'Passwords do not match']]]; $this->formElements['password']['validators'] = [['name' => 'callback', 'options' => ['callback' => [$this, 'validatePassword'], 'message' => 'Passwords do not match']]]; // validate email $this->formElements['email']['validators'] = [['name' => 'callback', 'options' => ['callback' => [$this, 'validateEmail'], 'message' => 'Email already used']]]; // validate nickname $this->formElements['nick_name']['validators'] = [['name' => 'callback', 'options' => ['callback' => [$this, 'validateNickname'], 'message' => 'Nickname already used']]]; $this->formElements['nick_name']['max_length'] = (int) SettingService::getSetting('user_nickname_max'); $this->formElements['nick_name']['min_length'] = (int) SettingService::getSetting('user_nickname_min'); // fill the form with default values $this->formElements['time_zone']['values'] = $this->timeZones; $this->form = new ApplicationCustomFormBuilder($this->formName, $this->formElements, $this->translator, $this->ignoredElements, $this->notValidatedElements, $this->method); } return $this->form; }