Merge branch 'issue124'
[phpfspot.git] / phpfspot.class.php
index df984cb9bc076ecdbe686a48d19ad87eebae32c5..ae5879076de025ef0f45b73406335518a5370fbf 100644 (file)
@@ -122,7 +122,7 @@ class PHPFSPOT {
 
       /* set application name and version information */
       $this->cfg->product = "phpfspot";
-      $this->cfg->version = "1.5";
+      $this->cfg->version = "1.6";
 
       $this->sort_orders= array(
          'date_asc' => 'Date ↑',
@@ -344,8 +344,8 @@ class PHPFSPOT {
       }
 
       $this->tmpl->register_function("sort_select_list", array(&$this, "smarty_sort_select_list"), false);
-      $this->tmpl->assign('search_from_date', $this->get_calendar('from'));
-      $this->tmpl->assign('search_to_date', $this->get_calendar('to'));
+      $this->tmpl->assign('search_from_date', $this->get_date_text_field('from'));
+      $this->tmpl->assign('search_to_date', $this->get_date_text_field('to'));
 
       $this->tmpl->assign('preset_selected_tags', $this->getSelectedTags());
       $this->tmpl->assign('preset_available_tags', $this->getAvailableTags());
@@ -719,7 +719,6 @@ class PHPFSPOT {
          $meta_res = $info[0] ."x". $info[1]; 
       }
 
-      $meta_date = isset($meta['FileDateTime']) ? strftime("%a %x %X", $meta['FileDateTime']) : "n/a";
       $meta_make = isset($meta['Make']) ? $meta['Make'] ." / ". $meta['Model'] : "n/a";
       $meta_size = isset($meta['FileSize']) ? round($meta['FileSize']/1024, 1) ."kbyte" : "n/a";
 
@@ -747,7 +746,7 @@ class PHPFSPOT {
 
       $this->tmpl->assign('width', $info_thumb[0]);
       $this->tmpl->assign('height', $info_thumb[1]);
-      $this->tmpl->assign('ExifMadeOn', $meta_date);
+      $this->tmpl->assign('ExifMadeOn', strftime("%a %x %X", $details['time']));
       $this->tmpl->assign('ExifMadeWith', $meta_make);
       $this->tmpl->assign('ExifOrigResolution', $meta_res);
       $this->tmpl->assign('ExifFileSize', $meta_size);
@@ -2009,11 +2008,11 @@ class PHPFSPOT {
    public function startSearch()
    {
       /* date search */
-      if(isset($_POST['from']) && $this->isValidDate($_POST['from'])) {
-         $from = $_POST['from'];
+      if(isset($_POST['date_from']) && $this->isValidDate($_POST['date_from'])) {
+         $date_from = $_POST['date_from'];
       }
-      if(isset($_POST['to']) && $this->isValidDate($_POST['to'])) {
-         $to = $_POST['to'];
+      if(isset($_POST['date_to']) && $this->isValidDate($_POST['date_to'])) {
+         $date_to = $_POST['date_to'];
       }
 
       /* tag-name search */
@@ -2049,13 +2048,13 @@ class PHPFSPOT {
 
       $this->get_tags();
 
-      if(isset($from) && !empty($from))
-         $_SESSION['from_date'] = strtotime($from ." 00:00:00");
+      if(isset($date_from) && !empty($date_from))
+         $_SESSION['from_date'] = strtotime($date_from ." 00:00:00");
       else
          unset($_SESSION['from_date']);
 
-      if(isset($to) && !empty($to))
-         $_SESSION['to_date'] = strtotime($to ." 23:59:59");
+      if(isset($date_to) && !empty($date_to))
+         $_SESSION['to_date'] = strtotime($date_to ." 23:59:59");
       else
          unset($_SESSION['to_date']);
 
@@ -2365,32 +2364,31 @@ class PHPFSPOT {
    } // _error()
 
    /**
-    * output calendard input fields
+    * get calendar input-text fields
+    *
+    * this function returns a text-field used for the data selection.
+    * Either it will be filled with the current date or, if available,
+    * filled with the date user entered previously.
+    *
     * @param string $mode
     * @return string
     */
-   private function get_calendar($mode)
+   private function get_date_text_field($mode)
    {
-      $year = isset($_SESSION[$mode .'_date']) ? date("Y", $_SESSION[$mode .'_date']) : date("Y");
-      $month = isset($_SESSION[$mode .'_date']) ? date("m", $_SESSION[$mode .'_date']) : date("m");
-      $day = isset($_SESSION[$mode .'_date']) ? date("d", $_SESSION[$mode .'_date']) : date("d");
+      $date = isset($_SESSION[$mode .'_date']) ? date("Y", $_SESSION[$mode .'_date']) : date("Y");
+      $date.= "-";
+      $date.= isset($_SESSION[$mode .'_date']) ? date("m", $_SESSION[$mode .'_date']) : date("m");
+      $date.= "-";
+      $date.= isset($_SESSION[$mode .'_date']) ? date("d", $_SESSION[$mode .'_date']) : date("d");
 
-      $output = "<input type=\"text\" size=\"3\" id=\"". $mode ."year\" value=\"". $year ."\"";
-      if(!isset($_SESSION[$mode .'_date']))
-         $output.= " disabled=\"disabled\"";
-      $output.= " />\n";
-      $output.= "<input type=\"text\" size=\"1\" id=\"". $mode ."month\" value=\"". $month ."\"";
-      if(!isset($_SESSION[$mode .'_date']))
-         $output.= " disabled=\"disabled\"";
-      $output.= " />\n";
-      $output.= "<input type=\"text\" size=\"1\" id=\"". $mode ."day\" value=\"". $day ."\"";
+      $output = "<input type=\"text\" size=\"15\" id=\"date_". $mode ."\" value=\"". $date ."\"";
       if(!isset($_SESSION[$mode .'_date']))
          $output.= " disabled=\"disabled\"";
       $output.= " />\n";
 
       return $output;
 
-   } // get_calendar()
+   } // get_date_text_field()
 
    /**
     * output calendar matrix
@@ -2575,18 +2573,16 @@ class PHPFSPOT {
             $meta = $this->get_meta_informations($orig_path);
          }
 
-         $meta_date = isset($meta['FileDateTime']) ? $meta['FileDateTime'] : filemtime($orig_path);
-
 ?>
   <item>
    <title><?php print htmlspecialchars($this->parse_uri($details['uri'], 'filename')); ?></title>
    <link><?php print htmlspecialchars($orig_url); ?></link>
    <guid><?php print htmlspecialchars($orig_url); ?></guid>
-   <dc:date.Taken><?php print strftime("%Y-%m-%dT%H:%M:%S+00:00", $meta_date); ?></dc:date.Taken>
+   <dc:date.Taken><?php print strftime("%Y-%m-%dT%H:%M:%S+00:00", $details['time']); ?></dc:date.Taken>
    <description>
     <?php print $thumb_html; ?> 
    </description>
-   <pubDate><?php print strftime("%a, %d %b %Y %T %z", $meta_date); ?></pubDate>
+   <pubDate><?php print strftime("%a, %d %b %Y %T %z", $details['time']); ?></pubDate>
   </item>
 <?php
 
@@ -2726,10 +2722,10 @@ class PHPFSPOT {
             return " ORDER BY t.name DESC ,p.time ASC";
             break;
          case 'rate_asc':
-            return " ORDER BY t.name ASC, p.rating ASC";
+            return " ORDER BY p.rating ASC, t.name ASC";
             break;
          case 'rate_desc':
-            return " ORDER BY t.name DESC, p.rating DESC";
+            return " ORDER BY p.rating DESC, t.name DESC";
             break;
       }