/**
  *
  * @param String $url
  * @param Int $maxnumber
  * @param Int $facebookFeed_PageID
  * @param String $timeFormat
  **/
 function fetchFBFeed($url, $maxnumber = 1, $facebookFeed_PageID = 0, $timeFormat = 'Y-m-d')
 {
     /* The following line is absolutely necessary to read Facebook feeds.
      * Facebook will not recognize PHP as a browser and therefore won't fetch anything.
      * So we define a browser here */
     ini_set('user_agent', 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3');
     $updates = @simplexml_load_file($url);
     //Load feed with simplexml
     if ($updates) {
         foreach ($updates->channel->item as $fbUpdate) {
             if ($maxnumber == 0) {
                 break;
             } else {
                 $guid = $fbUpdate->guid;
                 $uid = substr($guid, -32);
                 if (DB::query("SELECT COUNT(\"ID\") FROM \"FacebookFeed_Item\" WHERE \"UID\" = '{$uid}';")->value() == 0) {
                     $desc = $fbUpdate->description;
                     //Add www.facebook.com to hyperlinks
                     //$desc = urldecode(urldecode(str_replace('href="http://www.facebook.com/l.php?u=', 'href="', $desc)));
                     //Converts UTF-8 into ISO-8859-1 to solve special symbols issues
                     $desc = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $desc);
                     $desc = $this->stripUnsafe($desc);
                     //Get status update time
                     $pubDate = strtotime($fbUpdate->pubDate);
                     $convertedDate = gmdate($timeFormat, $pubDate);
                     //Customize this to your liking
                     //Get link to update
                     //Store values in array
                     $facebookFeed_Item = new FacebookFeed_Item();
                     $facebookFeed_Item->UID = (string) $uid;
                     $facebookFeed_Item->Title = (string) $fbUpdate->title;
                     $facebookFeed_Item->Date = $convertedDate;
                     $facebookFeed_Item->Author = (string) $fbUpdate->author;
                     $facebookFeed_Item->Link = (string) $fbUpdate->link;
                     $facebookFeed_Item->Description = $this->stripUnsafe((string) $desc);
                     $facebookFeed_Item->FacebookFeed_PageID = $facebookFeed_PageID;
                     if (!$facebookFeed_Item->Title || !$facebookFeed_Item->Description) {
                         $facebookFeed_Item->Hide = true;
                     }
                     $facebookFeed_Item->write();
                     $maxnumber--;
                 }
             }
         }
     }
 }
コード例 #2
0
 /**
  *
  * @param SiteTree | Int $page - page or page id
  * @param Int $limit
  *
  */
 public static function all_for_one_page($page, $limit = 10)
 {
     if ($page instanceof SiteTree) {
         $pageID = $page->ID;
     } else {
         $pageID = $page;
     }
     $feedIDs = array();
     $sql = "\r\n\t\t\tSELECT \"FacebookFeed_Page_Pages\".\"FacebookFeed_PageID\"\r\n\t\t\tFROM \"FacebookFeed_Page_Pages\"\r\n\t\t\tWHERE \"FacebookFeed_Page_Pages\".\"SiteTreeID\" = {$pageID}";
     $rows = DB::query($sql);
     if ($rows) {
         foreach ($rows as $row) {
             $feedIDs[$row["FacebookFeed_PageID"]] = $row["FacebookFeed_PageID"];
         }
     }
     if (count($feedIDs)) {
         return FacebookFeed_Item::get()->filter(array("FacebookFeed_PageID" => $feedIDs, "Hide" => 0))->limit($limit);
     }
 }
コード例 #3
0
 public function Fetch($verbose = false)
 {
     $count = 0;
     if ($this->FacebookPageID) {
         $items = SilverstripeFacebookConnector::get_feed($this->FacebookPageID);
         if ($items) {
             foreach ($items as $item) {
                 if (!FacebookFeed_Item::get()->filter(array("UID" => $item["id"]))->first()) {
                     $count++;
                     $message = "";
                     if (isset($item["message"])) {
                         $message = $item["message"];
                     } else {
                         if (isset($item["description"])) {
                             $message = $item["description"];
                         }
                     }
                     //Converts UTF-8 into ISO-8859-1 to solve special symbols issues
                     $message = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $message);
                     $message = $this->stripUnsafe($message);
                     //Get status update time
                     $pubDate = strtotime(isset($item["created_time"]) ? $item["created_time"] : "today");
                     $convertedDate = gmdate($timeFormat = 'Y-m-d', $pubDate);
                     //Customize this to your liking
                     //Get link to update
                     //Store values in array
                     $obj = new FacebookFeed_Item();
                     $obj->UID = $item["id"];
                     $obj->Title = (string) (isset($item["name"]) ? $item["name"] : "");
                     $obj->Date = $convertedDate;
                     $obj->Author = (string) (isset($item["from"]["name"]) ? $item["from"]["name"] : "");
                     $obj->Link = (string) (isset($item["link"]) ? $item["link"] : "");
                     $obj->PictureLink = (string) (isset($item["full_picture"]) ? $item["full_picture"] : "");
                     $obj->Description = $message;
                     $obj->FacebookFeed_PageID = $this->ID;
                     $obj->write();
                 }
             }
         } else {
             if ($verbose) {
                 DB::alteration_message("ERROR: no data returned", "deleted");
             }
         }
         if ($count == 0 && $verbose) {
             DB::alteration_message("Nothing to add.");
         }
     } else {
         if ($verbose) {
             DB::alteration_message("ERROR: no Facebook Page ID provided", "deleted");
         }
     }
     if ($count && $verbose) {
         DB::alteration_message("Added {$count} items", "created");
     }
 }