]> git.mxchange.org Git - friendica.git/blobdiff - include/ostatus.php
OStatus: Salmon now works with "likes"/The alias is stored now as well
[friendica.git] / include / ostatus.php
index dcbd91f415305064f5e661e36743cc68b9ab4052..4775e2ccb9f083e02554e2cb9dff05cae7a384c4 100644 (file)
@@ -28,15 +28,15 @@ class ostatus {
        const OSTATUS_DEFAULT_POLL_TIMEFRAME_MENTIONS = 14400; // given in minutes
 
        /**
-        * @brief 
+        * @brief Fetches author data
         *
-        * @param $xpath
-        * @param $context
-        * @param $importer
-        * @param $contact
-        * @param $onlyfetch
+        * @param object $xpath The xpath object
+        * @param object $context The xml context of the author detals
+        * @param array $importer user record of the importing user
+        * @param array $contact Called by reference, will contain the fetched contact
+        * @param bool $onlyfetch Only fetch the header without updating the contact entries
         *
-        * @return 
+        * @return array Array of author related entries for the item
         */
        private function fetchauthor($xpath, $context, $importer, &$contact, $onlyfetch) {
 
@@ -44,8 +44,7 @@ class ostatus {
                $author["author-link"] = $xpath->evaluate('atom:author/atom:uri/text()', $context)->item(0)->nodeValue;
                $author["author-name"] = $xpath->evaluate('atom:author/atom:name/text()', $context)->item(0)->nodeValue;
 
-               // Preserve the value
-               $authorlink = $author["author-link"];
+               $aliaslink = $author["author-link"];
 
                $alternate = $xpath->query("atom:author/atom:link[@rel='alternate']", $context)->item(0)->attributes;
                if (is_object($alternate))
@@ -55,7 +54,7 @@ class ostatus {
 
                $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `nurl` IN ('%s', '%s') AND `network` != '%s'",
                        intval($importer["uid"]), dbesc(normalise_link($author["author-link"])),
-                       dbesc(normalise_link($authorlink)), dbesc(NETWORK_STATUSNET));
+                       dbesc(normalise_link($aliaslink)), dbesc(NETWORK_STATUSNET));
                if ($r) {
                        $contact = $r[0];
                        $author["contact-id"] = $r[0]["id"];
@@ -117,12 +116,14 @@ class ostatus {
                        if ($value != "")
                                $contact["location"] = $value;
 
-                       if (($contact["name"] != $r[0]["name"]) OR ($contact["nick"] != $r[0]["nick"]) OR ($contact["about"] != $r[0]["about"]) OR ($contact["location"] != $r[0]["location"])) {
+                       if (($contact["name"] != $r[0]["name"]) OR ($contact["nick"] != $r[0]["nick"]) OR ($contact["about"] != $r[0]["about"]) OR
+                               ($contact["alias"] != $r[0]["alias"]) OR ($contact["location"] != $r[0]["location"])) {
 
                                logger("Update contact data for contact ".$contact["id"], LOGGER_DEBUG);
 
-                               q("UPDATE `contact` SET `name` = '%s', `nick` = '%s', `about` = '%s', `location` = '%s', `name-date` = '%s' WHERE `id` = %d",
-                                       dbesc($contact["name"]), dbesc($contact["nick"]), dbesc($contact["about"]), dbesc($contact["location"]),
+                               q("UPDATE `contact` SET `name` = '%s', `nick` = '%s', `alias` = '%s', `about` = '%s', `location` = '%s', `name-date` = '%s' WHERE `id` = %d",
+                                       dbesc($contact["name"]), dbesc($contact["nick"]), dbesc($contact["alias"]),
+                                       dbesc($contact["about"]), dbesc($contact["location"]),
                                        dbesc(datetime_convert()), intval($contact["id"]));
 
                                poco_check($contact["url"], $contact["name"], $contact["network"], $author["author-avatar"], $contact["about"], $contact["location"],
@@ -144,12 +145,12 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Fetches author data from a given XML string
         *
-        * @param $xml
-        * @param $importer
+        * @param string $xml The XML
+        * @param array $importer user record of the importing user
         *
-        * @return 
+        * @return array Array of author related entries for the item
         */
        public static function salmon_author($xml, $importer) {
 
@@ -179,16 +180,15 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Imports an XML string containing OStatus elements
         *
-        * @param $xml
-        * @param $importer
+        * @param string $xml The XML
+        * @param array $importer user record of the importing user
         * @param $contact
-        * @param $hub
-        *
-        * @return 
+        * @param array $hub Called by reference, returns the fetched hub data
         */
        public static function import($xml,$importer,&$contact, &$hub) {
+               /// @todo this function is too long. It has to be split in many parts
 
                logger("Import OStatus message", LOGGER_DEBUG);
 
@@ -530,11 +530,11 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Create an url out of an uri
         *
-        * @param $href
+        * @param string $href URI in the format "parameter1:parameter1:..."
         *
-        * @return 
+        * @return string URL in the format http(s)://....
         */
        public static function convert_href($href) {
                $elements = explode(":",$href);
@@ -560,12 +560,10 @@ class ostatus {
        }
 
        /**
-        * @brief 
-        *
-        * @param $mentions
-        * @param $override
+        * @brief Checks if there are entries in conversations that aren't present on our side
         *
-        * @return 
+        * @param bool $mentions Fetch conversations where we are mentioned
+        * @param bool $override Override the interval setting
         */
        public static function check_conversations($mentions = false, $override = false) {
                $last = get_config('system','ostatus_last_poll');
@@ -755,16 +753,17 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Stores an item and completes the thread
         *
-        * @param $conversation_url
-        * @param $uid
-        * @param $item
+        * @param string $conversation_url The URI of the conversation
+        * @param integer $uid The user id
+        * @param array $item Data of the item that is to be posted
         *
-        * @return 
+        * @return integer The item id of the posted item array
         */
        private function completion($conversation_url, $uid, $item = array(), $self = "") {
 
+               /// @todo This function is totally ugly and has to be rewritten totally
 
                $item_stored = -1;
 
@@ -1155,12 +1154,10 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Stores conversation data into the database
         *
-        * @param $itemid
-        * @param $conversation_url
-        *
-        * @return 
+        * @param integer $itemid The id of the item
+        * @param string $conversation_url The uri of the conversation
         */
        private function store_conversation($itemid, $conversation_url) {
 
@@ -1184,11 +1181,11 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Checks if the current post is a reshare
         *
-        * @param $item
+        * @param array $item The item array of thw post
         *
-        * @return 
+        * @return string The guid if the post is a reshare
         */
        private function get_reshared_guid($item) {
                $body = trim($item["body"]);
@@ -1220,11 +1217,11 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Cleans the body of a post if it contains picture links
         *
-        * @param $body
+        * @param string $body The body
         *
-        * @return 
+        * @return string The cleaned body
         */
        private function format_picture_post($body) {
                $siteinfo = get_attached_data($body);
@@ -1254,12 +1251,12 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Adds the header elements to the XML document
         *
-        * @param $doc
-        * @param $owner
+        * @param object $doc XML document
+        * @param array $owner Contact data of the poster
         *
-        * @return 
+        * @return object header root element
         */
        private function add_header($doc, $owner) {
 
@@ -1315,12 +1312,10 @@ class ostatus {
        }
 
        /**
-        * @brief 
-        *
-        * @param $doc
-        * @param $root
+        * @brief Add the link to the push hubs to the XML document
         *
-        * @return 
+        * @param object $doc XML document
+        * @param object $root XML root element where the hub links are added
         */
        public static function hublinks($doc, $root) {
                $hub = get_config('system','huburl');
@@ -1342,13 +1337,11 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Adds attachement data to the XML document
         *
-        * @param $doc
-        * @param $root
-        * @param $item
-        *
-        * @return 
+        * @param object $doc XML document
+        * @param object $root XML root element where the hub links are added
+        * @param array $item Data of the item that is to be posted
         */
        private function get_attachment($doc, $root, $item) {
                $o = "";
@@ -1414,12 +1407,12 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Adds the author element to the XML document
         *
-        * @param $doc
-        * @param $owner
+        * @param object $doc XML document
+        * @param array $owner Contact data of the poster
         *
-        * @return 
+        * @return object author element
         */
        private function add_author($doc, $owner) {
 
@@ -1488,11 +1481,11 @@ class ostatus {
        */
 
        /**
-        * @brief 
+        * @brief Returns the given activity if present - otherwise returns the "post" activity
         *
-        * @param $item
+        * @param array $item Data of the item that is to be posted
         *
-        * @return 
+        * @return string activity
         */
        function construct_verb($item) {
                if ($item['verb'])
@@ -1501,11 +1494,11 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Returns the given object type if present - otherwise returns the "note" object type
         *
-        * @param $item
+        * @param array $item Data of the item that is to be posted
         *
-        * @return 
+        * @return string Object type
         */
        function construct_objecttype($item) {
                if (in_array($item['object-type'], array(ACTIVITY_OBJ_NOTE, ACTIVITY_OBJ_COMMENT)))
@@ -1514,14 +1507,14 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Adds an entry element to the XML document
         *
-        * @param $doc
-        * @param $item
-        * @param $owner
-        * @param $toplevel
+        * @param object $doc XML document
+        * @param array $item Data of the item that is to be posted
+        * @param array $owner Contact data of the poster
+        * @param bool $toplevel
         *
-        * @return 
+        * @return object Entry element
         */
        private function entry($doc, $item, $owner, $toplevel = false) {
                $repeated_guid = self::get_reshared_guid($item);
@@ -1538,12 +1531,12 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Adds a source entry to the XML document
         *
-        * @param $doc
-        * @param $contact
+        * @param object $doc XML document
+        * @param array $contact Array of the contact that is added
         *
-        * @return 
+        * @return object Source element
         */
        private function source_entry($doc, $contact) {
                $source = $doc->createElement("source");
@@ -1562,12 +1555,12 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Fetches contact data from the contact or the gcontact table
         *
-        * @param $url
-        * @param $owner
+        * @param string $url URL of the contact
+        * @param array $owner Contact data of the poster
         *
-        * @return 
+        * @return array Contact array
         */
        private function contact_entry($url, $owner) {
 
@@ -1604,15 +1597,15 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Adds an entry element with reshared content
         *
-        * @param $doc
-        * @param $item
-        * @param $owner
+        * @param object $doc XML document
+        * @param array $item Data of the item that is to be posted
+        * @param array $owner Contact data of the poster
         * @param $repeated_guid
-        * @param $toplevel
+        * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)?
         *
-        * @return 
+        * @return object Entry element
         */
        private function reshare_entry($doc, $item, $owner, $repeated_guid, $toplevel) {
 
@@ -1671,14 +1664,14 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Adds an entry element with a "like"
         *
-        * @param $doc
-        * @param $item
-        * @param $owner
-        * @param $toplevel
+        * @param object $doc XML document
+        * @param array $item Data of the item that is to be posted
+        * @param array $owner Contact data of the poster
+        * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)?
         *
-        * @return 
+        * @return object Entry element with "like"
         */
        private function like_entry($doc, $item, $owner, $toplevel) {
 
@@ -1708,14 +1701,14 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Adds a regular entry element
         *
-        * @param $doc
-        * @param $item
-        * @param $owner
-        * @param $toplevel
+        * @param object $doc XML document
+        * @param array $item Data of the item that is to be posted
+        * @param array $owner Contact data of the poster
+        * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)?
         *
-        * @return 
+        * @return object Entry element
         */
        private function note_entry($doc, $item, $owner, $toplevel) {
 
@@ -1735,16 +1728,17 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Adds a header element to the XML document
         *
-        * @param $doc
-        * @param $entry
-        * @param $owner
-        * @param $toplevel
+        * @param object $doc XML document
+        * @param object $entry The entry element where the elements are added
+        * @param array $owner Contact data of the poster
+        * @param bool $toplevel Is it for en entry element (false) or a feed entry (true)?
         *
-        * @return 
+        * @return string The title for the element
         */
        private function entry_header($doc, &$entry, $owner, $toplevel) {
+               /// @todo Check if this title stuff is really needed (I guess not)
                if (!$toplevel) {
                        $entry = $doc->createElement("entry");
                        $title = sprintf("New note by %s", $owner["nick"]);
@@ -1768,17 +1762,15 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Adds elements to the XML document
         *
-        * @param $doc
-        * @param $entry
-        * @param $item
-        * @param $owner
-        * @param $title
-        * @param $verb
-        * @param $complete
-        *
-        * @return 
+        * @param object $doc XML document
+        * @param object $entry Entry element where the content is added
+        * @param array $item Data of the item that is to be posted
+        * @param array $owner Contact data of the poster
+        * @param string $title Title for the post
+        * @param string $verb The activity verb
+        * @param bool $complete Add the "status_net" element?
         */
        private function entry_content($doc, $entry, $item, $owner, $title, $verb = "", $complete = true) {
 
@@ -1810,15 +1802,13 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Adds the elements at the foot of an entry to the XML document
         *
-        * @param $doc
-        * @param $entry
-        * @param $item
-        * @param $owner
+        * @param object $doc XML document
+        * @param object $entry The entry element where the elements are added
+        * @param array $item Data of the item that is to be posted
+        * @param array $owner Contact data of the poster
         * @param $complete
-        *
-        * @return 
         */
        private function entry_footer($doc, $entry, $item, $owner, $complete = true) {
 
@@ -1917,13 +1907,13 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Creates the XML feed for a given nickname
         *
-        * @param $a
-        * @param $owner_nick
-        * @param $last_update
+        * @param app $a The application class
+        * @param string $owner_nick Nickname of the feed owner
+        * @param string $last_update Date of the last update
         *
-        * @return 
+        * @return string XML feed
         */
        public static function feed(&$a, $owner_nick, $last_update) {
 
@@ -1975,12 +1965,12 @@ class ostatus {
        }
 
        /**
-        * @brief 
+        * @brief Creates the XML for a salmon message
         *
-        * @param $item
-        * @param $owner
+        * @param array $item Data of the item that is to be posted
+        * @param array $owner Contact data of the poster
         *
-        * @return 
+        * @return string XML for the salmon
         */
        public static function salmon($item,$owner) {