]> git.mxchange.org Git - friendica.git/blobdiff - mod/item.php
Merge pull request #2135 from rabuzarus/doxygen
[friendica.git] / mod / item.php
index 3b08fb3f93310fac8537017cd6ed7cb966d6d709..a2b88a8e305f00474a3adecb034adb5a6ed71ddf 100644 (file)
 require_once('include/crypto.php');
 require_once('include/enotify.php');
 require_once('include/email.php');
-require_once('library/langdet/Text/LanguageDetect.php');
 require_once('include/tags.php');
 require_once('include/files.php');
 require_once('include/threads.php');
 require_once('include/text.php');
 require_once('include/items.php');
+require_once('include/Scrape.php');
 
 function item_post(&$a) {
 
@@ -128,28 +128,27 @@ function item_post(&$a) {
                                intval($parent_item['contact-id']),
                                intval($uid)
                        );
-                       if(count($r)) {
+                       if(count($r))
                                $parent_contact = $r[0];
 
-                               // If the contact id doesn't fit with the contact, then set the contact to null
-                               $thrparent = q("SELECT `author-link`, `network` FROM `item` WHERE `uri` = '%s' LIMIT 1", dbesc($thr_parent));
-                               if (count($thrparent) AND ($thrparent[0]["network"] === NETWORK_OSTATUS)
-                                       AND (normalise_link($parent_contact["url"]) != normalise_link($thrparent[0]["author-link"]))) {
-                                       $parent_contact = null;
-
-                                       require_once("include/Scrape.php");
-                                       $probed_contact = probe_url($thrparent[0]["author-link"]);
-                                       if ($probed_contact["network"] != NETWORK_FEED) {
-                                               $parent_contact = $probed_contact;
-                                               $parent_contact["nurl"] = normalise_link($probed_contact["url"]);
-                                               $parent_contact["thumb"] = $probed_contact["photo"];
-                                               $parent_contact["micro"] = $probed_contact["photo"];
-                                               $parent_contact["addr"] = $probed_contact["addr"];
-                                       }
-                                       logger('parent contact: '.print_r($parent_contact, true), LOGGER_DEBUG);
-                               } else
-                                       logger('no contact found: '.print_r($thrparent, true), LOGGER_DEBUG);
-                       }
+                       // If the contact id doesn't fit with the contact, then set the contact to null
+                       $thrparent = q("SELECT `author-link`, `network` FROM `item` WHERE `uri` = '%s' LIMIT 1", dbesc($thr_parent));
+                       if (count($thrparent) AND ($thrparent[0]["network"] === NETWORK_OSTATUS)
+                               AND (normalise_link($parent_contact["url"]) != normalise_link($thrparent[0]["author-link"]))) {
+                               $parent_contact = null;
+
+                               require_once("include/Scrape.php");
+                               $probed_contact = probe_url($thrparent[0]["author-link"]);
+                               if ($probed_contact["network"] != NETWORK_FEED) {
+                                       $parent_contact = $probed_contact;
+                                       $parent_contact["nurl"] = normalise_link($probed_contact["url"]);
+                                       $parent_contact["thumb"] = $probed_contact["photo"];
+                                       $parent_contact["micro"] = $probed_contact["photo"];
+                                       $parent_contact["addr"] = $probed_contact["addr"];
+                               }
+                               logger('no contact found: '.print_r($thrparent, true), LOGGER_DEBUG);
+                       } else
+                               logger('parent contact: '.print_r($parent_contact, true), LOGGER_DEBUG);
                }
        }
 
@@ -268,32 +267,8 @@ function item_post(&$a) {
                $guid              = get_guid(32);
 
 
-               $naked_body = preg_replace('/\[(.+?)\]/','',$body);
-
-               if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
-                       $l = new Text_LanguageDetect;
-                       //$lng = $l->detectConfidence($naked_body);
-                       //$postopts = (($lng['language']) ? 'lang=' . $lng['language'] . ';' . $lng['confidence'] : '');
-
-                       $lng = $l->detect($naked_body, 3);
-
-                       if (sizeof($lng) > 0) {
-                               $postopts = "";
-
-                               foreach ($lng as $language => $score) {
-                                       if ($postopts == "")
-                                               $postopts = "lang=";
-                                       else
-                                               $postopts .= ":";
-
-                                       $postopts .= $language.";".$score;
-                               }
-                       }
-
-                       logger('mod_item: detect language' . print_r($lng,true) . $naked_body, LOGGER_DATA);
-               }
-               else
-                       $postopts = '';
+               item_add_language_opt($_REQUEST);
+               $postopts = $_REQUEST['postopts'] ? $_REQUEST['postopts'] : "";
 
 
                $private = ((strlen($str_group_allow) || strlen($str_contact_allow) || strlen($str_group_deny) || strlen($str_contact_deny)) ? 1 : 0);
@@ -387,8 +362,7 @@ function item_post(&$a) {
        if((local_user()) && (local_user() == $profile_uid)) {
                $self = true;
                $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1",
-                       intval($_SESSION['uid'])
-               );
+                       intval($_SESSION['uid']));
        }
        elseif(remote_user()) {
                if(is_array($_SESSION['remote'])) {
@@ -565,29 +539,26 @@ function item_post(&$a) {
 
        $tags = get_tags($body);
 
-       if($parent) {
-               /**
-                * add a statusnet style reply tag if the original post was from there
-                * and we are replying, and there isn't one already
-                */
+       /**
+        * add a statusnet style reply tag if the original post was from there
+        * and we are replying, and there isn't one already
+        */
 
+       if($parent AND ($parent_contact['network'] === NETWORK_OSTATUS)) {
                if ($parent_contact['id'] != "")
                        $contact = '@'.$parent_contact['nick'].'+'.$parent_contact['id'];
-               //elseif ($parent_contact['addr'] != "")
-               //      $contact = '@'.$parent_contact['addr'];
                else
                        $contact = '@[url='.$parent_contact['url'].']'.$parent_contact['nick'].'[/url]';
 
                if (!in_array($contact,$tags)) {
-                       if ($parent_contact['network'] === NETWORK_OSTATUS)
-                               $body = $contact.' '.$body;
-
+                       $body = $contact.' '.$body;
                        $tags[] = $contact;
                }
 
                $toplevel_contact = "";
-               $toplevel_parent = q("SELECT `contact`.* FROM `contact` INNER JOIN `item` ON `item`.`contact-id` = `contact`.`id`
-                                       WHERE `item`.`id` = `item`.`parent` AND `item`.`parent` = %d", intval($parent));
+               $toplevel_parent = q("SELECT `contact`.* FROM `contact`
+                                               INNER JOIN `item` ON `item`.`contact-id` = `contact`.`id` AND `contact`.`url` = `item`.`author-link`
+                                               WHERE `item`.`id` = `item`.`parent` AND `item`.`parent` = %d", intval($parent));
                if ($toplevel_parent)
                        $toplevel_contact = '@'.$toplevel_parent[0]['nick'].'+'.$toplevel_parent[0]['id'];
                else {
@@ -677,7 +648,7 @@ function item_post(&$a) {
 
        $notify_type = (($parent) ? 'comment-new' : 'wall-new' );
 
-       $uri = (($message_id) ? $message_id : item_new_uri($a->get_hostname(),$profile_uid));
+       $uri = (($message_id) ? $message_id : item_new_uri($a->get_hostname(),$profile_uid, $guid));
 
        // Fallback so that we alway have a thr-parent
        if(!$thr_parent)
@@ -865,6 +836,9 @@ function item_post(&$a) {
                // NOTREACHED
        }
 
+       // Store the guid and other relevant data
+       add_guid($datarray);
+
        $post_id = $r[0]['id'];
        logger('mod_item: saved item ' . $post_id);
 
@@ -1097,8 +1071,30 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $netwo
        //is it a person tag?
        if(strpos($tag,'@') === 0) {
                //is it already replaced?
-               if(strpos($tag,'[url='))
+               if(strpos($tag,'[url=')) {
+                       //append tag to str_tags
+                       if(!stristr($str_tags,$tag)) {
+                               if(strlen($str_tags))
+                                       $str_tags .= ',';
+                               $str_tags .= $tag;
+                       }
+
+                       // Checking for the alias that is used for OStatus
+                       $pattern = "/@\[url\=(.*?)\](.*?)\[\/url\]/ism";
+                       if (preg_match($pattern, $tag, $matches)) {
+                               $data = probe_url($matches[1]);
+                               if ($data["alias"] != "") {
+                                       $newtag = '@[url='.$data["alias"].']'.$data["name"].'[/url]';
+                                       if(!stristr($str_tags,$newtag)) {
+                                               if(strlen($str_tags))
+                                                       $str_tags .= ',';
+                                               $str_tags .= $newtag;
+                                       }
+                               }
+                       }
+
                        return $replaced;
+               }
                $stat = false;
                //get the person's name
                $name = substr($tag,1);