mirror of
https://github.com/Piwigo/Piwigo.git
synced 2025-04-27 11:49:56 +03:00
git-svn-id: http://piwigo.org/svn/trunk@13544 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
parent
bfdcd5e649
commit
f0d5c6c010
6 changed files with 193 additions and 400 deletions
|
@ -411,39 +411,28 @@ DELETE
|
|||
);
|
||||
}
|
||||
|
||||
if ('regenerateThumbnails' == $action)
|
||||
if ('delete_derivatives' == $action)
|
||||
{
|
||||
$query='SELECT path,representative_ext FROM '.IMAGES_TABLE.'
|
||||
WHERE id IN ('.implode(',', $collection).')';
|
||||
$result = pwg_query($query);
|
||||
while ($info = pwg_db_fetch_assoc($result))
|
||||
{
|
||||
foreach( $_POST['del_derivatives_type'] as $type)
|
||||
{
|
||||
delete_element_derivatives($info, $type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ('generate_derivatives' == $action)
|
||||
{
|
||||
if ($_POST['regenerateSuccess'] != '0')
|
||||
array_push($page['infos'], sprintf(l10n('%s thumbnails have been regenerated'), $_POST['regenerateSuccess']));
|
||||
array_push($page['infos'], sprintf(l10n('%s photos were generated'), $_POST['regenerateSuccess']));
|
||||
|
||||
if ($_POST['regenerateError'] != '0')
|
||||
array_push($page['warnings'], sprintf(l10n('%s thumbnails can not be regenerated'), $_POST['regenerateError']));
|
||||
array_push($page['warnings'], sprintf(l10n('%s photos were not generated'), $_POST['regenerateError']));
|
||||
|
||||
$update_fields = array('thumb_maxwidth', 'thumb_maxheight', 'thumb_quality', 'thumb_crop', 'thumb_follow_orientation');
|
||||
}
|
||||
|
||||
if ('regenerateWebsize' == $action)
|
||||
{
|
||||
if ($_POST['regenerateSuccess'] != '0')
|
||||
array_push($page['infos'], sprintf(l10n('%s photos have been regenerated'), $_POST['regenerateSuccess']));
|
||||
|
||||
if ($_POST['regenerateError'] != '0')
|
||||
array_push($page['warnings'], sprintf(l10n('%s photos can not be regenerated'), $_POST['regenerateError']));
|
||||
|
||||
$update_fields = array('websize_maxwidth', 'websize_maxheight', 'websize_quality');
|
||||
}
|
||||
|
||||
if (!empty($update_fields))
|
||||
{
|
||||
// Update upload configuration
|
||||
$updates = array();
|
||||
foreach ($update_fields as $field)
|
||||
{
|
||||
$value = !empty($_POST[$field]) ? $_POST[$field] : null;
|
||||
$form_values[$field] = $value;
|
||||
$updates[$field] = $value;
|
||||
}
|
||||
save_upload_form_config($updates);
|
||||
}
|
||||
|
||||
trigger_action('element_set_global_action', $action, $collection);
|
||||
|
@ -672,6 +661,19 @@ $template->assign(
|
|||
)
|
||||
);
|
||||
|
||||
//derivatives
|
||||
$del_deriv_map = array();
|
||||
foreach(ImageStdParams::get_defined_type_map() as $params)
|
||||
{
|
||||
$del_deriv_map[$params->type] = l10n($params->type);
|
||||
}
|
||||
$template->assign(
|
||||
array(
|
||||
'del_derivatives_types' => $del_deriv_map,
|
||||
'generate_derivatives_types' => $del_deriv_map,
|
||||
)
|
||||
);
|
||||
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | global mode thumbnails |
|
||||
// +-----------------------------------------------------------------------+
|
||||
|
@ -756,7 +758,7 @@ SELECT id,path,representative_ext,file,filesize,level,name
|
|||
while ($row = pwg_db_fetch_assoc($result))
|
||||
{
|
||||
$nb_thumbs_page++;
|
||||
$src = DerivativeImage::thumb_url($row);
|
||||
$src_image = new SrcImage($row);
|
||||
|
||||
$title = render_element_name($row);
|
||||
if ($title != get_name_from_file($row['file']))
|
||||
|
@ -768,11 +770,11 @@ SELECT id,path,representative_ext,file,filesize,level,name
|
|||
'thumbnails',
|
||||
array(
|
||||
'ID' => $row['id'],
|
||||
'TN_SRC' => $src,
|
||||
'TN_SRC' => DerivativeImage::url(IMG_THUMB, $src_image),
|
||||
'FILE' => $row['file'],
|
||||
'TITLE' => $title,
|
||||
'LEVEL' => $row['level'],
|
||||
'FILE_SRC' => $row['path'],
|
||||
'FILE_SRC' => DerivativeImage::url(IMG_LARGE, $src_image),
|
||||
'U_EDIT' => get_root_url().'admin.php?page=photo-'.$row['id'],
|
||||
)
|
||||
);
|
||||
|
|
|
@ -94,14 +94,13 @@ jQuery(document).ready(function() {ldelim}
|
|||
var nb_thumbs_page = {$nb_thumbs_page};
|
||||
var nb_thumbs_set = {$nb_thumbs_set};
|
||||
var applyOnDetails_pattern = "{'on the %d selected photos'|@translate}";
|
||||
var elements = new Array();
|
||||
var elements = [];
|
||||
var all_elements = [{if !empty($all_elements)}{','|@implode:$all_elements}{/if}];
|
||||
var generate_derivatives_done=false;
|
||||
|
||||
var selectedMessage_pattern = "{'%d of %d photos selected'|@translate}";
|
||||
var selectedMessage_none = "{'No photo selected, %d photos in current set'|@translate}";
|
||||
var selectedMessage_all = "{'All %d photos are selected'|@translate}";
|
||||
var regenerateThumbnailsMessage = "{'Thumbnails generation in progress...'|@translate}";
|
||||
var regenerateWebsizeMessage = "{'Photos generation in progress...'|@translate}";
|
||||
|
||||
var width_str = '{'Width'|@translate}';
|
||||
var height_str = '{'Height'|@translate}';
|
||||
|
@ -162,13 +161,17 @@ function progress(val, max, success) {
|
|||
boxImage: 'themes/default/images/progressbar.gif',
|
||||
barImage: 'themes/default/images/progressbg_orange.gif'
|
||||
});
|
||||
type = success ? 'regenerateSuccess': 'regenerateError'
|
||||
if (success !== undefined) {
|
||||
var type = success ? 'regenerateSuccess': 'regenerateError',
|
||||
s = jQuery('[name="'+type+'"]').val();
|
||||
jQuery('[name="'+type+'"]').val(++s);
|
||||
}
|
||||
|
||||
if (val == max)
|
||||
if (val == max) {
|
||||
generate_derivatives_done = true;
|
||||
jQuery('#applyAction').click();
|
||||
}
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
function checkPermitAction() {
|
||||
|
@ -402,39 +405,21 @@ $(document).ready(function() {
|
|||
});
|
||||
|
||||
jQuery('#applyAction').click(function() {
|
||||
if (elements.length != 0)
|
||||
if (jQuery('[name="selectAction"]').val() != 'generate_derivatives')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else if (jQuery('[name="selectAction"]').val() == 'regenerateThumbnails')
|
||||
if (generate_derivatives_done)
|
||||
{
|
||||
resizeMethod = 'pwg.images.resizeThumbnail';
|
||||
maxRequests = 3;
|
||||
maxwidth = jQuery('input[name="thumb_maxwidth"]').val();
|
||||
maxheight = jQuery('input[name="thumb_maxheight"]').val();
|
||||
regenerationText = regenerateThumbnailsMessage;
|
||||
crop = jQuery('input[name="thumb_crop"]').is(':checked');
|
||||
follow_orientation = jQuery('input[name="thumb_follow_orientation"]').is(':checked');
|
||||
return true;
|
||||
}
|
||||
else if(jQuery('[name="selectAction"]').val() == 'regenerateWebsize')
|
||||
{
|
||||
resizeMethod = 'pwg.images.resizeWebsize';
|
||||
maxRequests = 1;
|
||||
maxwidth = jQuery('input[name="websize_maxwidth"]').val();
|
||||
maxheight = jQuery('input[name="websize_maxheight"]').val();
|
||||
regenerationText = regenerateWebsizeMessage;
|
||||
crop = false;
|
||||
follow_orientation = false;
|
||||
}
|
||||
else return true;
|
||||
|
||||
jQuery('.bulkAction').hide();
|
||||
jQuery('#regenerationText').html(regenerationText);
|
||||
|
||||
var queuedManager = jQuery.manageAjax.create('queued', {
|
||||
queue: true,
|
||||
cacheResponse: false,
|
||||
maxRequests: maxRequests
|
||||
maxRequests: 1
|
||||
});
|
||||
|
||||
if (jQuery('input[name="setSelected"]').attr('checked'))
|
||||
|
@ -446,7 +431,7 @@ $(document).ready(function() {
|
|||
}
|
||||
});
|
||||
|
||||
progressBar_max = elements.length;
|
||||
progressBar_max = 0;
|
||||
todo = 0;
|
||||
|
||||
jQuery('#applyActionBlock').hide();
|
||||
|
@ -460,53 +445,56 @@ $(document).ready(function() {
|
|||
barImage: 'themes/default/images/progressbg_orange.gif'
|
||||
});
|
||||
|
||||
for (i=0;i<elements.length;i++) {
|
||||
queuedManager.add({
|
||||
type: 'GET',
|
||||
url: 'ws.php',
|
||||
data: {
|
||||
method: resizeMethod,
|
||||
maxwidth: maxwidth,
|
||||
maxheight: maxheight,
|
||||
crop: crop,
|
||||
follow_orientation: follow_orientation,
|
||||
image_id: elements[i],
|
||||
format: 'json'
|
||||
},
|
||||
dataType: 'json',
|
||||
success: ( function(data) { progress(++todo, progressBar_max, data['result']) }),
|
||||
error: ( function(data) { progress(++todo, progressBar_max, false) })
|
||||
});
|
||||
}
|
||||
getDerivativeUrls();
|
||||
return false;
|
||||
});
|
||||
|
||||
function toggleCropFields(prefix) {
|
||||
if (jQuery("#"+prefix+"_crop").is(':checked')) {
|
||||
jQuery("#"+prefix+"_width_th").text(width_str);
|
||||
jQuery("#"+prefix+"_height_th").text(height_str);
|
||||
jQuery("#"+prefix+"_follow_orientation_tr").show();
|
||||
}
|
||||
else {
|
||||
jQuery("#"+prefix+"_width_th").text(max_width_str);
|
||||
jQuery("#"+prefix+"_height_th").text(max_height_str);
|
||||
jQuery("#"+prefix+"_follow_orientation_tr").hide();
|
||||
}
|
||||
}
|
||||
function getDerivativeUrls() {
|
||||
if (elements.length==0)
|
||||
return;
|
||||
var ids = elements.splice(0, 500);
|
||||
var params = {max_urls: 100000, ids: ids, types: []};
|
||||
jQuery("#action_generate_derivatives input").each( function(i, t) {
|
||||
if ($(t).attr("checked"))
|
||||
params.types.push( t.value );
|
||||
} );
|
||||
|
||||
toggleCropFields("thumb");
|
||||
jQuery("#thumb_crop").click(function () {toggleCropFields("thumb")});
|
||||
jQuery.ajax( {
|
||||
type: "POST",
|
||||
url: 'ws.php?format=json&method=pwg.getMissingDerivatives',
|
||||
data: params,
|
||||
dataType: "json",
|
||||
success: function(data) {
|
||||
if (!data.stat || data.stat != "ok") {
|
||||
return;
|
||||
}
|
||||
progressBar_max += data.result.urls.length;
|
||||
progress(todo, progressBar_max);
|
||||
for (var i=0; i < data.result.urls.length; i++) {
|
||||
jQuery.manageAjax.add("queued", {
|
||||
type: 'GET',
|
||||
url: data.result.urls[i] + "&ajaxload=true",
|
||||
dataType: 'json',
|
||||
success: ( function(data) { progress(++todo, progressBar_max, true) }),
|
||||
error: ( function(data) { progress(++todo, progressBar_max, false) })
|
||||
});
|
||||
}
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
checkPermitAction()
|
||||
});
|
||||
|
||||
jQuery(window).load(function() {
|
||||
var max_dim = 0;
|
||||
var max_w=0, max_h=0;
|
||||
$(".thumbnails img").each(function () {
|
||||
max_dim = Math.max(max_dim, $(this).height(), $(this).width() );
|
||||
max_w = Math.max(max_w, $(this).width() );
|
||||
max_h = Math.max(max_h, $(this).height() );
|
||||
});
|
||||
max_dim += 35;
|
||||
$("ul.thumbnails span, ul.thumbnails label").css('width', max_dim+'px').css('height', max_dim+'px');
|
||||
max_w += 10;
|
||||
max_h += 35;
|
||||
$("ul.thumbnails span, ul.thumbnails label").css('width', max_w+'px').css('height', max_h+'px');
|
||||
$('ul.thumbnails').enableShiftClick();
|
||||
});
|
||||
{/literal}{/footer_script}
|
||||
|
@ -609,7 +597,6 @@ jQuery(window).load(function() {
|
|||
{else}
|
||||
{assign var='isSelected' value=false}
|
||||
{/if}
|
||||
|
||||
<li>
|
||||
<span class="wrap1">
|
||||
<label>
|
||||
|
@ -620,10 +607,7 @@ jQuery(window).load(function() {
|
|||
<em class="levelIndicatorF" title="{'Who can see these photos?'|@translate} : ">{$pwg->l10n($pwg->sprintf('Level %d',$thumbnail.LEVEL))}</em>
|
||||
{/if}
|
||||
<span>
|
||||
<img src="{$thumbnail.TN_SRC}"
|
||||
alt="{$thumbnail.FILE}"
|
||||
title="{$thumbnail.TITLE|@escape:'html'}"
|
||||
class="thumbnail">
|
||||
<img src="{$thumbnail.TN_SRC}" alt="{$thumbnail.FILE}" title="{$thumbnail.TITLE|@escape:'html'}" class="thumbnail">
|
||||
</span>
|
||||
</span>
|
||||
<input type="checkbox" name="selection[]" value="{$thumbnail.ID}" {if $isSelected}checked="checked"{/if}>
|
||||
|
@ -686,8 +670,8 @@ jQuery(window).load(function() {
|
|||
{else}
|
||||
<option value="add_to_caddie">{'Add to caddie'|@translate}</option>
|
||||
{/if}
|
||||
<option value="regenerateThumbnails">{'Regenerate Thumbnails'|@translate}</option>
|
||||
<option value="regenerateWebsize">{'Regenerate Websize Photos'|@translate}</option>
|
||||
<option value="delete_derivatives">{'Delete multiple size images'|@translate}</option>
|
||||
<option value="generate_derivatives">{'Generate multiple size images'|@translate}</option>
|
||||
{if !empty($element_set_global_plugins_actions)}
|
||||
{foreach from=$element_set_global_plugins_actions item=action}
|
||||
<option value="{$action.ID}">{$action.NAME}</option>
|
||||
|
@ -784,59 +768,45 @@ jQuery(window).load(function() {
|
|||
<div id="action_metadata" class="bulkAction">
|
||||
</div>
|
||||
|
||||
<!-- regenerate thumbnails -->
|
||||
<div id="action_regenerateThumbnails" class="bulkAction">
|
||||
<table style="margin-left:20px;">
|
||||
<tr>
|
||||
<th><label for="thumb_crop">{'Crop'|@translate}</label></th>
|
||||
<td><input type="checkbox" name="thumb_crop" id="thumb_crop" {if $upload_form_settings.thumb_crop}checked="checked"{/if}></td>
|
||||
</tr>
|
||||
<tr id="thumb_follow_orientation_tr">
|
||||
<th><label for="thumb_follow_orientation">{'Follow Orientation'|@translate}</label></th>
|
||||
<td><input type="checkbox" name="thumb_follow_orientation" id="thumb_follow_orientation" {if $upload_form_settings.thumb_follow_orientation}checked="checked"{/if}></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th id="thumb_width_th">{'Maximum Width'|@translate}</th>
|
||||
<td><input type="text" name="thumb_maxwidth" value="{$upload_form_settings.thumb_maxwidth}" size="4" maxlength="4"> {'pixels'|@translate}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th id="thumb_height_th">{'Maximum Height'|@translate}</th>
|
||||
<td><input type="text" name="thumb_maxheight" value="{$upload_form_settings.thumb_maxheight}" size="4" maxlength="4"> {'pixels'|@translate}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{'Image Quality'|@translate}</th>
|
||||
<td><input type="text" name="thumb_quality" value="{$upload_form_settings.thumb_quality}" size="3" maxlength="3"> %</td>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- generate derivatives -->
|
||||
<div id="action_generate_derivatives" class="bulkAction">
|
||||
<a href="javascript:selectGenerateDerivAll()">{'All'|@translate}</a>,
|
||||
<a href="javascript:selectGenerateDerivNone()">{'None'|@translate}</a>
|
||||
<br>
|
||||
{foreach from=$generate_derivatives_types key=type item=disp}
|
||||
<label><input type="checkbox" name="generate_derivatives_type[]" value="{$type}"> {$disp}</label>
|
||||
{/foreach}
|
||||
{footer_script}
|
||||
function selectGenerateDerivAll() {ldelim}
|
||||
$("#action_generate_derivatives input[type=checkbox]").attr("checked", true);
|
||||
}
|
||||
function selectGenerateDerivNone() {ldelim}
|
||||
$("#action_generate_derivatives input[type=checkbox]").attr("checked", false);
|
||||
}
|
||||
{/footer_script}
|
||||
</div>
|
||||
|
||||
<!-- regenerate websize -->
|
||||
<div id="action_regenerateWebsize" class="bulkAction">
|
||||
<p>
|
||||
<img src="admin/themes/default/icon/warning.png" alt="!" style="vertical-align:middle;">
|
||||
{'By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'|@translate}
|
||||
{'If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'|@translate}
|
||||
</p>
|
||||
|
||||
<table style="margin:10px 20px;">
|
||||
<tr>
|
||||
<th>{'Maximum Width'|@translate}</th>
|
||||
<td><input type="text" name="websize_maxwidth" value="{$upload_form_settings.websize_maxwidth}" size="4" maxlength="4"> {'pixels'|@translate}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{'Maximum Height'|@translate}</th>
|
||||
<td><input type="text" name="websize_maxheight" value="{$upload_form_settings.websize_maxheight}" size="4" maxlength="4"> {'pixels'|@translate}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{'Image Quality'|@translate}</th>
|
||||
<td><input type="text" name="websize_quality" value="{$upload_form_settings.websize_quality}" size="3" maxlength="3"> %</td>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- delete derivatives -->
|
||||
<div id="action_delete_derivatives" class="bulkAction">
|
||||
<a href="javascript:selectDelDerivAll()">{'All'|@translate}</a>,
|
||||
<a href="javascript:selectDelDerivNone()">{'None'|@translate}</a>
|
||||
<br>
|
||||
{foreach from=$del_derivatives_types key=type item=disp}
|
||||
<label><input type="checkbox" name="del_derivatives_type[]" value="{$type}"> {$disp}</label>
|
||||
{/foreach}
|
||||
{footer_script}
|
||||
function selectDelDerivAll() {ldelim}
|
||||
$("#action_delete_derivatives input[type=checkbox]").attr("checked", true);
|
||||
}
|
||||
function selectDelDerivNone() {ldelim}
|
||||
$("#action_delete_derivatives input[type=checkbox]").attr("checked", false);
|
||||
}
|
||||
{/footer_script}
|
||||
</div>
|
||||
|
||||
<!-- progress bar -->
|
||||
<div id="regenerationMsg" class="bulkAction">
|
||||
<p id="regenerationText" style="margin-bottom:10px;"></p>
|
||||
<div id="regenerationMsg" class="bulkAction" style="display:none">
|
||||
<p id="regenerationText" style="margin-bottom:10px;">{'Generate multiple size images'|@translate}</p>
|
||||
<span class="progressBar" id="progressBar"></span>
|
||||
<input type="hidden" name="regenerateSuccess" value="0">
|
||||
<input type="hidden" name="regenerateError" value="0">
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
<li><a href="{$U_MAINT_FEEDS}">{'Purge never used notification feeds'|@translate}</a></li>
|
||||
<li><a href="{$U_MAINT_SEARCH}"onclick="return confirm('{'Purge search history'|@translate|@escape:'javascript'}');">{'Purge search history'|@translate}</a></li>
|
||||
<li><a href="{$U_MAINT_COMPILED_TEMPLATES}">{'Purge compiled templates'|@translate}</a></li>
|
||||
<li>{'Purge derivative image cache'|@translate}:
|
||||
<li>{'Delete multiple size images'|@translate}:
|
||||
{foreach from=$purge_derivatives key=name item=url name=loop}{if !$smarty.foreach.loop.first}, {/if}<a href="{$url}">{$name}</a>{/foreach}
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
@ -219,6 +219,10 @@ function ws_getMissingDerivatives($params, &$service)
|
|||
$qlimit = min(5000, ceil(max($image_count/500, $max_urls/count($types))));
|
||||
$where_clauses = ws_std_image_sql_filter( $params, '' );
|
||||
$where_clauses[] = 'id<start_id';
|
||||
if ( !empty($params['ids']) )
|
||||
{
|
||||
$where_clauses[] = 'id IN ('.implode(',',$params['ids']).')';
|
||||
}
|
||||
|
||||
$query_model = 'SELECT id, path, representative_ext, width, height
|
||||
FROM '.IMAGES_TABLE.'
|
||||
|
@ -3266,157 +3270,6 @@ function ws_themes_performAction($params, &$service)
|
|||
}
|
||||
}
|
||||
|
||||
function ws_images_resizethumbnail($params, &$service)
|
||||
{
|
||||
if (!is_admin())
|
||||
{
|
||||
return new PwgError(401, 'Access denied');
|
||||
}
|
||||
|
||||
if (empty($params['image_id']) and empty($params['image_path']))
|
||||
{
|
||||
return new PwgError(403, "image_id or image_path is missing");
|
||||
}
|
||||
|
||||
include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php');
|
||||
include_once(PHPWG_ROOT_PATH.'admin/include/image.class.php');
|
||||
|
||||
if (!empty($params['image_id']))
|
||||
{
|
||||
$query='
|
||||
SELECT id, path, tn_ext, has_high
|
||||
FROM '.IMAGES_TABLE.'
|
||||
WHERE id = '.(int)$params['image_id'].'
|
||||
;';
|
||||
$image = pwg_db_fetch_assoc(pwg_query($query));
|
||||
|
||||
if ($image == null)
|
||||
{
|
||||
return new PwgError(403, "image_id not found");
|
||||
}
|
||||
|
||||
$image_path = $image['path'];
|
||||
$thumb_path = get_thumbnail_path($image);
|
||||
}
|
||||
else
|
||||
{
|
||||
$image_path = $params['image_path'];
|
||||
$thumb_path = file_path_for_type($image_path, 'thumb');
|
||||
}
|
||||
|
||||
if (!file_exists($image_path) or !is_valid_image_extension(get_extension($image_path)))
|
||||
{
|
||||
return new PwgError(403, "image can't be resized");
|
||||
}
|
||||
|
||||
$result = false;
|
||||
prepare_directory(dirname($thumb_path));
|
||||
$img = new pwg_image($image_path, $params['library']);
|
||||
|
||||
if (!is_bool($params['crop']))
|
||||
$params['crop'] = get_boolean($params['crop']);
|
||||
if (!is_bool($params['follow_orientation']))
|
||||
$params['follow_orientation'] = get_boolean($params['follow_orientation']);
|
||||
|
||||
$result = $img->pwg_resize(
|
||||
$thumb_path,
|
||||
$params['maxwidth'],
|
||||
$params['maxheight'],
|
||||
$params['quality'],
|
||||
false, // automatic rotation is not needed for thumbnails.
|
||||
true, // strip metadata
|
||||
$params['crop'],
|
||||
$params['follow_orientation']
|
||||
);
|
||||
|
||||
$img->destroy();
|
||||
return $result;
|
||||
}
|
||||
|
||||
function ws_images_resizewebsize($params, &$service)
|
||||
{
|
||||
if (!is_admin())
|
||||
{
|
||||
return new PwgError(401, 'Access denied');
|
||||
}
|
||||
|
||||
include_once(PHPWG_ROOT_PATH.'include/functions_picture.inc.php');
|
||||
include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php');
|
||||
include_once(PHPWG_ROOT_PATH.'admin/include/image.class.php');
|
||||
|
||||
$query='
|
||||
SELECT id, path, tn_ext, has_high, width, height
|
||||
FROM '.IMAGES_TABLE.'
|
||||
WHERE id = '.(int)$params['image_id'].'
|
||||
;';
|
||||
$image = pwg_db_fetch_assoc(pwg_query($query));
|
||||
|
||||
if ($image == null)
|
||||
{
|
||||
return new PwgError(403, "image_id not found");
|
||||
}
|
||||
|
||||
$image_path = $image['path'];
|
||||
|
||||
if (!is_valid_image_extension(get_extension($image_path)))
|
||||
{
|
||||
return new PwgError(403, "image can't be resized");
|
||||
}
|
||||
|
||||
$hd_path = get_high_path($image);
|
||||
|
||||
if (empty($image['has_high']) or !file_exists($hd_path))
|
||||
{
|
||||
if ($image['width'] > $params['maxwidth'] or $image['height'] > $params['maxheight'])
|
||||
{
|
||||
$hd_path = file_path_for_type($image_path, 'high');
|
||||
$hd_dir = dirname($hd_path);
|
||||
prepare_directory($hd_dir);
|
||||
|
||||
rename($image_path, $hd_path);
|
||||
$hd_infos = pwg_image_infos($hd_path);
|
||||
|
||||
single_update(
|
||||
IMAGES_TABLE,
|
||||
array(
|
||||
'has_high' => 'true',
|
||||
'high_filesize' => $hd_infos['filesize'],
|
||||
'high_width' => $hd_infos['width'],
|
||||
'high_height' => $hd_infos['height'],
|
||||
),
|
||||
array(
|
||||
'id' => $image['id']
|
||||
)
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
return new PwgError(403, "image can't be resized");
|
||||
}
|
||||
}
|
||||
|
||||
$result = false;
|
||||
$img = new pwg_image($hd_path, $params['library']);
|
||||
|
||||
$result = $img->pwg_resize(
|
||||
$image_path,
|
||||
$params['maxwidth'],
|
||||
$params['maxheight'],
|
||||
$params['quality'],
|
||||
$params['automatic_rotation'],
|
||||
false // strip metadata
|
||||
);
|
||||
|
||||
$img->destroy();
|
||||
|
||||
global $conf;
|
||||
$conf['use_exif'] = false;
|
||||
$conf['use_iptc'] = false;
|
||||
sync_metadata(array($image['id']));
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
function ws_extensions_update($params, &$service)
|
||||
{
|
||||
if (!is_webmaster())
|
||||
|
|
|
@ -78,8 +78,6 @@ $lang['%s has been successfully updated.'] = "%s has been successfully updated."
|
|||
$lang['%s must be to set to false in your local/config/config.inc.php file'] = "%s must be set to false in your local/config/config.inc.php file";
|
||||
$lang['%s photos can not be regenerated'] = '%s photos can not be regenerated';
|
||||
$lang['%s photos have been regenerated'] = '%s photos have been regenerated';
|
||||
$lang['%s thumbnails can not be regenerated'] = '%s thumbnails can not be regenerated';
|
||||
$lang['%s thumbnails have been regenerated'] = '%s thumbnails have been regenerated';
|
||||
$lang['%s value is not correct file because exif are not supported'] = "%s value is incorrect because exif are not supported";
|
||||
$lang['(this tag will be deleted)'] = '(this tag will be deleted)';
|
||||
$lang['+ Add an upload box'] = '+ Add an upload box';
|
||||
|
@ -572,8 +570,6 @@ $lang['Read Piwigo Documentation'] = 'Read Piwigo Documentation';
|
|||
$lang['reduce to single existing albums'] = "reduce to single existing albums";
|
||||
$lang['Refresh photo set'] = 'Refresh photo set';
|
||||
$lang['Refresh'] = "Refresh";
|
||||
$lang['Regenerate Thumbnails'] = 'Regenerate Thumbnails';
|
||||
$lang['Regenerate Websize Photos'] = 'Regenerate Websize Photos';
|
||||
$lang['registration date'] = "registration date";
|
||||
$lang['Reinitialize check integrity'] = "Reinitialize integrity check";
|
||||
$lang['Reject'] = "Reject";
|
||||
|
@ -866,4 +862,6 @@ $lang['Aperture is designed for professional photographers with iPhoto simplicit
|
|||
$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'The Piwigo export plugin allows you to create albums and export photos.';
|
||||
$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.';
|
||||
$lang['Features include gallery browsing, album creation and photo upload.'] = 'Features include gallery browsing, album creation and photo upload.';
|
||||
$lang['Generate multiple size images']='Generate multiple size images';
|
||||
$lang['Delete multiple size images']='Delete multiple size images';
|
||||
?>
|
32
ws.php
32
ws.php
|
@ -89,6 +89,7 @@ function ws_addDefaultMethods( $arr )
|
|||
$service->addMethod('pwg.getMissingDerivatives', 'ws_getMissingDerivatives',
|
||||
array(
|
||||
'types' => array( 'default'=>array(), 'flags'=>WS_PARAM_FORCE_ARRAY),
|
||||
'ids' => array( 'default'=>array(), 'flags'=>WS_PARAM_FORCE_ARRAY),
|
||||
'max_urls' => array( 'default' => 200 ),
|
||||
'prev_page' => array( 'default'=> null),
|
||||
'f_min_rate' => array( 'default'=> null ),
|
||||
|
@ -458,37 +459,6 @@ function ws_addDefaultMethods( $arr )
|
|||
'activate/deactivate/delete/set_default a theme<br>administration status required'
|
||||
);
|
||||
|
||||
$service->addMethod(
|
||||
'pwg.images.resizeThumbnail',
|
||||
'ws_images_resizethumbnail',
|
||||
array(
|
||||
'image_id' => array('default' => null),
|
||||
'image_path' => array('default' => null),
|
||||
'maxwidth' => array('default' => $conf['upload_form_thumb_maxwidth']),
|
||||
'maxheight' => array('default' => $conf['upload_form_thumb_maxheight']),
|
||||
'quality' => array('default' => $conf['upload_form_thumb_quality']),
|
||||
'crop' => array('default' => $conf['upload_form_thumb_crop']),
|
||||
'follow_orientation' => array('default' => $conf['upload_form_thumb_follow_orientation']),
|
||||
'library' => array('default' => $conf['graphics_library']),
|
||||
),
|
||||
'Create/Regenerate thumbnails photo with given arguments.
|
||||
<br>One of arguments "image_id" or "image_path" must be sent.'
|
||||
);
|
||||
|
||||
$service->addMethod(
|
||||
'pwg.images.resizeWebsize',
|
||||
'ws_images_resizewebsize',
|
||||
array(
|
||||
'image_id' => array(),
|
||||
'maxwidth' => array('default' => $conf['upload_form_websize_maxwidth']),
|
||||
'maxheight' => array('default' => $conf['upload_form_websize_maxheight']),
|
||||
'quality' => array('default' => $conf['upload_form_websize_quality']),
|
||||
'automatic_rotation' => array('default' => $conf['upload_form_automatic_rotation']),
|
||||
'library' => array('default' => $conf['graphics_library']),
|
||||
),
|
||||
'Regenerate websize photo with given arguments.'
|
||||
);
|
||||
|
||||
$service->addMethod(
|
||||
'pwg.extensions.update',
|
||||
'ws_extensions_update',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue