====== Sorting Images based on Exif data ======
Suppose you have a folder containing images taken by a digital camera over a period of time, wouldn't it be nice to sort these images into folders?
The script below **copies** folders from one folder to another, creating subfolders in the target folder with the name of YYYY-MM (2010-07).
**Usage:**
Save the script in your home folder e.g. imagecopy.php, and adjust the source and target folder names in the script. Then, execute the script
php -f ~/imagecopy.php
The script won't overwrite existing files in $target. But still, be careful with your images. Better try with backups first. 
$fileobj) {
  $basename = $fileobj->getBasename();
  $extension = strtolower(substr($basename, strrpos($basename, '.')+1));
  if (in_array($extension, $filetypes)) {
    // read creation date from exif information, otherwise mtime
    echo $filename."\n";
    $exif = exif_read_data($filename, 'IFDO', 0);
    if ($exif!==false && isset($exif['DateTime'])) {
      $edate = $exif['DateTime'];
      $ts = strtotime($edate);
    } else {
      $ts = filemtime($filename);
    }
    // target folder
    $datestr = date('Y', $ts).'-'.date('m', $ts);
    $targetfolder = $target.'/'.$datestr;
    if (!file_exists($targetfolder)) {
      mkdir($targetfolder);
    }
    // copy file
    $targetfile = $targetfolder.'/'.$basename;
    if (!file_exists($targetfile)) {
      copy($filename, $targetfile);
    } else {
      echo "$targetfile exists!\n";
    }
  }
}
$bytestotal=number_format($bytestotal);
echo "Total: $nbfiles files, $bytestotal bytes\n";
?>