]> git.mxchange.org Git - friendica.git/blobdiff - mod/item.php
Events: Now with guid.
[friendica.git] / mod / item.php
index 60e6931583426f08bc91f2827972fbecd40be94d..d0e1ffed508cf10cf177acb5ecbdafbbefa45b77 100644 (file)
@@ -505,10 +505,11 @@ function item_post(&$a) {
                }
        }
 
-       // embedded bookmark in post? set bookmark flag
+       // embedded bookmark or attachment in post? set bookmark flag
 
        $bookmark = 0;
-       if(preg_match_all("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism",$body,$match,PREG_SET_ORDER)) {
+       $data = get_attachment_data($body);
+        if (preg_match_all("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism", $body, $match, PREG_SET_ORDER) OR isset($data["type"])) {
                $objecttype = ACTIVITY_OBJ_BOOKMARK;
                $bookmark = 1;
        }
@@ -1094,7 +1095,17 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $netwo
                        // Checking for the alias that is used for OStatus
                        $pattern = "/@\[url\=(.*?)\](.*?)\[\/url\]/ism";
                        if (preg_match($pattern, $tag, $matches)) {
-                               $data = probe_url($matches[1]);
+
+                               $r = q("SELECT `alias`, `name` FROM `contact` WHERE `nurl` = '%s' AND `alias` != '' AND `uid` = 0",
+                                       normalise_link($matches[1]));
+                               if (!$r)
+                                       $r = q("SELECT `alias`, `name` FROM `gcontact` WHERE `nurl` = '%s' AND `alias` != ''",
+                                               normalise_link($matches[1]));
+                               if ($r)
+                                       $data = $r[0];
+                               else
+                                       $data = probe_url($matches[1]);
+
                                if ($data["alias"] != "") {
                                        $newtag = '@[url='.$data["alias"].']'.$data["name"].'[/url]';
                                        if(!stristr($str_tags,$newtag)) {
@@ -1121,29 +1132,43 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag, $netwo
                        // Is it in format @user@domain.tld or @http://domain.tld/...?
 
                        // First check the contact table for the address
-                       $r = q("SELECT `id`, `url`, `nick`, `name`, `alias`, `network`, `notify` FROM `contact` WHERE `addr` = '%s' AND `uid` = %d LIMIT 1",
+                       $r = q("SELECT `id`, `url`, `nick`, `name`, `alias`, `network`, `notify` FROM `contact`
+                               WHERE `addr` = '%s' AND `uid` = %d AND
+                                       (`network` != '%s' OR (`notify` != '' AND `alias` != ''))
+                               LIMIT 1",
                                        dbesc($name),
-                                       intval($profile_uid)
+                                       intval($profile_uid),
+                                       dbesc(NETWORK_OSTATUS)
                        );
 
                        // Then check in the contact table for the url
                        if (!$r)
-                               $r = q("SELECT `id`, `url`, `nick`, `name`, `alias`, `notify`, `network` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d LIMIT 1",
+                               $r = q("SELECT `id`, `url`, `nick`, `name`, `alias`, `network`, `notify` FROM `contact`
+                                       WHERE `nurl` = '%s' AND `uid` = %d AND
+                                               (`network` != '%s' OR (`notify` != '' AND `alias` != ''))
+                                       LIMIT 1",
                                                dbesc(normalise_link($name)),
-                                               intval($profile_uid)
+                                               intval($profile_uid),
+                                               dbesc(NETWORK_OSTATUS)
                                );
 
                        // Then check in the global contacts for the address
                        if (!$r)
-                               $r = q("SELECT `url`, `name`, `nick`, `network`, `alias`, `notify` FROM `gcontact` WHERE `addr` = '%s' LIMIT 1", dbesc($name));
+                               $r = q("SELECT `url`, `nick`, `name`, `alias`, `network`, `notify` FROM `gcontact`
+                                       WHERE `addr` = '%s' AND (`network` != '%s' OR (`notify` != '' AND `alias` != ''))
+                                       LIMIT 1",
+                                               dbesc($name),
+                                               dbesc(NETWORK_OSTATUS)
+                               );
 
                        // Then check in the global contacts for the url
                        if (!$r)
-                               $r = q("SELECT `url`, `name`, `nick`, `network`, `alias`, `notify` FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1", dbesc(normalise_link($name)));
-
-                       // If the data isn't complete then refetch the data
-                       if ($r AND ($r[0]["network"] == NETWORK_OSTATUS) AND (($r[0]["notify"] == "") OR ($r[0]["alias"] == "")))
-                               $r = false;
+                               $r = q("SELECT `url`, `nick`, `name`, `alias`, `network`, `notify` FROM `gcontact`
+                                       WHERE `nurl` = '%s' AND (`network` != '%s' OR (`notify` != '' AND `alias` != ''))
+                                       LIMIT 1",
+                                               dbesc(normalise_link($name)),
+                                               dbesc(NETWORK_OSTATUS)
+                               );
 
                        if (!$r) {
                                $probed = probe_url($name);