]> git.mxchange.org Git - friendica.git/blobdiff - mod/photos.php
Rewrite conditions for photo linked item to prevent crash on old photos
[friendica.git] / mod / photos.php
index b18c06e2a3a4e5bf4b410f47b1a83f3c910b1245..5a477c3bce4a468145cd829eb6b476dd2694b517 100644 (file)
@@ -188,6 +188,9 @@ function photos_post(App $a)
        }
 
        if ($a->argc > 3 && $a->argv[2] === 'album') {
+               if (!Strings::isHex($a->argv[3])) {
+                       $a->internalRedirect('photos/' . $a->data['user']['nickname'] . '/album');
+               }
                $album = hex2bin($a->argv[3]);
 
                if ($album === L10n::t('Profile Photos') || $album === 'Contact Photos' || $album === L10n::t('Contact Photos')) {
@@ -960,7 +963,7 @@ function photos_content(App $a)
                        return;
                }
 
-               $selname = $datum ? hex2bin($datum) : '';
+               $selname = Strings::isHex($datum) ? hex2bin($datum) : '';
 
                $albumselect = '';
 
@@ -1027,6 +1030,10 @@ function photos_content(App $a)
 
        // Display a single photo album
        if ($datatype === 'album') {
+               // if $datum is not a valid hex, redirect to the default page
+               if (!Strings::isHex($datum)) {
+                       $a->internalRedirect('photos/' . $a->data['user']['nickname']. '/album');
+               }
                $album = hex2bin($datum);
 
                $total = 0;
@@ -1294,6 +1301,10 @@ function photos_content(App $a)
                        'filename' => $hires['filename'],
                ];
 
+               $map = null;
+               $link_item = [];
+               $total = 0;
+
                // Do we have an item for this photo?
 
                // FIXME! - replace following code to display the conversation with our normal
@@ -1306,15 +1317,12 @@ function photos_content(App $a)
                $linked_items = q("SELECT `id` FROM `item` WHERE `resource-id` = '%s' $sql_extra LIMIT 1",
                        DBA::escape($datum)
                );
-
-               $map = null;
-               $link_item = [];
-               $total = 0;
-
                if (DBA::isResult($linked_items)) {
                        // This is a workaround to not being forced to rewrite the while $sql_extra handling
                        $link_item = Item::selectFirst([], ['id' => $linked_items[0]['id']]);
+               }
 
+               if (!empty($link_item['parent']) && !empty($link_item['uid'])) {
                        $condition = ["`parent` = ? AND `parent` != `id`",  $link_item['parent']];
                        $total = DBA::count('item', $condition);
 
@@ -1324,25 +1332,25 @@ function photos_content(App $a)
                        $result = Item::selectForUser($link_item['uid'], Item::ITEM_FIELDLIST, $condition, $params);
                        $items = Item::inArray($result);
 
-                       if (local_user() && (local_user() == $link_item['uid'])) {
+                       if (local_user() == $link_item['uid']) {
                                Item::update(['unseen' => false], ['parent' => $link_item['parent']]);
                        }
+               }
 
-                       if ($link_item['coord']) {
-                               $map = Map::byCoordinates($link_item['coord']);
-                       }
+               if (!empty($link_item['coord'])) {
+                       $map = Map::byCoordinates($link_item['coord']);
                }
 
                $tags = null;
 
-               if (count($linked_items) && strlen($link_item['tag'])) {
+               if (!empty($link_item['id']) && !empty($link_item['tag'])) {
                        $arr = explode(',', $link_item['tag']);
                        // parse tags and add links
                        $tag_arr = [];
                        foreach ($arr as $tag) {
                                $tag_arr[] = [
                                        'name' => BBCode::convert($tag),
-                                       'removeurl' => '/tagrm/'.$link_item['id'] . '/' . bin2hex($tag)
+                                       'removeurl' => '/tagrm/' . $link_item['id'] . '/' . bin2hex($tag)
                                ];
                        }
                        $tags = ['title' => L10n::t('Tags: '), 'tags' => $tag_arr];
@@ -1375,7 +1383,7 @@ function photos_content(App $a)
                                '$permissions' => L10n::t('Permissions'),
                                '$aclselect' => $aclselect_e,
 
-                               '$item_id' => defaults($link_item, 'id', 0),
+                               '$item_id' => $link_item['id'] ?? 0,
                                '$submit' => L10n::t('Submit'),
                                '$delete' => L10n::t('Delete Photo'),
 
@@ -1393,7 +1401,7 @@ function photos_content(App $a)
                $paginate = '';
                $responses = '';
 
-               if (count($linked_items)) {
+               if (!empty($link_item['id']) && !empty($link_item['uri'])) {
                        $cmnt_tpl = Renderer::getMarkupTemplate('comment_item.tpl');
                        $tpl = Renderer::getMarkupTemplate('photo_item.tpl');
                        $return_path = $a->cmd;
@@ -1504,7 +1512,7 @@ function photos_content(App $a)
                                                '$title' => $title_e,
                                                '$body' => $body_e,
                                                '$ago' => Temporal::getRelativeDate($item['created']),
-                                               '$indent' => (($item['parent'] != $item['item_id']) ? ' comment' : ''),
+                                               '$indent' => (($item['parent'] != $item['id']) ? ' comment' : ''),
                                                '$drop' => $drop,
                                                '$comment' => $comment
                                        ]);
@@ -1513,7 +1521,7 @@ function photos_content(App $a)
                                                $comments .= Renderer::replaceMacros($cmnt_tpl, [
                                                        '$return_path' => '',
                                                        '$jsreload' => $return_path,
-                                                       '$id' => $item['item_id'],
+                                                       '$id' => $item['id'],
                                                        '$parent' => $item['parent'],
                                                        '$profile_uid' =>  $owner_uid,
                                                        '$mylink' => $contact['url'],