示例#1
0
 /**
  * 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);
             }
         }
     }
 }