_parseXBEL($data); } elseif (preg_match('!_parseOPML($data); } else { throw new Exception(__('You need to provide a XBEL or OPML file.')); } } protected function _parseOPML($data) { $xml = @simplexml_load_string($data); if (!$xml) { throw new Exception(__('File is not in XML format.')); } $outlines = $xml->xpath("//outline"); $this->entries = array(); foreach ($outlines as $outline) { if (isset($outline['htmlUrl'])) { $link = $outline['htmlUrl']; } elseif (isset($outline['url'])) { $link = $outline['url']; } else { continue; } $entry = new StdClass(); $entry->link = $link; $entry->title = (!empty($outline['title'])) ? $outline['title'] : ''; if (empty($entry->title)) { $entry->title = (!empty($outline['text'])) ? $outline['text'] : $entry->link; } $entry->desc = (!empty($outline['description'])) ? $outline['description'] : ''; $this->entries[] = $entry; } } protected function _parseXBEL($data) { $xml = @simplexml_load_string($data); if (!$xml) { throw new Exception(__('File is not in XML format.')); } $outlines = $xml->xpath("//bookmark"); $this->entries = array(); foreach ($outlines as $outline) { if (!isset($outline['href'])) { continue; } $entry = new StdClass(); $entry->link = $outline['href']; $entry->title = (!empty($outline->title)) ? $outline->title : ''; if (empty($entry->title)) { $entry->title = $entry->link; } $entry->desc = (!empty($outline->desc)) ? $outline->desc : ''; $this->entries[] = $entry; } } public function getAll() { if (!$this->entries) { return; } return $this->entries; } } class dcImportBlogroll { public static function loadFile($file) { if (file_exists($file) && is_readable($file)) { $importer = new linksImporter(); $importer->parse(file_get_contents($file)); return $importer->getAll(); } return false; } }