/** * * @param $email * @param $name * @return BASE_CLASS_Mail */ public function setSender($email, $name = '') { if (!UTIL_Validator::isEmailValid($email)) { throw new InvalidArgumentException('Invalid argument `$email`'); } $this->state['sender'] = array($email, $name); return $this; }
/** * @see Validator::isValid() * * @param mixed $value */ public function isValid($value) { $language = OW::getLanguage(); if (!UTIL_Validator::isEmailValid($value)) { $this->setErrorMessage($language->text('base', 'join_error_email_not_valid')); return false; } else { if (BOL_UserService::getInstance()->isExistEmail($value)) { $this->setErrorMessage($language->text('base', 'join_error_email_already_exist')); return false; } } return true; }
public function createUser($username, $password, $email, $accountType = null, $emailVerify = false) { if (!UTIL_Validator::isEmailValid($email)) { throw new InvalidArgumentException('Invalid email!', self::CREATE_USER_INVALID_EMAIL); } if (!UTIL_Validator::isUserNameValid($username)) { throw new InvalidArgumentException('Invalid username!', self::CREATE_USER_INVALID_USERNAME); } if (!isset($password) || strlen($password) === 0) { throw new InvalidArgumentException('Invalid password!', self::CREATE_USER_INVALID_PASSWORD); } if ($this->isExistUserName($username)) { throw new LogicException('Duplicate username!', self::CREATE_USER_DUPLICATE_USERNAME); } if ($this->isExistEmail($email)) { throw new LogicException('Duplicate email!', self::CREATE_USER_DUPLICATE_EMAIL); } $userAccountType = $accountType; if ($userAccountType === null) { $userAccountType = ''; $accountTypes = BOL_QuestionService::getInstance()->findAllAccountTypes(); if (count($accountTypes) === 1) { $userAccountType = $accountTypes[0]->name; } } $user = new BOL_User(); $user->username = trim($username); $user->password = BOL_UserService::getInstance()->hashPassword($password); $user->email = trim($email); $user->joinStamp = time(); $user->activityStamp = time(); $user->accountType = $userAccountType; $user->joinIp = ip2long(OW::getRequest()->getRemoteAddress()); if ($emailVerify === true) { $user->emailVerify = true; } $this->saveOrUpdate($user); BOL_AuthorizationService::getInstance()->assignDefaultRoleToUser($user->id); return $user; }
/** * User list page controller * * @param array $params */ public function index(array $params) { $language = OW::getLanguage(); $userService = BOL_UserService::getInstance(); OW::getDocument()->getMasterPage()->getMenu(OW_Navigation::ADMIN_USERS)->getElement('sidebar_menu_item_users')->setActive(true); // invite members $form = new Form('invite-members'); $hidden = new HiddenField('invite_members'); $hidden->setValue('1'); $form->addElement($hidden); $emails = new Textarea('emails'); $form->addElement($emails); $emails->setRequired(); $emails->setHasInvitation(true); $emails->setInvitation($language->text('admin', 'invite_members_textarea_invitation_text', array('limit' => (int) OW::getConfig()->getValue('base', 'user_invites_limit')))); $submit = new Submit('submit'); $submit->setValue($language->text('admin', 'invite_members_submit_label')); $form->addElement($submit); $this->addForm($form); if (OW::getRequest()->isPost() && isset($_POST['invite_members'])) { if ($form->isValid($_POST)) { $data = $form->getValues(); $emails = array_unique(preg_split('/\\n/', $data['emails'])); $emailList = array(); foreach ($emails as $email) { if (UTIL_Validator::isEmailValid(trim($email))) { $emailList[] = trim($email); } } if (sizeof($emailList) > (int) OW::getConfig()->getValue('base', 'user_invites_limit')) { OW::getFeedback()->error($language->text('admin', 'invite_members_max_limit_message', array('limit' => (int) OW::getConfig()->getValue('base', 'user_invites_limit')))); $form->getElement('emails')->setValue($data['emails']); $this->redirect(); } if (empty($emailList)) { OW::getFeedback()->error($language->text('admin', 'invite_members_min_limit_message')); $form->getElement('emails')->setValue($data['emails']); $this->redirect(); } foreach ($emailList as $email) { BOL_UserService::getInstance()->sendAdminInvitation($email); } OW::getFeedback()->info($language->text('admin', 'invite_members_success_message')); $this->redirect(); } } $language->addKeyForJs('admin', 'invite_members_cap_label'); $language->addKeyForJs('admin', 'admin_suspend_floatbox_title'); $menu = $this->getMenu(); $this->addComponent('menu', $menu); if (!empty($_GET['search']) && !empty($_GET['search_by'])) { $extra = array('question' => $_GET['search_by'], 'value' => $_GET['search']); $type = 'search'; } else { $extra = null; $type = isset($params['list']) ? $params['list'] : 'recent'; } $buttons['suspend'] = array('name' => 'suspend', 'id' => 'suspend_user_btn', 'label' => $language->text('base', 'suspend_user_btn'), 'class' => 'ow_mild_red'); $buttons['suspend']['js'] = ' $("#suspend_user_btn").click(function(e){ e.preventDefault(); OW.ajaxFloatBox("ADMIN_CMP_SetSuspendMessage", [],{width: 520, title: OW.getLanguageText(\'admin\', \'admin_suspend_floatbox_title\')}); return false; }); '; $buttons['unverify'] = array('name' => 'email_unverify', 'id' => 'email_unverify_user_btn', 'label' => $language->text('base', 'mark_email_unverified_btn'), 'class' => 'ow_mild_red'); $buttons['unsuspend'] = array('name' => 'reactivate', 'id' => 'unsuspend_user_btn', 'label' => $language->text('base', 'unsuspend_user_btn'), 'class' => 'ow_mild_green'); $buttons['verify'] = array('name' => 'email_verify', 'id' => 'email_verify_user_btn', 'label' => $language->text('base', 'mark_email_verified_btn'), 'class' => 'ow_mild_green'); $buttons['approve'] = array('name' => 'approve', 'id' => 'approve_user_btn', 'label' => $language->text('base', 'approve_user_btn'), 'class' => 'ow_mild_green'); //$buttons['disapprove'] = array('name' => 'disapprove', 'id' => 'disapprove_user_btn', 'label' => $language->text('base', 'disapprove_user_btn'), 'class' => 'ow_mild_red'); $par = new ADMIN_UserListParams(); $par->setType($type); $par->setExtra($extra); switch ($type) { case 'recent': case 'search': $par->addButton($buttons['suspend']); $par->addButton($buttons['unsuspend']); $par->addButton($buttons['unverify']); $par->addButton($buttons['verify']); $par->addButton($buttons['approve']); //$par->addButton($buttons['disapprove']); break; case 'suspended': $par->addButton($buttons['unsuspend']); break; case 'unverified': $par->addButton($buttons['verify']); break; case 'unapproved': $par->addButton($buttons['approve']); break; } $usersCmp = new ADMIN_CMP_UserList($par); $this->addComponent('userList', $usersCmp); if (!OW::getRequest()->isAjax()) { OW::getDocument()->setHeading(OW::getLanguage()->text('admin', 'heading_browse_users')); OW::getDocument()->setHeadingIconClass('ow_ic_user'); $menuElement = $menu->getElement($type); if ($menuElement) { $menuElement->setActive(true); } } $this->assign('totalUsers', BOL_UserService::getInstance()->count(true)); $question = OW::getConfig()->getValue('base', 'display_name_question'); $searchQ = array($question => $language->text('base', 'questions_question_' . $question . '_label'), 'email' => $language->text('base', 'questions_question_email_label')); $this->assign('searchQ', $searchQ); $this->assign('currentSearch', array('question' => !empty($_GET['search_by']) ? $_GET['search_by'] : '', 'value' => !empty($_GET['search']) ? htmlspecialchars($_GET['search']) : '')); $this->assign('userSearchUrl', OW::getRouter()->urlForRoute('admin_users_browse')); }
/** * @see Validator::isValid() * * @param mixed $value */ public function isValid($value) { $language = OW::getLanguage(); if (!UTIL_Validator::isEmailValid($value)) { $this->setErrorMessage($language->text('base', 'join_error_email_not_valid')); return false; } if (BOL_UserService::getInstance()->isExistEmail($value)) { $userId = $this->userId; if (empty($this->userId)) { $userId = OW::getUser()->getId(); } $user = BOL_UserService::getInstance()->findUserById($userId); if ($value !== $user->email) { $this->setErrorMessage($language->text('base', 'join_error_email_already_exist')); return false; } } return true; }
public function ajaxResponder() { if (empty($_POST["command"]) || !OW::getRequest()->isAjax()) { throw new Redirect404Exception(); } $command = (string) $_POST["command"]; switch ($command) { case 'sendVerifyEmail': $result = false; $email = trim($_POST["email"]); if (UTIL_Validator::isEmailValid($email)) { OW::getConfig()->saveConfig('base', 'unverify_site_email', $email); $siteEmail = OW::getConfig()->getValue('base', 'site_email'); if ($siteEmail !== $email) { $type = 'info'; BOL_EmailVerifyService::getInstance()->sendSiteVerificationMail(false); $message = OW::getLanguage()->text('base', 'email_verify_verify_mail_was_sent'); $result = true; } else { $type = 'warning'; $message = OW::getLanguage()->text('admin', 'email_already_verify'); } } $responce = json_encode(array('result' => $result, 'type' => $type, 'message' => $message)); break; } exit($responce); }
public function site() { $this->setPageTitle('Site'); INSTALL::getStepIndicator()->activate('site'); $fieldData = array(); $fieldData['site_url'] = OW_URL_HOME; $fieldData['site_path'] = OW_DIR_ROOT; $sessionData = INSTALL::getStorage()->getAll(); $fieldData = array_merge($fieldData, $sessionData); $this->assign('data', $fieldData); $errors = array(); if (OW::getRequest()->isPost()) { $data = $_POST; $data = array_filter($data, 'trim'); $success = true; if (empty($data['site_title'])) { $errors[] = 'site_title'; } if (empty($data['site_url']) || !trim($data['site_url'])) { $errors[] = 'site_url'; } if (empty($data['site_path']) || !is_dir($data['site_path'])) { $errors[] = 'site_path'; } if (empty($data['admin_username']) || !UTIL_Validator::isUserNameValid($data['admin_username'])) { $errors[] = 'admin_username'; } if (empty($data['admin_password']) || strlen($data['admin_password']) < 3) { $errors[] = 'admin_password'; } if (empty($data['admin_email']) || !UTIL_Validator::isEmailValid($data['admin_email'])) { $errors[] = 'admin_email'; } $this->processData($data); if (empty($errors)) { $this->redirect(OW::getRouter()->urlForRoute('db')); } foreach ($errors as $flag) { INSTALL::getFeedback()->errorFlag($flag); } $this->redirect(); } }