diff -Naur cpg1410/displayimage.php coppermine2/displayimage.php --- cpg1410/displayimage.php 2006-10-29 22:58:36.000000000 -0500 +++ coppermine2/displayimage.php 2007-04-21 01:51:10.000000000 -0400 @@ -149,7 +149,7 @@ $path_to_pic = $CONFIG['fullpath'] . $CURRENT_PIC_DATA['filepath'] . $CURRENT_PIC_DATA['filename']; - if ($CONFIG['read_exif_data']) $exif = exif_parse_file($path_to_pic); + if ($CONFIG['read_exif_data']) $exif = exif_parse_file($path_to_pic, 0); if (isset($exif) && is_array($exif)) { array_walk($exif, 'sanitize_data'); diff -Naur cpg1410/include/exif_php.inc.php coppermine2/include/exif_php.inc.php --- cpg1410/include/exif_php.inc.php 2006-10-29 22:56:50.000000000 -0500 +++ coppermine2/include/exif_php.inc.php 2007-04-21 02:43:34.000000000 -0400 @@ -24,7 +24,7 @@ define("EXIF_CACHE_FILE","exif.dat"); require("include/exif.php"); -function exif_parse_file($filename) +function exif_parse_file($filename, $addfile ) { global $CONFIG, $lang_picinfo; @@ -82,15 +82,21 @@ $exifParsed = array(); - foreach ($exif as $key => $val) { - if (strpos($showExifStr,"|".$key) && isset($val)){ - $exifParsed[$lang_picinfo[$key]] = $val; - //$exifParsed[$key] = $val; - } + + foreach ($exif as $key => $val) + { + if ( $addfile == 0 ) + { + if (strpos($showExifStr,"|".$key) && isset($val)) + { + $exifParsed[$lang_picinfo[$key]] = $val; + } + } + else + $exifParsed[$key] = $val; } ksort($exifParsed); - return $exifParsed; } ?> diff -Naur cpg1410/include/functions.inc.php coppermine2/include/functions.inc.php --- cpg1410/include/functions.inc.php 2006-10-29 22:56:50.000000000 -0500 +++ coppermine2/include/functions.inc.php 2007-04-21 03:01:40.000000000 -0400 @@ -896,8 +896,8 @@ 'nd' => 'filename DESC', 'ta'=>'title ASC', 'td'=>'title DESC', - 'da' => 'pid ASC', - 'dd' => 'pid DESC', + 'da' => 'ptime ASC, pid ASC', + 'dd' => 'ptime DESC, pid DESC', 'pa' => 'position ASC', 'pd' => 'position DESC', ); @@ -2995,4 +2995,4 @@ $query = "DELETE FROM {$CONFIG['TABLE_VOTE_STATS']} WHERE $clause"; cpg_db_query($query); } -?> \ No newline at end of file +?> diff -Naur cpg1410/include/picmgmt.inc.php coppermine2/include/picmgmt.inc.php --- cpg1410/include/picmgmt.inc.php 2006-10-29 22:56:50.000000000 -0500 +++ coppermine2/include/picmgmt.inc.php 2007-04-21 15:35:20.000000000 -0400 @@ -23,6 +23,10 @@ include("include/iptc.inc.php"); } +if($CONFIG['read_exif_data'] ){ + include("include/exif_php.inc.php"); +} + // Add a picture to an album function add_picture($aid, $filepath, $filename, $position = 0, $title = '', $caption = '', $keywords = '', $user1 = '', $user2 = '', $user3 = '', $user4 = '', $category = 0, $raw_ip = '', $hdr_ip = '', $iwidth = 0, $iheight = 0) { @@ -90,6 +94,29 @@ cpg_die(ERROR, $msg, __FILE__, __LINE__); } } + + + if ( $CONFIG['read_exif_data']) + { + $exif = exif_parse_file($image, 1); + + + $size = count($exif); + } + + if (isset($exif) && is_array($exif) && isset($exif['DateTime'])) { + // Transform EXIF date format to unixtime + $picture_time = mktime(substr($exif['DateTime'], 11, 2), substr($exif['DateTime'], 14, 2), substr($exif['DateTime'], 17, 2), substr($exif['DateTime'], 5, 2), substr($exif['DateTime'], 8, 2), substr($exif['DateTime'], 0, 4) ); + $creation_time = time(); + } + else + { + $picture_time = time(); + $creation_time = $picture_time; + } + + + // Test if picture requires approval if (GALLERY_ADMIN_MODE) { $approved = 'YES'; @@ -112,6 +139,7 @@ $CURRENT_PIC_DATA['total_filesize'] = $total_filesize; $CURRENT_PIC_DATA['pwidth'] = $imagesize[0]; $CURRENT_PIC_DATA['pheight'] = $imagesize[1]; + $CURRENT_PIC_DATA['ptime'] = $picture_time; $CURRENT_PIC_DATA['owner_id'] = $user_id; $CURRENT_PIC_DATA['owner_name'] = $username; $CURRENT_PIC_DATA['title'] = $title; @@ -127,7 +155,12 @@ $CURRENT_PIC_DATA['position'] = $position; $CURRENT_PIC_DATA = CPGPluginAPI::filter('add_file_data',$CURRENT_PIC_DATA); - $query = "INSERT INTO {$CONFIG['TABLE_PICTURES']} (aid, filepath, filename, filesize, total_filesize, pwidth, pheight, ctime, owner_id, owner_name, title, caption, keywords, approved, user1, user2, user3, user4, pic_raw_ip, pic_hdr_ip, position) VALUES ('{$CURRENT_PIC_DATA['aid']}', '" . addslashes($CURRENT_PIC_DATA['filepath']) . "', '" . addslashes($CURRENT_PIC_DATA['filename']) . "', '{$CURRENT_PIC_DATA['filesize']}', '{$CURRENT_PIC_DATA['total_filesize']}', '{$CURRENT_PIC_DATA['pwidth']}', '{$CURRENT_PIC_DATA['pheight']}', '" . time() . "', '{$CURRENT_PIC_DATA['owner_id']}', '{$CURRENT_PIC_DATA['owner_name']}','{$CURRENT_PIC_DATA['title']}', '{$CURRENT_PIC_DATA['caption']}', '{$CURRENT_PIC_DATA['keywords']}', '{$CURRENT_PIC_DATA['approved']}', '{$CURRENT_PIC_DATA['user1']}', '{$CURRENT_PIC_DATA['user2']}', '{$CURRENT_PIC_DATA['user3']}', '{$CURRENT_PIC_DATA['user4']}', '{$CURRENT_PIC_DATA['pic_raw_ip']}', '{$CURRENT_PIC_DATA['pic_hdr_ip']}', '{$CURRENT_PIC_DATA['position']}')"; +// $query = "INSERT INTO {$CONFIG['TABLE_PICTURES']} (aid, filepath, filename, filesize, total_filesize, pwidth, pheight, ctime, owner_id, owner_name, title, caption, keywords, approved, user1, user2, user3, user4, pic_raw_ip, pic_hdr_ip, position) VALUES ('{$CURRENT_PIC_DATA['aid']}', '" . addslashes($CURRENT_PIC_DATA['filepath']) . "', '" . addslashes($CURRENT_PIC_DATA['filename']) . "', '{$CURRENT_PIC_DATA['filesize']}', '{$CURRENT_PIC_DATA['total_filesize']}', '{$CURRENT_PIC_DATA['pwidth']}', '{$CURRENT_PIC_DATA['pheight']}', '" . time() . "', '{$CURRENT_PIC_DATA['owner_id']}', '{$CURRENT_PIC_DATA['owner_name']}','{$CURRENT_PIC_DATA['title']}', '{$CURRENT_PIC_DATA['caption']}', '{$CURRENT_PIC_DATA['keywords']}', '{$CURRENT_PIC_DATA['approved']}', '{$CURRENT_PIC_DATA['user1']}', '{$CURRENT_PIC_DATA['user2']}', '{$CURRENT_PIC_DATA['user3']}', '{$CURRENT_PIC_DATA['user4']}', '{$CURRENT_PIC_DATA['pic_raw_ip']}', '{$CURRENT_PIC_DATA['pic_hdr_ip']}', '{$CURRENT_PIC_DATA['position']}')"; + + + $query = "INSERT INTO {$CONFIG['TABLE_PICTURES']} (aid, filepath, filename, filesize, total_filesize, pwidth, pheight, ctime, ptime, owner_id, owner_name, title, caption, keywords, approved, user1, user2, user3, user4, pic_raw_ip, pic_hdr_ip, position) VALUES ('{$CURRENT_PIC_DATA['aid']}', '" . addslashes($CURRENT_PIC_DATA['filepath']) . "', '" . addslashes($CURRENT_PIC_DATA['filename']) . "', '{$CURRENT_PIC_DATA['filesize']}', '{$CURRENT_PIC_DATA['total_filesize']}', '{$CURRENT_PIC_DATA['pwidth']}', '{$CURRENT_PIC_DATA['pheight']}', '" . time() . "', '{$CURRENT_PIC_DATA['ptime']}', '{$CURRENT_PIC_DATA['owner_id']}', '{$CURRENT_PIC_DATA['owner_name']}','{$CURRENT_PIC_DATA['title']}', '{$CURRENT_PIC_DATA['caption']}', '{$CURRENT_PIC_DATA['keywords']}', '{$CURRENT_PIC_DATA['approved']}', '{$CURRENT_PIC_DATA['user1']}', '{$CURRENT_PIC_DATA['user2']}', '{$CURRENT_PIC_DATA['user3']}', '{$CURRENT_PIC_DATA['user4']}', '{$CURRENT_PIC_DATA['pic_raw_ip']}', '{$CURRENT_PIC_DATA['pic_hdr_ip']}', '{$CURRENT_PIC_DATA['position']}')"; + + $result = cpg_db_query($query); return $result; @@ -291,4 +324,4 @@ return true; } } -?> \ No newline at end of file +?> diff -Naur cpg1410/lang/english.php coppermine2/lang/english.php --- cpg1410/lang/english.php 2006-10-29 22:56:32.000000000 -0500 +++ coppermine2/lang/english.php 2007-04-21 02:29:54.000000000 -0400 @@ -1904,6 +1904,11 @@ 'Displays log files', //cpg1.4 ); $lang_util_php = array( + 'update_sort' => 'Update Sorting Date Filed', + 'update_sort_what' => 'Choose which date will be used to sort the pictures', + 'update_sort_exif' => 'Picture taken date - EXIF (If no date if found the upload date will be used.)', + 'update_sort_creation' => 'Upload date', + 'update_sort_no_exif' => 'No EXIF data', 'title' => 'Admin utilities (Resize pictures)', 'what_it_does' => 'What it does', 'file' => 'File', @@ -2106,4 +2111,4 @@ 'link' => 'this link', //cpg1.4 ); } -?> \ No newline at end of file +?> diff -Naur cpg1410/upload.php coppermine2/upload.php --- cpg1410/upload.php 2006-10-29 22:58:38.000000000 -0500 +++ coppermine2/upload.php 2007-04-21 15:36:25.000000000 -0400 @@ -1218,7 +1218,6 @@ if (!(move_uploaded_file($_FILES['file_upload_array']['tmp_name'][$counter], $path_to_image))) { // The file upload has failed. - $file_failure_array[] = array( 'failure_ordinal'=>$failure_ordinal, 'file_name'=> $file_name, 'error_code'=>$lang_upload_php['impossible']); // There is no need for further tests or action, so skip the remainder of the iteration. diff -Naur cpg1410/util.php coppermine2/util.php --- cpg1410/util.php 2006-10-29 22:58:40.000000000 -0500 +++ coppermine2/util.php 2007-04-21 02:58:38.000000000 -0400 @@ -51,8 +51,15 @@


'), + 'exif_date' => array('updatesortingdate', $lang_util_php['update_sort'],' + + '. $lang_util_php['update_sort_what'] .' (2):
+
+

'), + 'del_titles' => array('del_titles', $lang_util_php['delete_title'], $lang_util_php['delete_title_explanation']), + 'del_orig' => array('del_orig', $lang_util_php['delete_original'], $lang_util_php['delete_original_explanation']), 'del_norm' => array('del_norm', $lang_util_php['delete_intermediate'], $lang_util_php['delete_intermediate_explanation']), @@ -65,6 +72,7 @@ 'reset_views' => array('reset_views', $lang_util_php['reset_views'], $lang_util_php['reset_views_explanation']), + 'php_info' => array('', '' . $lang_util_php['phpinfo'] . '', $lang_util_php['phpinfo_explanation']), 'upd_db' => array('', '' . $lang_util_php['update_db'].'',$lang_util_php['update_db_explanation']), @@ -206,6 +214,57 @@ } } +function updatesortingdate() +{ + $albumid = $_POST['albumid']; + $dateselect = $_POST['dateselect']; + global $lang_util_php, $CONFIG; + + $query = "SELECT UNIX_TIMESTAMP(mtime) as mtime, {$CONFIG['TABLE_PICTURES']}.* FROM {$CONFIG['TABLE_PICTURES']} WHERE aid = '$albumid'"; + $result = MYSQL_QUERY($query); + $num = mysql_numrows($result); + + $i = 0; + while ($i < $num) { + $filename = $CONFIG['fullpath'] . mysql_result($result, $i, "filepath") . mysql_result($result, $i, "filename"); + $pid = mysql_result($result, $i, "pid"); + $pdate = mysql_result($result, $i, "ctime"); + + if($dateselect == '0') + { + $query = "SELECT * FROM {$CONFIG['TABLE_EXIF']} WHERE filename='$filename' "; + $result2 = MYSQL_QUERY($query); + + if(mysql_numrows($result2) == 1) + { + $exif = unserialize(mysql_result($result2, 0, "exifData")); + + if (isset($exif) && is_array($exif) && isset($exif['DateTime'])) + { + $pdate = mktime(substr($exif['DateTime'], 11, 2), substr($exif['DateTime'], 14, 2), substr($exif['DateTime'], 17, 2), substr($exif['DateTime'], 5, 2), substr($exif['DateTime'], 8, 2), substr($exif['DateTime'], 0, 4) ); + } + + $newdate = date('Y:m:d H:i:s', $pdate); + } + else + { + $newdate = $lang_util_php['update_sort_no_exif']; + } + else // Creation date + { + $newdate = date('Y:m:d H:i:s', $pdate); + } + + print $lang_util_php['file'] . ': '. $filename.' ⇒ '. $newdate .'
'; + my_flush(); + + $query = "UPDATE {$CONFIG['TABLE_PICTURES']} SET ptime='$pdate' WHERE pid='$pid' "; + MYSQL_QUERY($query); + + ++$i; + } +} + function filloptions() { global $CONFIG, $lang_util_php;