plg wrote:
I have updated the script
demo : http://piwigo.org/tmp/last5albums.php
source : http://piwigo.org/tmp/last5albums.phps
Now it shows the 5 last updated albums + a random thumbnail for each one.
Please make it fit for Piwigo 2.7.
It is a very nice feature to set the thumbnails incl. Links direct to the Homepage.
Thumbnails do not longer generated.
@Pierrick: Please help us.
Problem is still exist. No Ideas to solve it?
Updated script http://piwigo.org/tmp/last5albums.txt
demo http://piwigo.org/tmp/last5albums.php
Offline
Thank you. Great Job!
Is it possible to use square thumbnails? Thats better on the external page.
Within in Piwigo i use the Plugin GDThumb.
line 25 replace thumb by square
Offline
Now is perfect, thanks for your support.
My Url: http://gallery.alphaville.nu/
/*edit*/
Direct link piwigo gallery
Last edited by ddtddt (2015-06-23 07:24:06)
Hello...
I think this is close to what I need, I found this in a search so here I start....
My info FWIW:
Piwigo version: 2.7.4
PHP version: 5.3.29
MySQL version: 5.5.45-MariaDB
Piwigo URL: http://true-grit.org/piwigo
I am looking to display a 1 random thumbnail on another web page, in a Tinyportal 'block' on a SMF forum . I've used other galleries and was able to display a random thumbnail, but am new to piwigo.
I tried the codes here edited, I'll post one below that I edited as maybe I made a mistke, but mostly I think that the code is not quite right, but am not sure why. You can see the gallery block here, on the right side. Nothing fancy just a random thumbnail from an SMF gallery.
http://true-grit.org/TGAB/
Here is your code I edited:
<?php
$base_url = 'http://true-grit.org/piwigo/ws.php?format=php&method=';
$url = $base_url.'pwg.categories.getList&recursive=true&public=true';
fetchRemote($url, $result);
$result = unserialize($result);
$albums = $result['result']['categories'];
foreach ($albums as $idx => $album) {
$date_last[$idx] = $album['date_last'];
}
array_multisort($date_last, SORT_DESC, $albums);
$albums = array_slice($albums, 1, 1);
echo '<table><tr>';
foreach ($albums as $album) {
$thumbnail_url = $base_url.'pwg.categories.getImages';
$thumbnail_url.= '&cat_id='.$album['id'];
$thumbnail_url.= '&per_page=1';
$thumbnail_url.= '&order=random';
fetchRemote($thumbnail_url, $result);
$result = unserialize($result);
$thumbnail_url = $result['result']['images'][0]['derivatives']['thumb']['url'];
echo(
sprintf(
'<td><a href="%s"><img src="%s"><br>%s</a></td>',
$album['url'],
$thumbnail_url,
$album['name']
)
);
}
echo '</tr></table>';
/**
* Retrieve data from external URL
*
* @param string $src: URL
* @param global $dest: can be a file ressource or string
* @return bool
*/
function fetchRemote($src, &$dest, $user_agent='Piwigo', $step=0)
{
// After 3 redirections, return false
if ($step > 3) return false;
// Initialize $dest
is_resource($dest) or $dest = '';
// Try curl to read remote file
if (function_exists('curl_init'))
{
$ch = @curl_init();
@curl_setopt($ch, CURLOPT_URL, $src);
@curl_setopt($ch, CURLOPT_HEADER, 1);
@curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$content = @curl_exec($ch);
$header_length = @curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$status = @curl_getinfo($ch, CURLINFO_HTTP_CODE);
@curl_close($ch);
if ($content !== false and $status >= 200 and $status < 400)
{
if (preg_match('/Location:\s+?(.+)/', substr($content, 0, $header_length), $m))
{
return fetchRemote($m[1], $dest, $user_agent, $step+1);
}
$content = substr($content, $header_length);
is_resource($dest) ? @fwrite($dest, $content) : $dest = $content;
return true;
}
}
// Try file_get_contents to read remote file
if (ini_get('allow_url_fopen'))
{
$content = @file_get_contents($src);
if ($content !== false)
{
is_resource($dest) ? @fwrite($dest, $content) : $dest = $content;
return true;
}
}
// Try fsockopen to read remote file
$src = parse_url($src);
$host = $src['host'];
$path = isset($src['path']) ? $src['path'] : '/';
$path .= isset($src['query']) ? '?'.$src['query'] : '';
if (($s = @fsockopen($host,80,$errno,$errstr,5)) === false)
{
return false;
}
fwrite($s,
"GET ".$path." HTTP/1.0\r\n"
."Host: ".$host."\r\n"
."User-Agent: ".$user_agent."\r\n"
."Accept: */*\r\n"
."\r\n"
);
$i = 0;
$in_content = false;
while (!feof($s))
{
$line = fgets($s);
if (rtrim($line,"\r\n") == '' && !$in_content)
{
$in_content = true;
$i++;
continue;
}
if ($i == 0)
{
if (!preg_match('/HTTP\/(\\d\\.\\d)\\s*(\\d+)\\s*(.*)/',rtrim($line,"\r\n"), $m))
{
fclose($s);
return false;
}
$status = (integer) $m[2];
if ($status < 200 || $status >= 400)
{
fclose($s);
return false;
}
}
if (!$in_content)
{
if (preg_match('/Location:\s+?(.+)$/',rtrim($line,"\r\n"),$m))
{
fclose($s);
return fetchRemote(trim($m[1]),$dest,$user_agent,$step+1);
}
$i++;
continue;
}
is_resource($dest) ? @fwrite($dest, $line) : $dest .= $line;
$i++;
}
fclose($s);
return true;
}
?>
Offline