]> git.mxchange.org Git - friendica.git/commitdiff
Let an item be accssible via the GUI (additionally to uid and item id)
authorMichael Vogel <icarus@dabo.de>
Wed, 9 Jul 2014 18:48:34 +0000 (20:48 +0200)
committerMichael Vogel <icarus@dabo.de>
Wed, 9 Jul 2014 18:48:34 +0000 (20:48 +0200)
include/items.php
mod/display.php

index 6bec078bc3ebc63560c6eefcd54620c24c03764b..d71c0e2031a21270cd888e45ffb7b53e4812587a 100644 (file)
@@ -1011,6 +1011,19 @@ function item_store($arr,$force_parent = false) {
                }
        }
 
+       // If there is no guid then take the same guid that was taken before for the same uri
+       if ((trim($arr['guid']) == "") AND (trim($arr['uri']) != "")) {
+               logger('item_store: checking for an existing guid for uri '.$arr['uri'], LOGGER_DEBUG);
+               $r = q("SELECT `guid` FROM `item` WHERE `uri` = '%s' AND `guid` != '' LIMIT 1",
+                       dbesc(trim($arr['uri']))
+               );
+
+               if(count($r)) {
+                       $arr['guid'] = $r[0]["guid"];
+                       logger('item_store: found guid '.$arr['guid'].' for uri '.$arr['uri'], LOGGER_DEBUG);
+               }
+       }
+
        // Shouldn't happen but we want to make absolutely sure it doesn't leak from a plugin.
        // Deactivated, since the bbcode parser can handle with it - and it destroys posts with some smileys that contain "<"
        //if((strpos($arr['body'],'<') !== false) || (strpos($arr['body'],'>') !== false))
index 5c6277e34c34b6dbf94b067e1528f022bcb7834e..e0a7912a28d4d25dd365b4930613c952f05cc9e0 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 
-
 function display_init(&$a) {
 
        if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
@@ -8,6 +7,33 @@ function display_init(&$a) {
        }
 
        $nick = (($a->argc > 1) ? $a->argv[1] : '');
+
+       // If there is only one parameter, then check if this parameter could be a guid
+       if ($a->argc == 2) {
+               $nick = "";
+
+               // Does the local user have this item?
+               if (local_user()) {
+                       $r = q("SELECT `id` FROM `item`
+                               WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
+                                       AND `guid` = '%s' AND `uid` = %d", $a->argv[1], local_user());
+                       if (count($r))
+                               $nick = $a->user["nickname"];
+               }
+
+               // Or is it anywhere on the server?
+               if ($nick == "") {
+                       $r = q("SELECT `user`.`nickname` FROM `item` INNER JOIN `user` ON `user`.`uid` = `item`.`uid`
+                               WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
+                                       AND `item`.`allow_cid` = ''  AND `item`.`allow_gid` = ''
+                                       AND `item`.`deny_cid`  = '' AND `item`.`deny_gid`  = ''
+                                       AND `item`.`private` = 0 AND `item`.`wall` = 1
+                                       AND `item`.`guid` = '%s'", $a->argv[1]);
+                       if (count($r))
+                               $nick = $r[0]["nickname"];
+               }
+       }
+
        profile_load($a,$nick);
 
 }
@@ -44,6 +70,33 @@ function display_content(&$a, $update = 0) {
        }
        else {
                $item_id = (($a->argc > 2) ? $a->argv[2] : 0);
+
+               if ($a->argc == 2) {
+                       $nick = "";
+
+                       if (local_user()) {
+                               $r = q("SELECT `id` FROM `item`
+                                       WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
+                                               AND `guid` = '%s' AND `uid` = %d", $a->argv[1], local_user());
+                               if (count($r)) {
+                                       $item_id = $r[0]["id"];
+                                       $nick = $a->user["nickname"];
+                               }
+                       }
+
+                       if ($nick == "") {
+                               $r = q("SELECT `user`.`nickname`, `item`.`id` FROM `item` INNER JOIN `user` ON `user`.`uid` = `item`.`uid`
+                                       WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0
+                                               AND `item`.`allow_cid` = ''  AND `item`.`allow_gid` = ''
+                                               AND `item`.`deny_cid`  = '' AND `item`.`deny_gid`  = ''
+                                               AND `item`.`private` = 0 AND `item`.`wall` = 1
+                                               AND `item`.`guid` = '%s'", $a->argv[1]);
+                               if (count($r)) {
+                                       $item_id = $r[0]["id"];
+                                       $nick = $r[0]["nickname"];
+                               }
+                       }
+               }
        }
 
        if(! $item_id) {