automatically determine user timezone
smbaker [Thu, 6 Sep 2012 01:53:45 +0000 (18:53 -0700)]
apps/gacksadmin/gacks_functions.php
apps/gacksadmin/reservations.php
apps/gacksadmin/user_add_reservation.php
apps/gacksadmin/user_reservations.php

index fb4e3a4..81645c8 100644 (file)
@@ -165,7 +165,7 @@ function aggregate_records($records)
    return $aggs;
 }
 
-function record_table($records)
+function record_table($records, $timezone_seconds)
 {
     $headers=array();
     $headers["id"] = "string";\r
@@ -185,8 +185,8 @@ function record_table($records)
     foreach ( $aggs as $item ) {\r
             $table->row_start();\r
             $table->cell($item['id']);\r
-            $table->cell(strftime("%Y-%m-%d %H:%M:%S", $item['timeStart']));\r
-            $table->cell(strftime("%Y-%m-%d %H:%M:%S", $item['timeStop']));\r
+            $table->cell(strftime("%Y-%m-%d %H:%M:%S", $item['timeStart']+$timezone_seconds));\r
+            $table->cell(strftime("%Y-%m-%d %H:%M:%S", $item['timeStop']+$timezone_seconds));\r
             $table->cell(end($item['allocatorHRNs']));\r
             $table->cell($item['consumerHRN']);\r
             $table->cell($item['qty']);\r
@@ -565,3 +565,30 @@ function time_selectors($start_date, $min_date)
 
     return $selectors;
 }
+
+function get_timezone()
+{
+    if (isset($_GET['timezone_offset_minutes'])) {
+        $minutes = $_GET['timezone_offset_minutes'];\r
+/*        echo "GMT offset (in minutes, from the browser): ". $minutes ."<br />\n";\r
+        echo "GMT: ". gmdate("Y-m-d H:i:s") ."<br />\n";\r
+\r
+        $local = gmmktime(gmdate("H"),gmdate("i")-$minutes); // adjust GMT by client's offset\r
+\r
+        echo "Calculated client's date/time: ". gmdate("Y-m-d h:i:s a",$local) ."<br />\n";*/\r
+\r
+        return $minutes;\r
+    } else {\r
+        if  (!strchr($_SERVER['REQUEST_URI'], "?")) {\r
+            $url = $_SERVER['REQUEST_URI'] . "?";\r
+        } else {\r
+            $url = $_SERVER['REQUEST_URI'] . "&";\r
+        }\r
+\r
+        echo "<script language='javascript'>\n";\r
+        echo "var d = new Date();\n";\r
+        echo "location.href=\"${url}timezone_offset_minutes=\" + (-d.getTimezoneOffset());\n";\r
+        echo "</script>\n";\r
+        exit();\r
+    }\r
+}
index 3090f80..1297b1c 100644 (file)
@@ -18,6 +18,9 @@ require_once 'gacksclient.php';
 $_person= $plc->person;\r
 $_roles= $_person['role_ids'];
 
+$timezone_offset_minutes = get_timezone();
+$timezone_seconds = $timezone_offset_minutes * 60;
+
 // Print header
 require_once 'plc_drupal.php';\r
 drupal_set_title('Gacks Reservations');\r
@@ -27,7 +30,7 @@ $gacksapi = new GACKSAPI();
 
 $records = $gacksapi->query_overlap();\r
 \r
-record_table($records);\r
+record_table($records, $timezone_seconds);\r
 \r
 \r
 ?>
index 2b42059..69b1675 100644 (file)
@@ -29,8 +29,12 @@ $resource_id = $_GET['resource_id'];
 $y=$_GET['date_y'];
 $m=$_GET['date_m'];
 $d=$_GET['date_d'];
-$timezone=$_GET['timezone'];
-$timezone_seconds = $timezone*60*60;
+
+$timezone_offset_minutes = get_timezone();
+$timezone_seconds = $timezone_offset_minutes * 60;
+
+//$timezone=$_GET['timezone'];
+//$timezone_seconds = $timezone*60*60;
 
 // Print header
 require_once 'plc_drupal.php';
@@ -42,7 +46,8 @@ $gacksapi = new GACKSAPI();
 $details = new PlekitDetails(True);
 
 $details->form_start(l_gacks_actions(), array("action"=>"submit-reservation",
-                                       "account_name"=>$account_name));
+                                       "account_name"=>$account_name,
+                                       "timezone_offset_minutes"=>$timezone_offset_minutes));
 
 $details->start();
 
@@ -64,7 +69,7 @@ if ($account_name != NULL) {
 
     $resource = $resources["resources"][$resource_id];
 
-    $details->th_td("Timezone", timezone_combo($details->form, $timezone, $self_url));
+//    $details->th_td("Timezone", timezone_combo($details->form, $timezone, $self_url));
 
     if (!$y) {
         $time = time() + $timezone_seconds;
@@ -153,7 +158,7 @@ if ($account_name != NULL) {
 $details->end();
 $details->form_end();
 
-print "Current server time is " . date("Y-m-d h:i:s", time() + $timezone_seconds) . " in timezone " . $timezone;
+print "Current server time is " . date("Y-m-d h:i:s", time() + $timezone_seconds) . ", timezone offset seconds " . $timezone_seconds;
 
 include 'plc_footer.php';
 
index 0d8363d..cad9d0b 100644 (file)
@@ -22,6 +22,9 @@ $_person= $plc->person;
 $_person_id = $plc->person['person_id'];
 $_roles= $_person['role_ids'];
 
+$timezone_offset_minutes = get_timezone();
+$timezone_seconds = $timezone_offset_minutes * 60;
+
 // Print header
 require_once 'plc_drupal.php';
 drupal_set_title('Gacks Reservations');
@@ -45,7 +48,7 @@ if ($account_name != NULL) {
 
     $records = $gacksapi->query_overlap(NULL, 0, INFINITY, 0, INFINITY, NULL, $account_hrn);
 
-    record_table($records);
+    record_table($records, $timezone_seconds);
 }
 
 include 'plc_footer.php';