Ejemplo n.º 1
0
 public function resetPassword($params)
 {
     //mehul change
     // add main menu
     $mainMenu = new BASE_CMP_MainMenu();
     //$this->addMenu(BOL_NavigationService::MENU_TYPE_MAIN, $mainMenu);
     $this->addComponent('main_menu', $mainMenu);
     // add bottom menu
     $bottomMenu = new BASE_CMP_BottomMenu();
     //$this->addMenu(BOL_NavigationService::MENU_TYPE_BOTTOM, $bottomMenu);
     $this->addComponent('bottom_menu', $bottomMenu);
     $this->assign('site_url', OW_URL_HOME);
     $this->assign('theme_css_url', OW_URL_STATIC . "themes/morning/");
     //mehul change over
     $language = OW::getLanguage();
     if (OW::getUser()->isAuthenticated()) {
         $this->redirect(OW::getRouter()->urlForRoute('base_member_dashboard'));
     }
     $this->setPageHeading($language->text('base', 'reset_password_heading'));
     if (empty($params['code'])) {
         throw new Redirect404Exception();
     }
     $resetCode = $this->userService->findResetPasswordByCode($params['code']);
     if ($resetCode == null) {
         throw new RedirectException(OW::getRouter()->urlForRoute('base.reset_user_password_expired_code'));
     }
     $user = $this->userService->findUserById($resetCode->getUserId());
     if ($user === null) {
         throw new Redirect404Exception();
     }
     $form = $this->userService->getResetPasswordForm();
     $this->addForm($form);
     $this->assign('formText', $language->text('base', 'reset_password_form_text', array('username' => $user->getUsername())));
     OW::getDocument()->getMasterPage()->setTemplate(OW::getThemeManager()->getMasterPageTemplate(OW_MasterPage::TEMPLATE_BLANK));
     if (OW::getRequest()->isPost()) {
         if ($form->isValid($_POST)) {
             $data = $form->getValues();
             try {
                 $this->userService->processResetPasswordForm($data, $user, $resetCode);
             } catch (LogicException $e) {
                 OW::getFeedback()->error($e->getMessage());
                 $this->redirect();
             }
             OW::getFeedback()->info(OW::getLanguage()->text('base', 'reset_password_success_message'));
             $this->redirect(OW::getRouter()->urlForRoute('static_sign_in'));
         } else {
             OW::getFeedback()->error('Invalid Data');
             $this->redirect();
         }
     }
 }
Ejemplo n.º 2
0
 public function resetPassword($params)
 {
     $language = OW::getLanguage();
     if (OW::getUser()->isAuthenticated()) {
         $this->redirect(OW::getRouter()->urlForRoute('base_member_dashboard'));
     }
     $this->setPageHeading($language->text('base', 'reset_password_heading'));
     if (empty($params['code'])) {
         throw new Redirect404Exception();
     }
     $resetCode = $this->userService->findResetPasswordByCode($params['code']);
     if ($resetCode == null) {
         throw new RedirectException(OW::getRouter()->urlForRoute('base.reset_user_password_expired_code'));
     }
     $user = $this->userService->findUserById($resetCode->getUserId());
     if ($user === null) {
         throw new Redirect404Exception();
     }
     $form = $this->userService->getResetPasswordForm();
     $this->addForm($form);
     $this->assign('formText', $language->text('base', 'reset_password_form_text', array('username' => $user->getUsername())));
     OW::getDocument()->getMasterPage()->setTemplate(OW::getThemeManager()->getMasterPageTemplate(OW_MasterPage::TEMPLATE_BLANK));
     if (OW::getRequest()->isPost()) {
         if ($form->isValid($_POST)) {
             $data = $form->getValues();
             try {
                 $this->userService->processResetPasswordForm($data, $user, $resetCode);
             } catch (LogicException $e) {
                 OW::getFeedback()->error($e->getMessage());
                 $this->redirect();
             }
             OW::getFeedback()->info(OW::getLanguage()->text('base', 'reset_password_success_message'));
             $this->redirect(OW::getRouter()->urlForRoute('static_sign_in'));
         } else {
             OW::getFeedback()->error('Invalid Data');
             $this->redirect();
         }
     }
 }
 /**
  * Save questions data.
  *
  * @param array $data
  * @param int $userId
  */
 public function saveQuestionsData(array $data, $userId)
 {
     if ($data === null || !is_array($data)) {
         return false;
     }
     $user = null;
     if ((int) $userId > 0) {
         $user = $this->userService->findUserById($userId);
         if ($user === null) {
             return false;
         }
     } else {
         return false;
     }
     $oldUserEmail = $user->email;
     $event = new OW_Event('base.questions_save_data', array('userId' => $userId), $data);
     OW::getEventManager()->trigger($event);
     $data = $event->getData();
     $dataFields = array_keys($data);
     $questions = $this->questionDao->findQuestionsByQuestionNameList($dataFields);
     $questionsData = $this->dataDao->findByQuestionsNameList($dataFields, $userId);
     $questionsUserData = array();
     foreach ($questionsData as $questionData) {
         $questionsUserData[$questionData->questionName] = $questionData;
     }
     $questionDataArray = array();
     foreach ($questions as $key => $question) {
         $value = null;
         if (isset($data[$question->name])) {
             switch ($question->type) {
                 case self::QUESTION_VALUE_TYPE_TEXT:
                     $value = $question->presentation !== self::QUESTION_PRESENTATION_PASSWORD ? $this->questionTextFormatter(trim($data[$question->name])) : BOL_UserService::getInstance()->hashPassword($data[$question->name]);
                     if ((int) $question->base === 1 && in_array($question->name, $dataFields)) {
                         $property = new ReflectionProperty('BOL_User', $question->name);
                         $property->setValue($user, $value);
                     } else {
                         if (isset($questionsUserData[$question->name])) {
                             $questionData = $questionsUserData[$question->name];
                         } else {
                             $questionData = new BOL_QuestionData();
                             $questionData->userId = $userId;
                             $questionData->questionName = $question->name;
                         }
                         $questionData->textValue = $value;
                         if ($question->presentation === self::QUESTION_PRESENTATION_URL && !empty($value)) {
                             $questionData->textValue = $this->urlFilter($value);
                         }
                         $questionDataArray[] = $questionData;
                         //$this->dataDao->save($questionData);
                     }
                     break;
                 case self::QUESTION_VALUE_TYPE_DATETIME:
                     $date = UTIL_DateTime::parseDate($data[$question->name], UTIL_DateTime::DEFAULT_DATE_FORMAT);
                     if (!isset($date)) {
                         $date = UTIL_DateTime::parseDate($data[$question->name], UTIL_DateTime::MYSQL_DATETIME_DATE_FORMAT);
                     }
                     if (isset($date)) {
                         if (UTIL_Validator::isDateValid($date[UTIL_DateTime::PARSE_DATE_MONTH], $date[UTIL_DateTime::PARSE_DATE_DAY], $date[UTIL_DateTime::PARSE_DATE_YEAR])) {
                             $value = $date[UTIL_DateTime::PARSE_DATE_YEAR] . '-' . $date[UTIL_DateTime::PARSE_DATE_MONTH] . '-' . $date[UTIL_DateTime::PARSE_DATE_DAY];
                             if ((int) $question->base === 1 && in_array($question->name, $dataFields)) {
                                 $property = new ReflectionProperty('BOL_User', $question->name);
                                 $property->setValue($user, $value);
                             } else {
                                 if (isset($questionsUserData[$question->name])) {
                                     $questionData = $questionsUserData[$question->name];
                                 } else {
                                     $questionData = new BOL_QuestionData();
                                     $questionData->userId = $userId;
                                     $questionData->questionName = $question->name;
                                 }
                                 $questionData->dateValue = $value;
                                 $questionDataArray[] = $questionData;
                             }
                         }
                     }
                     break;
                 case self::QUESTION_VALUE_TYPE_MULTISELECT:
                     if (!empty($data[$question->name]) && is_array($data[$question->name])) {
                         $value = array_sum($data[$question->name]);
                     }
                 case self::QUESTION_VALUE_TYPE_SELECT:
                     if (!isset($value)) {
                         $value = (int) $data[$question->name];
                     }
                     if ((int) $question->base === 1 && in_array($question->name, $dataFields)) {
                         $property = new ReflectionProperty('BOL_User', $question->name);
                         $property->setValue($user, $value);
                     } else {
                         if (isset($questionsUserData[$question->name])) {
                             $questionData = $questionsUserData[$question->name];
                         } else {
                             $questionData = new BOL_QuestionData();
                             $questionData->userId = $userId;
                             $questionData->questionName = $question->name;
                         }
                         $questionData->intValue = $value;
                         $questionDataArray[] = $questionData;
                         //$this->dataDao->save($questionData);
                     }
                     break;
                 case self::QUESTION_VALUE_TYPE_BOOLEAN:
                     $value = false;
                     $issetValues = array('1', 'true', 'on');
                     if (in_array(mb_strtolower((string) $data[$question->name]), $issetValues)) {
                         $value = true;
                     }
                     if ((int) $question->base === 1 && in_array($question->name, $dataFields)) {
                         $property = new ReflectionProperty('BOL_User', $question->name);
                         $property->setValue($user, $value);
                     } else {
                         if (isset($questionsUserData[$question->name])) {
                             $questionData = $questionsUserData[$question->name];
                         } else {
                             $questionData = new BOL_QuestionData();
                             $questionData->userId = $userId;
                             $questionData->questionName = $question->name;
                         }
                         $questionData->intValue = $value;
                         $questionDataArray[] = $questionData;
                         //$this->dataDao->save($questionData);
                     }
                     break;
             }
         }
     }
     $sendVerifyMail = false;
     if ($user->id !== null) {
         if (strtolower($user->email) !== strtolower($oldUserEmail)) {
             $user->emailVerify = false;
             $sendVerifyMail = true;
         }
         if (!empty($data['accountType'])) {
             $accountType = $this->findAccountTypeByName($data['accountType']);
             $accountTypeOld = $this->findAccountTypeByName($user->accountType);
             if (!empty($accountType)) {
                 $user->accountType = $accountType->name;
                 $this->updateQuestionsEditStamp();
             }
         }
     }
     //printVar($user);
     $this->userService->saveOrUpdate($user);
     if (count($questionDataArray) > 0) {
         $this->dataDao->batchReplace($questionDataArray);
     }
     if ($sendVerifyMail && OW::getConfig()->getValue('base', 'confirm_email')) {
         BOL_EmailVerifyService::getInstance()->sendUserVerificationMail($user);
     }
     return true;
 }