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(); } } }
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; }