Example #1
0
 public function getAllControllers()
 {
     $controllers = array();
     $feeds = $this->loadFeedData();
     foreach ($feeds as $feed => $feedData) {
         $modelClass = isset($feedData['MODEL_CLASS']) ? $feedData['MODEL_CLASS'] : 'SocialDataModel';
         $controllers[$feed] = SocialDataModel::factory($modelClass, $feedData);
     }
     return $controllers;
 }
Example #2
0
 protected function initialize()
 {
     $feeds = $this->loadFeedData();
     if ($feed = $this->getArg('feed')) {
         if (!isset($feeds[$feed])) {
             throw new Exception("Invalid feed {$feed}");
         }
         $feeds = array($feed => $feeds[$feed]);
     }
     foreach ($feeds as $feed => $feedData) {
         $modelClass = isset($feedData['MODEL_CLASS']) ? $feedData['MODEL_CLASS'] : 'SocialDataModel';
         $this->feeds[$feed] = SocialDataModel::factory($modelClass, $feedData);
     }
 }
 protected function initializeForCommand()
 {
     $feeds = $this->loadFeedData();
     foreach ($feeds as $feed => $feedData) {
         $modelClass = isset($feedData['MODEL_CLASS']) ? $feedData['MODEL_CLASS'] : 'SocialDataModel';
         $this->feeds[$feed] = SocialDataModel::factory($modelClass, $feedData);
     }
     switch ($this->command) {
         case 'feeds':
             $feeds = array();
             foreach ($this->feeds as $id => $controller) {
                 $feed = array('id' => $id, 'title' => $controller->getTitle(), 'service' => $controller->getServiceName(), 'account' => $controller->getAccount(), 'serviceIcon' => '', 'accountIcon' => '');
                 $feeds[] = $feed;
             }
             $this->setResponse($feeds);
             $this->setResponseVersion(1);
             break;
         case 'posts':
             $posts = array();
             $limit = $this->getArg('limit');
             if ($feed = $this->getArg('feed', null)) {
                 if (isset($this->feeds[$feed])) {
                     $feeds = array($feed => $this->feeds[$feed]);
                 } else {
                     throw new KurogoDataException("Invalid feed {$feed}");
                 }
             } else {
                 $feeds = $this->feeds;
             }
             foreach ($feeds as $feed => $controller) {
                 if ($controller->canRetrieve()) {
                     if ($limit) {
                         $controller->setOption('limit', $limit);
                     }
                     $items = $controller->getPosts();
                     foreach ($items as $post) {
                         $item = $this->arrayForPost($post, array('feed' => $feed));
                         $sort[] = $item['sort'];
                         $posts[] = $item;
                     }
                 } else {
                     throw new KurogoException("Authenticated feeds are not yet supported in the API");
                 }
             }
             // @TODO sort by whatever
             array_multisort($sort, SORT_DESC, $posts);
             $this->setResponse($posts);
             $this->setResponseVersion(1);
             break;
         case 'refresh':
             $items = array();
             $needToAuth = array();
             $posts = array();
             $sort = array();
             foreach ($this->feeds as $feed => $model) {
                 if ($model->canRetrieve()) {
                     $model->setCacheLifetime(1);
                     $items = $model->getPosts();
                     foreach ($items as $item) {
                         file_get_contents($model->getUser($item->getAuthor())->getImageURL());
                     }
                 } else {
                     // Can't auth in an api.
                 }
             }
             $this->setResponse(true);
             $this->setResponseVersion(1);
         default:
             $this->invalidCommand();
             break;
     }
 }