. * */ namespace OCA\News; /** * This class maps a feed to an entry in the feeds table of the database. */ class Backgroundjob { static public function sortFeeds( $a, $b ) { if( $a['id'] == $b['id'] ) { return 0; } elseif( $a['id'] < $b['id'] ) { return -1; } else{ return 1; } } static public function run() { if( \OC::$CLI ) { self::cliStep(); } else{ self::webStep(); } } static private function cliStep() { $feedmapper = new FeedMapper(); // Iterate over all feeds $feeds = $feedmapper->findAll(); foreach( $feeds as $feed ) { self::updateFeed( $feedmapper, $feed ); } } static private function webStep() { // Iterate over all users $lastid = \OCP\Config::getAppValue('news', 'backgroundjob_lastid',0); $feedmapper = new FeedMapper(); $feeds = $feedmapper->findAll(); usort( $feeds, array( 'OCA\News\Backgroundjob', 'sortFeeds' )); $done = false; foreach( $feeds as $feed ) { if( $feed['id'] > $lastid ) { // set lastid BEFORE updating feed! \OCP\Config::setAppValue('news', 'backgroundjob_lastid',$feed['id']); $done = true; self::updateFeed( $feedmapper, $feed ); } } if( !$done ) { \OCP\Config::setAppValue('news', 'backgroundjob_lastid',0); } } static private function updateFeed( $feedmapper, $feed ) { $newfeed = null; $newfeed = Utils::fetch( $feed['url'] ); if( $newfeed !== null ) { $feedmapper = new FeedMapper(); $newfeedid = $feedmapper->save($newfeed, $feed['folderid'] ); } } }