Merge remote-tracking branch 'origin/master'

This commit is contained in:
Manfred Kindl
2018-09-10 16:59:03 +02:00
11 changed files with 695 additions and 421 deletions
+22 -1
View File
@@ -33,6 +33,7 @@ class filter extends basis_db
//Tabellenspalten
protected $filter_id; // integer (PK)
protected $kurzbz; // varchar(32) unique
protected $bezeichnung; // varchar(64) (label shown before filter dropdown)
protected $sql; // text
protected $valuename; // varchar(32)
protected $showvalue; // boolean (should the value be showed in the input widget
@@ -85,6 +86,7 @@ class filter extends basis_db
{
$this->filter_id=$row->filter_id;
$this->kurzbz=$row->kurzbz;
$this->bezeichnung=$row->bezeichnung;
$this->sql=$row->sql;
$this->valuename=$row->valuename;
$this->showvalue=$this->db_parse_bool($row->showvalue);
@@ -125,6 +127,7 @@ class filter extends basis_db
$obj->filter_id=$row->filter_id;
$obj->kurzbz=$row->kurzbz;
$obj->bezeichnung=$row->bezeichnung;
$obj->sql=$row->sql;
$obj->valuename=$row->valuename;
$obj->showvalue = $this->db_parse_bool($row->showvalue);
@@ -164,6 +167,22 @@ class filter extends basis_db
return false;
}
/**
* Filter Bezeichnung des Filters mit einer gegebenen kurzbz holen
* @param $kurzbz kurzbz des Datensatzes, der gefunden werden soll
* @return string|boolean Bezeichnung wenn kurzbz gefunden, false andernfalls
*/
public function getBezeichnungFromKurzbz($kurzbz)
{
foreach ($this->result as $filter)
{
if ($filter->kurzbz==$kurzbz)
return $filter->__get('bezeichnung');
}
return false;
}
/**
* Ausgabe des HTML Widgets
* @param kurzbz des Datensatzes, der gefunden werden soll
@@ -304,9 +323,10 @@ class filter extends basis_db
if($this->new)
{
//Neuen Datensatz einfuegen
$qry='INSERT INTO public.tbl_filter (kurzbz, sql, valuename,
$qry='INSERT INTO public.tbl_filter (kurzbz, bezeichnung, sql, valuename,
showvalue, type, htmlattr, insertamum, insertvon) VALUES ('.
$this->db_add_param($this->kurzbz).', '.
$this->db_add_param($this->bezeichnung).', '.
$this->db_add_param($this->sql).', '.
$this->db_add_param($this->valuename).', '.
$this->db_add_param($this->showvalue, FHC_BOOLEAN).', '.
@@ -326,6 +346,7 @@ class filter extends basis_db
$qry='UPDATE public.tbl_filter SET'.
' kurzbz='.$this->db_add_param($this->kurzbz).', '.
' bezeichnung='.$this->db_add_param($this->bezeichnung).', '.
' sql='.$this->db_add_param($this->sql).', '.
' valuename='.$this->db_add_param($this->valuename).', '.
' showvalue='.$this->db_add_param($this->showvalue, FHC_BOOLEAN).', '.
+38
View File
@@ -1097,4 +1097,42 @@ function PersonLog($person_id, $logtype_kurzbz, $logdata, $taetigkeit_kurzbz, $a
$personlog = new personlog();
$personlog->log($person_id, $logtype_kurzbz, $logdata, $taetigkeit_kurzbz, $app, $oe_kurzbz, $user);
}
/**
* Sendet einen Request an den CaseTime Server um die Daten dort zu speichern
*/
function getCaseTimeErrors($uid)
{
$ch = curl_init();
$url = CASETIME_SERVER.'/sync/get_zeitfehler';
$params = 'sachb='.$uid;
curl_setopt($ch, CURLOPT_URL, $url.'?'.$params ); //Url together with parameters
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Return data instead printing directly in Browser
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , 7); //Timeout after 7 seconds
curl_setopt($ch, CURLOPT_USERAGENT , "FH-Complete CaseTime Addon");
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($ch);
if(curl_errno($ch))
{
return 'Curl error: ' . curl_error($ch);
curl_close($ch);
}
else
{
curl_close($ch);
$data = json_decode($result);
if(isset($data->STATUS) && $data->STATUS=='OK')
{
return $data->RESULT;
}
else
return false;
}
}
?>
+102 -1
View File
@@ -487,7 +487,7 @@ class zeitaufzeichnung extends basis_db
$where = "uid=".$this->db_add_param($user);
if ($days!='')
$where.= " AND ende>(now() - INTERVAL '".$days." days')";
$where_join = "and z.uid=".$this->db_add_param($user);
$where_join = "and (z.aktivitaet_kurzbz != 'DienstreiseMT' or z.aktivitaet_kurzbz is null) and z.uid=".$this->db_add_param($user);
if ($days!='')
$where_join.= " AND z.ende>(now() - INTERVAL '".$days." days')";
if ($days=='')
@@ -540,6 +540,64 @@ class zeitaufzeichnung extends basis_db
}
}
/**
* Laedt die Zeitaufzeichnungen eines Users aufgefüllt mit lehren Tagen.
* Default: Die letzten 40 Tage
* @param string $user
* @param integer $days deafult: 40 Tage
*/
public function getDienstreisenUser($user, $days='40')
{
$where = "uid=".$this->db_add_param($user);
if ($days!='')
$where.= " AND ende>(now() - INTERVAL '".$days." days')";
$where .= " AND aktivitaet_kurzbz = 'DienstreiseMT'";
$qry = "SELECT
zeitaufzeichnung_id, start::date as starttag, TO_CHAR(start, 'HH24:MI') as startzeit, ende::date as endtag, TO_CHAR(ende, 'HH24:MI') as endzeit
FROM campus.tbl_zeitaufzeichnung
where $where
ORDER BY ende DESC
";
if($result = $this->db_query($qry))
{
$dr_arr = array();
while($row = $this->db_fetch_object($result))
{
if (array_key_exists($row->starttag, $dr_arr))
{
$dr_arr[$row->starttag]['start'] = $row->startzeit;
$dr_arr[$row->starttag]['id'] = $row->zeitaufzeichnung_id;
}
else
{
$dr_arr[$row->starttag] = array();
$dr_arr[$row->starttag]['start'] = $row->startzeit;
$dr_arr[$row->starttag]['id'] = $row->zeitaufzeichnung_id;
}
if (array_key_exists($row->endtag, $dr_arr))
{
$dr_arr[$row->endtag]['ende'] = $row->endzeit;
$dr_arr[$row->endtag]['id'] = $row->zeitaufzeichnung_id;
}
else
{
$dr_arr[$row->endtag] = array();
$dr_arr[$row->endtag]['ende'] = $row->endzeit;
$dr_arr[$row->endtag]['id'] = $row->zeitaufzeichnung_id;
}
$this->result = $dr_arr;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Löscht sämtliche Einträge eines Users für einen Tag
* @param string $user
@@ -684,5 +742,48 @@ or not exists
return $lehre_arr;
}
/**
* Holt das Datum bis zu dem die Eintragung für einen bestimmten User gesperrt ist
* @param string $user
* @return string $tag Y-m-d or false
*/
public function getEintragungGesperrtBisForUser($user)
{
//check if addon casetime is installed
$qrytable = "
SELECT EXISTS(
SELECT *
FROM information_schema.tables
WHERE
table_schema = 'addon' AND
table_name = 'tbl_casetime_timesheet'
);
";
$res = $this->db_query($qrytable);
if ($this->db_fetch_row($res)[0]===true)
{
//check if sent timesheets for the UID exist
$where = "uid=".$this->db_add_param($user);
$qry = "select max(datum) from addon.tbl_casetime_timesheet where ".$where." and abgeschicktamum is not null";
if($result = $this->db_query($qry))
{
$datum = $this->db_fetch_object($result);
return $datum->max;
}
else
{
return false;
}
}
else
{
return false;
}
}
}
?>