]> git.mxchange.org Git - friendica.git/blobdiff - mod/item.php
Merge pull request #2739 from annando/1608-session-close
[friendica.git] / mod / item.php
index 10877b00ac9e96fee73c623c29498b6d6af60821..9a9b5895bdd719e0c8b04d8abec606c7bc5eafac 100644 (file)
@@ -25,6 +25,7 @@ require_once('include/text.php');
 require_once('include/items.php');
 require_once('include/Scrape.php');
 require_once('include/diaspora.php');
+require_once('include/Contact.php');
 
 function item_post(&$a) {
 
@@ -505,10 +506,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;
        }
@@ -675,9 +677,11 @@ function item_post(&$a) {
        $datarray['owner-name']    = $contact_record['name'];
        $datarray['owner-link']    = $contact_record['url'];
        $datarray['owner-avatar']  = $contact_record['thumb'];
+       $datarray["owner-id"]      = get_contact($datarray["owner-link"], 0);
        $datarray['author-name']   = $author['name'];
        $datarray['author-link']   = $author['url'];
        $datarray['author-avatar'] = $author['thumb'];
+       $datarray["author-id"]     = get_contact($datarray["author-link"], 0);
        $datarray['created']       = datetime_convert();
        $datarray['edited']        = datetime_convert();
        $datarray['commented']     = datetime_convert();
@@ -710,6 +714,7 @@ function item_post(&$a) {
        $datarray['moderated']     = $allow_moderated;
        $datarray['gcontact-id']   = get_gcontact_id(array("url" => $datarray['author-link'], "network" => $datarray['network'],
                                                        "photo" => $datarray['author-avatar'], "name" => $datarray['author-name']));
+
        /**
         * These fields are for the convenience of plugins...
         * 'self' if true indicates the owner is posting on their own wall
@@ -778,7 +783,7 @@ function item_post(&$a) {
                // update filetags in pconfig
                file_tag_update_pconfig($uid,$categories_old,$categories_new,'category');
 
-               proc_run('php', "include/notifier.php", 'edit_post', "$post_id");
+               proc_run(PRIORITY_HIGH, "include/notifier.php", 'edit_post', $post_id);
                if((x($_REQUEST,'return')) && strlen($return_path)) {
                        logger('return: ' . $return_path);
                        goaway($a->get_baseurl() . "/" . $return_path );
@@ -789,10 +794,24 @@ function item_post(&$a) {
                $post_id = 0;
 
 
-       $r = q("INSERT INTO `item` (`guid`, `extid`, `uid`,`type`,`wall`,`gravity`, `network`, `contact-id`,`owner-name`,`owner-link`,`owner-avatar`, `author-name`, `author-link`, `author-avatar`,
-               `created`, `edited`, `commented`, `received`, `changed`, `uri`, `thr-parent`, `title`, `body`, `app`, `location`, `coord`, `tag`, `inform`, `verb`, `object-type`, `postopts`,
-               `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`, `private`, `pubmail`, `attach`, `bookmark`,`origin`, `moderated`, `file`, `rendered-html`, `rendered-hash`)
-               VALUES( '%s', '%s', %d, '%s', %d, %d, '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d, %d, %d, '%s', '%s', '%s')",
+       $r = q("INSERT INTO `item` (`guid`, `extid`, `uid`,`type`,`wall`,`gravity`, `network`, `contact-id`,
+                                       `owner-name`,`owner-link`,`owner-avatar`, `owner-id`,
+                                       `author-name`, `author-link`, `author-avatar`, `author-id`,
+                                       `created`, `edited`, `commented`, `received`, `changed`,
+                                       `uri`, `thr-parent`, `title`, `body`, `app`, `location`, `coord`,
+                                       `tag`, `inform`, `verb`, `object-type`, `postopts`,
+                                       `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`, `private`,
+                                       `pubmail`, `attach`, `bookmark`,`origin`, `moderated`, `file`,
+                                       `rendered-html`, `rendered-hash`)
+               VALUES('%s', '%s', %d, '%s', %d, %d, '%s', %d,
+                       '%s', '%s', '%s', %d,
+                       '%s', '%s', '%s', %d,
+                       '%s', '%s', '%s', '%s', '%s',
+                       '%s', '%s', '%s', '%s', '%s', '%s', '%s',
+                       '%s', '%s', '%s', '%s', '%s',
+                       '%s', '%s', '%s', '%s', %d,
+                       %d, '%s', %d, %d, %d, '%s',
+                       '%s', '%s')",
                dbesc($datarray['guid']),
                dbesc($datarray['extid']),
                intval($datarray['uid']),
@@ -804,9 +823,11 @@ function item_post(&$a) {
                dbesc($datarray['owner-name']),
                dbesc($datarray['owner-link']),
                dbesc($datarray['owner-avatar']),
+               intval($datarray['owner-id']),
                dbesc($datarray['author-name']),
                dbesc($datarray['author-link']),
                dbesc($datarray['author-avatar']),
+               intval($datarray['author-id']),
                dbesc($datarray['created']),
                dbesc($datarray['edited']),
                dbesc($datarray['commented']),
@@ -1011,7 +1032,7 @@ function item_post(&$a) {
        // Currently the only realistic fixes are to use a reliable server - which precludes shared hosting,
        // or cut back on plugins which do remote deliveries.
 
-       proc_run('php', "include/notifier.php", $notify_type, "$post_id");
+       proc_run(PRIORITY_HIGH, "include/notifier.php", $notify_type, $post_id);
 
        logger('post_complete');
 
@@ -1094,7 +1115,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)) {