Files
FHC-Core/include/personlog.class.php
T
Manfred Kindl 07f99b81ff Personen Zusammenlegen ueberarbeitet
- Personen können aus FAS heraus zusammengelegt werden (bis zu 2 Personen markieren -> Rechte Maustaste -> Personen zusammenlegen"
- Fotos und die existierenden Rollen werden in der Übersicht angezeigt
- Recht muss "basis/person" mit SUID sein
- Alle derzeit vorhandenen DB-Tabellen werden berücksichtigt
- Aktuelleres Foto wird übernommen, Fotosperren werden übernommen, Fotohistorie wird übernommen
- Ersatzkennzeichen bzw Sozialversicherungsnummer wird übernommen
- Letztbenutzter Zugangscode wird übernommen
- Adressen der verbliebenen Person werden zusammengeräumt (Doppelte löschen, Unvollständige zusammenführen)
- Kontakte der verbliebenen Person werden zusammengeräumt (Doppelte löschen, Unvollständige zusammenführen)
- Doppelte PreStudenten (im selben Studiensemester) werden gelöscht
- Neue Funktion getLog in personlog.class laedt die Log-Einträge einer Person
2018-07-17 11:22:06 +02:00

186 lines
5.9 KiB
PHP

<?php
/* Copyright (C) 2018 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class personlog extends basis_db
{
public $new; // boolean
public $logs = array(); // lehreinheit Objekt
//Tabellenspalten
public $log_id; // Serial
public $person_id;
public $zeitpunkt; // timestamp
public $app; // varchar(32)
public $taetigkeit_kurzbz; // varchar(32)
public $oe_kurzbz; // varchar(32)
public $logtype_kurzbz; // varchar(32)
public $logdata;
public $insertvon;
/**
* Konstruktor
*/
public function __construct($log_id=null)
{
parent::__construct();
}
/**
* Erstellt einen Log Eintrag zu einer Person
* @param integer $person_id ID der Person.
* @param string $logtype_kurzbz Typ des Logeintrages
* @param array $logdata Array mit den zusaetzlichen Logdaten zu diesem Typ.
* @param string $taetigkeit_kurzbz Kurzbz der Verarbeitungstaetigkeit.
* @param string $app Applikation von der dieser Logeintrag stammt.
* @param string $oe_kurzbz Kurzbz der Organisationseinheit. (optional)
* @param string $user User der die Aktion durchgefuehrt hat. (optional)
* @return boolean true wenn erfolgreich, false im Fehlerfall.
*/
public function log($person_id, $logtype_kurzbz, $logdata, $taetigkeit_kurzbz, $app = 'core', $oe_kurzbz = null, $user = null)
{
$qry = "INSERT INTO system.tbl_log(person_id, zeitpunkt, taetigkeit_kurzbz, app, oe_kurzbz,
logtype_kurzbz, logdata, insertvon) VALUES(".
$this->db_add_param($person_id).','.
$this->db_add_param(date('Y-m-d H:i:s')).','.
$this->db_add_param($taetigkeit_kurzbz).','.
$this->db_add_param($app).','.
$this->db_add_param($oe_kurzbz).','.
$this->db_add_param($logtype_kurzbz).','.
$this->db_add_param(json_encode($logdata)).','.
$this->db_add_param($user).')';
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern des Logeintrages';
return false;
}
}
/**
* Laedt die Log-Einträge einer Person.
* Optional können weitere Paramenter übergeben werden.
*
* @param integer $person_id ID der Person.
* @param string $logtype_kurzbz Typ des Logeintrages
* @param array $logdata Array mit den zusaetzlichen Logdaten zu diesem Typ.
* @param string $taetigkeit_kurzbz Kurzbz der Verarbeitungstaetigkeit.
* @param string $app Applikation von der dieser Logeintrag stammt.
* @param string $oe_kurzbz Kurzbz der Organisationseinheit. (optional)
* @param string $user User der die Aktion durchgefuehrt hat. (optional)
* @return boolean true wenn erfolgreich, false im Fehlerfall.
*/
public function getLog($person_id, $app = null, $logtype_kurzbz = null, $logdata = null, $taetigkeit_kurzbz = null, $oe_kurzbz = null, $order = 'zeitpunkt DESC')
{
if (! is_numeric($person_id))
{
$this->errormsg = 'Person_id muss eine gueltige Zahl sein';
return false;
}
$qry = "SELECT * FROM system.tbl_log
WHERE
person_id=" . $this->db_add_param($person_id, FHC_INTEGER);
if ($app != null)
$qry .= " AND app=" . $this->db_add_param($app);
if ($logtype_kurzbz != null)
$qry .= " AND logtype_kurzbz=" . $this->db_add_param($logtype_kurzbz);
if ($logdata != null)
{
if (is_array($logdata))
{
foreach ($logdata AS $key => $value)
$qry .= " AND logdata ->> " . $this->db_add_param($key) . " = " . $this->db_add_param($value);
}
else
{
$this->errormsg = 'Logdata muss ein Array sein';
return false;
}
}
if ($taetigkeit_kurzbz != null)
$qry .= " AND taetigkeit_kurzbz=" . $this->db_add_param($taetigkeit_kurzbz);
if ($oe_kurzbz != null)
$qry .= " AND oe_kurzbz=" . $this->db_add_param($oe_kurzbz);
$qry .= " ORDER BY " . $order;
if ($this->db_query($qry))
{
while ($row = $this->db_fetch_object())
{
$log = new personlog();
$log->log_id = $row->log_id;
$log->person_id = $row->person_id;
$log->zeitpunkt = $row->zeitpunkt;
$log->app = $row->app;
$log->oe_kurzbz = $row->oe_kurzbz;
$log->logtype_kurzbz = $row->logtype_kurzbz;
$log->logdata = $row->logdata;
$log->insertvon = $row->insertvon;
$log->taetigkeit_kurzbz = $row->taetigkeit_kurzbz;
$this->logs[] = $log;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der LogDaten';
return false;
}
}
/**
* Löscht alle Logeinträge vom Typ "Precessstate" mit Namen "Parked" der übergebenen Person_id, die in der Zukunft liegen.
* @param integer $person_id ID der Person, deren geparkter Logeintrag gelöscht werden soll.
* @return boolean true wenn erfolgreich, false im Fehlerfall.
*/
public function deleteParked($person_id)
{
$qry = "DELETE
FROM system.tbl_log
WHERE logtype_kurzbz = 'Processstate'
AND person_id = ".$this->db_add_param($person_id)."
AND logdata ->> 'name' = 'Parked'
AND zeitpunkt >= now();";
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Löschen des geparkten Logeintrages';
return false;
}
}
}
?>