. * */ 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->getId() == $b->getId() ) { return 0; } elseif( $a->getId() < $b->getId() ) { 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->getId() > $lastid ) { // set lastid BEFORE updating feed! \OCP\Config::setAppValue('news', 'backgroundjob_lastid',$feed->getId()); $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->getUrl() ); if( $newfeed !== null ) { $feedmapper = new FeedMapper(); $newfeedid = $feedmapper->save($newfeed, $feed->getFolderId() ); } } }