public function run($request)
 {
     echo "Facebook posts are being synced...\n";
     FacebookAPI::inst()->syncPosts();
     echo FacebookPost::get()->count() . " posts have been synced.\n\n";
     echo "Facebook timeline pics are being synced...\n";
     FacebookAPI::inst()->syncPics();
     echo FacebookTimelinePic::get()->count() . " pics have been synced.\n\n";
     echo "Facebook sync done!\n";
 }
 private function parsePost($entry)
 {
     $post = new FacebookPost();
     $post->setID($entry['id']);
     $post->setAuthor($entry['from']['id']);
     $post->setCreated(new DateTime($entry['created_time']));
     if (!empty($entry['message'])) {
         $post->setBody($entry['message']);
     }
     if (isset($entry['likes'])) {
         $post->setLikeCount($entry['likes']['count']);
     }
     switch ($entry['type']) {
         case 'photo':
             if (isset($entry['source'])) {
                 $post->addImage($entry['source']);
             } elseif (preg_match("/^(.*)_s\\.jpg\$/", $entry['picture'], $bits)) {
                 $post->addImage($bits[1] . '_n.jpg');
             } else {
                 $post->addImage($entry['picture']);
             }
             break;
         case 'link':
         case 'video':
         case 'status':
             break;
         default:
             throw new KurogoDataException("Unhandled facebook type " . $entry['type']);
     }
     return $post;
 }
 /**
  * Publish a post to user wall
  * @param FacebookPost $post
  * @return bool
  */
 public function post($post)
 {
     $post->to = $this->id;
     return $post->publish();
 }
 /**
  * Gets timeline posts. Suitable for usage in templates.
  * @param int $limit
  * @param bool|false $fromAPI
  * @param bool|false $forceSync
  * @return ArrayList|DataList|SS_Limitable
  */
 public function getPosts($limit = 100, $fromAPI = false, $forceSync = false)
 {
     if ($fromAPI) {
         $posts = $this->requestPosts($limit, true);
     }
     if ($forceSync) {
         $this->syncPosts($limit);
     }
     if (!FacebookPost::get() && !$fromAPI) {
         $this->syncPosts($limit);
     }
     if (!$fromAPI) {
         $posts = FacebookPost::get()->limit($limit);
     }
     return $posts;
 }