valuecolumn, $this->table, $this->db->quote($blzkto)); return $this->db->fetchValue($sql); } public function distinctYears($blzkto) { $sql = sprintf("SELECT DISTINCT substr(datum::text,0,5) AS year FROM %s ". "WHERE blz_kto = %s ORDER BY year DESC", $this->table, $this->db->quote($blzkto)); return $this->db->fetchObjectList($sql); } public function distinctCategories($blzkto) { $sql = sprintf("SELECT DISTINCT category FROM %s WHERE blz_kto = %s ORDER BY category", $this->table, $this->db->quote($blzkto)); return $this->db->fetchObjectList($sql); } public function distinctFromTo($blzkto, $period=false) { $sql = sprintf("SELECT DISTINCT from_to FROM %s WHERE blz_kto = %s%s ORDER BY from_to", $this->table, $this->db->quote($blzkto), $period === false ? '' : ' AND ' . $period); return $this->db->fetchObjectList($sql); } public function distinctStatements($blzkto) { $sql = sprintf("SELECT DISTINCT statement FROM %s WHERE blz_kto = %s ORDER BY statement DESC", $this->table, $this->db->quote($blzkto)); return $this->db->fetchObjectList($sql); } public function filterTable(Array $data) { error_log('filter Table'); $out = ''; $where[] = sprintf("blz_kto = '%s'", $data['blzkto']); if (strlen($data['year'])) { $where[] = sprintf ("datum >= '%04d-01-01'", $data['year']); $year++; $where[] = sprintf ("datum < '%04d-01-01'", $data['year']+1); } if (strlen($data['deadline']) && strlen(trim($data['deadline']))) { $date = Utils::assertIsoDate(trim($data['deadline'])); $where[] = sprintf ("datum < '%s'", $date); } if (strlen($data['statement']) && strlen(trim($data['statement']))) { $where[] = sprintf("statement = '%s'", $data['statement']); } if (strlen($data['category']) && strlen(trim($data['category']))) { if (Utils::isAJAX()) $data['category'] = utf8_decode($data['category']); $where[] = sprintf("category = '%s'", $data['category']); } if (strlen($data['keyword']) && strlen(trim($data['keyword']))) { if (Utils::isAJAX()) $data['keyword'] = utf8_decode($data['keyword']); $where[] = sprintf("descr ~* '%s'", $data['keyword']); } if (strlen($data['from_to']) && strlen(trim($data['from_to']))) { if (Utils::isAJAX()) $data['from_to'] = utf8_decode($data['from_to']); $where[] = sprintf("from_to = '%s'", $data['from_to']); } if ($data['input'] && !$data['output']) { $where[] = "{$this->valuecolumn} > 0.0"; } elseif ($data['output'] && !$data['input']) { $where[] = "{$this->valuecolumn} < 0.0"; } $sql = sprintf("SELECT datum,id,category,descr,%s FROM %s WHERE %s ORDER BY datum,id", $this->valuecolumn, $this->table, implode (" AND ", $where)); $sum = 0.0; $sum_in = 0.0; $sum_out = 0.0; $color = 0; foreach ($this->db->fetchAssocList($sql) as $row) { $descr = explode ("\n", $row['descr']); $date = Utils::assertGermanDate($row['datum']); $out .= sprintf ("