From 561a86b385da2c7d9da1c01a0f8e4300db04352f Mon Sep 17 00:00:00 2001
From: onli <onli@paskuda.biz>
Date: Thu, 13 May 2021 14:43:55 +0200
Subject: [PATCH] php 8 compat fixes for media property page

---
 include/functions_images.inc.php     | 16 ++++++++--------
 templates/2k11/admin/media_items.tpl | 14 +++++++-------
 2 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/include/functions_images.inc.php b/include/functions_images.inc.php
index be458385..8053f000 100644
--- a/include/functions_images.inc.php
+++ b/include/functions_images.inc.php
@@ -2692,7 +2692,7 @@ function serendipity_showPropertyForm(&$new_media, $keywordsPerBlock = 3, $is_ed
         $show[$idx]['image_id'] = $media['image_id'];
 
         serendipity_prepareMedia($show[$idx]);
-        if (!is_array($props['base_metadata'])) {
+        if (!is_array($props['base_metadata'] ?? null)) {
             $show[$idx]['metadata'] =& serendipity_getMetaData($show[$idx]['realfile'], $show[$idx]['header']);
         } else {
             $show[$idx]['metadata'] = $props['base_metadata'];
@@ -2707,7 +2707,7 @@ function serendipity_showPropertyForm(&$new_media, $keywordsPerBlock = 3, $is_ed
         'keywordsPerBlock'  => $keywordsPerBlock,
         'keywords'          => $keywords,
         'dprops'            => $dprops,
-        'case_add'          => is_array($new_media[0]['created_thumbnail'])     // created_thumbnail is only set when viewing properties after adding an image
+        'case_add'          => is_array($new_media[0]['created_thumbnail'] ?? null)     // created_thumbnail is only set when viewing properties after adding an image
     );
 
     return serendipity_showMedia(
@@ -2794,9 +2794,9 @@ function serendipity_parseMediaProperties(&$dprops, &$keywords, &$media, &$props
         if (!$is_edit) {
             $type = 'readonly';
         }
-        $val = serendipity_mediaTypeCast($parts[0], $props['base_property'][$parts[0]], true);
+        $val = serendipity_mediaTypeCast($parts[0], $props['base_property'][$parts[0]] ?? null, true);
 
-        $propkey = serendipity_specialchars($parts[0]) . $idx;
+        $propkey = serendipity_specialchars($parts[0]) . ($idx ?? '');
 
         $media['base_property'][$propkey] = array(
             'label' => serendipity_specialchars(defined('MEDIA_PROPERTY_' . strtoupper($parts[0])) ? constant('MEDIA_PROPERTY_' . strtoupper($parts[0])) : $parts[0]),
@@ -2805,7 +2805,7 @@ function serendipity_parseMediaProperties(&$dprops, &$keywords, &$media, &$props
             'title' => serendipity_specialchars($parts[0])
         );
 
-        if (!is_array($GLOBALS['IPTC'])) {
+        if (!is_array($GLOBALS['IPTC'] ?? null)) {
             // Your templates config.inc.php or any of the language files can declare this variable,
             // if you want to use other default settings for this. No interface ability to declare this
             // yet, sorry.
@@ -3273,9 +3273,9 @@ function serendipity_showMedia(&$file, &$paths, $url = '', $manage = false, $lin
         'token'             => serendipity_setFormToken(),
         'form_hidden'       => $form_hidden,
         'blimit_path'       => empty($smarty_vars['limit_path']) ? '' : basename($smarty_vars['limit_path']),
-        'only_path'         => $serendipity['GET']['only_path'],
-        'only_filename'     => $serendipity['GET']['only_filename'],
-        'sortorder'         => $serendipity['GET']['sortorder'],
+        'only_path'         => $serendipity['GET']['only_path'] ?? null,
+        'only_filename'     => $serendipity['GET']['only_filename'] ?? null,
+        'sortorder'         => $serendipity['GET']['sortorder'] ?? null,
         'keywords_selected' => $serendipity['GET']['keywords'] ?? null,
         'filter'            => $serendipity['GET']['filter'] ?? ['fileCategory' => null],
         'sort_order'        => $order_fields,
diff --git a/templates/2k11/admin/media_items.tpl b/templates/2k11/admin/media_items.tpl
index e5cc8e77..b3875a89 100644
--- a/templates/2k11/admin/media_items.tpl
+++ b/templates/2k11/admin/media_items.tpl
@@ -2,7 +2,7 @@
     {if NOT $media.manage}
         {* ML got called for inserting media *}
             {if $file.is_image AND $file.full_thumb}
-                {if $media.textarea || $media.htmltarget}
+                {if (isset($media.textarea) && $media.textarea) || (isset($media.htmltarget) && $media.htmltarget)}
                 {$link="?serendipity[adminModule]=images&amp;serendipity[adminAction]=choose&amp;serendipity[fid]={$file.id}&amp;serendipity[textarea]={$media.textarea}&amp;serendipity[noBanner]=true&amp;serendipity[noSidebar]=true&amp;serendipity[noFooter]=true&amp;serendipity[filename_only]={$media.filename_only}&amp;serendipity[htmltarget]={$media.htmltarget}"}
                 {else}
                     {if $file.url}
@@ -73,7 +73,7 @@
                         {/if}
                     {/if}
 
-                    <h3 title="{$file.realname}">{$file.realname|truncate:50:"&hellip;":true}{if $file.orderkey != ''}: {$file.orderkey|escape}{/if}</h3>
+                    <h3 title="{$file.realname}">{$file.realname|truncate:50:"&hellip;":true}{if (isset($file.orderkey) && $file.orderkey != '')}: {$file.orderkey|escape}{/if}</h3>
                     {if $file.authorid != 0}<span class="author block_level">{$file.authorname}</span>{/if}
 
                 </header>
@@ -87,12 +87,12 @@
                             <br />
                             {if NOT $media.manage}
                                 {* we need a link to go to the next step when inserting into an entry *}
-                                <a {if $media.manage AND $media.multiperm}class="media_fullsize"{/if} href="{$link}" title="{$CONST.MEDIA_FULLSIZE}: {$file.realname}" data-pwidth="{$file.popupWidth}" data-pheight="{$file.popupHeight}">
+                                <a {if $media.manage AND $media.multiperm}class="media_fullsize"{/if} href="{if isset($link)}{$link}{/if}" title="{$CONST.MEDIA_FULLSIZE}: {$file.realname}" data-pwidth="{$file.popupWidth}" data-pheight="{$file.popupHeight}">
                                     {$CONST.VIDEO}
                                 </a>
                             {/if}
                         {else}
-                            <a {if $media.manage AND $media.multiperm}class="media_fullsize"{/if} href="{$link}" title="{$CONST.MEDIA_FULLSIZE}: {$file.realname}" data-pwidth="{$file.popupWidth}" data-pheight="{$file.popupHeight}">
+                            <a {if $media.manage AND $media.multiperm}class="media_fullsize"{/if} href="{if isset($link)}{$link}{/if}" title="{$CONST.MEDIA_FULLSIZE}: {$file.realname}" data-pwidth="{$file.popupWidth}" data-pheight="{$file.popupHeight}">
                                 {* even files that are not images get aplaceholder image from the backend *}    
                                 <img src="{$img_src}" title="{$img_title}" alt="{$img_alt}">
                             </a>
@@ -210,10 +210,10 @@
                         <label for="newDir{$file@key}">{$CONST.FILTER_DIRECTORY}</label>
                         <input type="hidden" name="serendipity[oldDir][{$file@key}]" value="{$file.path|escape}">
                         <select id="newDir{$file@key}" name="serendipity[newDir][{$file@key}]">
-                            <option{if ($file.path == $folder.relpath)} selected{/if} value="">{$CONST.BASE_DIRECTORY}</option>
+                            <option{if (isset($folder) && $file.path == $folder.relpath)} selected{/if} value="">{$CONST.BASE_DIRECTORY}</option>
                         {foreach $media.paths AS $folder}
 
-                            <option{if ($file.path == $folder.relpath)} selected{/if} value="{$folder.relpath}">{'&nbsp;'|str_repeat:($folder.depth*2)}{$folder.name}</option>
+                            <option{if ($file.path == $folder.relpath)} selected{/if} value="{$folder.relpath}">{'&nbsp;'|str_repeat:($folder.depth*2)}{if isset($folder.name)}{$folder.name}{/if}</option>
                         {/foreach}
 
                         </select>
@@ -228,7 +228,7 @@
                     <ul class="clearfix plainList">
                     {foreach $file.base_keywords AS $keyword_cells}
                         {foreach $keyword_cells AS $keyword}
-                        {if $keyword.name}
+                        {if isset($keyword.name) and $keyword.name}
 
                         <li>
                             <input id="mediaKeyword{$keyword.name}{$file@key}" name="serendipity[mediaKeywords][{$file@key}][{$keyword.name}]" type="checkbox" value="true"{if $keyword.selected} checked="checked"{/if}>