public function actionUpdate($key) { $executionTime = KeyValue::model()->findByPk('newsletter_execution_time'); $frequency = KeyValue::model()->findByPk('newsletter_frequency'); $executionTime->value = date('Y-m-d H:i:s'); $executionTime->save(); if ($frequency->value < 0) { $frequency->value = abs($frequency->value); $frequency->save(); } Yii::app()->end(); }
/** * Render a newsletter * @return string the newsletter. */ public function make() { $module = Yii::app()->controller->module; require_once 'protected/vendors/simplepie/autoloader.php'; require_once 'protected/vendors/simplepie/idn/idna_convert.class.php'; $timeLimit = KeyValue::model()->findByPk('newsletter_execution_time')->value; $simplePie = new SimplePie(); $simplePie->set_cache_location('./protected/cache/simplepie'); $simplePie->set_cache_duration(1); // 1 seconde // This makes sure that the content is sent to the browser as // text/html and the UTF-8 character set (since we didn't change it). $simplePie->handle_content_type(); if ($module->multiLang) { if (isset($this->language)) { $feeds = $module->feeds[$this->language]; $renderLanguage = $this->language; } else { $feeds = $module->feeds[Yii::app()->language]; $renderLanguage = Yii::app()->language; } } else { $feeds = $module->feeds; $renderLanguage = Yii::app()->language; } $atLeastOne = false; for ($i = 0; $i < count($feeds); $i++) { if (isset($feeds[$i]['expression'])) { $feeds[$i]['content'] = $this->evaluateExpression($feeds[$i]['expression'], array('timeLimit' => $timeLimit, 'language' => $renderLanguage)); if ($feeds[$i]['content'] != '') { $atLeastOne = true; } } else { $simplePie->set_feed_url($feeds[$i]['url']); $simplePie->init(); $feeds[$i]['link'] = $simplePie->get_permalink(); $feeds[$i]['items'] = array(); foreach ($simplePie->get_items(0, $feeds[$i]['limit']) as $item) { if ($item->get_date('U') > strtotime($timeLimit)) { $feeds[$i]['items'][] = $item; $atLeastOne = true; } } } } if ($atLeastOne) { return Yii::app()->controller->renderPartial('newsletter.components.views.newsletter', array('feeds' => $feeds, 'language' => $renderLanguage), true); } else { return false; } }
public function actionAdmin() { $model = new AdminForm(); $frequency = KeyValue::model()->findByPk('newsletter_frequency'); $model->frequency = abs($frequency->value); if (isset($_POST['AdminForm'])) { $model->attributes = $_POST['AdminForm']; if ($model->validate()) { if (isset($_POST['yt1']) || $frequency->value < 0) { $frequency->value = -$model->frequency; } else { $frequency->value = $model->frequency; } $frequency->save(); $this->redirect('admin'); } } $newsletter = new Newsletter(); $this->render('admin', array('newsletter' => $newsletter->make(), 'model' => $model)); }