]> git.mxchange.org Git - friendica.git/blobdiff - mod/photos.php
Merge pull request #11933 from nupplaphil/bug/module_returns
[friendica.git] / mod / photos.php
index ad74423718791d00de2e62fd673693b5f679a57f..6a4596bf2427616f8030383a14f521d7062ae9d0 100644 (file)
@@ -65,7 +65,7 @@ function photos_init(App $a) {
 
        if (DI::args()->getArgc() > 1) {
                $owner = User::getOwnerDataByNick(DI::args()->getArgv()[1]);
-               if (empty($owner) || $owner['account_removed']) {
+               if (!isset($owner['account_removed']) || $owner['account_removed']) {
                        throw new HTTPException\NotFoundException(DI::l10n()->t('User not found.'));
                }
 
@@ -187,7 +187,7 @@ function photos_post(App $a)
        }
 
        if (DI::args()->getArgc() > 3 && DI::args()->getArgv()[2] === 'album') {
-               if (!Strings::isHex(DI::args()->getArgv()[3])) {
+               if (!Strings::isHex(DI::args()->getArgv()[3] ?? '')) {
                        DI::baseUrl()->redirect('photos/' . $user['nickname'] . '/album');
                }
                $album = hex2bin(DI::args()->getArgv()[3]);
@@ -304,7 +304,7 @@ function photos_post(App $a)
                }
 
                if (!empty($_POST['rotate']) && (intval($_POST['rotate']) == 1 || intval($_POST['rotate']) == 2)) {
-                       Logger::notice('rotate');
+                       Logger::debug('rotate');
 
                        $photo = Photo::getPhotoForUser($page_owner_uid, $resource_id);
 
@@ -360,7 +360,7 @@ function photos_post(App $a)
                if (DBA::isResult($photos) && !$item_id) {
                        // Create item container
                        $title = '';
-                       $uri = Item::newURI($page_owner_uid);
+                       $uri = Item::newURI();
 
                        $arr = [];
                        $arr['guid']          = System::createUUID();
@@ -524,7 +524,7 @@ function photos_post(App $a)
 
                        if (count($taginfo)) {
                                foreach ($taginfo as $tagged) {
-                                       $uri = Item::newURI($page_owner_uid);
+                                       $uri = Item::newURI();
 
                                        $arr = [];
                                        $arr['guid']          = System::createUUID();
@@ -580,7 +580,7 @@ function photos_post(App $a)
        $album    = trim($_REQUEST['album'] ?? '');
        $newalbum = trim($_REQUEST['newalbum'] ?? '');
 
-       Logger::info('album= ' . $album . ' newalbum= ' . $newalbum);
+       Logger::debug('album= ' . $album . ' newalbum= ' . $newalbum);
 
        if (!strlen($album)) {
                if (strlen($newalbum)) {
@@ -590,6 +590,26 @@ function photos_post(App $a)
                }
        }
 
+       /*
+        * We create a wall item for every photo, but we don't want to
+        * overwhelm the data stream with a hundred newly uploaded photos.
+        * So we will make the first photo uploaded to this album in the last several hours
+        * visible by default, the rest will become visible over time when and if
+        * they acquire comments, likes, dislikes, and/or tags
+        */
+
+       $r = Photo::selectToArray([], ['`album` = ? AND `uid` = ? AND `created` > ?', $album, $page_owner_uid, DateTimeFormat::utc('now - 3 hours')]);
+
+       if (!DBA::isResult($r) || ($album == DI::l10n()->t(Photo::PROFILE_PHOTOS))) {
+               $visible = 1;
+       } else {
+               $visible = 0;
+       }
+
+       if (!empty($_REQUEST['not_visible']) && $_REQUEST['not_visible'] !== 'false') {
+               $visible = 0;
+       }
+
        $ret = ['src' => '', 'filename' => '', 'filesize' => 0, 'type' => ''];
 
        Hook::callAll('photo_post_file', $ret);
@@ -658,14 +678,14 @@ function photos_post(App $a)
                return;
        }
 
-       Logger::info('loading the contents of ' . $src);
+       Logger::debug('loading contents', ['src' => $src]);
 
        $imagedata = @file_get_contents($src);
 
        $image = new Image($imagedata, $type);
 
        if (!$image->isValid()) {
-               Logger::info('unable to process image');
+               Logger::notice('unable to process image');
                notice(DI::l10n()->t('Unable to process image.'));
                @unlink($src);
                $foo = 0;
@@ -691,7 +711,7 @@ function photos_post(App $a)
        $r = Photo::store($image, $page_owner_uid, $visitor, $resource_id, $filename, $album, 0 , Photo::DEFAULT, $str_contact_allow, $str_group_allow, $str_contact_deny, $str_group_deny);
 
        if (!$r) {
-               Logger::info('image store failed');
+               Logger::warning('image store failed');
                notice(DI::l10n()->t('Image upload failed.'));
                return;
        }
@@ -708,7 +728,7 @@ function photos_post(App $a)
                $smallest = 2;
        }
 
-       $uri = Item::newURI($page_owner_uid);
+       $uri = Item::newURI();
 
        // Create item container
        $lat = $lon = null;
@@ -740,7 +760,7 @@ function photos_post(App $a)
        $arr['allow_gid']     = $str_group_allow;
        $arr['deny_cid']      = $str_contact_deny;
        $arr['deny_gid']      = $str_group_deny;
-       $arr['visible']       = 0;
+       $arr['visible']       = $visible;
        $arr['origin']        = 1;
 
        $arr['body']          = '[url=' . DI::baseUrl() . '/photos/' . $owner_record['nickname'] . '/image/' . $resource_id . ']'
@@ -872,7 +892,7 @@ function photos_content(App $a)
                        return;
                }
 
-               $selname = Strings::isHex($datum) ? hex2bin($datum) : '';
+               $selname = (!is_null($datum) && Strings::isHex($datum)) ? hex2bin($datum) : '';
 
                $albumselect = '';
 
@@ -934,7 +954,7 @@ 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)) {
+               if (is_null($datum) || !Strings::isHex($datum)) {
                        DI::baseUrl()->redirect('photos/' . $user['nickname']. '/album');
                }
                $album = hex2bin($datum);
@@ -957,7 +977,7 @@ function photos_content(App $a)
 
                /// @TODO I have seen this many times, maybe generalize it script-wide and encapsulate it?
                $order_field = $_GET['order'] ?? '';
-               if ($order_field === 'posted') {
+               if ($order_field === 'created') {
                        $order = 'ASC';
                } else {
                        $order = 'DESC';
@@ -1011,10 +1031,10 @@ function photos_content(App $a)
                        $drop = [DI::l10n()->t('Drop Album'), 'photos/' . $user['nickname'] . '/album/' . bin2hex($album) . '/drop'];
                }
 
-               if ($order_field === 'posted') {
+               if ($order_field === 'created') {
                        $order =  [DI::l10n()->t('Show Newest First'), 'photos/' . $user['nickname'] . '/album/' . bin2hex($album), 'oldest'];
                } else {
-                       $order = [DI::l10n()->t('Show Oldest First'), 'photos/' . $user['nickname'] . '/album/' . bin2hex($album) . '?order=posted', 'newest'];
+                       $order = [DI::l10n()->t('Show Oldest First'), 'photos/' . $user['nickname'] . '/album/' . bin2hex($album) . '?order=created', 'newest'];
                }
 
                $photos = [];
@@ -1034,7 +1054,7 @@ function photos_content(App $a)
                                        'id' => $rr['id'],
                                        'twist' => ' ' . ($twist ? 'rotleft' : 'rotright') . rand(2,4),
                                        'link' => 'photos/' . $user['nickname'] . '/image/' . $rr['resource-id']
-                                               . ($order_field === 'posted' ? '?order=posted' : ''),
+                                               . ($order_field === 'created' ? '?order=created' : ''),
                                        'title' => DI::l10n()->t('View Photo'),
                                        'src' => 'photo/' . $rr['resource-id'] . '-' . $rr['scale'] . '.' .$ext,
                                        'alt' => $imgalt_e,
@@ -1102,7 +1122,7 @@ function photos_content(App $a)
                if ($cmd === 'view' && !DI::config()->get('system', 'no_count', false)) {
                        $order_field = $_GET['order'] ?? '';
 
-                       if ($order_field === 'posted') {
+                       if ($order_field === 'created') {
                                $params = ['order' => [$order_field]];
                        } elseif (!empty($order_field)) {
                                $params = ['order' => [$order_field => true]];
@@ -1130,10 +1150,10 @@ function photos_content(App $a)
                                }
 
                                if (!is_null($prv)) {
-                                       $prevlink = 'photos/' . $user['nickname'] . '/image/' . $prvnxt[$prv]['resource-id'] . ($order_field === 'posted' ? '?order=posted' : '');
+                                       $prevlink = 'photos/' . $user['nickname'] . '/image/' . $prvnxt[$prv]['resource-id'] . ($order_field === 'created' ? '?order=created' : '');
                                }
                                if (!is_null($nxt)) {
-                                       $nextlink = 'photos/' . $user['nickname'] . '/image/' . $prvnxt[$nxt]['resource-id'] . ($order_field === 'posted' ? '?order=posted' : '');
+                                       $nextlink = 'photos/' . $user['nickname'] . '/image/' . $prvnxt[$nxt]['resource-id'] . ($order_field === 'created' ? '?order=created' : '');
                                }
 
                                $tpl = Renderer::getMarkupTemplate('photo_edit_head.tpl');