/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search(array $params) { $query = WebNews::find()->byLanguageCode(h::getIso639Code())->joinWith('base'); $dataProvider = new ActiveDataProvider(['query' => $query]); if (!$params) { return $dataProvider; } if (!$this->load($params) || !$this->validate()) { $this->error = static::ERR_KO; return $dataProvider; } if ($this->tagId) { $query->byTagId($this->tagId, false); } if (trim($this->title)) { $query->titleContains($this->title); } if (trim($this->body)) { $query->bodyContains($this->body); } return $dataProvider; }
/** * @return \yii\db\ActiveQuery */ public function getWebNews() { return $this->hasMany(WebNews::className(), ['base_id' => 'id']); }
/** * @return string */ public function run() { return $this->render($this->view, ['models' => WebNews::find()->lastNews($this->count)->all(), 'maxLength' => $this->maxLength, 'suffix' => $this->suffix]); }
/** * Renvoie l'actualité immédiatement postérieure à $this * * @param boolean $onlyActive true => seules les news actives sont renvoyées * @return WebNews */ public function getNext($onlyActive = true) { $next = $this->base->getNext($onlyActive); if ($next) { return WebNews::find()->byBaseNewsId($next->id)->byLanguageId($this->language_id)->one(); } return null; }
/** * Renvoie la liste des WebNews ayant $this comme tag * * @return array WebNews[] */ public function getReferers() { return WebNews::find()->byTagId($this->id)->all(); }
/** * Creates a new WebNews model. * If creation is successful, the browser will be redirected to the 'view' page. * * @return mixed */ public function actionCreate() { $model = new WebNews(); $request = Yii::$app->request; $ok = true; $baseModel = null; if ($request->isPost) { // Mise à jour de la WebNews et de la BaseNews associée $post = $request->post(); /** @var BaseNews $baseModel */ $baseModel = BaseNews::findOne($post['WebNews']['base_id']); $ok &= $baseModel && $baseModel->load($post) && $baseModel->save(); $ok &= $model->load($post) && $model->save(); if (!$ok) { Yii::$app->session->setFlash('flash-warning', HLib::t('messages', 'There are errors in your form')); } else { return $this->redirectAfterCreateSuccess($model); } } else { $baseModel = new BaseNews(); } // Affichage initial ou ré-affichage en cas d'erreur $baseNews = BaseNews::find()->orderBy('event_date DESC')->all(); $languages = Language::find()->orderBy('iso_639_code')->all(); return $this->render('create', compact('model', 'baseNews', 'languages', 'baseModel')); }