/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Novedades::find(); $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => array('pageSize' => 7)]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'fecha' => $this->fecha]); $query->andFilterWhere(['like', 'titulo', $this->titulo])->andFilterWhere(['like', 'cuerpo', $this->cuerpo]); return $dataProvider; }
public function actionMail() { $timezone = new \DateTimeZone('America/Argentina/Buenos_Aires'); $date = new \DateTime('now', $timezone); $dateToCompare = new \DateTime('now', $timezone); /* * Armado de envío de novedades por suscripción mensual */ //modifico la fecha de comparación para llevarla a fin de mes $dateToCompare->modify('last day of this month'); if ($date->format('Y-m-d') == $dateToCompare->format('Y-m-d')) { $suscriptores = Suscripciones::findAll(['tipo' => 'mensual']); $dateToCompare->modify('first day of this month'); $novedades = Novedades::find()->where(['>=', 'fecha', $dateToCompare->format('Y-m-d')])->all(); //si hay novedades para enviar if (count($novedades) > 0) { $msg = $this->buildNewsBodyContent($novedades, 'mensuales'); foreach ($suscriptores as $suscriptor) { $this->sendMail($suscriptor->mail, 'Novedades de Radioalbum', $msg); } } } /* * Armado de envío de novedades por suscripción semanal */ //pregunto si el día actual es Domingo $dateToCompare = date('N'); if ($dateToCompare == '7') { $suscriptores = Suscripciones::findAll(['tipo' => 'semanal']); /* * Obtenemos la fecha actual y le restamos 7 días */ $dateToCompare = new \DateTime('now', $timezone); $dateToCompare->sub(new \DateInterval('P7D')); //buscamos las novedades con fecha mayor a la de comparación $novedades = Novedades::find()->where(['>', 'fecha', $dateToCompare->format('Y-m-d')])->all(); //si hay novedades para enviar if (count($novedades) > 0) { $msg = $this->buildNewsBodyContent($novedades, 'semanales'); foreach ($suscriptores as $suscriptor) { $this->sendMail($suscriptor->mail, 'Novedades de Radioalbum', $msg); } } } }