1
0

PHP8 compat fixes for media library

This commit is contained in:
onli
2021-05-02 12:43:26 +02:00
parent cb258fa3a8
commit a6ca0d7fe5
3 changed files with 44 additions and 26 deletions

View File

@ -21,6 +21,13 @@ if (!is_array($serendipity['POST']) && $serendipity['GET']['adminAction'] == 'mu
unset($serendipity['GET']['adminAction']); unset($serendipity['GET']['adminAction']);
} }
if (empty($serendipity['GET']['toggle_dir']) && empty($serendipity['COOKIE']['serendipity_toggle_dir'])) {
$serendipity['GET']['toggle_dir'] = 'no'; // default
}
if (!empty($serendipity['COOKIE']['serendipity_toggle_dir'])) {
serendipity_restoreVar($serendipity['COOKIE']['serendipity_toggle_dir'], $serendipity['GET']['toggle_dir']);
}
$messages = array(); $messages = array();
// submitted media_upload.tpl: check for empty file field and redirect back to media_upload // submitted media_upload.tpl: check for empty file field and redirect back to media_upload

View File

@ -169,7 +169,7 @@ function serendipity_fetchImagesFromDatabase($start=0, $limit=0, &$total=null, $
serendipity_plugin_api::hook_event('fetch_images_sql', $cond); serendipity_plugin_api::hook_event('fetch_images_sql', $cond);
serendipity_ACL_SQL($cond, false, 'directory'); serendipity_ACL_SQL($cond, false, 'directory');
if ($cond['joinparts']['keywords']) { if ($cond['joinparts']['keywords'] ?? false) {
$cond['joins'] .= "\n LEFT OUTER JOIN {$serendipity['dbPrefix']}mediaproperties AS mk $cond['joins'] .= "\n LEFT OUTER JOIN {$serendipity['dbPrefix']}mediaproperties AS mk
ON (mk.mediaid = i.id AND mk.property_group = 'base_keyword')\n"; ON (mk.mediaid = i.id AND mk.property_group = 'base_keyword')\n";
} }
@ -183,17 +183,17 @@ function serendipity_fetchImagesFromDatabase($start=0, $limit=0, &$total=null, $
$cond['orderkey'] = "''"; $cond['orderkey'] = "''";
} }
if ($cond['joinparts']['properties']) { if ($cond['joinparts']['properties'] ?? false) {
$cond['joins'] .= "\n LEFT OUTER JOIN {$serendipity['dbPrefix']}mediaproperties AS bp $cond['joins'] .= "\n LEFT OUTER JOIN {$serendipity['dbPrefix']}mediaproperties AS bp
ON (bp.mediaid = i.id AND bp.property_group = 'base_property' AND bp.property = '{$cond['orderproperty']}')\n"; ON (bp.mediaid = i.id AND bp.property_group = 'base_property' AND bp.property = '{$cond['orderproperty']}')\n";
} }
if ($cond['joinparts']['filterproperties']) { if ($cond['joinparts']['filterproperties'] ?? false) {
$cond['joins'] .= "\n LEFT OUTER JOIN {$serendipity['dbPrefix']}mediaproperties AS bp2 $cond['joins'] .= "\n LEFT OUTER JOIN {$serendipity['dbPrefix']}mediaproperties AS bp2
ON (bp2.mediaid = i.id AND bp2.property_group = 'base_property')\n"; ON (bp2.mediaid = i.id AND bp2.property_group = 'base_property')\n";
} }
if ($cond['joinparts']['hiddenproperties']) { if ($cond['joinparts']['hiddenproperties'] ?? false) {
$cond['joins'] .= "\n LEFT OUTER JOIN {$serendipity['dbPrefix']}mediaproperties AS hp $cond['joins'] .= "\n LEFT OUTER JOIN {$serendipity['dbPrefix']}mediaproperties AS hp
ON (hp.mediaid = i.id AND hp.property_group = 'base_hidden')\n"; ON (hp.mediaid = i.id AND hp.property_group = 'base_hidden')\n";
} }
@ -1570,7 +1570,7 @@ function serendipity_displayImageList($page = 0, $lineBreak = NULL, $manage = fa
echo "<p>Image Sync Right: " . serendipity_checkPermission('adminImagesSync') . " Onthefly Sync: " . $serendipity['onTheFlySynch'] . " Hash: " . $serendipity['current_image_hash'] . "!=" . $serendipity['last_image_hash']. "</p>"; echo "<p>Image Sync Right: " . serendipity_checkPermission('adminImagesSync') . " Onthefly Sync: " . $serendipity['onTheFlySynch'] . " Hash: " . $serendipity['current_image_hash'] . "!=" . $serendipity['last_image_hash']. "</p>";
} }
if ($serendipity['onTheFlySynch'] && serendipity_checkPermission('adminImagesSync') && ($debug || ($serendipity['current_image_hash'] != $serendipity['last_image_hash']))) { if ($serendipity['onTheFlySynch'] && serendipity_checkPermission('adminImagesSync') && ($debug || ($serendipity['current_image_hash'] != ($serendipity['last_image_hash'] ?? null)))) {
$aResultSet = serendipity_db_query("SELECT path, name, extension, thumbnail_name, id $aResultSet = serendipity_db_query("SELECT path, name, extension, thumbnail_name, id
FROM {$serendipity['dbPrefix']}images", false, 'assoc'); FROM {$serendipity['dbPrefix']}images", false, 'assoc');
@ -1709,7 +1709,7 @@ function serendipity_displayImageList($page = 0, $lineBreak = NULL, $manage = fa
} }
$dprops = $keywords = array(); $dprops = $keywords = array();
if ($serendipity['parseMediaOverview']) { if ($serendipity['parseMediaOverview'] ?? false) {
$ids = array(); $ids = array();
foreach ($serendipity['imageList'] AS $k => $file) { foreach ($serendipity['imageList'] AS $k => $file) {
$ids[] = $file['id']; $ids[] = $file['id'];
@ -1836,6 +1836,10 @@ function serendipity_isImage(&$file, $strict = false, $allowed = 'image/') {
$file['displaymime'] = $file['mime']; $file['displaymime'] = $file['mime'];
if (! isset($file['imgsrc'])) {
return false;
}
// Strip HTTP path out of imgsrc // Strip HTTP path out of imgsrc
$file['location'] = $serendipity['serendipityPath'] . preg_replace('@^(' . preg_quote($serendipity['serendipityHTTPPath']) . ')@i', '', $file['imgsrc']); $file['location'] = $serendipity['serendipityPath'] . preg_replace('@^(' . preg_quote($serendipity['serendipityHTTPPath']) . ')@i', '', $file['imgsrc']);
@ -1952,7 +1956,7 @@ function serendipity_traversePath($basedir, $dir='', $onlyDirs = true, $pattern
global $serendipity; global $serendipity;
if ($serendipity['useInternalCache']) { if ($serendipity['useInternalCache']) {
$key = md5($basedir . $dir . $onlyDirs . $pattern . $depth . $max_depth . $apply_ACL . $aExcludeDirs . $serendipity['serendipityUser']); $key = md5($basedir . $dir . $onlyDirs . $pattern . $depth . $max_depth . $apply_ACL . serialize($aExcludeDirs) . $serendipity['serendipityUser']);
$files = serendipity_getCacheItem($key); $files = serendipity_getCacheItem($key);
if ($files && $files !== false) { if ($files && $files !== false) {
return unserialize($files); return unserialize($files);
@ -2139,13 +2143,14 @@ function serendipity_getimagesize($file, $ft_mime = '', $suf = '') {
function serendipity_getImageFields() { function serendipity_getImageFields() {
global $serendipity; global $serendipity;
if ($serendipity['simpleFilters'] !== false) { if (($serendipity['simpleFilters'] ?? true) !== false) {
$x = array( $x = array(
'i.date' => array('desc' => SORT_ORDER_DATE, 'i.date' => array('desc' => SORT_ORDER_DATE,
'type' => 'date' 'type' => 'date'
), ),
'i.name' => array('desc' => SORT_ORDER_NAME 'i.name' => array('desc' => SORT_ORDER_NAME,
'type' => 'text'
), ),
); );
@ -2156,14 +2161,16 @@ function serendipity_getImageFields() {
'type' => 'date' 'type' => 'date'
), ),
'i.name' => array('desc' => SORT_ORDER_NAME 'i.name' => array('desc' => SORT_ORDER_NAME,
'type' => 'text'
), ),
'i.authorid' => array('desc' => AUTHOR, 'i.authorid' => array('desc' => AUTHOR,
'type' => 'authors' 'type' => 'authors'
), ),
'i.extension' => array('desc' => SORT_ORDER_EXTENSION 'i.extension' => array('desc' => SORT_ORDER_EXTENSION,
'type' => 'text'
), ),
'i.size' => array('desc' => SORT_ORDER_SIZE, 'i.size' => array('desc' => SORT_ORDER_SIZE,
@ -3234,7 +3241,7 @@ function serendipity_showMedia(&$file, &$paths, $url = '', $manage = false, $lin
$form_hidden = ''; $form_hidden = '';
// do not add, if not for the default media list form // do not add, if not for the default media list form
if (($serendipity['GET']['adminAction'] == 'default' || empty($serendipity['GET']['adminAction'])) && !$serendipity['GET']['fid']) { if (($serendipity['GET']['adminAction'] == 'default' || empty($serendipity['GET']['adminAction'])) && ! ($serendipity['GET']['fid'] ?? null)) {
foreach($serendipity['GET'] AS $g_key => $g_val) { foreach($serendipity['GET'] AS $g_key => $g_val) {
// do not add token, since this is assigned separately to properties and list forms // do not add token, since this is assigned separately to properties and list forms
if (!is_array($g_val) && $g_key != 'page' && $g_key != 'token') { if (!is_array($g_val) && $g_key != 'page' && $g_key != 'token') {
@ -3247,8 +3254,6 @@ function serendipity_showMedia(&$file, &$paths, $url = '', $manage = false, $lin
serendipity_smarty_init(); serendipity_smarty_init();
} }
$order_fields = serendipity_getImageFields(); $order_fields = serendipity_getImageFields();
// reset filename for building template filters, since this is hardcoded as 'only_filename'
#unset($order_fields['i.name']);
$media = array( $media = array(
'manage' => $manage, 'manage' => $manage,
@ -3272,11 +3277,11 @@ function serendipity_showMedia(&$file, &$paths, $url = '', $manage = false, $lin
'only_path' => $serendipity['GET']['only_path'], 'only_path' => $serendipity['GET']['only_path'],
'only_filename' => $serendipity['GET']['only_filename'], 'only_filename' => $serendipity['GET']['only_filename'],
'sortorder' => $serendipity['GET']['sortorder'], 'sortorder' => $serendipity['GET']['sortorder'],
'keywords_selected' => $serendipity['GET']['keywords'], 'keywords_selected' => $serendipity['GET']['keywords'] ?? null,
'filter' => $serendipity['GET']['filter'], 'filter' => $serendipity['GET']['filter'] ?? ['fileCategory' => null],
'sort_order' => $order_fields, 'sort_order' => $order_fields,
'simpleFilters' => $serendipity['simpleFilters'], 'simpleFilters' => $serendipity['simpleFilters'] ?? true,
'hideSubdirFiles' => $serendipity['GET']['hideSubdirFiles'], 'hideSubdirFiles' => $serendipity['GET']['hideSubdirFiles'] ?? null,
'authors' => serendipity_fetchUsers(), 'authors' => serendipity_fetchUsers(),
'sort_row_interval' => array(8, 16, 50, 100), 'sort_row_interval' => array(8, 16, 50, 100),
'nr_files' => count($file), 'nr_files' => count($file),
@ -3756,7 +3761,11 @@ function showMediaLibrary($addvar_check = false, $smarty_vars = array()) {
'filename_only' => isset($serendipity['GET']['filename_only']) ? $serendipity['GET']['filename_only'] : false, 'filename_only' => isset($serendipity['GET']['filename_only']) ? $serendipity['GET']['filename_only'] : false,
); );
$show_upload = isset($serendipity['GET']['showUpload']) ? $serendipity['GET']['showUpload'] : false; if (isset($serendipity['GET']['showUpload'])) {
$show_upload = $serendipity['GET']['showUpload'];
} else {
$show_upload = $serendipity['GET']['showUpload'] = false;
}
$output .= serendipity_displayImageList( $output .= serendipity_displayImageList(
isset($serendipity['GET']['page']) ? $serendipity['GET']['page'] : 1, isset($serendipity['GET']['page']) ? $serendipity['GET']['page'] : 1,

View File

@ -18,7 +18,7 @@
<div class="form_select"> <div class="form_select">
<label for="serendipity_only_path" class="visuallyhidden">{$CONST.FILTER_DIRECTORY}</label> <label for="serendipity_only_path" class="visuallyhidden">{$CONST.FILTER_DIRECTORY}</label>
<select id="serendipity_only_path" name="serendipity[only_path]"> <select id="serendipity_only_path" name="serendipity[only_path]">
<option value="">{if NOT $media.limit_path}{if $media.toggle_dir == 'yes'}{$CONST.BASE_DIRECTORY}{else}{$CONST.ALL_DIRECTORIES}{/if}{else}{$media.blimit_path}{/if}</option> <option value="">{if NOT $media.limit_path}{if isset($media.toggle_dir) AND $media.toggle_dir == 'yes'}{$CONST.BASE_DIRECTORY}{else}{$CONST.ALL_DIRECTORIES}{/if}{else}{$media.blimit_path}{/if}</option>
{foreach $media.paths AS $folderHead} {foreach $media.paths AS $folderHead}
<option{if ($media.only_path == $media.limit_path|cat:$folderHead.relpath)} selected{/if} value="{$folderHead.relpath}">{'&nbsp;'|str_repeat:($folderHead.depth*2)}{$folderHead.name}</option> <option{if ($media.only_path == $media.limit_path|cat:$folderHead.relpath)} selected{/if} value="{$folderHead.relpath}">{'&nbsp;'|str_repeat:($folderHead.depth*2)}{$folderHead.name}</option>
@ -63,17 +63,17 @@
<div class="form_field"> <div class="form_field">
<label for="serendipity_filter_{$filter@key}_from" class="range-label">{$CONST.RANGE_FROM|lower}</label> <label for="serendipity_filter_{$filter@key}_from" class="range-label">{$CONST.RANGE_FROM|lower}</label>
<input id="serendipity_filter_{$filter@key}_from" name="serendipity[filter][{$filter@key}][from]" type="date" placeholder="2001-01-31" value="{$media.filter[$filter@key].from|escape}"> <input id="serendipity_filter_{$filter@key}_from" name="serendipity[filter][{$filter@key}][from]" type="date" placeholder="2001-01-31" value="{if isset($media.filter[$filter@key].from)}{$media.filter[$filter@key].from|escape}{/if}">
<label for="serendipity_filter_{$filter@key}_to" class="range-label">{$CONST.RANGE_TO|lower}</label> <label for="serendipity_filter_{$filter@key}_to" class="range-label">{$CONST.RANGE_TO|lower}</label>
<input id="serendipity_filter_{$filter@key}_to" name="serendipity[filter][{$filter@key}][to]" type="date" placeholder="2005-12-31" value="{$media.filter[$filter@key].to|escape}"> <input id="serendipity_filter_{$filter@key}_to" name="serendipity[filter][{$filter@key}][to]" type="date" placeholder="2005-12-31" value="{if isset($media.filter[$filter@key].to)}{$media.filter[$filter@key].to|escape}{/if}">
</div> </div>
{elseif $filter.type == 'intrange'} {elseif $filter.type == 'intrange'}
<div class="form_field"> <div class="form_field">
<label for="serendipity_filter_{$filter@key}_from" class="range-label">{$CONST.RANGE_FROM|lower}</label> <label for="serendipity_filter_{$filter@key}_from" class="range-label">{$CONST.RANGE_FROM|lower}</label>
<input id="serendipity_filter_{$filter@key}_from" name="serendipity[filter][{$filter@key}][from]" type="text" placeholder="{if $filtername == 'bp.RUN_LENGTH'}in{/if}" value="{$media.filter[$filter@key].from|escape}"> <input id="serendipity_filter_{$filter@key}_from" name="serendipity[filter][{$filter@key}][from]" type="text" placeholder="{if $filtername == 'bp.RUN_LENGTH'}in{/if}" value="{if isset($media.filter[$filter@key].from)}{$media.filter[$filter@key].from|escape}{/if}">
<label for="serendipity_filter_{$filter@key}_to" class="range-label">{$CONST.RANGE_TO|lower}</label> <label for="serendipity_filter_{$filter@key}_to" class="range-label">{$CONST.RANGE_TO|lower}</label>
<input id="serendipity_filter_{$filter@key}_to" name="serendipity[filter][{$filter@key}][to]" type="text" placeholder="{if $filtername == 'bp.RUN_LENGTH'}seconds{/if}" value="{$media.filter[$filter@key].to|escape}"> <input id="serendipity_filter_{$filter@key}_to" name="serendipity[filter][{$filter@key}][to]" type="text" placeholder="{if $filtername == 'bp.RUN_LENGTH'}seconds{/if}" value="{if isset($media.filter[$filter@key].to)}{$media.filter[$filter@key].to|escape}{/if}">
</div> </div>
{elseif $filter.type == 'authors'} {elseif $filter.type == 'authors'}
@ -81,13 +81,13 @@
<option value="">{$CONST.ALL_AUTHORS}</option> <option value="">{$CONST.ALL_AUTHORS}</option>
{foreach $media.authors AS $media_author} {foreach $media.authors AS $media_author}
<option value="{$media_author.authorid}"{if $media.filter[$filter@key] == $media_author.authorid} selected{/if}>{$media_author.realname|escape}</option> <option value="{$media_author.authorid}"{if isset($media.filter[$filter@key]) and $media.filter[$filter@key] == $media_author.authorid} selected{/if}>{$media_author.realname|escape}</option>
{/foreach} {/foreach}
</select> </select>
{else}{* this is of type string w/o being named *} {else}{* this is of type string w/o being named *}
{* label is already set on loop start, when type is not date or intrange *} {* label is already set on loop start, when type is not date or intrange *}
<input id="serendipity_filter_{$filter@key}" name="serendipity[filter][{$filter@key}]" type="text" value="{$media.filter[$filter@key]|escape}"> <input id="serendipity_filter_{$filter@key}" name="serendipity[filter][{$filter@key}]" type="text" value="{if isset($media.filter[$filter@key])}{$media.filter[$filter@key]|escape}{/if}">
{/if} {/if}
{if $filter.type == 'date' || $filter.type == 'intrange'} {if $filter.type == 'date' || $filter.type == 'intrange'}
@ -182,10 +182,12 @@
serendipity.SetCookie("sortorder_{$sortParam}","{$media.sortorder.{$sortParam}}"); serendipity.SetCookie("sortorder_{$sortParam}","{$media.sortorder.{$sortParam}}");
{/foreach} {/foreach}
{if isset($media.filterParams)}
{foreach $media.filterParams AS $filterParam} {foreach $media.filterParams AS $filterParam}
serendipity.SetCookie("{$filterParam}", "{$media.{$filterParam}}"); serendipity.SetCookie("{$filterParam}", "{$media.{$filterParam}}");
{/foreach} {/foreach}
{/if}
serendipity.SetCookie("only_path", "{$media.only_path}"); serendipity.SetCookie("only_path", "{$media.only_path}");