]> git.mxchange.org Git - friendica.git/blobdiff - include/feed.php
Merge pull request #2554 from annando/1606-mention-class
[friendica.git] / include / feed.php
index 184b784c72abdbf1dcdcef52fb3d691a6a36a07e..15e5f65366d939d7f351a5a3b4fe09e292b6a151 100644 (file)
@@ -2,6 +2,17 @@
 require_once("include/html2bbcode.php");
 require_once("include/items.php");
 
+/**
+ * @brief Read a RSS/RDF/Atom feed and create an item entry for it
+ *
+ * @param string $xml The feed data
+ * @param array $importer The user record of the importer
+ * @param array $contact The contact record of the feed
+ * @param string $hub Unused dummy value for compatibility reasons
+ * @param bool $simulate If enabled, no data is imported
+ *
+ * @return array In simulation mode it returns the header and the first item
+ */
 function feed_import($xml,$importer,&$contact, &$hub, $simulate = false) {
 
        $a = get_app();
@@ -36,15 +47,17 @@ function feed_import($xml,$importer,&$contact, &$hub, $simulate = false) {
        }
 
        // Is it Atom?
-       if ($xpath->query('/atom:feed/atom:entry')->length > 0) {
+       if ($xpath->query('/atom:feed')->length > 0) {
                $alternate = $xpath->query("atom:link[@rel='alternate']")->item(0)->attributes;
                if (is_object($alternate))
                        foreach($alternate AS $attributes)
                                if ($attributes->name == "href")
                                        $author["author-link"] = $attributes->textContent;
 
+               $author["author-id"] = $xpath->evaluate('/atom:feed/atom:author/atom:uri/text()')->item(0)->nodeValue;
+
                if ($author["author-link"] == "")
-                       $author["author-link"] = $xpath->evaluate('/atom:feed/atom:author/atom:uri/text()')->item(0)->nodeValue;
+                       $author["author-link"] = $author["author-id"];
 
                if ($author["author-link"] == "") {
                        $self = $xpath->query("atom:link[@rel='self']")->item(0)->attributes;
@@ -102,7 +115,7 @@ function feed_import($xml,$importer,&$contact, &$hub, $simulate = false) {
                $entries = $xpath->query('/rss/channel/item');
        }
 
-       if (is_array($contact)) {
+       if (!$simulate) {
                $author["author-link"] = $contact["url"];
 
                if ($author["author-name"] == "")
@@ -113,6 +126,10 @@ function feed_import($xml,$importer,&$contact, &$hub, $simulate = false) {
                $author["owner-link"] = $contact["url"];
                $author["owner-name"] = $contact["name"];
                $author["owner-avatar"] = $contact["thumb"];
+
+               // This is no field in the item table. So we have to unset it.
+               unset($author["author-nick"]);
+               unset($author["author-id"]);
        }
 
        $header = array();