Refactored and renamed ttSysConfig class.
authorNik Okuntseff <support@anuko.com>
Sun, 2 Dec 2018 20:30:27 +0000 (20:30 +0000)
committerNik Okuntseff <support@anuko.com>
Sun, 2 Dec 2018 20:30:27 +0000 (20:30 +0000)
WEB-INF/lib/ttInvoiceHelper.class.php
WEB-INF/lib/ttSysConfig.class.php [deleted file]
WEB-INF/lib/ttUserConfig.class.php [new file with mode: 0644]
WEB-INF/templates/footer.tpl
charts.php
invoice_send.php
report_send.php

index 13e784d..042acd8 100644 (file)
@@ -257,18 +257,20 @@ class ttInvoiceHelper {
       }
     }
 
-    // sql part for project id.
-    if ($project_id) $project_part = " and ei.project_id = $project_id";
-
-    $sql = "select count(*) as num from tt_expense_items ei
-      where ei.client_id = $client_id $project_part and ei.invoice_id is NULL
-      and ei.date >= ".$mdb2->quote($start)." and ei.date <= ".$mdb2->quote($end)."
-      and ei.cost <> 0 and ei.status = 1";
-    $res = $mdb2->query($sql);
-    if (!is_a($res, 'PEAR_Error')) {
-      $val = $res->fetchRow();
-      if ($val['num']) {
-        return true;
+    if ($user->isPluginEnabled('ex')) {
+      // sql part for project id.
+      if ($project_id) $project_part = " and ei.project_id = $project_id";
+
+      $sql = "select count(*) as num from tt_expense_items ei
+        where ei.client_id = $client_id $project_part and ei.invoice_id is NULL
+        and ei.date >= ".$mdb2->quote($start)." and ei.date <= ".$mdb2->quote($end)."
+        and ei.cost <> 0 and ei.status = 1";
+      $res = $mdb2->query($sql);
+      if (!is_a($res, 'PEAR_Error')) {
+        $val = $res->fetchRow();
+        if ($val['num']) {
+          return true;
+        }
       }
     }
 
diff --git a/WEB-INF/lib/ttSysConfig.class.php b/WEB-INF/lib/ttSysConfig.class.php
deleted file mode 100644 (file)
index 4cc5f8c..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-// +----------------------------------------------------------------------+
-// | Anuko Time Tracker
-// +----------------------------------------------------------------------+
-// | Copyright (c) Anuko International Ltd. (https://www.anuko.com)
-// +----------------------------------------------------------------------+
-// | LIBERAL FREEWARE LICENSE: This source code document may be used
-// | by anyone for any purpose, and freely redistributed alone or in
-// | combination with other software, provided that the license is obeyed.
-// |
-// | There are only two ways to violate the license:
-// |
-// | 1. To redistribute this code in source form, with the copyright
-// |    notice or license removed or altered. (Distributing in compiled
-// |    forms without embedded copyright notices is permitted).
-// |
-// | 2. To redistribute modified versions of this code in *any* form
-// |    that bears insufficient indications that the modifications are
-// |    not the work of the original author(s).
-// |
-// | This license applies to this document only, not any other software
-// | that it may be combined with.
-// |
-// +----------------------------------------------------------------------+
-// | Contributors:
-// | https://www.anuko.com/time_tracker/credits.htm
-// +----------------------------------------------------------------------+
-
-define('SYSC_CHART_INTERVAL', 'chart_interval');
-define('SYSC_CHART_TYPE', 'chart_type');
-define('SYSC_LAST_REPORT_EMAIL', 'last_report_email');
-define('SYSC_LAST_REPORT_CC', 'last_report_cc');
-define('SYSC_LAST_INVOICE_EMAIL', 'last_invoice_email');
-define('SYSC_LAST_INVOICE_CC', 'last_invoice_cc');
-
-// Class ttSysConfig is used for storing and retrieving named values associated with users.
-class ttSysConfig {
-  var $user_id = null;
-  var $group_id = null;
-  var $org_id = null;
-  var $mdb2 = null;
-
-  // Constructor.
-  function __construct($user_id) {
-    global $user;
-    $this->user_id = $user_id; // TODO: review "on behalf" situation and refactor if necessary.
-    $this->group_id = $user->getGroup();
-    $this->org_id = $user->org_id;
-    $this->mdb2 = getConnection();
-  }
-
-  // The getValue retrieves a value identified by name.
-  function getValue($name) {
-    $res = $this->mdb2->query("select param_value from tt_config where user_id = ".$this->user_id." and param_name=".$this->mdb2->quote($name));
-    if (!is_a($res, 'PEAR_Error')) {
-      $val = $res->fetchRow();
-      return $val['param_value'];
-    }
-    return false;
-  }
-
-  // The setValue sets a value identified by name.
-  function setValue($name, $value) {
-    $rcnt = 0;
-    $res = $this->mdb2->query("select count(*) as rcnt from tt_config where user_id = ".$this->user_id." and param_name = ".$this->mdb2->quote($name));
-    if ($val = $res->fetchRow()) $rcnt = $val['rcnt'];
-    
-    if ($rcnt > 0) {
-      $affected = $this->mdb2->exec("update tt_config set param_value = ".$this->mdb2->quote($value)." where user_id = ".$this->user_id." and param_name=".$this->mdb2->quote($name));
-    } else {
-      $sql = "insert into tt_config set param_value = ".$this->mdb2->quote($value).
-        ", param_name = ".$this->mdb2->quote($name).", user_id = ".$this->user_id.", group_id = ".$this->group_id.", org_id = ".$this->org_id;
-      $affected = $this->mdb2->exec($sql);
-    }
-    return (!is_a($affected, 'PEAR_Error'));
-  }
-}
diff --git a/WEB-INF/lib/ttUserConfig.class.php b/WEB-INF/lib/ttUserConfig.class.php
new file mode 100644 (file)
index 0000000..b926994
--- /dev/null
@@ -0,0 +1,82 @@
+<?php
+// +----------------------------------------------------------------------+
+// | Anuko Time Tracker
+// +----------------------------------------------------------------------+
+// | Copyright (c) Anuko International Ltd. (https://www.anuko.com)
+// +----------------------------------------------------------------------+
+// | LIBERAL FREEWARE LICENSE: This source code document may be used
+// | by anyone for any purpose, and freely redistributed alone or in
+// | combination with other software, provided that the license is obeyed.
+// |
+// | There are only two ways to violate the license:
+// |
+// | 1. To redistribute this code in source form, with the copyright
+// |    notice or license removed or altered. (Distributing in compiled
+// |    forms without embedded copyright notices is permitted).
+// |
+// | 2. To redistribute modified versions of this code in *any* form
+// |    that bears insufficient indications that the modifications are
+// |    not the work of the original author(s).
+// |
+// | This license applies to this document only, not any other software
+// | that it may be combined with.
+// |
+// +----------------------------------------------------------------------+
+// | Contributors:
+// | https://www.anuko.com/time_tracker/credits.htm
+// +----------------------------------------------------------------------+
+
+define('SYSC_CHART_INTERVAL', 'chart_interval');
+define('SYSC_CHART_TYPE', 'chart_type');
+define('SYSC_LAST_REPORT_EMAIL', 'last_report_email');
+define('SYSC_LAST_REPORT_CC', 'last_report_cc');
+define('SYSC_LAST_INVOICE_EMAIL', 'last_invoice_email');
+define('SYSC_LAST_INVOICE_CC', 'last_invoice_cc');
+
+// Class ttUserConfig is used for storing and retrieving named values associated with users.
+// When user is working on behalf of someone else, this class is still associated with a user.
+class ttUserConfig {
+  var $user_id = null;
+  var $group_id = null;
+  var $org_id = null;
+  var $mdb2 = null;
+
+  // Constructor.
+  function __construct() {
+    global $user;
+    $this->user_id = $user->id; // Not behalf id by design.
+    $this->group_id = $user->group_id;
+    $this->org_id = $user->org_id;
+    $this->mdb2 = getConnection();
+  }
+
+  // The getValue retrieves a value identified by name.
+  function getValue($name) {
+    $res = $this->mdb2->query("select param_value from tt_config".
+      " where user_id = $this->user_id and group_id = $this->group_id and org_id = $this->org_id".
+      " and param_name=".$this->mdb2->quote($name));
+    if (!is_a($res, 'PEAR_Error')) {
+      $val = $res->fetchRow();
+      return $val['param_value'];
+    }
+    return false;
+  }
+
+  // The setValue sets a value identified by name.
+  function setValue($name, $value) {
+    $count = 0;
+    $res = $this->mdb2->query("select count(*) as count from tt_config where user_id = ".$this->user_id." and param_name = ".$this->mdb2->quote($name));
+    if ($val = $res->fetchRow()) $count = $val['count'];
+
+    if ($count > 0) {
+      $affected = $this->mdb2->exec("update tt_config set param_value = ".$this->mdb2->quote($value).
+        " where user_id = $this->user_id and group_id = $this->group_id and org_id = $this->org_id".
+        " and param_name=".$this->mdb2->quote($name));
+    } else {
+      $sql = "insert into tt_config set param_value = ".$this->mdb2->quote($value).
+        ", param_name = ".$this->mdb2->quote($name).", user_id = $this->user_id, group_id = $this->group_id, org_id = ".$this->org_id;
+      $affected = $this->mdb2->exec($sql);
+    }
+    return (!is_a($affected, 'PEAR_Error'));
+  }
+}
index fab5297..dbbcb63 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.29.4571 | 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.29.4572 | 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>
index d670703..3923d9a 100644 (file)
@@ -32,7 +32,7 @@ require_once('initialize.php');
 import('form.Form');
 import('DateAndTime');
 import('ttChartHelper');
-import('ttSysConfig');
+import('ttUserConfig');
 import('PieChartEx');
 import('ttUserHelper');
 import('ttTeamHelper');
@@ -66,8 +66,8 @@ $_SESSION['date'] = $cl_date;
 // Initialize chart interval.
 $cl_interval = $_SESSION['chart_interval'];
 if (!$cl_interval) {
-  $sc = new ttSysConfig($user->id);
-  $cl_interval = $sc->getValue(SYSC_CHART_INTERVAL);
+  $uc = new ttUserConfig();
+  $cl_interval = $uc->getValue(SYSC_CHART_INTERVAL);
 }
 if (!$cl_interval) $cl_interval = INTERVAL_THIS_MONTH;
 $_SESSION['chart_interval'] = $cl_interval;
@@ -75,10 +75,10 @@ $_SESSION['chart_interval'] = $cl_interval;
 // Initialize chart type.
 $cl_type = $_SESSION['chart_type'];
 if (!$cl_type) {
-  $sc = new ttSysConfig($user->id);
-  $cl_type = $sc->getValue(SYSC_CHART_TYPE);
+  $uc = new ttUserConfig();
+  $cl_type = $uc->getValue(SYSC_CHART_TYPE);
 }
-if (MODE_TIME == $user->tracking_mode) {
+if (MODE_TIME == $user->getTrackingMode()) {
   if ($user->isPluginEnabled('cl'))
     $cl_type = CHART_CLIENTS;
 } else {
@@ -86,7 +86,7 @@ if (MODE_TIME == $user->tracking_mode) {
     if (!$user->isPluginEnabled('cl'))
       $cl_type = CHART_PROJECTS;       
   } elseif ($cl_type == CHART_TASKS) {
-    if (MODE_PROJECTS_AND_TASKS != $user->tracking_mode)
+    if (MODE_PROJECTS_AND_TASKS != $user->getTrackingMode())
       $cl_type = CHART_PROJECTS;
   }
 }
@@ -103,8 +103,8 @@ if ($request->isPost()) {
     // Save in the session
     $_SESSION['chart_interval'] = $cl_interval;
     // and permanently.
-    $sc = new ttSysConfig($user->id);
-    $sc->setValue(SYSC_CHART_INTERVAL, $cl_interval);
+    $uc = new ttUserConfig();
+    $uc->setValue(SYSC_CHART_INTERVAL, $cl_interval);
   }
   // If chart type changed - save it.
   $cl_type = $request->getParameter('type');
@@ -112,8 +112,8 @@ if ($request->isPost()) {
     // Save in the session
     $_SESSION['chart_type'] = $cl_type;
     // and permanently.
-    $sc = new ttSysConfig($user->id);
-    $sc->setValue(SYSC_CHART_TYPE, $cl_type);
+    $uc = new ttUserConfig();
+    $uc->setValue(SYSC_CHART_TYPE, $cl_type);
   }
   // If user has changed - set behalf_id accordingly in the session.
   if ($request->getParameter('onBehalfUser')) {
index 135453b..c86cebb 100644 (file)
@@ -29,7 +29,7 @@
 require_once('initialize.php');
 import('form.Form');
 import('ttInvoiceHelper');
-import('ttSysConfig');
+import('ttUserConfig');
 
 // Access checks.
 if (!(ttAccessAllowed('manage_invoices') || ttAccessAllowed('view_own_invoices'))) {
@@ -48,7 +48,7 @@ if (!$invoice) {
 }
 // End of access checks.
 
-$sc = new ttSysConfig($user->id);
+$uc = new ttUserConfig();
 
 if ($request->isPost()) {
   $cl_receiver = trim($request->getParameter('receiver'));
@@ -56,8 +56,8 @@ if ($request->isPost()) {
   $cl_subject = trim($request->getParameter('subject'));
   $cl_comment = trim($request->getParameter('comment'));
 } else {
-  $cl_receiver = $sc->getValue(SYSC_LAST_INVOICE_EMAIL);
-  $cl_cc = $sc->getValue(SYSC_LAST_INVOICE_CC);
+  $cl_receiver = $uc->getValue(SYSC_LAST_INVOICE_EMAIL);
+  $cl_cc = $uc->getValue(SYSC_LAST_INVOICE_CC);
   $cl_subject = $i18n->get('title.invoice').' '.$invoice['name'].', '.$user->group_name;
 }
 
@@ -78,8 +78,8 @@ if ($request->isPost()) {
 
   if ($err->no()) {
     // Save last invoice emails for future use.
-    $sc->setValue(SYSC_LAST_INVOICE_EMAIL, $cl_receiver);
-    $sc->setValue(SYSC_LAST_INVOICE_CC, $cl_cc);
+    $uc->setValue(SYSC_LAST_INVOICE_EMAIL, $cl_receiver);
+    $uc->setValue(SYSC_LAST_INVOICE_CC, $cl_cc);
 
     $body = ttInvoiceHelper::prepareInvoiceBody($cl_invoice_id, $cl_comment);
 
index 9bbf9f5..526457b 100644 (file)
@@ -29,7 +29,7 @@
 require_once('initialize.php');
 import('form.Form');
 import('form.ActionForm');
-import('ttSysConfig');
+import('ttUserConfig');
 import('ttReportHelper');
 
 // Access check.
@@ -38,7 +38,7 @@ if (!(ttAccessAllowed('view_own_reports') || ttAccessAllowed('view_reports'))) {
   exit();
 }
 
-$sc = new ttSysConfig($user->id);
+$uc = new ttUserConfig();
 
 if ($request->isPost()) {
   $cl_receiver = trim($request->getParameter('receiver'));
@@ -46,8 +46,8 @@ if ($request->isPost()) {
   $cl_subject = trim($request->getParameter('subject'));
   $cl_comment = trim($request->getParameter('comment'));
 } else {
-  $cl_receiver = $sc->getValue(SYSC_LAST_REPORT_EMAIL);
-  $cl_cc = $sc->getValue(SYSC_LAST_REPORT_CC);
+  $cl_receiver = $uc->getValue(SYSC_LAST_REPORT_EMAIL);
+  $cl_cc = $uc->getValue(SYSC_LAST_REPORT_CC);
   $cl_subject = $i18n->get('form.mail.report_subject');
 }
 
@@ -67,8 +67,8 @@ if ($request->isPost()) {
 
   if ($err->no()) {
     // Save last report emails for future use.
-    $sc->setValue(SYSC_LAST_REPORT_EMAIL, $cl_receiver);
-    $sc->setValue(SYSC_LAST_REPORT_CC, $cl_cc);
+    $uc->setValue(SYSC_LAST_REPORT_EMAIL, $cl_receiver);
+    $uc->setValue(SYSC_LAST_REPORT_CC, $cl_cc);
 
     // Obtain session bean with report attributes.
     $bean = new ActionForm('reportBean', new Form('reportForm'));