/** * * @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--; } } } } }
/** * * @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); } }
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"); } }