Example #1
0
 public static function run()
 {
     $di = \Phalcon\Di::getDefault();
     $em = $di->get('em');
     // Assemble news items from other sources.
     $news_items_raw = array(self::_runTumblrNews($di), self::_runConventionPromotions($di), self::_runPodcastEpisodes($di), self::_runScheduleItems($di));
     $news_items = array();
     foreach ($news_items_raw as $item_group) {
         $news_items = array_merge($news_items, (array) $item_group);
     }
     // Replace/insert into database.
     $news_stats = array('inserted' => 0, 'updated' => 0, 'deleted' => 0);
     if (!empty($news_items)) {
         $old_news_raw = NetworkNews::fetchAll();
         $old_news = array();
         foreach ($old_news_raw as $old_row) {
             $old_news[$old_row->id] = $old_row;
         }
         // Update or insert items.
         foreach ($news_items as $item) {
             if (isset($old_news[$item['id']])) {
                 $news_stats['updated']++;
                 $record = $old_news[$item['id']];
             } else {
                 $news_stats['inserted']++;
                 $record = new NetworkNews();
             }
             $record->fromArray($item);
             $em->persist($record);
             unset($old_news[$item['id']]);
         }
         // Delete unreferenced items.
         foreach ($old_news as $item_id => $item_to_remove) {
             $news_stats['deleted']++;
             $em->remove($item_to_remove);
         }
         $em->flush();
         // Flush cache of homepage news.
         \DF\Cache::remove('homepage_featured_news');
     }
     \PVL\Debug::print_r($news_stats);
 }