OpmlFeedAdd::parseOpml

protected OpmlFeedAdd::parseOpml($opml)

Parses an OPML file.

Feeds are recognized as <outline> elements with the attributes "text" and "xmlurl" set.

@todo Move this to a parser in https://www.drupal.org/node/1963540.

Parameters

string $opml: The complete contents of an OPML document.

Return value

array An array of feeds, each an associative array with a "title" and a "url" element, or NULL if the OPML document failed to be parsed. An empty array will be returned if the document is valid but contains no feeds, as some OPML documents do.

File

core/modules/aggregator/src/Form/OpmlFeedAdd.php, line 191

Class

OpmlFeedAdd
Imports feeds from OPML.

Namespace

Drupal\aggregator\Form

Code

protected function parseOpml($opml) {
  $feeds = array();
  $xml_parser = drupal_xml_parser_create($opml);
  if (xml_parse_into_struct($xml_parser, $opml, $values)) {
    foreach ($values as $entry) {
      if ($entry['tag'] == 'OUTLINE' && isset($entry['attributes'])) {
        $item = $entry['attributes'];
        if (!empty($item['XMLURL']) && !empty($item['TEXT'])) {
          $feeds[] = array('title' => $item['TEXT'], 'url' => $item['XMLURL']);
        }
      }
    }
  }
  xml_parser_free($xml_parser);

  return $feeds;
}
doc_Drupal
2016-10-29 09:32:33
Comments
Leave a Comment

Please login to continue.