Too bad.
Is it possible for me to generate the thumbnails manually in the piwigo directory ?
I can write a Python script easily if I have the specs of what I have to do.
Thanks !
Offline
Jessie wrote:
Too bad.
Is it possible for me to generate the thumbnails manually in the piwigo directory ?
I can write a Python script easily if I have the specs of what I have to do.
Thanks !
You could extend the plugin code above to include the basic authentication bits. See for example http://www.hashbangcode.com/blog/using- … tcontents. But of course, that would leave the password stored in clear text in the personal plugin code.
But given that PHP code runs server-side, you also could simply allow localhost/127.0.0.1 unauthenticated access in your .htaccess - that would make more sense.
Offline
I have tried disabling the HTTP Basic authentication, but I still have the same mistaKe :
Warning: file_get_contents(https://piwigo.example.com/ws.php?forma … mage_id=61): failed to open stream: HTTP request failed! HTTP/1.1 401 Access denied in /var/www/piwigo/plugins/PersonalPlugin/main.inc.php on line 38
I've checked and 'allow_url_fopen' is set to 'Off'.
Should I try other things to make it work ?
Thanks for your help !
Offline
You could try that ini_set patch above. Else the plugin needs to be rewritten using curl instead.
Offline
Unfortunately it doesn't work, I still got the same error...
Offline
Here's a version of the plugin that uses cURL instead of fopen(). Maybe that one works. Authentication is still untested. It does pass over the pwg_id from the cookie, but maybe a session has to be created explicitly for the web service. It works fine here for public albums.
function bm_gen_custom_derivatives_form() { global $template; $template_add = ''; foreach (array_keys(ImageStdParams::$custom) as $custom) { $template_add = $template_add . '<input type="checkbox" name="custom_sizes[]" value="' . $custom . '">' . $custom . '<br />'; } $template->append('element_set_global_plugins_actions', array( 'ID' => 'GenCustomDerivatives', 'NAME' => l10n('Pre-cache custom size derivatives'), 'CONTENT' => $template_add, )); } function bm_gen_custom_derivatives_action($action, $collection) { if ($action == 'GenCustomDerivatives'){ global $page; foreach ($collection as $image_id){ if (isset($_POST['custom_sizes'])) { $strCookie = 'pwg_id=' . $_COOKIE['pwg_id'] . '; path=/'; $ch = curl_init(get_absolute_root_url() .'ws.php?format=json&method=pwg.images.getInfo&image_id=' . $image_id); curl_setopt($ch, CURLOPT_REFERER, get_absolute_root_url()); curl_setopt($ch, CURLOPT_COOKIE, $strCookie ); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = json_decode(curl_exec($ch)); $sq_url = $result->result->derivatives->square->url; foreach ($_POST['custom_sizes'] as $size) { $url = str_replace('sq.jpg', 'cu_' . $size . '.jpg', $sq_url); curl_setopt($ch, CURLOPT_URL, $url); curl_exec($ch); } curl_close($ch); } } } }
Offline
Hi,
For some reason, this code does not work under Piwigo 2.9.1
I created another issue under "Themes" before I found this thread.
http://piwigo.org/forum/viewtopic.php?id=28200
I have confirmed that the PersonalPlugin code is running by putting in something that threw an error :)
I am at a loss on how the functions are ever called. I've added the following line inside the
function bm_gen_custom_derivatives_form()
$logger->debug('In bm_gen_custom_derivatives_form');^M
This function is what should append the element to the array that is the drop down in the Batch Manager.
Where does it get called from?
Doesn't there need to be an event handler that calls the function to add the element to the array?
I added the following line to my Personal Plugin code:
add_event_handler('loc_end_element_set_global', 'bm_gen_custom_derivatives_form');
And now the new selection shows up in the menu, but when I try to run it, nothing happens. I look at my web server logs and there's no URL being requested from the server, so not sure what's going on.
Further troubleshooting :(
Thanks,
Steve Williams
Offline
Hi,
Just to document things... I added another event handler (to Personal Plugin) to actually trigger the action.
add_event_handler('element_set_global_action', 'bm_gen_custom_derivatives_action');
The script is now actually triggering from the Batch Manager. Yeah.
Sadly, the script is throwing an error:
Notice: Trying to get property of non-object in /piwigo/plugins/PersonalPlugin/main.inc.php on line 38
Line 38 corresponds to:
$sq_url = $result->result->derivatives->square->url;
Here is my entire Personal Plugin:
<?php
/*
Plugin Name: Personal Plugin
Version: 1.0
Description: Personal Plugin
Plugin URI: http://piwigo.org
Author:
Author URI:
*/
function bm_gen_custom_derivatives_form() {
global $template;
$template_add = '';
foreach (array_keys(ImageStdParams::$custom) as $custom) {
$template_add = $template_add . '<input type="checkbox" name="custom_sizes[]" value="' . $custom . '">' . $custom . '<br />';
}
$template->append('element_set_global_plugins_actions', array(
'ID' => 'GenCustomDerivatives',
'NAME' => l10n('Pre-cache custom size derivatives'),
'CONTENT' => $template_add,
));
}
function bm_gen_custom_derivatives_action($action, $collection) {
if ($action == 'GenCustomDerivatives'){
global $page;
foreach ($collection as $image_id){
if (isset($_POST['custom_sizes'])) {
$strCookie = 'pwg_id=' . $_COOKIE['pwg_id'] . '; path=/';
$ch = curl_init(get_absolute_root_url() .'ws.php?format=json&method=pwg.images.getInfo&image_id=' . $image_id);
curl_setopt($ch, CURLOPT_REFERER, get_absolute_root_url());
curl_setopt($ch, CURLOPT_COOKIE, $strCookie );
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch));
$sq_url = $result->result->derivatives->square->url;
foreach ($_POST['custom_sizes'] as $size) {
$url = str_replace('sq.jpg', 'cu_' . $size . '.jpg', $sq_url);
curl_setopt($ch, CURLOPT_URL, $url);
curl_exec($ch);
}
curl_close($ch);
}
}
}
}
add_event_handler('loc_end_element_set_global', 'bm_gen_custom_derivatives_form');
add_event_handler('element_set_global_action', 'bm_gen_custom_derivatives_action');
?>
Offline
I have issues too, related to Batch Manager. Specifically I get errors when using different locales that I have set in config.ini.php. It is probably completely unrelated to your issue, but there is something in Batch Manager that doesn't like International characters or different encodings.
Just a thought...
Offline