Files
resourcespace/pages/collection_edit_previews.php
2025-07-18 16:20:14 +07:00

149 lines
7.0 KiB
PHP

<?php
include "../include/boot.php";
include "../include/authenticate.php";
include_once "../include/image_processing.php";
$ref = getval("ref", ($usercollection ?? 0), true);
$offset = getval("offset", 0, true);
$find = getval("find", "");
$col_order_by = getval("col_order_by", "name");
$order_by = getval("order_by", "");
$sort = getval("sort", "ASC");
# Fetch collection data
$collection_ref = $ref; // preserve collection id because tweaking resets $ref to resource ids
$collection = get_collection($ref);
if ($collection !== false) {
# Check access
if (!allow_multi_edit($collection_ref, $collection_ref)) {
exit(escape($lang["no_access_to_collection"]));
}
$resources = do_search("!collection" . $ref);
$colcount = count($resources);
if (getval("tweak", "") != "" && enforcePostRequest(false)) {
$tweak = getval("tweak", "");
switch ($tweak) {
case "rotateclock":
foreach ($resources as $resource) {
tweak_preview_images($resource['ref'], 270, 0, $resource["preview_extension"], -1, $resource['file_extension']);
}
$message = $lang["complete"];
break;
case "rotateanti":
foreach ($resources as $resource) {
tweak_preview_images($resource['ref'], 90, 0, $resource["preview_extension"], -1, $resource['file_extension']);
}
$message = $lang["complete"];
break;
case "gammaplus":
foreach ($resources as $resource) {
tweak_preview_images($resource['ref'], 0, 1.3, $resource["preview_extension"]);
}
$message = $lang["complete"];
break;
case "gammaminus":
foreach ($resources as $resource) {
tweak_preview_images($resource['ref'], 0, 0.7, $resource["preview_extension"]);
}
$message = $lang["complete"];
break;
case "restore":
if ($GLOBALS["offline_job_queue"]) {
foreach ($resources as $resource) {
$create_previews_job_data = [
'resource' => $resource['ref'],
'thumbonly' => false,
'extension' => $resource["file_extension"],
'previewonly' => false,
'previewbased' => false,
'alternative' => -1,
'ignoremaxsize' => true,
];
$create_previews_job_success_text = str_replace('%RESOURCE', $ref, $lang['jq_create_previews_success_text']);
$create_previews_job_failure_text = str_replace('%RESOURCE', $ref, $lang['jq_create_previews_failure_text']);
job_queue_add('create_previews', $create_previews_job_data, '', '', $create_previews_job_success_text, $create_previews_job_failure_text);
}
$message = $lang["recreatepreviews_pending"];
} elseif ($GLOBALS["enable_thumbnail_creation_on_upload"] === false || isset($GLOBALS["preview_generate_max_file_size"])) {
$params = array_merge(['i',RESOURCE_PREVIEWS_NONE], ps_param_fill(array_column($resources, "ref"), "i"));
ps_query("UPDATE resource SET has_image = ?, preview_attempts=0 WHERE ref IN (" . ps_param_insert(count($resources)) . ")", $params);
$message = $lang["recreatepreviews_pending"];
} else {
// No offline preview functionality enabled - to be created synchronously
foreach ($resources as $resource) {
$ingested = empty($resource['file_path']);
delete_previews($resource);
create_previews($resource['ref'], false, $resource["file_extension"], false, false, -1, true, $ingested);
$message = $lang["complete"];
}
}
$ref = $collection_ref; // restore collection id because tweaking resets $ref to resource ids
break;
}
set_processing_message(""); // Clear once complete or unread messages will hang around
refresh_collection_frame($collection_ref);
}
} else {
$message = $lang['error-collectionnotfound'];
}
include "../include/header.php";
?>
<div class="BasicsBox">
<h1><?php echo escape($lang["editresourcepreviews"]) ?></h1>
<p><?php echo text("introtext")?></p>
<?php if (isset($message)) { ?>
<div class="PageInformal"><?php echo escape($message); ?></div>
<?php
}
if ($collection) { ?>
<form
method=post
id="collectionform"
action="<?php echo $baseurl_short?>pages/collection_edit_previews.php"
>
<?php generateFormToken("collectionpreviewsform"); ?>
<input type=hidden value='<?php echo (int) $ref ?>' name="ref" id="ref"/>
<div class="Question">
<label><?php echo escape($lang["collection"]) ?></label>
<div class="Fixed"><?php echo escape(i18n_get_collection_name($collection)) ?></div>
<div class="clearerleft"></div>
</div>
<?php if (allow_multi_edit($resources, $ref)) { ?>
<div class="Question">
<label for="tweak">
<?php echo escape($lang["imagecorrection"])?>
<br/>
<?php echo escape($lang["previewthumbonly"])?>
</label>
<select class="stdwidth" name="tweak" id="tweak" onchange="return CentralSpacePost(this.form, true);">
<option value=""><?php echo escape($lang["select"])?></option>
<?php if (!$image_rotate_reverse_options) { ?>
<option value="rotateclock"><?php echo escape($lang["rotateclockwise"])?></option>
<option value="rotateanti"><?php echo escape($lang["rotateanticlockwise"])?></option>
<?php } else { ?>
<option value="rotateanti"><?php echo escape($lang["rotateclockwise"])?></option>
<option value="rotateclock"><?php echo escape($lang["rotateanticlockwise"])?></option>
<?php } ?>
<option value="gammaplus"><?php echo escape($lang["increasegamma"])?></option>
<option value="gammaminus"><?php echo escape($lang["decreasegamma"])?></option>
<option value="restore"><?php echo escape($lang["recreatepreviews"])?></option>
</select>
<div class="clearerleft"></div>
</div>
<?php } ?>
</form>
<?php
}
?>
</div>
<?php
include "../include/footer.php";