+
+ var $db; // Database connection.
+ var $team_id; // Team id.
+
+ // Old style constructors are DEPRECATED in PHP 7.0, and will be removed in a future version. You should always use __construct() in new code.
+ function __construct() {
+ $this->db = getConnection();
+ global $user;
+ $this->team_id = $user->team_id;
+ }
+
+ // update - deletes a quota, then inserts a new one.
+ public function update($year, $month, $quota) {
+ $team_id = $this->team_id;
+ $deleteSql = "DELETE FROM tt_monthly_quotas WHERE year = $year AND month = $month AND team_id = $team_id";
+ $this->db->exec($deleteSql);
+ if ($quota){
+ $float_quota = $this->quotaToFloat($quota);
+ $insertSql = "INSERT INTO tt_monthly_quotas (team_id, year, month, quota) values ($team_id, $year, $month, $float_quota)";
+ $affected = $this->db->exec($insertSql);
+ return (!is_a($affected, 'PEAR_Error'));
+ }
+ return true;
+ }
+
+ // get - obtains either a single month quota or an array of quotas for an entire year.
+ // Month starts with 1 for January, not 0.
+ public function get($year, $month = null) {
+ if (is_null($month)){
+ return $this->getMany($year);
+ }
+ return $this->getSingle($year, $month);
+ }
+
+ // getSingle - obtains a quota for a single month.
+ private function getSingle($year, $month) {
+ $team_id = $this->team_id;
+ $sql = "SELECT quota FROM tt_monthly_quotas WHERE year = $year AND month = $month AND team_id = $team_id";
+ $reader = $this->db->query($sql);
+ if (is_a($reader, 'PEAR_Error')) {
+ return false;
+ }
+
+ $row = $reader->fetchRow();
+ if ($row)
+ return $row['quota'];
+
+ // If we did not find a record, return a calculated monthly quota.
+ $numWorkdays = $this->getNumWorkdays($month, $year);
+ global $user;
+ return $numWorkdays * $user->workday_hours; // TODO: fix a rounding issue for small values like 0:01
+ // Possibly with a database field type change (minutes?).
+ }
+
+ // getMany - returns an array of quotas for a given year for team.
+ private function getMany($year){
+ $team_id = $this->team_id;
+ $sql = "SELECT month, quota FROM tt_monthly_quotas WHERE year = $year AND team_id = $team_id";
+ $result = array();
+ $res = $this->db->query($sql);
+ if (is_a($res, 'PEAR_Error')) {
+ return false;
+ }
+
+ while ($val = $res->fetchRow()) {
+ $result[$val['month']] = $val['quota'];