Hi I have the following script to show images from a directory and make thumbs , but I would like to know how to sort the images from newest to oldest and how to implement it in this script Many Thanks in Advance!
<?php
# SETTINGS
$max_width = 800;
$max_height = 600;
$per_page = 10;
$page = $_GET['page'];
$has_previous = false;
$has_next = false;
$images = array();
$times = array();
// read the images folder for jpg, jpeg, png and gif images using glob() - see http://php.net/glob for info
foreach(glob('images/*.{jpg,jpeg,png,gif}', GLOB_BRACE) as $image)
{
// add the file to the images array
$images[] = $image;
// get the files creation/last modification timestamp add it to the times array.
// This array will be used later to sort the images array
$times[] = filemtime($image);
// generate the image thumbnail if needed
if(!file_exists('thumbs/' . $image))
{
// calling your makeThumb function, pass it the file extension for the image
makeThumb(basename($image), pathinfo($image, PATHINFO_EXTENSION));
}
}
// using the times array, to sort the images newest to oldest
array_multisort($times , SORT_DESC,
$images);
function getPictures() {
global $page, $per_page, $has_previous, $has_next;
if ( $handle = opendir(".") ) {
$lightbox = rand();
echo '<ul id="pictures">';
$count = 0;
$skip = $page * $per_page;
if ( $skip != 0 )
$has_previous = true;
while ( $count < $skip && ($file = readdir($handle)) !== false ) {
if ( !is_dir($file) && ($type = getPictureType($file)) != '' )
$count++;
}
$count = 0;
while ( $count < $per_page && ($file = readdir($handle)) !== false ) {
if ( !is_dir($file) && ($type = getPictureType($file)) != '' ) {
// make the thumbs directory if it doesn't already exist
if ( ! is_dir('thumbs') ) {
mkdir('thumbs');
}
// make a thumbnail if it doesn't already exist
if ( ! file_exists('thumbs/'.$file) ) {
makeThumb( $file, $type );
}
// create a link to $file, add the thumbnail
echo '<li><a href="' . $file . '">';
echo '<img src="thumbs/'.$file.'" alt="" /></a></li>';
$count++;
echo substr($file,strlen($folder),strpos($file, '.')-strlen($folder));
}
}
echo '</ul>';
while ( ($file = readdir($handle)) !== false ) {
if ( !is_dir($file) && ($type = getPictureType($file)) != '' ) {
$has_next = true;
break;
}
}
}
}
function getPictureType($file) {
$split = explode('.', $file);
$ext = $split[count($split) - 1];
if ( preg_match('/jpg|jpeg/i', $ext) ) {
return 'jpg';
} else if ( preg_match('/png/i', $ext) ) {
return 'png';
} else if ( preg_match('/gif/i', $ext) ) {
return 'gif';
} else {
return '';
}
}
function makeThumb( $file, $type ) {
global $max_width, $max_height;
if ( $type == 'jpg' ) {
$src = imagecreatefromjpeg($file);
} else if ( $type == 'png' ) {
$src = imagecreatefrompng($file);
} else if ( $type == 'gif' ) {
$src = imagecreatefromgif($file);
}
if ( ($oldW = imagesx($src)) < ($oldH = imagesy($src)) ) {
$newW = $oldW * ($max_width / $oldH);
$newH = $max_height;
} else {
$newW = $max_width;
$newH = $oldH * ($max_height / $oldW);
}
$new = imagecreatetruecolor($newW, $newH);
imagecopyresampled($new, $src, 0, 0, 0, 0, $newW, $newH, $oldW, $oldH);
if ( $type == 'jpg' ) {
imagejpeg($new, 'thumbs/'.$file);
} else if ( $type == 'png' ) {
imagepng($new, 'thumbs/'.$file);
} else if ( $type == 'gif' ) {
imagegif($new, 'thumbs/'.$file);
}
imagedestroy($new);
imagedestroy($src);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UFT-8" />
<title>Pictures</title>
<link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />
<style type="text/css">
body {
width:780px;
margin:0 auto;
}
#pictures li {
float:left;
height:<?php echo ($max_height + 10); ?>px;
list-style:none outside;
width:<?php echo ($max_width + 10); ?>px;
text-align:center;
}
img {
border:0;
outline:none;
}
.prev {
float:left;
}
.next {
float:right;
}
</style>
</head>
<body>
<?php getPictures(); ?>
<div style="clear:both"></div>
<?php
if ( $has_previous )
echo '<p class="prev"><a href="?page='.($page - 1).'">← Previous Page</a></p>';
if ( $has_next )
echo '<p class="next"><a href="?page='.($page + 1).'">Next Page →</a></p>';
?>
<div style="clear:both"></div>
<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="js/lightbox.js"></script>
</body>
</html>