A bit more work in progress on attachment handling.
authorNik Okuntseff <support@anuko.com>
Sun, 17 Mar 2019 16:04:31 +0000 (16:04 +0000)
committerNik Okuntseff <support@anuko.com>
Sun, 17 Mar 2019 16:04:31 +0000 (16:04 +0000)
WEB-INF/config.php.dist
WEB-INF/lib/ttFileHelper.class.php
WEB-INF/templates/footer.tpl

index b9ae7bd..b9b292b 100644 (file)
@@ -198,7 +198,7 @@ define('AUTH_MODULE', 'db');
 // Height in pixels for the note input field in time.php. Defaults to 40.
 // define('NOTE_INPUT_HEIGHT', 100);
 
-// $GLOBALS['FILE_STORAGE_PARAMS'] = array(
-//  'uri' => 'localhost',               // File storage uri.
-//  'site_id' => '1',                   // This site id for file storage facility.
-//  'site_key' => 'debug_key');         // This site key for file storage facility.
+// File storage facility location for attachments.
+// This feature requires a subscription or a locally installed appliance.
+// define('FILE_STORAGE_URI', 'localhost');
+define('FILE_STORAGE_URI', 'https://www.anuko.com/files/');
index 26a2867..aad91e9 100644 (file)
 
 // ttFileHelper class is used for attachment handling.
 class ttFileHelper {
-  var $errors = null; // Errors go here. Set in constructor by reference.
-  var $storage_uri = null;
-  var $site_id = null;
-  var $site_key = null;
+  var $errors = null;       // Errors go here. Set in constructor by reference.
+  var $storage_uri = null;  // Location of file storage facility.
+  var $register_uri = null; // URI to register with file storage facility.
+  var $putfile_uri = null;  // URI to put file in file storage.
+  var $getfile_uri = null;  // URI to get file from file storage.
+  var $site_id = null;      // Site id for file storage.
+  var $site_key = null;     // Site key for file storage.
 
   // Constructor.
   function __construct(&$errors) {
     $this->errors = &$errors;
 
-    if (isset($GLOBALS['FILE_STORAGE_PARAMS']) && is_array($GLOBALS['FILE_STORAGE_PARAMS'])) {
-       $params = $GLOBALS['FILE_STORAGE_PARAMS'];
-       $this->storage_uri = $params['uri'];
-       $this->site_id = $params['site_id'];
-       $this->site_key = $params['site_key'];
+    if (defined('FILE_STORAGE_URI')) {
+      $this->storage_uri = FILE_STORAGE_URI;
+      $this->register_uri = $this->storage_uri.'register';
+      $this->putfile_uri = $this->storage_uri.'putfile';
+      $this->getfile_uri = $this->storage_uri.'getfile';
+      $this->checkSiteRegistration();
+    }
+  }
+
+  // checkSiteRegistration - obtains site id and key from local database.
+  // If not found, it tries to register with file stroage facility.
+  function checkSiteRegistration() {
+    $mdb2 = getConnection();
+
+    // Obtain site id.
+    $sql = "select param_value as id from tt_site_config where param_name = 'locker_id'";
+    $res = $mdb2->query($sql);
+    $val = $res->fetchRow();
+    if (!$val) {
+      // No site id found, need to register.
+      $fields = array('name' => urlencode('time tracker'),
+        'origin' => urlencode('time tracker source'));
+
+      // Urlify the data for the POST.
+      foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
+      $fields_string = rtrim($fields_string, '&');
+
+      // Open connection.
+      $ch = curl_init();
+
+      // Set the url, number of POST vars, POST data.
+      curl_setopt($ch, CURLOPT_URL, $this->register_uri);
+      curl_setopt($ch, CURLOPT_POST, count($fields));
+      curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
+      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+
+      // Execute a post request.
+      $result = curl_exec($ch);
+
+      // Close connection.
+      curl_close($ch);
+
+      if ($result) {
+        $result_array = json_decode($result, true);
+        if ($result_array && $result_array['id'] && $result_array['key']) {
+
+          $this->site_id = $mdb2->quote($result_array['id']);
+          $this->site_key = $mdb2->quote($result_array['key']);
+
+          // Registration successful. Store id and key locally for future use.
+          $sql = "insert into tt_site_config values('locker_id', $site_id, now(), null)";
+          $mdb2->exec($sql);
+          $sql = "insert into tt_site_config values('locker_key', $key, now(), null)";
+          $mdb2->exec($sql);
+        }
+      }
+    } else {
+      // Site id found, need to update site attributes.
+      $this->site_id = $val['id'];
+
+      // Obtain site key.
+      $sql = "select param_value as site_key from tt_site_config where param_name = 'locker_key'";
+      $res = $mdb2->query($sql);
+      $val = $res->fetchRow();
+      $this->site_key = $val['site_key'];
     }
   }
 
index d8614a7..1dcec80 100644 (file)
@@ -12,7 +12,7 @@
       <br>
       <table cellspacing="0" cellpadding="4" width="100%" border="0">
         <tr>
-          <td align="center">&nbsp;Anuko Time Tracker 1.18.59.4873 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
+          <td align="center">&nbsp;Anuko Time Tracker 1.18.59.4874 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
             <a href="https://www.anuko.com/lp/tt_4.htm" target="_blank">{$i18n.footer.credits}</a> |
             <a href="https://www.anuko.com/lp/tt_5.htm" target="_blank">{$i18n.footer.license}</a> |
             <a href="https://www.anuko.com/lp/tt_7.htm" target="_blank">{$i18n.footer.improve}</a>