mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-23 18:02:18 +00:00
Merge branch 'master' into feature-10267/Zeiterfassung_Zeitaufzeichnungspflichtig
This commit is contained in:
@@ -179,6 +179,24 @@ class bisverwendung extends basis_db
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Prueft das Datum
|
||||
* @param $date = string
|
||||
* @return true wenn ok, sonst false
|
||||
*/
|
||||
static public function verifyDate($date, $strict = true)
|
||||
{
|
||||
$dateTime = DateTime::createFromFormat('Y-m-d', $date);
|
||||
if ($strict) {
|
||||
$errors = DateTime::getLastErrors();
|
||||
if (!empty($errors['warning_count'])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return $dateTime !== false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft die Daten vor dem Speichern
|
||||
*
|
||||
@@ -191,6 +209,17 @@ class bisverwendung extends basis_db
|
||||
$this->errormsg = 'Vertragsstunden sind ungueltig';
|
||||
return false;
|
||||
}
|
||||
elseif(!$this->verifyDate($this->beginn) && !empty($this->beginn))
|
||||
{
|
||||
$this->errormsg = 'Start Datum ist kein Valides Datum: '.$this->beginn;
|
||||
return false;
|
||||
}
|
||||
elseif(!$this->verifyDate($this->ende) && !empty($this->ende))
|
||||
{
|
||||
$this->errormsg = 'End Datum ist kein Valides Datum: '.$this->ende;
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -509,12 +538,13 @@ class bisverwendung extends basis_db
|
||||
{
|
||||
//laden des Datensatzes
|
||||
$qry = "SELECT
|
||||
*
|
||||
*, tbl_hauptberuf.bezeichnung as hauptberuf
|
||||
FROM
|
||||
bis.tbl_bisverwendung
|
||||
LEFT JOIN bis.tbl_hauptberuf USING(hauptberufcode)
|
||||
WHERE
|
||||
mitarbeiter_uid=".$this->db_add_param($uid)."
|
||||
ORDER BY ende DESC NULLS LAST,beginn DESC NULLS LAST LIMIT 1;";
|
||||
ORDER BY ende DESC NULLS FIRST,beginn DESC NULLS LAST LIMIT 1;";
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
@@ -528,6 +558,7 @@ class bisverwendung extends basis_db
|
||||
$this->mitarbeiter_uid = $row->mitarbeiter_uid;
|
||||
$this->hauptberufcode = $row->hauptberufcode;
|
||||
$this->hauptberuflich = $this->db_parse_bool($row->hauptberuflich);
|
||||
$this->hauptberuf = $row->hauptberuf;
|
||||
$this->habilitation = $this->db_parse_bool($row->habilitation);
|
||||
$this->beginn = $row->beginn;
|
||||
$this->ende = $row->ende;
|
||||
@@ -568,7 +599,7 @@ class bisverwendung extends basis_db
|
||||
(beginn<=now() OR beginn IS NULL)
|
||||
AND
|
||||
(ende>=now() OR ende IS NULL)
|
||||
ORDER BY ende DESC NULLS LAST,beginn DESC NULLS LAST LIMIT 1;";
|
||||
ORDER BY ende DESC NULLS FIRST,beginn DESC NULLS LAST LIMIT 1;";
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
|
||||
+24
-5
@@ -148,17 +148,37 @@ class datum
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob das Datum im Format dd.mm.YYYY oder YYYY-mm-dd ist
|
||||
* @return true wenn ok, false wenn falsches Format
|
||||
* Prueft ob das Datum im Format dd.mm.YYYY oder YYYY-mm-dd ist UND ob es sich um ein gültiges Datum handelt
|
||||
* @return true wenn ok, false wenn falsches Format und/oder nicht gültig
|
||||
*/
|
||||
public function checkDatum($datum)
|
||||
{
|
||||
if(mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})$",$datum) || mb_ereg("([0-9]{2}).([0-9]{2}).([0-9]{4})$",$datum))
|
||||
return true;
|
||||
//Format dd.mm.yyyy
|
||||
if(mb_ereg("([0-9]{2}).([0-9]{2}).([0-9]{4})$", $datum))
|
||||
{
|
||||
|
||||
$year = substr($datum, 6, 4);
|
||||
$month = substr($datum, 3, 2);
|
||||
$day = substr($datum, 0, 2);
|
||||
}
|
||||
|
||||
//Format yyyy-mm-dd
|
||||
elseif(mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})$", $datum))
|
||||
{
|
||||
$year = substr($datum, 0, 4);
|
||||
$month = substr($datum, 5, 2);
|
||||
$day = substr($datum, 8, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return checkdate($month, $day, $year);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Zieht ein Datum von einem anderen ab, und gibt die differenz in Tagen zurueck (mit Vorzeichen)
|
||||
* @param $datum1
|
||||
@@ -395,6 +415,5 @@ class datum
|
||||
{
|
||||
return intval(substr($timestring, 0, 2)) + intval(substr($timestring, 3, 2)) / 60;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -1121,4 +1121,57 @@ function setLeadingZero($number, $length = 2)
|
||||
return str_pad($number, $length, "0", STR_PAD_LEFT);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a new token for diffent use cases. Default token length is 64
|
||||
* - Reading messages
|
||||
* - Forgotten password
|
||||
* - etc
|
||||
* Returns null on failure
|
||||
*/
|
||||
function generateUniqueToken($length = 64)
|
||||
{
|
||||
$token = null;
|
||||
$firstGeneratedToken = null;
|
||||
|
||||
// For PHP 7 you can use random_bytes()
|
||||
if (function_exists('random_bytes'))
|
||||
{
|
||||
try
|
||||
{
|
||||
$firstGeneratedToken = random_bytes($length); // try to generates cryptographically secure pseudo-random bytes...
|
||||
}
|
||||
catch (Exception $e) { $firstGeneratedToken = null; } // if fails $firstGeneratedToken is set to null
|
||||
}
|
||||
// For PHP >= 5.3 and < 7 and openssl is available
|
||||
elseif (function_exists('openssl_random_pseudo_bytes'))
|
||||
{
|
||||
$firstGeneratedToken = openssl_random_pseudo_bytes($length, $strong);
|
||||
// If the token generation ended with errors OR the generated token is NOT strong enough
|
||||
if ($firstGeneratedToken == false || $strong == false) $firstGeneratedToken = null; // $firstGeneratedToken is set to null
|
||||
}
|
||||
|
||||
if ($firstGeneratedToken != null) // If everything was fine
|
||||
{
|
||||
// base64 is about 33% longer, so we need to truncate the result
|
||||
$token = strtr(substr(base64_encode($firstGeneratedToken), 0, $length), '+/=', '-_,');
|
||||
}
|
||||
|
||||
// Fallback to mt_rand if:
|
||||
// php < 5.3
|
||||
// OR no openssl is available
|
||||
// OR openssl_random_pseudo_bytes used an algorithm that is cryptographically NOT strong
|
||||
// OR one of the previous methods failed
|
||||
if ($token == null)
|
||||
{
|
||||
$token = ''; // set $token as an empty string
|
||||
$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/+';
|
||||
$charactersLength = strlen($characters) - 1;
|
||||
|
||||
// Select some random characters
|
||||
for ($i = 0; $i < $length; $i++) $token .= $characters[mt_rand(0, $charactersLength)];
|
||||
}
|
||||
|
||||
return $token;
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -139,7 +139,7 @@ class gemeinde extends basis_db
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
//naechste ID aus der Sequence holen
|
||||
$qry="SELECT currval('tbl_gemeinde_gemeinde_id_seq') as id;";
|
||||
$qry="SELECT currval('bis.tbl_gemeinde_gemeinde_id_seq') as id;";
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
@@ -219,4 +219,4 @@ class gemeinde extends basis_db
|
||||
return true;
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
||||
+619
-618
File diff suppressed because it is too large
Load Diff
@@ -691,10 +691,11 @@ class organisationseinheit extends basis_db
|
||||
*
|
||||
* @param string $user uid
|
||||
* @param integer $zeitraum Anzahl Tage in die Vergangenheit, die fuer das Auftreten der OE beruecksichtigt werden sollen
|
||||
* @param integer $anzahl_ereignisse default: 3 Wie oft soll diese OE mindestens in $zeitraum vorkommen, um beruecksichtigt zu werden
|
||||
* @param string $anzahl_ereignisse default: 3 Wie oft soll diese OE mindestens in $zeitraum vorkommen, um beruecksichtigt zu werden
|
||||
* @param boolean $aktiv
|
||||
* @param array $funktion_zuordnungen Einschränkung nach zugeordneten Funktionen (Gültigkeitszeitraum heute - 1 Monat 1 Tag nach Gültigkeitsende)
|
||||
*/
|
||||
public function getFrequent($user, $zeitraum=null, $anzahl_ereignisse='3', $aktiv=null)
|
||||
public function getFrequent($user, $zeitraum=null, $anzahl_ereignisse='3', $aktiv=null, $funktion_zuordnungen=array())
|
||||
{
|
||||
if(!is_numeric($anzahl_ereignisse))
|
||||
{
|
||||
@@ -707,36 +708,51 @@ class organisationseinheit extends basis_db
|
||||
else
|
||||
$zeit = "";
|
||||
|
||||
$qry = "SELECT
|
||||
oe_kurzbz,
|
||||
oe_parent_kurzbz,
|
||||
bezeichnung,
|
||||
organisationseinheittyp_kurzbz,
|
||||
aktiv,
|
||||
lehre,
|
||||
count(tbl_zeitaufzeichnung.zeitaufzeichnung_id)
|
||||
FROM campus.tbl_zeitaufzeichnung
|
||||
JOIN public.tbl_organisationseinheit ON(oe_kurzbz IN (oe_kurzbz_1,oe_kurzbz_2))
|
||||
WHERE tbl_zeitaufzeichnung.uid=".$this->db_add_param($user)."
|
||||
$zeit
|
||||
GROUP BY tbl_organisationseinheit.oe_kurzbz HAVING COUNT(*) > $anzahl_ereignisse
|
||||
|
||||
UNION
|
||||
|
||||
SELECT
|
||||
oe_kurzbz,
|
||||
oe_parent_kurzbz,
|
||||
bezeichnung,
|
||||
organisationseinheittyp_kurzbz,
|
||||
aktiv,
|
||||
lehre,
|
||||
'0'
|
||||
FROM public.tbl_organisationseinheit";
|
||||
$qry = "SELECT * FROM (
|
||||
SELECT
|
||||
oe_kurzbz,
|
||||
oe_parent_kurzbz,
|
||||
bezeichnung,
|
||||
organisationseinheittyp_kurzbz,
|
||||
aktiv,
|
||||
lehre,
|
||||
count(tbl_zeitaufzeichnung.zeitaufzeichnung_id)
|
||||
FROM campus.tbl_zeitaufzeichnung
|
||||
JOIN public.tbl_organisationseinheit ON(oe_kurzbz IN (oe_kurzbz_1,oe_kurzbz_2))
|
||||
WHERE tbl_zeitaufzeichnung.uid=".$this->db_add_param($user)."
|
||||
$zeit
|
||||
GROUP BY tbl_organisationseinheit.oe_kurzbz HAVING COUNT(*) > $anzahl_ereignisse
|
||||
|
||||
UNION
|
||||
|
||||
SELECT
|
||||
oe_kurzbz,
|
||||
oe_parent_kurzbz,
|
||||
bezeichnung,
|
||||
organisationseinheittyp_kurzbz,
|
||||
aktiv,
|
||||
lehre,
|
||||
'0'
|
||||
FROM public.tbl_organisationseinheit";
|
||||
|
||||
if(!is_null($aktiv))
|
||||
$qry.=" WHERE aktiv=".$this->db_add_param($aktiv, FHC_BOOLEAN);
|
||||
|
||||
$qry .=" ORDER BY count DESC,bezeichnung,oe_kurzbz";
|
||||
$qry .=") oes";
|
||||
|
||||
if (isset($funktion_zuordnungen) && is_array($funktion_zuordnungen) && count($funktion_zuordnungen) > 0)
|
||||
{
|
||||
$qry .= " WHERE EXISTS (
|
||||
SELECT 1 FROM public.tbl_benutzerfunktion
|
||||
WHERE uid = ".$this->db_add_param($user)."
|
||||
AND funktion_kurzbz IN (".$this->db_implode4SQL($funktion_zuordnungen).")
|
||||
AND oe_kurzbz = oes.oe_kurzbz
|
||||
AND (datum_von <= now() OR datum_von IS NULL)
|
||||
AND (datum_bis + interval '1 month 1 day' >= now() OR datum_bis IS NULL)
|
||||
)";
|
||||
}
|
||||
|
||||
$qry .= " ORDER BY count DESC,bezeichnung,oe_kurzbz";
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
|
||||
@@ -81,7 +81,9 @@ class organisationsform extends basis_db
|
||||
$this->errormsg ="Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
|
||||
+239
-124
@@ -28,26 +28,25 @@ require_once(dirname(__FILE__).'/basis_db.class.php');
|
||||
|
||||
class projekt extends basis_db
|
||||
{
|
||||
public $new; // boolean
|
||||
public $result = array(); // projekt Objekt
|
||||
public $new; // boolean
|
||||
public $result = array(); // projekt Objekt
|
||||
|
||||
//Tabellenspalten
|
||||
public $projekt_kurzbz; // string
|
||||
public $nummer; // string
|
||||
public $titel; // string
|
||||
public $beschreibung; // string
|
||||
public $beginn; // date
|
||||
public $ende; // date
|
||||
public $oe_kurzbz; // string
|
||||
public $insertamum; // timestamp
|
||||
public $insertvon; // string
|
||||
public $updateamum; // timestamp
|
||||
public $updatevon; // string
|
||||
public $projekt_kurzbz; // string
|
||||
public $nummer; // string
|
||||
public $titel; // string
|
||||
public $beschreibung; // string
|
||||
public $beginn; // date
|
||||
public $ende; // date
|
||||
public $oe_kurzbz; // string
|
||||
public $insertamum; // timestamp
|
||||
public $insertvon; // string
|
||||
public $updateamum; // timestamp
|
||||
public $updatevon; // string
|
||||
public $budget;
|
||||
public $farbe;
|
||||
public $anzahl_ma; // integer
|
||||
public $aufwand_pt; // integer
|
||||
|
||||
public $anzahl_ma; // integer
|
||||
public $aufwand_pt; // integer
|
||||
|
||||
|
||||
/**
|
||||
@@ -58,23 +57,21 @@ class projekt extends basis_db
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
if($projekt_kurzbz != null)
|
||||
if ($projekt_kurzbz != null)
|
||||
$this->load($projekt_kurzbz);
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt die Projek mit der Kurzbezeichnung $projekt_kurzbz
|
||||
* @param string $projekt_kurzbz Kurzbz des Projekts.
|
||||
* @param string $projekt_kurzbz Kurzbz des Projekts.
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function load($projekt_kurzbz)
|
||||
{
|
||||
$qry = "SELECT * FROM fue.tbl_projekt WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz);
|
||||
$qry = "SELECT * FROM fue.tbl_projekt WHERE projekt_kurzbz=" . $this->db_add_param($projekt_kurzbz);
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
if ($row = $this->db_fetch_object())
|
||||
{
|
||||
if ($this->db_query($qry)) {
|
||||
if ($row = $this->db_fetch_object()) {
|
||||
$this->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$this->nummer = $row->nummer;
|
||||
$this->titel = $row->titel;
|
||||
@@ -102,30 +99,28 @@ class projekt extends basis_db
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt alle aktuellen Projekte
|
||||
* @param bool $filter_kommende Lädt auch alle zukünftigen.
|
||||
/**
|
||||
* Laedt alle aktuellen Projekte
|
||||
* @param bool $filter_kommende Lädt auch alle zukünftigen.
|
||||
* @param string $oe Organisationseinheit.
|
||||
* @return bool
|
||||
*/
|
||||
public function getProjekteAktuell($filter_kommende = false, $oe = null)
|
||||
{
|
||||
$qry = 'SELECT * FROM fue.tbl_projekt WHERE ';
|
||||
* @return bool
|
||||
*/
|
||||
public function getProjekteAktuell($filter_kommende = false, $oe = null)
|
||||
{
|
||||
$qry = 'SELECT * FROM fue.tbl_projekt WHERE ';
|
||||
|
||||
if($filter_kommende)
|
||||
$qry .= " ((beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP) OR beginn > CURRENT_TIMESTAMP)";
|
||||
else
|
||||
$qry .= " (beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP)";
|
||||
if ($filter_kommende)
|
||||
$qry .= " ((beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP) OR beginn > CURRENT_TIMESTAMP)";
|
||||
else
|
||||
$qry .= " (beginn < CURRENT_TIMESTAMP AND ende > CURRENT_TIMESTAMP)";
|
||||
|
||||
|
||||
if (!is_null($oe))
|
||||
$qry .= ' AND oe_kurzbz='.$this->db_add_param($oe);
|
||||
if (!is_null($oe))
|
||||
$qry .= ' AND oe_kurzbz=' . $this->db_add_param($oe);
|
||||
|
||||
$qry .= ' ORDER BY oe_kurzbz;';
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
while ($row = $this->db_fetch_object())
|
||||
{
|
||||
$qry .= ' ORDER BY oe_kurzbz;';
|
||||
if ($this->db_query($qry)) {
|
||||
while ($row = $this->db_fetch_object()) {
|
||||
$obj = new projekt();
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
@@ -150,26 +145,24 @@ class projekt extends basis_db
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt alle Projekte die zwischen beginn und ende liegen
|
||||
* @param date $beginn Anfang.
|
||||
* @param date $ende Ende.
|
||||
* @param string $oe Organisationseinheit.
|
||||
* @return bool
|
||||
*/
|
||||
public function getProjekteInZeitraum($beginn, $ende, $oe = null)
|
||||
{
|
||||
$qry = 'select * from fue.tbl_projekt where beginn <= '.$this->db_add_param($ende).' and ende >= '.$this->db_add_param($beginn);
|
||||
/**
|
||||
* Laedt alle Projekte die zwischen beginn und ende liegen
|
||||
* @param date $beginn Anfang.
|
||||
* @param date $ende Ende.
|
||||
* @param string $oe Organisationseinheit.
|
||||
* @return bool
|
||||
*/
|
||||
public function getProjekteInZeitraum($beginn, $ende, $oe = null)
|
||||
{
|
||||
$qry = 'select * from fue.tbl_projekt where beginn <= ' . $this->db_add_param($ende) . ' and ende >= ' . $this->db_add_param($beginn);
|
||||
if (!is_null($oe))
|
||||
$qry .= " AND oe_kurzbz=".$this->db_add_param($oe);
|
||||
$qry .= " AND oe_kurzbz=" . $this->db_add_param($oe);
|
||||
$qry .= ' ORDER BY oe_kurzbz;';
|
||||
//echo $qry;
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
while ($row = $this->db_fetch_object())
|
||||
{
|
||||
if ($this->db_query($qry)) {
|
||||
while ($row = $this->db_fetch_object()) {
|
||||
$obj = new projekt();
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
@@ -193,7 +186,7 @@ class projekt extends basis_db
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@@ -205,13 +198,11 @@ class projekt extends basis_db
|
||||
{
|
||||
$qry = 'SELECT * FROM fue.tbl_projekt';
|
||||
if (!is_null($oe))
|
||||
$qry .= " WHERE oe_kurzbz=".$this->db_add_param($oe);
|
||||
$qry .= " WHERE oe_kurzbz=" . $this->db_add_param($oe);
|
||||
$qry .= ' ORDER BY oe_kurzbz;';
|
||||
//echo $qry;
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
while ($row = $this->db_fetch_object())
|
||||
{
|
||||
if ($this->db_query($qry)) {
|
||||
while ($row = $this->db_fetch_object()) {
|
||||
$obj = new projekt();
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
@@ -245,26 +236,21 @@ class projekt extends basis_db
|
||||
protected function validate()
|
||||
{
|
||||
//Gesamtlaenge pruefen
|
||||
if ($this->projekt_kurzbz == null)
|
||||
{
|
||||
if ($this->projekt_kurzbz == null) {
|
||||
$this->errormsg = 'Projekt kurzbz darf nicht NULL sein!';
|
||||
}
|
||||
if ($this->oe_kurzbz == null)
|
||||
{
|
||||
if ($this->oe_kurzbz == null) {
|
||||
$this->errormsg = 'OE kurbz darf nicht NULL sein!';
|
||||
}
|
||||
if (mb_strlen($this->projekt_kurzbz) > 16)
|
||||
{
|
||||
if (mb_strlen($this->projekt_kurzbz) > 16) {
|
||||
$this->errormsg = 'Projektyp_kurzbz darf nicht länger als 16 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if (mb_strlen($this->nummer) > 8)
|
||||
{
|
||||
if (mb_strlen($this->nummer) > 8) {
|
||||
$this->errormsg = 'Nummer darf nicht länger als 8 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
if (mb_strlen($this->titel) > 256)
|
||||
{
|
||||
if (mb_strlen($this->titel) > 256) {
|
||||
$this->errormsg = 'Titel darf nicht länger als 256 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
@@ -283,52 +269,50 @@ class projekt extends basis_db
|
||||
public function save($new = null)
|
||||
{
|
||||
//Variablen pruefen
|
||||
if(!$this->validate())
|
||||
if (!$this->validate())
|
||||
return false;
|
||||
|
||||
if ($new == null)
|
||||
$new = $this->new;
|
||||
|
||||
if ($new)
|
||||
{
|
||||
if ($new) {
|
||||
//Neuen Datensatz einfuegen
|
||||
|
||||
$qry = 'INSERT INTO fue.tbl_projekt (projekt_kurzbz, nummer, titel,beschreibung, beginn, ende, budget, farbe, oe_kurzbz, aufwand_pt, anzahl_ma, aufwandstyp_kurzbz) VALUES('.
|
||||
$this->db_add_param($this->projekt_kurzbz).', '.
|
||||
$this->db_add_param($this->nummer).', '.
|
||||
$this->db_add_param($this->titel).', '.
|
||||
$this->db_add_param($this->beschreibung).', '.
|
||||
$this->db_add_param($this->beginn).', '.
|
||||
$this->db_add_param($this->ende).', '.
|
||||
$this->db_add_param($this->budget).', '.
|
||||
$this->db_add_param($this->farbe).', '.
|
||||
$this->db_add_param($this->oe_kurzbz).','.
|
||||
$this->db_add_param($this->aufwand_pt).','.
|
||||
$this->db_add_param($this->anzahl_ma).','.
|
||||
$this->db_add_param($this->aufwandstyp_kurzbz).');';
|
||||
$qry = 'INSERT INTO fue.tbl_projekt (projekt_kurzbz, nummer, titel,beschreibung, beginn, ende, budget, farbe, oe_kurzbz, aufwand_pt, anzahl_ma, aufwandstyp_kurzbz) VALUES(' .
|
||||
$this->db_add_param($this->projekt_kurzbz) . ', ' .
|
||||
$this->db_add_param($this->nummer) . ', ' .
|
||||
$this->db_add_param($this->titel) . ', ' .
|
||||
$this->db_add_param($this->beschreibung) . ', ' .
|
||||
$this->db_add_param($this->beginn) . ', ' .
|
||||
$this->db_add_param($this->ende) . ', ' .
|
||||
$this->db_add_param($this->budget) . ', ' .
|
||||
$this->db_add_param($this->farbe) . ', ' .
|
||||
$this->db_add_param($this->oe_kurzbz) . ',' .
|
||||
$this->db_add_param($this->aufwand_pt) . ',' .
|
||||
$this->db_add_param($this->anzahl_ma) . ',' .
|
||||
$this->db_add_param($this->aufwandstyp_kurzbz) . ');';
|
||||
}
|
||||
else
|
||||
{
|
||||
//Updaten des bestehenden Datensatzes
|
||||
|
||||
$qry = 'UPDATE fue.tbl_projekt SET '.
|
||||
'projekt_kurzbz='.$this->db_add_param($this->projekt_kurzbz).', '.
|
||||
'nummer='.$this->db_add_param($this->nummer).', '.
|
||||
'titel='.$this->db_add_param($this->titel).', '.
|
||||
'beschreibung='.$this->db_add_param($this->beschreibung).', '.
|
||||
'beginn='.$this->db_add_param($this->beginn).', '.
|
||||
'ende='.$this->db_add_param($this->ende).', '.
|
||||
'budget='.$this->db_add_param($this->budget).', '.
|
||||
'farbe='.$this->db_add_param($this->farbe).', '.
|
||||
'oe_kurzbz='.$this->db_add_param($this->oe_kurzbz).', '.
|
||||
'anzahl_ma='.$this->db_add_param($this->anzahl_ma).', '.
|
||||
'aufwand_pt='.$this->db_add_param($this->aufwand_pt).', '.
|
||||
'aufwandstyp_kurzbz='.$this->db_add_param($this->aufwandstyp_kurzbz).' '.
|
||||
'WHERE projekt_kurzbz='.$this->db_add_param($this->projekt_kurzbz).';';
|
||||
$qry = 'UPDATE fue.tbl_projekt SET ' .
|
||||
'projekt_kurzbz=' . $this->db_add_param($this->projekt_kurzbz) . ', ' .
|
||||
'nummer=' . $this->db_add_param($this->nummer) . ', ' .
|
||||
'titel=' . $this->db_add_param($this->titel) . ', ' .
|
||||
'beschreibung=' . $this->db_add_param($this->beschreibung) . ', ' .
|
||||
'beginn=' . $this->db_add_param($this->beginn) . ', ' .
|
||||
'ende=' . $this->db_add_param($this->ende) . ', ' .
|
||||
'budget=' . $this->db_add_param($this->budget) . ', ' .
|
||||
'farbe=' . $this->db_add_param($this->farbe) . ', ' .
|
||||
'oe_kurzbz=' . $this->db_add_param($this->oe_kurzbz) . ', ' .
|
||||
'anzahl_ma=' . $this->db_add_param($this->anzahl_ma) . ', ' .
|
||||
'aufwand_pt=' . $this->db_add_param($this->aufwand_pt) . ', ' .
|
||||
'aufwandstyp_kurzbz=' . $this->db_add_param($this->aufwandstyp_kurzbz) . ' ' .
|
||||
'WHERE projekt_kurzbz=' . $this->db_add_param($this->projekt_kurzbz) . ';';
|
||||
}
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
if ($this->db_query($qry)) {
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@@ -345,10 +329,9 @@ class projekt extends basis_db
|
||||
*/
|
||||
public function delete($projekt_kurzbz)
|
||||
{
|
||||
$qry = "DELETE FROM lehre.tbl_projek WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz);
|
||||
$qry = "DELETE FROM lehre.tbl_projek WHERE projekt_kurzbz=" . $this->db_add_param($projekt_kurzbz);
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
if ($this->db_query($qry)) {
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@@ -367,7 +350,7 @@ class projekt extends basis_db
|
||||
*/
|
||||
function getProjekteMitarbeiter($mitarbeiter_uid, $projektphasen = false)
|
||||
{
|
||||
$qry = "SELECT DISTINCT
|
||||
$qry = "SELECT DISTINCT
|
||||
tbl_projekt.*
|
||||
FROM
|
||||
fue.tbl_ressource
|
||||
@@ -377,12 +360,12 @@ class projekt extends basis_db
|
||||
AND (ende + interval '1 month 1 day' >=now() OR ende is null)
|
||||
AND
|
||||
(
|
||||
mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." OR
|
||||
student_uid=".$this->db_add_param($mitarbeiter_uid)."
|
||||
mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid) . " OR
|
||||
student_uid=" . $this->db_add_param($mitarbeiter_uid) . "
|
||||
)";
|
||||
|
||||
if ($projektphasen == true)
|
||||
$qry .= "UNION
|
||||
if ($projektphasen == true)
|
||||
$qry .= "UNION
|
||||
|
||||
SELECT DISTINCT
|
||||
tbl_projekt.*
|
||||
@@ -401,12 +384,10 @@ class projekt extends basis_db
|
||||
AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null)
|
||||
)
|
||||
)
|
||||
AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid);
|
||||
AND mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid);
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
while ($row = $this->db_fetch_object($result))
|
||||
{
|
||||
if ($result = $this->db_query($qry)) {
|
||||
while ($row = $this->db_fetch_object($result)) {
|
||||
$obj = new projekt();
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
@@ -427,16 +408,86 @@ class projekt extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert Ein Array mit Porjekten von allen Projekten des Mitarbeiters mit UID.
|
||||
* Optional auch mit den Zuteilungen zu Projektphasen.
|
||||
* @param string $mitarbeiter_uid MitarbeiterUID.
|
||||
* @param bool $projektphasen Default false. Wenn true, werden auch Zuteilungen zu Projektphasen geliefert.
|
||||
* @return array wenn ok, false im Fehlerfall
|
||||
*/
|
||||
function getProjekteListForMitarbeiter($mitarbeiter_uid, $projektphasen = false)
|
||||
{
|
||||
$projectList = array();
|
||||
$qry = "SELECT DISTINCT
|
||||
tbl_projekt.*
|
||||
FROM
|
||||
fue.tbl_ressource
|
||||
JOIN fue.tbl_projekt_ressource USING(ressource_id)
|
||||
JOIN fue.tbl_projekt USING(projekt_kurzbz)
|
||||
WHERE (beginn<=now() or beginn is null)
|
||||
AND (ende + interval '1 month 1 day' >=now() OR ende is null)
|
||||
AND
|
||||
(
|
||||
mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid) . " OR
|
||||
student_uid=" . $this->db_add_param($mitarbeiter_uid) . "
|
||||
)";
|
||||
|
||||
if ($projektphasen == true)
|
||||
$qry .= "UNION
|
||||
|
||||
SELECT DISTINCT
|
||||
tbl_projekt.*
|
||||
FROM
|
||||
fue.tbl_projektphase
|
||||
JOIN fue.tbl_projekt USING (projekt_kurzbz)
|
||||
JOIN fue.tbl_projekt_ressource USING (projektphase_id)
|
||||
JOIN fue.tbl_ressource ON (tbl_ressource.ressource_id=tbl_projekt_ressource.ressource_id)
|
||||
WHERE
|
||||
(
|
||||
(
|
||||
(tbl_projekt.beginn<=now() or tbl_projekt.beginn is null)
|
||||
AND (tbl_projekt.ende + interval '1 month 1 day' >=now() OR tbl_projekt.ende is null)
|
||||
) OR (
|
||||
(tbl_projektphase.start<=now() or tbl_projektphase.start is null)
|
||||
AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null)
|
||||
)
|
||||
)
|
||||
AND mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid);
|
||||
|
||||
if ($result = $this->db_query($qry)) {
|
||||
while ($row = $this->db_fetch_object($result)) {
|
||||
$obj = new projekt();
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$obj->nummer = $row->nummer;
|
||||
$obj->titel = $row->titel;
|
||||
$obj->beschreibung = $row->beschreibung;
|
||||
$obj->beginn = $row->beginn;
|
||||
$obj->ende = $row->ende;
|
||||
$obj->oe_kurzbz = $row->oe_kurzbz;
|
||||
|
||||
$this->result[] = $obj;
|
||||
|
||||
array_push($projectList, $obj);
|
||||
}
|
||||
return $projectList;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->erromsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function getProjektFromBestellung($bestellung_id)
|
||||
{
|
||||
$qry = "select * from fue.tbl_projekt
|
||||
join wawi.tbl_projekt_bestellung USING (projekt_kurzbz)
|
||||
where bestellung_id= ".$this->db_add_param($bestellung_id);
|
||||
where bestellung_id= " . $this->db_add_param($bestellung_id);
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
if ($row = $this->db_fetch_object())
|
||||
{
|
||||
if ($this->db_query($qry)) {
|
||||
if ($row = $this->db_fetch_object()) {
|
||||
$this->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$this->nummer = $row->nummer;
|
||||
$this->titel = $row->titel;
|
||||
@@ -463,5 +514,69 @@ class projekt extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert True zurück wenn die angegebenen Start und Endzeitpunkt der Arbeitsdauer in die Projektdauer fallen
|
||||
* @param string $mitarbeiter_uid MitarbeiterUID.
|
||||
* @param bool $projektphasen Default false. Wenn true, werden auch Zuteilungen zu Projektphasen geliefert.
|
||||
* @return array wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function checkProjectInCorrectTime($projekt_kurzbz, $give_project_start, $give_projekt_ende)
|
||||
{
|
||||
if(empty($projekt_kurzbz))
|
||||
return true;
|
||||
try
|
||||
{
|
||||
$projekt = $this->getProjectByKurzbz($projekt_kurzbz);
|
||||
if(strtotime($projekt->beginn))
|
||||
$projekt_start = date('Y-m-d', strtotime($projekt->beginn));
|
||||
else
|
||||
$projekt_start = NULL;
|
||||
if(strtotime($projekt->ende))
|
||||
$projekt_ende = date('Y-m-d', strtotime($projekt->ende));
|
||||
else
|
||||
$projekt_ende = NULL;
|
||||
|
||||
$given_start = date('Y-m-d', strtotime($give_project_start));
|
||||
$given_ende = date('Y-m-d', strtotime($give_projekt_ende));
|
||||
|
||||
if ((empty($projekt_start) || $given_start >= $projekt_start) && (empty($projekt_ende) || $given_ende <= $projekt_ende))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
error_log('Exception abgefangen: ', $e->getMessage(), "\n");
|
||||
}
|
||||
}
|
||||
|
||||
public function getProjectByKurzbz($projekt_kurzbz)
|
||||
{
|
||||
$qry = "SELECT * FROM fue.tbl_projekt
|
||||
WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz);
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
$row = $this->db_fetch_object($result);
|
||||
$obj = new projekt();
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$obj->nummer = $row->nummer;
|
||||
$obj->titel = $row->titel;
|
||||
$obj->beschreibung = $row->beschreibung;
|
||||
$obj->beginn = $row->beginn;
|
||||
$obj->ende = $row->ende;
|
||||
$obj->oe_kurzbz = $row->oe_kurzbz;
|
||||
|
||||
return $obj;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -335,7 +335,7 @@ class projektbetreuer extends basis_db
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves all projektarbeiten by person (only with stundensatz > 0)
|
||||
* Retrieves all projektarbeiten by person
|
||||
* @param $person_id
|
||||
* @return boolean If succeeded true and result-array with objects of each projektarbeit of the person.
|
||||
*/
|
||||
@@ -349,8 +349,6 @@ class projektbetreuer extends basis_db
|
||||
FROM
|
||||
lehre.tbl_projektbetreuer
|
||||
WHERE
|
||||
(stundensatz IS NOT NULL) AND (stundensatz > 0)
|
||||
AND
|
||||
person_id =' . $this->db_add_param($person_id, FHC_INTEGER);
|
||||
|
||||
if ($this->db_query($qry))
|
||||
@@ -391,5 +389,130 @@ class projektbetreuer extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt Zweitbegutachter einer Projektarbeit mit Mail.
|
||||
* @param $erstbegutachter_person_id int person_id des Erstbegutachters
|
||||
* @param $projektarbeit_id int
|
||||
* @param $student_uid string uid des Studenten der Arbeit abgibt
|
||||
* @return object | bool
|
||||
*/
|
||||
public function getZweitbegutachterWithToken($erstbegutachter_person_id, $projektarbeit_id, $student_uid)
|
||||
{
|
||||
$qry_betr="SELECT betr.person_id, betr.projektarbeit_id, pers.anrede, betr.zugangstoken, betr.zugangstoken_gueltigbis, tbl_benutzer.uid, kontakt,
|
||||
trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as voller_name,
|
||||
CASE WHEN tbl_benutzer.uid IS NULL THEN kontakt ELSE tbl_benutzer.uid || '@".DOMAIN."' END AS email, abg.abgabedatum
|
||||
FROM lehre.tbl_projektbetreuer betr
|
||||
JOIN lehre.tbl_projektarbeit parb ON betr.projektarbeit_id = parb.projektarbeit_id
|
||||
JOIN public.tbl_person pers ON betr.person_id = pers.person_id
|
||||
LEFT JOIN public.tbl_kontakt ON pers.person_id = tbl_kontakt.person_id AND kontakttyp = 'email' AND zustellung = true
|
||||
LEFT JOIN public.tbl_benutzer ON pers.person_id = tbl_benutzer.person_id
|
||||
LEFT JOIN campus.tbl_paabgabe abg ON betr.projektarbeit_id = abg.projektarbeit_id AND abg.paabgabetyp_kurzbz = 'end'
|
||||
WHERE betr.betreuerart_kurzbz = 'Zweitbegutachter'
|
||||
AND betr.projektarbeit_id = ".$this->db_add_param($projektarbeit_id, FHC_INTEGER)."
|
||||
AND parb.student_uid = ".$this->db_add_param($student_uid)."
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM lehre.tbl_projektbetreuer
|
||||
WHERE person_id = ".$this->db_add_param($erstbegutachter_person_id, FHC_INTEGER)."
|
||||
AND betreuerart_kurzbz = 'Erstbegutachter'
|
||||
AND projektarbeit_id = betr.projektarbeit_id
|
||||
)
|
||||
AND (tbl_benutzer.aktiv OR tbl_benutzer.aktiv IS NULL)
|
||||
ORDER BY betr.insertamum DESC
|
||||
LIMIT 1";
|
||||
|
||||
if ($betr=$this->db_query($qry_betr))
|
||||
{
|
||||
$row_betr = $this->db_fetch_object($betr);
|
||||
|
||||
if ($row_betr)
|
||||
return $row_betr;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generiert Token für externen Zweitbetreuer wenn noch kein Token vorhanden ist.
|
||||
* @param int $zweitbegutachter_person_id
|
||||
* @param int $projektarbeit_id
|
||||
* @return bool true wenn erfolgreich (generiert oder bereits vorhanden), false wenn fehlgeschlagen
|
||||
*/
|
||||
public function generateZweitbegutachterToken($zweitbegutachter_person_id, $projektarbeit_id)
|
||||
{
|
||||
// if externer Betreuer and no valid token, generate
|
||||
$betreuerUidQry = "SELECT uid, zugangstoken, zugangstoken_gueltigbis, tbl_projektbetreuer.person_id
|
||||
FROM lehre.tbl_projektbetreuer
|
||||
JOIN public.tbl_person USING(person_id)
|
||||
LEFT JOIN public.tbl_benutzer USING(person_id)
|
||||
WHERE projektarbeit_id = ".$this->db_add_param($projektarbeit_id, FHC_INTEGER)."
|
||||
AND tbl_projektbetreuer.person_id = ".$this->db_add_param($zweitbegutachter_person_id, FHC_INTEGER)."
|
||||
AND betreuerart_kurzbz = 'Zweitbegutachter'
|
||||
LIMIT 1";
|
||||
|
||||
if ($betreueruidres = $this->db_query($betreuerUidQry))
|
||||
{
|
||||
$row_betr = $this->db_fetch_object($betreueruidres);
|
||||
|
||||
if ($row_betr)
|
||||
{
|
||||
if (!isset($row_betr->uid)
|
||||
&& (!isset($row_betr->zugangstoken) || $row_betr->zugangstoken_gueltigbis < date('Y-m-d')))
|
||||
{
|
||||
$tokenanzahl = 1;
|
||||
|
||||
while ($tokenanzahl > 0)
|
||||
{
|
||||
//generate random string
|
||||
$token = generateUniqueToken(16);
|
||||
|
||||
if (!$token)
|
||||
return false;
|
||||
|
||||
$qry_tokencheck = "SELECT count(*) AS anzahl
|
||||
FROM lehre.tbl_projektbetreuer
|
||||
WHERE zugangstoken = " . $this->db_add_param($token);
|
||||
|
||||
if ($tokencount = $this->db_query($qry_tokencheck))
|
||||
{
|
||||
$row_tokencount = $this->db_fetch_object($tokencount);
|
||||
|
||||
$tokenanzahl = (int)$row_tokencount->anzahl;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$qry_upd = "UPDATE lehre.tbl_projektbetreuer SET
|
||||
zugangstoken = " . $this->db_add_param($token) . ",
|
||||
zugangstoken_gueltigbis = CURRENT_DATE + interval '1 year'
|
||||
WHERE projektarbeit_id = " . $this->db_add_param($projektarbeit_id, FHC_INTEGER) . "
|
||||
AND person_id = " . $this->db_add_param($row_betr->person_id, FHC_INTEGER) . "
|
||||
AND betreuerart_kurzbz = 'Zweitbegutachter'";
|
||||
|
||||
if ($this->db_query($qry_upd))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
return true; // not generated because intern or already exists
|
||||
}
|
||||
else
|
||||
return false;// not found
|
||||
}
|
||||
else
|
||||
return false; // query error
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
+334
-101
@@ -37,10 +37,10 @@ class projektphase extends basis_db
|
||||
public $bezeichnung; //string
|
||||
public $typ='Projektphase'; //string
|
||||
public $beschreibung; //string
|
||||
public $start; //date
|
||||
public $ende; //date
|
||||
public $start; //date
|
||||
public $ende; //date
|
||||
public $personentage; //integer
|
||||
public $farbe;
|
||||
public $farbe;
|
||||
public $budget; // numeric
|
||||
public $ressource_id; // bigint
|
||||
public $ressource_bezeichnung; // string
|
||||
@@ -58,7 +58,7 @@ class projektphase extends basis_db
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
if($projektphase_id != null)
|
||||
if($projektphase_id != null)
|
||||
$this->load($projektphase_id);
|
||||
}
|
||||
|
||||
@@ -74,11 +74,11 @@ class projektphase extends basis_db
|
||||
$this->errormsg = 'Projektarbeit_id muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "SELECT tbl_projektphase.*, tbl_ressource.bezeichnung AS ressource_bezeichnung
|
||||
|
||||
$qry = "SELECT tbl_projektphase.*, tbl_ressource.bezeichnung AS ressource_bezeichnung
|
||||
FROM fue.tbl_projektphase LEFT OUTER JOIN fue.tbl_ressource USING (ressource_id)
|
||||
WHERE projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER);
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
@@ -102,20 +102,20 @@ class projektphase extends basis_db
|
||||
$this->updatevon = $row->updatevon;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Datensatz wurde nicht gefunden';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Laedt die Projektphasen mit zu einem Projekt
|
||||
* @param $projekt_kurzbz Projekt der zu ladenden Projektphasen
|
||||
@@ -125,23 +125,23 @@ class projektphase extends basis_db
|
||||
{
|
||||
$this->result=array();
|
||||
$qry = "Select * from fue.tbl_projektphase where projekt_kurzbz = ".$this->db_add_param($projekt_kurzbz)." and projektphase_id not in (
|
||||
WITH RECURSIVE tasks(projektphase_fk) as
|
||||
WITH RECURSIVE tasks(projektphase_fk) as
|
||||
(
|
||||
SELECT projektphase_id FROM fue.tbl_projektphase
|
||||
WHERE projektphase_fk=".$this->db_add_param($projektphase_id, FHC_INTEGER)."
|
||||
UNION ALL
|
||||
SELECT p.projektphase_id FROM fue.tbl_projektphase p, tasks
|
||||
SELECT p.projektphase_id FROM fue.tbl_projektphase p, tasks
|
||||
WHERE p.projektphase_fk=tasks.projektphase_fk
|
||||
) SELECT *
|
||||
FROM tasks) and projektphase_id not in (".$this->db_add_param($projektphase_id, FHC_INTEGER).")";
|
||||
//echo "\n".$qry."\n";
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new projektphase();
|
||||
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$obj->projektphase_id = $row->projektphase_id;
|
||||
$obj->projektphase_fk = $row->projektphase_fk;
|
||||
@@ -158,25 +158,25 @@ class projektphase extends basis_db
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
//var_dump($this->result);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Laedt die Projektphasen zu einem Projekt
|
||||
* @param $projekt_kurzbz Projekt der zu ladenden Projektphasen
|
||||
* @param $foreignkey wenn ! gib nur die Erste Ebene der Projektphasen zurück
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
*/
|
||||
public function getProjektphasen($projekt_kurzbz, $foreignkey = null)
|
||||
{
|
||||
$this->result=array();
|
||||
@@ -184,18 +184,18 @@ class projektphase extends basis_db
|
||||
FROM fue.tbl_projektphase LEFT OUTER JOIN fue.tbl_ressource USING (ressource_id)
|
||||
WHERE projekt_kurzbz=".$this->db_add_param($projekt_kurzbz);
|
||||
//echo "\n".$qry."\n";
|
||||
|
||||
|
||||
if(!is_null($foreignkey))
|
||||
$qry .= " and projektphase_fk is NULL";
|
||||
|
||||
$qry .= " ORDER BY start, projektphase_fk DESC;";
|
||||
|
||||
|
||||
$qry .= " ORDER BY start, projektphase_fk DESC;";
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new projektphase();
|
||||
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$obj->projektphase_id = $row->projektphase_id;
|
||||
$obj->projektphase_fk = $row->projektphase_fk;
|
||||
@@ -213,36 +213,36 @@ class projektphase extends basis_db
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
//var_dump($this->result);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Lädt alle Unterphasen zu einem Projekt
|
||||
* @param type $phase_id
|
||||
* @return boolean
|
||||
* @return boolean
|
||||
*/
|
||||
public function getAllUnterphasen($phase_id)
|
||||
{
|
||||
$qry = "SELECT tbl_projektphase.*, tbl_ressource.bezeichnung AS ressource_bezeichung
|
||||
FROM fue.tbl_projektphase LEFT OUTER JOIN fue.tbl_ressource USING (ressource_id)
|
||||
WHERE projektphase_fk =".$this->db_add_param($phase_id, FHC_INTEGER);
|
||||
|
||||
WHERE projektphase_fk =".$this->db_add_param($phase_id, FHC_INTEGER);
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new projektphase();
|
||||
|
||||
$obj = new projektphase();
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$obj->projektphase_id = $row->projektphase_id;
|
||||
$obj->projektphase_fk = $row->projektphase_fk;
|
||||
@@ -260,15 +260,15 @@ class projektphase extends basis_db
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler beim laden der Daten";
|
||||
return false;
|
||||
$this->errormsg = "Fehler beim laden der Daten";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -296,11 +296,11 @@ class projektphase extends basis_db
|
||||
$this->errormsg.='Projekt Kurzbz darf nicht länger als 16 Zeichen sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$this->errormsg = '';
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Speichert den aktuellen Datensatz in die Datenbank
|
||||
* Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt
|
||||
@@ -315,12 +315,12 @@ class projektphase extends basis_db
|
||||
|
||||
if($new==null)
|
||||
$new = $this->new;
|
||||
|
||||
|
||||
if($new)
|
||||
{
|
||||
//Neuen Datensatz einfuegen
|
||||
|
||||
$qry='BEGIN; INSERT INTO fue.tbl_projektphase (projekt_kurzbz, projektphase_fk, bezeichnung, typ,
|
||||
$qry='BEGIN; INSERT INTO fue.tbl_projektphase (projekt_kurzbz, projektphase_fk, bezeichnung, typ,
|
||||
beschreibung, start, ende, budget, ressource_id, insertvon, insertamum, updatevon, updateamum, farbe, personentage) VALUES ('.
|
||||
$this->db_add_param($this->projekt_kurzbz).', '.
|
||||
$this->db_add_param($this->projektphase_fk).', '.
|
||||
@@ -356,7 +356,7 @@ class projektphase extends basis_db
|
||||
'updatevon='.$this->db_add_param($this->updatevon).' '.
|
||||
'WHERE projektphase_id='.$this->db_add_param($this->projektphase_id, FHC_INTEGER).';';
|
||||
}
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($new)
|
||||
@@ -371,21 +371,21 @@ class projektphase extends basis_db
|
||||
$this->db_query('COMMIT');
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Auslesen der Sequence';
|
||||
$this->db_query('ROLLBACK;');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Auslesen der Sequence';
|
||||
$this->db_query('ROLLBACK;');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@@ -394,7 +394,7 @@ class projektphase extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Loescht den Datenensatz mit der ID die uebergeben wird
|
||||
* @param $projekt_kurzbz ID die geloescht werden soll
|
||||
@@ -407,77 +407,81 @@ class projektphase extends basis_db
|
||||
$this->errormsg = 'Projektphase_ID ist ungueltig';
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// an projektphase hängt noch eine phase
|
||||
if($this->existPhaseFk($projektphase_id))
|
||||
{
|
||||
$this->errormsg ="Phase kann nicht gelöscht werden, da noch eine andere Phase daran hängt. Bitte zuerst Phase abhängen. ";
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// Beginne Transaktion und lösche alle Tasks der Phase
|
||||
$qry1 ="Begin; DELETE FROM fue.tbl_projekttask
|
||||
$qry1 ="Begin; DELETE FROM fue.tbl_projekttask
|
||||
WHERE projektphase_id =".$this->db_add_param($projektphase_id, FHC_INTEGER).";";
|
||||
|
||||
|
||||
if($this->db_query($qry1))
|
||||
{
|
||||
// Lösche alle zugewiesenen Ressourcen
|
||||
$qry2 = "DELETE FROM fue.tbl_projekt_ressource
|
||||
$qry2 = "DELETE FROM fue.tbl_projekt_ressource
|
||||
WHERE projektphase_id =".$this->db_add_param($projektphase_id, FHC_INTEGER).";";
|
||||
|
||||
|
||||
if($this->db_query($qry2))
|
||||
{
|
||||
// Lösche den Phaseneintrag
|
||||
$qry3 = "DELETE FROM fue.tbl_projektphase
|
||||
$qry3 = "DELETE FROM fue.tbl_projektphase
|
||||
WHERE projektphase_id = ".$this->db_add_param($projektphase_id, FHC_INTEGER).";";
|
||||
|
||||
|
||||
if($this->db_query($qry3))
|
||||
{
|
||||
$this->db_query('COMMIT');
|
||||
return true;
|
||||
}else
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg ="Fehler beim löschen der Projektphase aufgetreten";
|
||||
$this->db_query('ROLLBACK');
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
}else
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg ="Fehler beim löschen der Ressourcen aufgetreten";
|
||||
$this->db_query('ROLLBACK');
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
}else
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg ="Fehler beim löschen der Tasks aufgetreten";
|
||||
$this->db_query('ROLLBACK');
|
||||
return false;
|
||||
$this->db_query('ROLLBACK');
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* Überprüft ob an übergebenr Phase noch eine andere Phase hängt. true wenn noch eine daran hängt
|
||||
* @param $projektphase_id
|
||||
*/
|
||||
public function existPhaseFk($projektphase_id)
|
||||
{
|
||||
$qry = "SELECT * FROM fue.tbl_projektphase WHERE projektphase_fk =".$this->db_add_param($projektphase_id, FHC_INTEGER).";";
|
||||
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
return true;
|
||||
}else
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg ="Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* Löscht Ressourcen einer Phase
|
||||
* @param $projektphase_id
|
||||
* @param $ressource_id -> wenn != null wird nur die eine ressource gelöscht
|
||||
@@ -492,58 +496,60 @@ class projektphase extends basis_db
|
||||
$this->errormsg = "Keine gültige ID übergeben";
|
||||
return false;
|
||||
}
|
||||
$qry ="DELETE from fue.tbl_projekt_ressource
|
||||
WHERE projektphase_id =".$this->db_add_param($projektphase_id, FHC_INTEGER)." and
|
||||
$qry ="DELETE from fue.tbl_projekt_ressource
|
||||
WHERE projektphase_id =".$this->db_add_param($projektphase_id, FHC_INTEGER)." and
|
||||
ressource_id=".$this->db_add_param($ressource_id, FHC_INTEGER).";";
|
||||
}else
|
||||
}
|
||||
else
|
||||
{
|
||||
// gesamte Ressourcen von Phase werden gelöscht
|
||||
if(!is_numeric($projektphase_id))
|
||||
{
|
||||
$this->errormsg ="Keine gültige ID übergeben";
|
||||
}
|
||||
$qry ="DELETE from fue.tbl_projekt_ressource
|
||||
$qry ="DELETE from fue.tbl_projekt_ressource
|
||||
WHERE projektphase_id =".$this->db_add_param($projektphase_id, FHC_INTEGER).";";
|
||||
}
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}else
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* gibt den Fortschritt der Phase in Prozent zurück --> Phasen die auf die übergebene Phase zeigen werden berücksichtigt
|
||||
* @param $projektphase_id
|
||||
*/
|
||||
public function getFortschritt($projektphase_id)
|
||||
public function getFortschritt($projektphase_id)
|
||||
{
|
||||
$qry = "Select * from fue.tbl_projektphase phase
|
||||
join fue.tbl_projekttask task using(projektphase_id)
|
||||
$qry = "Select * from fue.tbl_projektphase phase
|
||||
join fue.tbl_projekttask task using(projektphase_id)
|
||||
where task.projektphase_id = ".$this->db_add_param($projektphase_id, FHC_INTEGER)."
|
||||
OR task.projektphase_id IN (
|
||||
|
||||
WITH RECURSIVE tasks(projektphase_fk) as
|
||||
|
||||
WITH RECURSIVE tasks(projektphase_fk) as
|
||||
(
|
||||
SELECT projektphase_id FROM fue.tbl_projektphase
|
||||
WHERE projektphase_fk=".$this->db_add_param($projektphase_id, FHC_INTEGER)."
|
||||
UNION ALL
|
||||
SELECT p.projektphase_id FROM fue.tbl_projektphase p, tasks
|
||||
SELECT p.projektphase_id FROM fue.tbl_projektphase p, tasks
|
||||
WHERE p.projektphase_fk=tasks.projektphase_fk
|
||||
)SELECT *
|
||||
FROM tasks)";
|
||||
|
||||
$taskAnzahl = 0;
|
||||
|
||||
$taskAnzahl = 0;
|
||||
// erledige tasks
|
||||
$i = 0;
|
||||
$ergebnis = 0;
|
||||
|
||||
$i = 0;
|
||||
$ergebnis = 0;
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
@@ -553,25 +559,252 @@ class projektphase extends basis_db
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
$taskAnzahl = ($taskAnzahl == 0)? 1 : $taskAnzahl;
|
||||
$ergebnis = ($i*100)/$taskAnzahl;
|
||||
|
||||
return sprintf("%01.2f", $ergebnis);
|
||||
$taskAnzahl = ($taskAnzahl == 0)? 1 : $taskAnzahl;
|
||||
$ergebnis = ($i*100)/$taskAnzahl;
|
||||
|
||||
return sprintf("%01.2f", $ergebnis);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Überprüft ob alle Tasks einer Phase erledigt sind
|
||||
*/
|
||||
public function isPhaseErledigt($phase_id)
|
||||
{
|
||||
$task = new projekttask();
|
||||
|
||||
$task->getProjekttasks($phase_id,null,'offen');
|
||||
$task = new projekttask();
|
||||
|
||||
$task->getProjekttasks($phase_id,null,'offen');
|
||||
if(count($task->result)==0)
|
||||
return true;
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
public function checkProjectphaseInCorrectTime($projektphase_id, $given_projectphase_start, $given_projektphase_ende)
|
||||
{
|
||||
if(empty($projektphase_id))
|
||||
return true;
|
||||
try
|
||||
{
|
||||
$projektphase = $this->getProjectphaseById($projektphase_id);
|
||||
if(strtotime($projektphase->start))
|
||||
{
|
||||
$projektphase_start = date('Y-m-d', strtotime($projektphase->start));
|
||||
}
|
||||
else
|
||||
{
|
||||
$projektphase_start = NULL;
|
||||
}
|
||||
if(strtotime($projektphase->ende))
|
||||
{
|
||||
$projektphase_ende = date('Y-m-d', strtotime($projektphase->ende));
|
||||
}
|
||||
else
|
||||
{
|
||||
$projektphase_ende = NULL;
|
||||
}
|
||||
|
||||
$given_start = date('Y-m-d', strtotime($given_projectphase_start));
|
||||
$given_ende = date('Y-m-d', strtotime($given_projektphase_ende));
|
||||
|
||||
if ((empty($projektphase_start) || $given_start >= $projektphase_start)
|
||||
&& (empty($projektphase_ende) || $given_ende <= $projektphase_ende))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
error_log('Exception abgefangen: ', $e->getMessage(), "\n");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt die Projektphase mit der ID $projektphase_id
|
||||
* @param $projektphase_id ID der zu ladenden Projektphase
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function getProjectphaseById($projektphase_id)
|
||||
{
|
||||
if(!is_numeric($projektphase_id))
|
||||
{
|
||||
$this->errormsg = 'Projektarbeit_id muss eine gueltige Zahl sein';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "SELECT tbl_projektphase.*, tbl_ressource.bezeichnung AS ressource_bezeichnung
|
||||
FROM fue.tbl_projektphase LEFT OUTER JOIN fue.tbl_ressource USING (ressource_id)
|
||||
WHERE projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER);
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new projektphase();
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$obj->projektphase_id = $row->projektphase_id;
|
||||
$obj->projektphase_fk = $row->projektphase_fk;
|
||||
$obj->bezeichnung = $row->bezeichnung;
|
||||
$obj->typ = $row->typ;
|
||||
$obj->beschreibung = $row->beschreibung;
|
||||
$obj->start = $row->start;
|
||||
$obj->ende = $row->ende;
|
||||
$obj->personentage = $row->personentage;
|
||||
$obj->farbe = $row->farbe;
|
||||
$obj->budget = $row->budget;
|
||||
$obj->ressource_id = $row->ressource_id;
|
||||
$obj->ressource_bezeichnung = $row->ressource_bezeichnung;
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
|
||||
return $obj;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Datensatz wurde nicht gefunden';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt die Projektphase mit der ID des mitarbeiters
|
||||
* @param $mitarbeiter_uid der zu ladenden Projektphase des users
|
||||
* @return array wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function getProjectphaseForMitarbeiter($mitarbeiter_uid)
|
||||
{
|
||||
$projecphasetList = array();
|
||||
|
||||
$qry = "
|
||||
SELECT
|
||||
DISTINCT tbl_projektphase.*
|
||||
FROM
|
||||
fue.tbl_projektphase
|
||||
JOIN fue.tbl_projekt USING (projekt_kurzbz)
|
||||
JOIN fue.tbl_projekt_ressource USING (projektphase_id)
|
||||
JOIN fue.tbl_ressource ON (tbl_ressource.ressource_id=tbl_projekt_ressource.ressource_id)
|
||||
WHERE
|
||||
(
|
||||
(
|
||||
(tbl_projekt.beginn<=now() or tbl_projekt.beginn is null)
|
||||
AND (tbl_projekt.ende + interval '1 month 1 day' >=now() OR tbl_projekt.ende is null)
|
||||
) AND (
|
||||
(tbl_projektphase.start<=now() or tbl_projektphase.start is null)
|
||||
AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null)
|
||||
)
|
||||
)
|
||||
AND mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid);
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$obj = new projektphase();
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$obj->projektphase_id = $row->projektphase_id;
|
||||
$obj->projektphase_fk = $row->projektphase_fk;
|
||||
$obj->bezeichnung = $row->bezeichnung;
|
||||
$obj->typ = $row->typ;
|
||||
$obj->beschreibung = $row->beschreibung;
|
||||
$obj->start = $row->start;
|
||||
$obj->ende = $row->ende;
|
||||
$obj->personentage = $row->personentage;
|
||||
$obj->farbe = $row->farbe;
|
||||
$obj->budget = $row->budget;
|
||||
$obj->ressource_id = $row->ressource_id;
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
|
||||
$this->result[] = $obj;
|
||||
|
||||
array_push($projecphasetList, $obj);
|
||||
}
|
||||
return $projecphasetList;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt die Projektphase mit der ID des mitarbeiters für das jeweilige Projekt
|
||||
* @param $mitarbeiter_uid der zu ladenden Projektphase des users
|
||||
* @param $projekt_kurzbz des zu landenen Projekts
|
||||
* @return array wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function getProjectphaseForMitarbeiterByKurzBz($mitarbeiter_uid, $projekt_kurzbz)
|
||||
{
|
||||
$projecphasetList = array();
|
||||
|
||||
$qry = "
|
||||
SELECT
|
||||
DISTINCT tbl_projektphase.*
|
||||
FROM
|
||||
fue.tbl_projektphase
|
||||
JOIN fue.tbl_projekt USING (projekt_kurzbz)
|
||||
JOIN fue.tbl_projekt_ressource USING (projektphase_id)
|
||||
JOIN fue.tbl_ressource ON (tbl_ressource.ressource_id=tbl_projekt_ressource.ressource_id)
|
||||
WHERE
|
||||
(
|
||||
(
|
||||
(tbl_projekt.beginn<=now() or tbl_projekt.beginn is null)
|
||||
AND (tbl_projekt.ende + interval '1 month 1 day' >=now() OR tbl_projekt.ende is null)
|
||||
) AND (
|
||||
(tbl_projektphase.start<=now() or tbl_projektphase.start is null)
|
||||
AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null)
|
||||
)
|
||||
)
|
||||
AND mitarbeiter_uid = ".$this->db_add_param($mitarbeiter_uid)."
|
||||
AND tbl_projekt.projekt_kurzbz = ".$this->db_add_param($projekt_kurzbz);
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$obj = new projektphase();
|
||||
|
||||
$obj->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$obj->projektphase_id = $row->projektphase_id;
|
||||
$obj->projektphase_fk = $row->projektphase_fk;
|
||||
$obj->bezeichnung = $row->bezeichnung;
|
||||
$obj->typ = $row->typ;
|
||||
$obj->beschreibung = $row->beschreibung;
|
||||
$obj->start = $row->start;
|
||||
$obj->ende = $row->ende;
|
||||
$obj->personentage = $row->personentage;
|
||||
$obj->farbe = $row->farbe;
|
||||
$obj->budget = $row->budget;
|
||||
$obj->ressource_id = $row->ressource_id;
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
+83
-11
@@ -86,7 +86,7 @@ class ressource extends basis_db
|
||||
$this->insertamum = $row->insertamum;
|
||||
$this->insertvon = $row->insertvon;
|
||||
$this->updateamum = $row->updateamum;
|
||||
$this->updatevon = $row->updatevon;
|
||||
$this->updatevon = $row->updatevon;
|
||||
$this->funktion_kurzbz = $row->funktion_kurzbz;
|
||||
return true;
|
||||
}
|
||||
@@ -130,7 +130,7 @@ class ressource extends basis_db
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
//var_dump($this->result);
|
||||
@@ -174,7 +174,7 @@ class ressource extends basis_db
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
$obj->aufwand = $row->aufwand;
|
||||
$obj->aufwand = $row->aufwand;
|
||||
$obj->funktion_kurzbz = $row->funktion_kurzbz;
|
||||
$obj->projekt_ressource_id= $row->projekt_ressource_id;
|
||||
|
||||
@@ -189,8 +189,8 @@ class ressource extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Lädt die Projektressource
|
||||
@@ -203,15 +203,15 @@ class ressource extends basis_db
|
||||
$this->result=array();
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->ressource_id = $row->ressource_id;
|
||||
$this->beschreibung = $row->beschreibung;
|
||||
$this->aufwand = $row->aufwand;
|
||||
$this->aufwand = $row->aufwand;
|
||||
$this->funktion_kurzbz = $row->funktion_kurzbz;
|
||||
$this->projekt_ressource_id= $row->projekt_ressource_id;
|
||||
$this->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$this->projekt_ressource_id= $row->projekt_ressource_id;
|
||||
$this->projekt_kurzbz = $row->projekt_kurzbz;
|
||||
$this->projektphase_id = $row->projektphase_id;
|
||||
return true;
|
||||
}
|
||||
@@ -223,7 +223,7 @@ class ressource extends basis_db
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -256,7 +256,7 @@ class ressource extends basis_db
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
$obj->aufwand = $row->aufwand;
|
||||
$obj->aufwand = $row->aufwand;
|
||||
$obj->funktion_kurzbz = $row->funktion_kurzbz;
|
||||
$obj->projekt_ressource_id = $row->projekt_ressource_id;
|
||||
$this->result[] = $obj;
|
||||
@@ -688,5 +688,77 @@ class ressource extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Löscht eine Ressource zu Projekt Zuordnung
|
||||
* @param type $ressource_id
|
||||
* @param type $projekt_kurzbz
|
||||
* @return boolean
|
||||
*/
|
||||
public function deleteFromProjektWithProjektRessourceId($ressource_id, $projekt_kurzbz, $project_ressource_id)
|
||||
{
|
||||
if($ressource_id == '' || !is_numeric($ressource_id))
|
||||
{
|
||||
$this->errormsg = 'Ressource Id ist keine gültige Zahl';
|
||||
return false;
|
||||
}
|
||||
/*$qry="DELETE FROM fue.tbl_projekt_ressource WHERE ressource_id =".$this->db_add_param($ressource_id, FHC_INTEGER, false)."
|
||||
AND projekt_kurzbz=".$this->db_add_param($projekt_kurzbz, FHC_STRING, false).';';
|
||||
*/
|
||||
$qry="
|
||||
DELETE FROM fue.tbl_projekt_ressource pr
|
||||
USING fue.tbl_ressource r
|
||||
WHERE r.ressource_id =".$this->db_add_param($ressource_id, FHC_INTEGER, false). "
|
||||
AND pr.projekt_ressource_id=".$this->db_add_param($project_ressource_id, FHC_INTEGER, false). "
|
||||
AND pr.projekt_kurzbz=".$this->db_add_param($projekt_kurzbz, FHC_STRING, false).';';
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Löschen der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Löscht eine Ressource zu Phase Zuordnung
|
||||
* @param type $ressource_id
|
||||
* @param type $projekt_kurzbz
|
||||
* @return boolean
|
||||
*/
|
||||
public function deleteFromPhaseWithProjektRessourceId($ressource_id, $projektphase_id, $project_ressource_id)
|
||||
{
|
||||
if($ressource_id == '' || !is_numeric($ressource_id))
|
||||
{
|
||||
$this->errormsg = 'Ressource Id ist keine gültige Zahl';
|
||||
return false;
|
||||
}
|
||||
|
||||
if($projektphase_id == '' || !is_numeric($projektphase_id))
|
||||
{
|
||||
$this->errormsg = 'Ressource Id ist keine gültige Zahl';
|
||||
return false;
|
||||
}
|
||||
|
||||
/*$qry="DELETE FROM fue.tbl_projekt_ressource WHERE ressource_id =".$this->db_add_param($ressource_id, FHC_INTEGER, false)."
|
||||
AND projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER, false).';';
|
||||
*/
|
||||
$qry="
|
||||
DELETE FROM fue.tbl_projekt_ressource pr
|
||||
USING fue.tbl_ressource r
|
||||
WHERE r.ressource_id =".$this->db_add_param($ressource_id, FHC_INTEGER, false). "
|
||||
AND pr.projekt_ressource_id=".$this->db_add_param($project_ressource_id, FHC_INTEGER, false). "
|
||||
AND pr.projektphase_id=".$this->db_add_param($projektphase_id, FHC_INTEGER, false).';';
|
||||
if($this->db_query($qry))
|
||||
return true;
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Löschen der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
+16
-4
@@ -23,6 +23,7 @@ require_once(dirname(__FILE__).'/mail.class.php');
|
||||
require_once(dirname(__FILE__).'/vorlage.class.php');
|
||||
|
||||
const DEFAULT_SANCHO_HEADER_IMG = 'sancho_header_DEFAULT.jpg';
|
||||
const DEFAULT_SANCHO_FOOTER_IMG = 'sancho_footer_DEFAULT.jpg';
|
||||
|
||||
/**
|
||||
* Send single Mail with Sancho Design and Layout.
|
||||
@@ -31,14 +32,17 @@ const DEFAULT_SANCHO_HEADER_IMG = 'sancho_header_DEFAULT.jpg';
|
||||
* to be replaced in the content template.
|
||||
* @param string $to Email-adress.
|
||||
* @param string $subject Subject of mail.
|
||||
* @param string $headerImg Filename of the specific Sancho header image.
|
||||
* @return boolean True, if succeeded.
|
||||
* @param string $headerImg Filename of the specific Sancho header image.
|
||||
* @param string $footerImg
|
||||
* @param string $replyTo default Email-adress for reply.
|
||||
* @param string | array $cc
|
||||
* @return boolean True, if succeeded.
|
||||
*/
|
||||
function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerImg = DEFAULT_SANCHO_HEADER_IMG)
|
||||
function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerImg = DEFAULT_SANCHO_HEADER_IMG, $footerImg = DEFAULT_SANCHO_FOOTER_IMG, $replyTo = '', $cc = '')
|
||||
{
|
||||
$from = 'sancho@'. DOMAIN;
|
||||
$sanchoHeader_img = dirname(__FILE__). '/../skin/images/sancho/'. $headerImg;
|
||||
$sanchoFooter_img = dirname(__FILE__). '/../skin/images/sancho/sancho_footer.jpg';
|
||||
$sanchoFooter_img = dirname(__FILE__). '/../skin/images/sancho/'. $footerImg;
|
||||
|
||||
// Set unique content id for embedding header and footer image
|
||||
$cid_header = uniqid();
|
||||
@@ -63,7 +67,15 @@ function sendSanchoMail($vorlage_kurzbz, $vorlage_data, $to, $subject, $headerIm
|
||||
// * embed the images
|
||||
$mail->addEmbeddedImage($sanchoHeader_img, 'image/jpg', '', $cid_header);
|
||||
$mail->addEmbeddedImage($sanchoFooter_img, 'image/jpg', '', $cid_footer);
|
||||
|
||||
// * Set reply-to
|
||||
if (isset($replyTo) && $replyTo != '')
|
||||
$mail->setReplyTo($replyTo);
|
||||
|
||||
// * Set cc
|
||||
if (isset($cc) && $cc != '')
|
||||
$mail->setCCRecievers($cc);
|
||||
|
||||
// * embed the html content
|
||||
$mail->setHTMLContent($body);
|
||||
|
||||
|
||||
@@ -1245,5 +1245,82 @@ class vertrag extends basis_db
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob ein Mitarbeiter einen erteilten Vertrag zu einer Lehreinheit besitzt.
|
||||
* @param $lehreinheit ID der Lehreinheit
|
||||
* @param $studiensemester_kurzbz Studiensemester das geprueft wird
|
||||
* @param $mitarbeiter_uid UID des Mitarbeiters
|
||||
*/
|
||||
public function isVertragErteiltLE($lehreinheit_id, $studiensemester_kurzbz, $mitarbeiter_uid)
|
||||
{
|
||||
if (defined('CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON')
|
||||
&& CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON != '')
|
||||
{
|
||||
// Liegt das Studiensemester vor dem Pruefdatum, wird die LV immer als Erteilt angezeigt
|
||||
$qry = "
|
||||
SELECT
|
||||
tbl_studiensemester.start
|
||||
FROM
|
||||
public.tbl_studiensemester
|
||||
WHERE
|
||||
studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
|
||||
AND tbl_studiensemester.start < (SELECT start
|
||||
FROM public.tbl_studiensemester stsem WHERE
|
||||
stsem.studiensemester_kurzbz=".$this->db_add_param(CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON)."
|
||||
)";
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
if ($this->db_num_rows($result)>0)
|
||||
{
|
||||
// Wenn das Studiensemester vor dem Pruefdatum liegt, gilt der Vertrag immer als erteilt.
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden des Studiensemesters';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$qry = "
|
||||
SELECT
|
||||
1
|
||||
FROM
|
||||
lehre.tbl_lehreinheitmitarbeiter
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
JOIN lehre.tbl_vertrag USING(vertrag_id)
|
||||
JOIN lehre.tbl_vertrag_vertragsstatus USING(vertrag_id)
|
||||
WHERE
|
||||
tbl_lehreinheitmitarbeiter.mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)."
|
||||
AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
|
||||
AND tbl_lehreinheit.lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
|
||||
AND tbl_vertrag_vertragsstatus.vertragsstatus_kurzbz='erteilt'
|
||||
AND NOT EXISTS(
|
||||
SELECT 1 FROM lehre.tbl_vertrag_vertragsstatus vstatus
|
||||
WHERE vstatus.vertrag_id = tbl_vertrag.vertrag_id
|
||||
AND vstatus.vertragsstatus_kurzbz='storno'
|
||||
)
|
||||
";
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
if ($this->db_num_rows($result) > 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -174,7 +174,7 @@ class zeitaufzeichnung extends basis_db
|
||||
}
|
||||
if ($this->aktivitaet_kurzbz != 'Ersatzruhe' && $this->aktivitaet_kurzbz != 'DienstreiseMT')
|
||||
{
|
||||
$check_qry = "SELECT count(*) from campus.tbl_zeitaufzeichnung where uid=".$this->db_add_param($this->uid)." and aktivitaet_kurzbz != 'DienstreiseMT' and (start < ".$this->db_add_param($this->ende)." and ende > ".$this->db_add_param($this->start).")";
|
||||
$check_qry = "SELECT count(*) from campus.tbl_zeitaufzeichnung where uid=".$this->db_add_param($this->uid)." and (aktivitaet_kurzbz != 'DienstreiseMT' or aktivitaet_kurzbz IS NULL ) and (start < ".$this->db_add_param($this->ende)." and ende > ".$this->db_add_param($this->start).")";
|
||||
if($this->db_query($check_qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
|
||||
Reference in New Issue
Block a user