public function executeSendNewsletter() { $user_id = $this->getRequestParameter('user_id'); $today_date = $this->getRequestParameter('date'); $user = OppUserPeer::retrieveByPK($user_id); // fetcha le news di oggi (o di una data) // solo di priorità <= 2 $news_c = oppNewsPeer::getTodayNewsForUserCriteria($user, $today_date); $news_c->add(oppNewsPeer::PRIORITY, 2, Criteria::LESS_EQUAL); $news = oppNewsPeer::doSelect($news_c); // do not send email if no news if (count($news) == 0) { return sfView::NONE; } // class initialization $mail = new sfMail(); $mail->setCharset('utf-8'); $mail->setContentType('text/html'); // definition of the required parameters if ($user->isAdhoc()) { $mail->setSender(sfConfig::get('app_newsletter_pd_sender_address', '*****@*****.**'), sfConfig::get('app_newsletter_pd_from_tag', 'political desk')); $mail->setFrom(sfConfig::get('app_newsletter_pd_from_address', '*****@*****.**'), sfConfig::get('app_newsletter_pd_from_tag', 'political desk')); } else { $mail->setSender(sfConfig::get('app_newsletter_sender_address', '*****@*****.**'), sfConfig::get('app_newsletter_from_tag', 'openparlamento')); $mail->setFrom(sfConfig::get('app_newsletter_from_address', '*****@*****.**'), sfConfig::get('app_newsletter_from_tag', 'openparlamento')); } $mail->addAddress($user->getEmail()); // invia tutte le mail in BCC a un indirizzo di servizio if ($user->isAdhoc()) { $mail->addBcc('*****@*****.**'); } if (!is_null($today_date)) { $formatted_today_date = date('d/m/Y', strtotime($today_date)); } else { $formatted_today_date = date('d/m/Y'); } $mail->setSubject('monitoraggio del ' . $formatted_today_date); // raggruppa le news per data $grouped_news = array(); foreach ($news as $n) { $date = strtotime($n->getDate()); if (!is_string($date) && !is_int($date)) { $date = 0; } if (!array_key_exists($date, $grouped_news)) { $grouped_news[$date] = array(); } $grouped_news[$date][] = $n; } krsort($grouped_news); $this->date = $formatted_today_date; $this->user = $user; $this->grouped_news = $grouped_news; $this->mail = $mail; }
/** * fetch today's news regarding objects monitored by the user * today's news are last 24h's news * * @param string $user - OppUser object * @return void * @author Guglielmo Celata */ function opp_test_single_newsletter($user, $date = null) { $start_time = microtime(true); $df = new sfDateFormat('it_IT'); echo pakeColor::colorize(sprintf('date: %s, name: %s... ', is_null($date) ? 'Today' : $date, $user), array('fg' => 'red', 'bold' => true)); $news_c = oppNewsPeer::getTodayNewsForUserCriteria($user, $date); $news_c->add(oppNewsPeer::PRIORITY, 2, Criteria::LESS_EQUAL); $news = oppNewsPeer::doSelect($news_c); // raggruppa le news per data $grouped_news = array(); foreach ($news as $n) { $date = strtotime($n->getDate()); if (!is_string($date) && !is_int($date)) { $date = 0; } if (!array_key_exists($date, $grouped_news)) { $grouped_news[$date] = array(); } $grouped_news[$date][] = $n; } krsort($grouped_news); echo pakeColor::colorize(sprintf("(%d)\n", count($news)), array('fg' => 'cyan')); if (count($news) > 0) { echo pakeColor::colorize(sprintf("\t | ID | CREATED_AT | REL_MODEL | REL_ID | GENERATOR_MODEL | P |\n"), array('fg' => 'cyan', 'bold' => true)); } foreach ($grouped_news as $date_ts => $news) { echo pakeColor::colorize(sprintf("%2d/%3s/%4d\n", $df->format($date_ts, 'dd'), $df->format($date_ts, 'MMM'), $df->format($date_ts, 'yyyy')), array('fg' => 'cyan', 'bold' => true)); foreach ($news as $i => $n) { echo pakeColor::colorize(sprintf("\t%3d | %9d | %10s | %10s | %9d | %20s | %1d |\n", $i + 1, $n->getId(), $n->getCreatedAt('y-m-d H:i'), $n->getRelatedMonitorableModel(), $n->getRelatedMonitorableId(), $n->getGeneratorModel(), $n->getPriority())); } } echo "\n"; $execution_time = microtime(true) - $start_time; if (isset($raw_email) && $raw_email != '') { echo " ok ("; } else { echo " no mail ("; } echo pakeColor::colorize(sprintf("%f", $execution_time), array('fg' => 'cyan')); echo ")\n"; }