Esempio n. 1
0
 /**
  *
  * @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;
 }
Esempio n. 2
0
 /**
  * @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;
 }
Esempio n. 3
0
 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;
 }
Esempio n. 4
0
 /**
  * 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;
 }
Esempio n. 6
0
 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);
 }
Esempio n. 7
0
 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();
     }
 }