public function run($token) { $module = Yii::app()->getModule('user'); // Пытаемся найти пользователя по токену, // в противном случае - ошибка: if (Yii::app()->userManager->activateUser($token)) { // Сообщаем пользователю: Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('UserModule.user', 'You activate account successfully. Now you can login!')); $redirect = array($module->accountActivationSuccess); $programId = Yii::app()->request->getParam('programId', null); $subscriptionType = Yii::app()->request->getParam('subscriptionType', null); // Переадресация на страницу подписки if (!empty($programId) && !empty($subscriptionType)) { Yii::import("application.modules.classroom.models.*"); $programm = CourseType::model()->published()->findByPK((int) $programId); if ($programm) { $redirect = $programm->getSubscriptionUrl($subscriptionType); } } // Выполняем переадресацию на соответствующую страницу: $this->controller->redirect($redirect); } // Сообщаем об ошибке: Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::ERROR_MESSAGE, Yii::t('UserModule.user', 'There was a problem with the activation of the account. Please refer to the site\'s administration.')); // Переадресовываем на соответствующую ошибку: $this->controller->redirect(array($module->accountActivationFailure)); }
public function loadModel($id) { if (($model = CourseType::model()->findByPk($id)) === null) { throw new CHttpException(404, 'Страница не найдена'); } return $model; }
public function run() { if (Yii::app()->user->isAuthenticated()) { $this->controller->redirect(Yii::app()->user->returnUrl); } /** * Если было совершено больше 3х попыток входа * в систему, используем сценарий с капчей: **/ $badLoginCount = Yii::app()->authenticationManager->getBadLoginCount(Yii::app()->user); //@TODO 3 вынести в настройки модуля $scenario = $badLoginCount > 3 ? 'loginLimit' : ''; $form = new LoginForm('login'); $module = Yii::app()->getModule('user'); if (Yii::app()->getRequest()->getIsPostRequest() && !empty($_POST['LoginForm'])) { if (!empty($_POST['programId'])) { Yii::app()->user->setState('programId', (int) $_POST['programId']); } if (!empty($_POST['subscriptionType'])) { Yii::app()->user->setState('subscriptionType', $_POST['subscriptionType']); } $form->setAttributes(Yii::app()->request->getPost('LoginForm')); $form->remember_me = 1; if ($form->validate() && Yii::app()->authenticationManager->login($form, Yii::app()->user, Yii::app()->request)) { Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, 'Вы успешно авторизованы!'); if (Yii::app()->user->isSuperUser() && $module->loginAdminSuccess) { $redirect = array($module->loginAdminSuccess); } else { $redirect = empty($module->loginSuccess) ? Yii::app()->baseUrl : $module->loginSuccess; } Yii::app()->authenticationManager->setBadLoginCount(Yii::app()->user, 0); // Переадресация на страницу подписки if (Yii::app()->user->getState('programId') !== null && Yii::app()->user->getState('subscriptionType') !== null) { Yii::import("application.modules.classroom.models.*"); $programm = CourseType::model()->published()->findByPK((int) Yii::app()->user->getState('programId')); $redirect = $programm->getSubscriptionUrl(Yii::app()->user->getState('subscriptionType')); Yii::app()->user->setState('programId', null); Yii::app()->user->setState('subscriptionType', null); } if (Yii::app()->getRequest()->getIsAjaxRequest()) { Yii::app()->ajax->success($redirect); } else { $this->controller->redirect($redirect); } } else { $form->addError('hash', 'Вы ввели неправильный E-mail или Пароль'); Yii::app()->authenticationManager->setBadLoginCount(Yii::app()->user, $badLoginCount + 1); if (Yii::app()->getRequest()->getIsAjaxRequest()) { $errors = array(); foreach ($form->getErrors() as $error) { $errors[] = $error[0]; } Yii::app()->ajax->failure(implode('<br />', $errors)); } } } $this->controller->render($this->id, array('model' => $form)); }
public function run() { if (Yii::app()->user->isAuthenticated() === false) { $this->controller->redirect(Yii::app()->user->loginUrl); } if (($user = Yii::app()->user->getProfile()) === null) { Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::ERROR_MESSAGE, Yii::t('UserModule.user', 'User not found.')); Yii::app()->user->logout(); $this->controller->redirect((array) '/user/account/login'); } // Определяем программу, для которой необходимо загрузить интересные мысли $programId = (int) Yii::app()->request->getParam('programId'); $program = CourseType::model()->published()->findByPk($programId); // Определяем, подписан ли данный пользователь на эту программу if (!$program || !Subscription::model()->isUserSubscribed($user, $program)) { throw new CHttpException(404); } //$quotes = Quote::model()->user($user->id)->program($program->id)->findAll(); $dataProvider = new CActiveDataProvider(Quote::model()->user($user->id)->program($program->id)->with('user', 'courseType', 'block', 'block.entity', 'block.entity.day'), array('pagination' => array('pageVar' => 'page', 'pageSize' => 10), 'sort' => array('defaultOrder' => 't.id ASC'))); $this->controller->render('interest', array('program' => $program, 'dataProvider' => $dataProvider)); }
public function actionCart($courseAlias, $typeAlias) { // Авторизован ли пользователь if (Yii::app()->user->isAuthenticated() === false) { $this->redirect(Yii::app()->user->loginUrl); } if (($user = Yii::app()->user->getProfile()) === null) { Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::ERROR_MESSAGE, Yii::t('UserModule.user', 'User not found.')); Yii::app()->user->logout(); $this->redirect((array) '/user/account/login'); } // Вид курса $courseType = CourseType::model()->findByCourseAndType($courseAlias, $typeAlias); if (!$courseType) { throw new CHttpException(404); } // Подписка $criteria = new CDbCriteria(); $criteria->compare('t.type', Subscription::TYPE_FULL); $criteria->compare('t.status', Subscription::STATUS_INACTIVE); $criteria->compare('t.user_id', $user->id); $criteria->compare('t.course_type_id', $courseType->id); $subscription = Subscription::model()->with(array('user', 'courseType', 'coupon'))->find($criteria); if (!$subscription) { throw new CHttpException(404); } // Если введен 100%-й купон if (!empty($subscription->coupon_id) && $subscription->total_cost == 0) { // Вызываем метод, обрабатывающий оплату $subscription->pay(); $this->redirect(array('/user/account/index')); } elseif (empty($subscription->coupon_id)) { $subscription->total_cost = $courseType->price; $subscription->update(array('total_cost')); } // Способы оплаты $dictionaryGroup = DictionaryGroup::model()->findByCode('payment-methods'); $paymentMethods = $dictionaryGroup != null ? $dictionaryGroup->getData() : array(); // Робокасса $paymentSystem = Yii::app()->paymentManager->getPaymentSystemObject('robokassa'); // Вывод в шаблон $this->render('cart', array('subscription' => $subscription, 'courseType' => $courseType, 'paymentMethods' => $paymentMethods, 'paymentSystem' => $paymentSystem)); }
public function actionShow($courseAlias, $typeAlias) { // Авторизован ли пользователь if (Yii::app()->user->isAuthenticated() === false) { $this->redirect(Yii::app()->user->loginUrl); } if (($user = Yii::app()->user->getProfile()) === null) { Yii::app()->user->setFlash(yupe\widgets\YFlashMessages::ERROR_MESSAGE, Yii::t('UserModule.user', 'User not found.')); Yii::app()->user->logout(); $this->redirect((array) '/user/account/login'); } // Вид курса $courseType = CourseType::model()->published()->with('course')->find('course.alias = :courseAlias AND t.alias = :typeAlias', array(':courseAlias' => $courseAlias, ':typeAlias' => $typeAlias)); if (!$courseType) { throw new CHttpException(404); } if (Yii::app()->user->isSuperUser()) { // Админ может просматривать любой тип курса if ($_GET['adminPackageId'] != '') { $adminPackageId = (int) Yii::app()->getRequest()->getParam('adminPackageId'); if ($adminPackageId > 0) { Yii::app()->user->setState('adminPackageId', $adminPackageId); } else { Yii::app()->user->setState('adminPackageId', null); } } // Админ может просматривать курс с данными другого пользователя if ($_GET['adminUserId'] != '') { $adminUserId = (int) Yii::app()->getRequest()->getParam('adminUserId'); if ($adminUserId > 0) { Yii::app()->user->setState('adminUserId', $adminUserId); } else { Yii::app()->user->setState('adminUserId', null); } } // Подмена данных пользователя для администратора if (Yii::app()->user->getState('adminUserId') !== null) { $viewedUser = User::model()->findByPK((int) Yii::app()->user->getState('adminUserId')); if ($viewedUser) { $user->code = $viewedUser->code; $user->profile->setAttributes(array('name' => $viewedUser->profile->name, 'gender' => $viewedUser->profile->gender, 'birth_date' => $viewedUser->profile->birth_date, 'birth_time' => $viewedUser->profile->birth_time, 'city_id' => $viewedUser->profile->city_id)); $user->profile->city = $viewedUser->profile->city; } } } // Пакет if (Yii::app()->user->isSuperUser() && Yii::app()->user->getState('adminPackageId') !== null) { // Админ может просмотреть любой пакет $packageId = (int) Yii::app()->user->getState('adminPackageId'); $this->package = Package::model()->published()->findByPK($packageId); } else { // Остальным подбираем пакет в зависимости от указанных данных $this->package = Package::model()->published()->find('t.type_id = :type_id AND t.gender = :gender AND t.notime = :notime', array(':type_id' => $courseType->id, ':gender' => $user->profile->gender, ':notime' => $user->profile->birth_time === null)); } if (!$this->package) { throw new CHttpException(404); } // День $dayNumber = (int) Yii::app()->getRequest()->getParam('day', 1); $this->day = $day = Day::model()->published()->package($this->package->id)->findByNumber($dayNumber); if (!$day) { throw new CHttpException(404); } // Страница $pageNumber = (int) Yii::app()->getRequest()->getParam('page', 1); $page = Page::model()->published()->day($day->id)->with(array('blocks' => array('scopes' => 'published', 'order' => 'blocks.sort ASC')))->findByNumber($pageNumber); if (!$page) { throw new CHttpException(404); } // Определяем, имеет ли пользователь доступ к выбранной странице курса $this->_checkPermissions($user, $courseType, $dayNumber, $pageNumber); // Запоминаем последнюю прочитанную страницу для пользователя LastReadPage::model()->fixLastPage($user, $courseType, $page); // Определяем предыдущую и следующую страницы $prevPage = $page->getPrevPage(); $nextPage = $page->getNextPage(); // Выделяем интересную мысль, если она указана $quoteText = ''; $highlightId = Yii::app()->getRequest()->getParam('highlight', null); if (!empty($highlightId)) { $quote = Quote::model()->findByPk($highlightId); $quoteText = $quote ? $quote->content : ''; } // Вывод в шаблон $this->render('show', array('package' => $this->package, 'day' => $day, 'page' => $page, 'nextPage' => $nextPage, 'prevPage' => $prevPage, 'quoteText' => $quoteText)); }
public function findByCourseAndType($courseAlias, $typeAlias) { return CourseType::model()->published()->with('course')->find('course.alias = :courseAlias AND t.alias = :typeAlias', array(':courseAlias' => $courseAlias, ':typeAlias' => $typeAlias)); }
<?php $this->widget('yupe\\widgets\\OGridView', array('id' => 'package-grid', 'type' => 'striped bordered', 'dataProvider' => $model->search(), 'filter' => $model, 'template' => "<div class='info'>{summary}</div>\n{items}\n", 'columns' => array(array('name' => 'id', 'htmlOptions' => array('style' => 'width: 30px;')), array('name' => 'search_course_id', 'type' => 'raw', 'value' => '$data->type->course->title', 'filter' => CourseType::model()->courseList), array('name' => 'title', 'class' => 'yupe.widgets.CustomEditableColumn', 'editable' => array('placement' => 'right')), !empty($course) ? array('name' => 'type_id', 'type' => 'raw', 'value' => '$data->typeTitle', 'class' => 'yupe.widgets.CustomEditableColumn', 'editable' => array('placement' => 'right', 'type' => 'select', 'source' => $course->courseTypesList)) : array('name' => 'type_id', 'type' => 'raw', 'value' => '$data->typeTitle', 'filter' => false), array('name' => 'gender', 'type' => 'raw', 'value' => '$data->getGender()', 'filter' => $model->genderList, 'class' => 'yupe.widgets.CustomEditableColumn', 'editable' => array('placement' => 'right', 'type' => 'select', 'source' => $model->genderList)), array('name' => 'notime', 'type' => 'raw', 'value' => '$data->notimeTitle', 'filter' => $model->notimeList, 'class' => 'yupe.widgets.CustomEditableColumn', 'editable' => array('placement' => 'right', 'type' => 'select', 'source' => $model->notimeList)), array('class' => 'yupe\\widgets\\columns\\EditableStatusColumn', 'name' => 'status', 'source' => $model->statusList, 'options' => array(Package::STATUS_PUBLISHED => array('class' => 'label-success'), Package::STATUS_DRAFT => array('class' => 'label-default')), 'htmlOptions' => array('style' => 'width:150px')), array('type' => 'raw', 'value' => 'CHtml::link("Расписание", array("/classroom/dayBackend/index", "package_id" => $data->id))'), array('type' => 'raw', 'value' => 'CHtml::link("Структура", array("/classroom/pageBackend/index", "package_id" => $data->id))'), array('type' => 'raw', 'value' => 'CHtml::link("Просмотр пакета", $data->getUrl() . "?adminPackageId=" . $data->id, array("target" => "_blank"))'), array('class' => 'bootstrap.widgets.TbButtonColumn', 'template' => '{duplicate}{delete}', 'buttons' => array('duplicate' => array('icon' => 'wrench', 'label' => 'Дублировать', 'url' => 'array("duplicate", "id" => $data->id)', 'click' => 'js:function(){return confirm("Вы действительно хотите скопировать пакет?")}')), 'htmlOptions' => array('style' => 'width: 80px; text-align: right;')))));
<?php $this->widget('yupe\\widgets\\OGridView', array('id' => 'poll-grid', 'type' => 'condensed', 'dataProvider' => $model->search(), 'filter' => $model, 'columns' => array(array('name' => 'title', 'class' => 'yupe.widgets.CustomEditableColumn', 'editable' => array('placement' => 'right')), array('name' => 'course_id', 'type' => 'raw', 'value' => '$data->course->title', 'filter' => CourseType::model()->courseList), array('header' => Yii::t('PollModule.poll', 'Вопросы'), 'type' => 'raw', 'value' => 'CHtml::link("Вопросов: " . $data->questionsCount, array("/poll/questionBackend/index", "poll_id" => $data->id))'), array('header' => 'Результаты', 'type' => 'raw', 'value' => 'CHtml::link("Результаты опроса", array("/poll/pollBackend/results", "id" => $data->id))'), array('class' => 'yupe\\widgets\\columns\\EditableStatusColumn', 'name' => 'status', 'source' => $model->statusList, 'options' => array(Poll::STATUS_ACTIVE => array('class' => 'label-success'), Poll::STATUS_DELETED => array('class' => 'label-default')), 'htmlOptions' => array('style' => 'width:150px')), array('class' => 'bootstrap.widgets.TbButtonColumn', 'template' => '{delete}', 'htmlOptions' => array('style' => 'width: 80px; text-align: right;')))));
} }'))); ?> <?php echo $form->errorSummary($model); ?> <fieldset class="inline"> <div class="row-fluid"> <div class="span3 control-group <?php echo $model->hasErrors('course_id') ? 'error' : ''; ?> "> <?php echo $form->dropdownListRow($model, 'course_id', CourseType::model()->courseList, array('class' => 'span12', 'empty' => 'Выберите курс')); ?> </div> <div class='span6 control-group <?php echo $model->hasErrors("title") ? "error" : ""; ?> '> <?php echo $form->textFieldRow($model, 'title', array('class' => 'span12', 'maxlength' => 250)); ?> </div> <div class="span2 control-group"> <label> </label> <?php