/** * This function performs the validation work for complex object models. * * In addition to checking the current object, all related objects will * also be validated. If all pass then <code>true</code> is returned; otherwise * an aggreagated array of ValidationFailed objects will be returned. * * @param array $columns Array of column names to validate. * @return mixed <code>true</code> if all validations pass; array of <code>ValidationFailed</code> objets otherwise. */ protected function doValidate($columns = null) { if (!$this->alreadyInValidation) { $this->alreadyInValidation = true; $retval = null; $failureMap = array(); // We call the validate method on the following object(s) if they // were passed to this object by their coresponding set // method. This object relates to these object(s) by a // foreign key reference. if ($this->aSeries !== null) { if (!$this->aSeries->validate($columns)) { $failureMap = array_merge($failureMap, $this->aSeries->getValidationFailures()); } } if ($this->aReview !== null) { if (!$this->aReview->validate($columns)) { $failureMap = array_merge($failureMap, $this->aReview->getValidationFailures()); } } if ($this->aScore !== null) { if (!$this->aScore->validate($columns)) { $failureMap = array_merge($failureMap, $this->aScore->getValidationFailures()); } } if (($retval = ModelPeer::doValidate($this, $columns)) !== true) { $failureMap = array_merge($failureMap, $retval); } if ($this->collConfigs !== null) { foreach ($this->collConfigs as $referrerFK) { if (!$referrerFK->validate($columns)) { $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures()); } } } if ($this->collReviews !== null) { foreach ($this->collReviews as $referrerFK) { if (!$referrerFK->validate($columns)) { $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures()); } } } if ($this->collScores !== null) { foreach ($this->collScores as $referrerFK) { if (!$referrerFK->validate($columns)) { $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures()); } } } if ($this->collUserMetas !== null) { foreach ($this->collUserMetas as $referrerFK) { if (!$referrerFK->validate($columns)) { $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures()); } } } $this->alreadyInValidation = false; } return !empty($failureMap) ? $failureMap : true; }
public function actionCreate() { $model = new Review(); if (isset($_POST['Review'])) { $model->attributes = $_POST['Review']; if ($model->validate() && $model->save()) { $this->redirect(array('index')); } } $statuses = array(0 => Yii::t('common', 'Disabled'), 1 => Yii::t('common', 'Enabled')); $this->render('create', array('model' => $model, 'statuses' => $statuses)); }
public function actionView($id) { $teacher = $this->loadModel($id); $this->_seoTitle = '名师 - ' . $teacher->name; $userId = $this->_cookiesGet('userId'); $userType = $this->_cookiesGet('userType'); $reviewModel = new Review(); if ($userType === 'student' and isset($_POST['Review'])) { $reviewModel->attributes = $_POST['Review']; $reviewModel->teacher_id = $id; $reviewModel->student_id = $userId; $reviewModel->ctime = time(); if ($reviewModel->validate() and $reviewModel->save()) { Yii::app()->user->setFlash('success', '保存成功'); } } $criteria = new CDbCriteria(); $books = Book::model()->findAllByAttributes(array('teacher_id' => $id)); $lessons = array(); $reviews = array(); $list = yii::app()->request->getParam('list'); if ($list === null or $list === 'lesson') { $model = Lesson::model(); $count = $model->count($criteria->addCondition("teacher_id = {$id}")); $pager = new CPagination($count); $pager->pageSize = 4; $pager->applyLimit($criteria); $lessons = $model->findAll($criteria); } else { $model = Review::model(); $count = $model->count($criteria->addCondition("teacher_id = {$id}")); $pager = new CPagination($count); $pager->pageSize = 4; $pager->applyLimit($criteria); $reviews = Yii::app()->db->createCommand()->select('s.*, r.contents, r.ctime')->from('seed_review r')->leftjoin('seed_student s', 's.id=r.student_id')->where('r.teacher_id=:teacher_id', array(':teacher_id' => $id))->order('ctime desc')->limit(4, $pager->currentPage * $pager->pageSize)->queryAll(); } //判断学员已关注老师 if ($userType === 'student') { $is_focus = StudentTeacher::model()->findByAttributes(array('student_id' => $userId, 'teacher_id' => $id)); } $this->render('view', array('is_focus' => $is_focus, 'teacher' => $teacher, 'lessons' => $lessons, 'reviews' => $reviews, 'books' => $books, 'userType' => $userType, 'reviewModel' => $reviewModel, 'count' => $count, 'pager' => $pager, 'list' => $_GET['list'])); }
/** * AJAX response for review AJAX request. */ public function actionReview() { $review = new Review(); $review->attributes = $_POST['Review']; if ($review->validate()) { $noteId = $_POST['note_id']; $model = $this->loadModel($noteId); $model->addReview($review, Yii::app()->user->id); echo $this->renderPartial('_review', array('data' => $review), true); } }
public function actionReviewAdd($response_id) { if (Yii::app()->user->isGuest) { throw new CHttpException(403); } $Response = Response::model()->findByPK($response_id); if (is_null($Response)) { throw new CHttpException(403); } $profile = Yii::app()->user->getProfile(); $Company = $profile->company; if ($Company->isBlocked()) { $this->render('reviewaddblock', ['Response' => $Response, 'CompanyPartner' => null]); return; } $CompanyPartnerId = null; if ($Company->id == $Response->from_company_id) { $CompanyPartnerId = $Response->to_company_id; } else { if ($Company->id == $Response->to_company_id) { $CompanyPartnerId = $Response->from_company_id; } else { // компания не принадлежит к этой сделке throw new CHttpException(403); } } $CompanyPartner = Company::model()->findByPk($CompanyPartnerId); if ($CompanyPartner->isBlocked()) { $this->render('reviewaddblock', ['Response' => $Response, 'CompanyPartner' => $CompanyPartner]); return; } if (!$Response->isCompaniesReadyForReviews()) { Yii::log("actionReviewAdd companies NOT ready for review", "info"); throw new CHttpException(403); } $Review = Review::model()->findByAttributes(['response_id' => $response_id, 'from_company_id' => $Company->id]); if (is_null($Review)) { $Review = new Review(); } //$Response = Response::model()->findByPk($response_id); if (isset($_POST['Review'])) { $Review->setAttributes($_POST['Review'], false); $Review->from_company_id = $Company->id; if ($Response->to_company->id == $Company->id) { $CompanyTo = $Response->from_company; } else { $CompanyTo = $Response->to_company; } $Review->to_company_id = $CompanyTo->id; $Review->response_id = $Response->response_id; if ($Review->validate()) { $Review->save(); if (isset($_POST['photos'])) { $Review->setPhoto($_POST['photos']); } $Review->setscenario('valid_photo'); if ($Review->validate()) { //$this->redirect('/cabinet/deal/'.$Response->response_id); $this->redirect('/response/' . $Response->response_id); } } } $mainAssets = Yii::app()->getTheme()->getAssetsUrl(); Yii::app()->getClientScript()->registerCssFile($mainAssets . '/css/review.css'); $this->render('reviewadd', ['Review' => $Review, 'Response' => $Response]); }