}
}
- // 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;
+ }
}
}
+++ /dev/null
-<?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'));
- }
-}
--- /dev/null
+<?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'));
+ }
+}
<br>
<table cellspacing="0" cellpadding="4" width="100%" border="0">
<tr>
- <td align="center"> Anuko Time Tracker 1.18.29.4571 | Copyright © <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
+ <td align="center"> Anuko Time Tracker 1.18.29.4572 | Copyright © <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>
import('form.Form');
import('DateAndTime');
import('ttChartHelper');
-import('ttSysConfig');
+import('ttUserConfig');
import('PieChartEx');
import('ttUserHelper');
import('ttTeamHelper');
// 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;
// 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 {
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;
}
}
// 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');
// 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')) {
require_once('initialize.php');
import('form.Form');
import('ttInvoiceHelper');
-import('ttSysConfig');
+import('ttUserConfig');
// Access checks.
if (!(ttAccessAllowed('manage_invoices') || ttAccessAllowed('view_own_invoices'))) {
}
// End of access checks.
-$sc = new ttSysConfig($user->id);
+$uc = new ttUserConfig();
if ($request->isPost()) {
$cl_receiver = trim($request->getParameter('receiver'));
$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;
}
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);
require_once('initialize.php');
import('form.Form');
import('form.ActionForm');
-import('ttSysConfig');
+import('ttUserConfig');
import('ttReportHelper');
// Access check.
exit();
}
-$sc = new ttSysConfig($user->id);
+$uc = new ttUserConfig();
if ($request->isPost()) {
$cl_receiver = trim($request->getParameter('receiver'));
$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');
}
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'));