Merge remote-tracking branch 'origin/master'

This commit is contained in:
Manfred Kindl
2018-09-24 17:13:21 +02:00
26 changed files with 428 additions and 1371 deletions
@@ -22,7 +22,6 @@ class Lehrveranstaltung_model extends DB_Model
*/
public function getLehrveranstaltungGroupNames($studiensemester_kurzbz, $ausbildungssemester = null, $studiengang_kz = null, $lehrveranstaltung_ids = null)
{
$this->load->model('system/studiensemester_model', 'StudiensemesterModel');
$this->load->model('organisation/studiengang_model', 'StudiengangModel');
$studiengang_kz_arr = array();
@@ -60,6 +59,7 @@ class Lehrveranstaltung_model extends DB_Model
}
else
{
$this->load->model('organisation/studiensemester_model', 'StudiensemesterModel');
foreach ($studiengang_kz_arr as $studiengang_kz_item)
{
$result = $this->StudiensemesterModel->getAusbildungssemesterByStudiensemesterAndStudiengang($studiensemester_kurzbz, $studiengang_kz_item);
@@ -88,7 +88,7 @@ class Lehrveranstaltung_model extends DB_Model
$query = "
SELECT lehrveranstaltung_id, ? || '_' || kuerzel || '_' || lvpostfix AS lvgroupname
SELECT lehrveranstaltung_id, ? || '_' || kuerzel || '_' || replace(lvpostfix, ' ', '-') AS lvgroupname
FROM(
SELECT DISTINCT ON (kuerzel, lvpostfix)
lehrveranstaltung_id,
@@ -25,8 +25,10 @@ class Benutzerfunktion_model extends DB_Model
/**
* Gets all Benutzer for a given OE and specified Benutzerfunktionen
* @param $oe_kurzbz
* @param $funktion_kurzbz string with one benutzerfunktionname or array with one or more
* @param $oe_kurzbz
* @param bool $activeoeonly if true, retrieve only active Organisationseinheiten
* @param bool $activebenonly if true, retrieve only active Benutzer
* @return array|null
*/
public function getBenutzerFunktionen($funktion_kurzbz, $oe_kurzbz = null, $activeoeonly = false, $activebenonly = false)
@@ -41,7 +43,7 @@ class Benutzerfunktion_model extends DB_Model
if ($activebenonly === true)
$query .= " JOIN public.tbl_benutzer USING(uid)";
$query .= "WHERE (datum_von <= NOW() OR datum_von IS NULL) AND (datum_bis >= NOW() OR datum_bis IS NULL)";
$query .= " WHERE (datum_von <= NOW() OR datum_von IS NULL) AND (datum_bis >= NOW() OR datum_bis IS NULL)";
if (is_string($funktion_kurzbz))
{
+34 -3
View File
@@ -33,6 +33,7 @@ require_once('../../../include/mitarbeiter.class.php');
require_once('../../../include/mail.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/phrasen.class.php');
require_once('../../../include/zeitaufzeichnung.class.php');
$sprache = getSprache();
$p = new phrasen($sprache);
@@ -44,6 +45,8 @@ $uid = get_uid();
$PHP_SELF = $_SERVER['PHP_SELF'];
$typen_arr = array("Urlaub", "PflegeU", "ZA", "Krank", "DienstF", "DienstV");
if(isset($_GET['type']))
$type=$_GET['type'];
@@ -65,6 +68,17 @@ if(isset($_GET['uid']))
$datum_obj = new datum();
$ma= new mitarbeiter();
// definiert bis zu welchem Datum die Eintragung nicht mehr möglich ist
$zasperre = new zeitaufzeichnung();
if ($sperrdat = $zasperre->getEintragungGesperrtBisForUser($uid))
$gesperrt_bis = $sperrdat;
else if (defined('CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS') && CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS != '')
$gesperrt_bis = CIS_ZEITAUFZEICHNUNG_GESPERRT_BIS;
else
$gesperrt_bis = '2015-08-31';
//echo $gesperrt_bis;
//Stundentabelleholen
if(! $result_stunde=$db->db_query("SELECT * FROM lehre.tbl_stunde ORDER BY stunde"))
die($db->db_last_error());
@@ -268,6 +282,8 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_
{
$error=false;
$error_msg='';
//von-datum pruefen
if(isset($_POST['vondatum']) && !$datum_obj->checkDatum($_POST['vondatum']))
{
@@ -290,6 +306,7 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_
if (@checkdate($date[1], $date[0], $date[2]))
{
$vondatum=$date[2].$date[1].$date[0];
$vondatum_iso = $date[2].'-'.$date[1].'-'.$date[0];
}
else
{
@@ -327,7 +344,12 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_
$error_msg .= $p->t('zeitsperre/vonDatumGroesserAlsBisDatum').'! ';
}
//von-datum pruefen TODO
if($vondatum_iso < $gesperrt_bis && in_array($_POST['zeitsperretyp_kurzbz'],$typen_arr))
{
$error=true;
$error_msg .= $p->t('zeitsperre/vorSperrdatum');
}
$zeitsperre = new zeitsperre();
@@ -448,7 +470,11 @@ if(isset($_GET['type']) && $_GET['type']=='delete_sperre')
//besitzer dieses datensatzes ist
if($zeit->mitarbeiter_uid==$uid)
{
if($zeit->delete($_GET['id']))
if ($zeit->vondatum < $gesperrt_bis && in_array($zeit->zeitsperretyp_kurzbz,$typen_arr))
{
echo "<span class='error'>".$p->t('zeitsperre/vorSperrdatum')."</span>";
}
else if($zeit->delete($_GET['id']))
{
echo $p->t('global/erfolgreichgelöscht');
}
@@ -473,6 +499,7 @@ if($result = $db->db_query($qry))
$erreichbarkeit_arr[$row->erreichbarkeit_kurzbz]=$row->beschreibung;
}
}
//liste aller zeitsperren ausgeben
if(count($zeit->result)>0)
{
@@ -499,9 +526,13 @@ if(count($zeit->result)>0)
<td align='center'>".($row->freigabeamum!=''?'Ja':'')."</td>";
if ($row->zeitsperretyp_kurzbz == 'DienstV')
$content_table .= '<td>&nbsp;</td>';
else if ($row->vondatum < $gesperrt_bis AND in_array($row->zeitsperretyp_kurzbz,$typen_arr))
$content_table .= '<td>&nbsp;</td>';
else
$content_table.="<td><a href='$PHP_SELF?type=edit&id=$row->zeitsperre_id' class='Item'>".$p->t('zeitsperre/edit')."</a></td>";
if($row->freigabeamum=='' || $row->zeitsperretyp_kurzbz!='Urlaub')
if ($row->vondatum < $gesperrt_bis AND in_array($row->zeitsperretyp_kurzbz,$typen_arr))
$content_table .= '<td>&nbsp;</td>';
else if($row->freigabeamum=='' || $row->zeitsperretyp_kurzbz!='Urlaub')
{
$content_table.="\n<td><a href='$PHP_SELF?type=delete_sperre&id=$row->zeitsperre_id' onclick='return conf_del()' class='Item'>".$p->t('zeitsperre/loeschen')."</a></td>";
}
+14 -4
View File
@@ -112,7 +112,10 @@ list(
getUserAmpelData($user);
//sort ampeln
$user_ampel_arr = sortUserAmpelData($user_ampel_arr);
if (!empty($user_ampel_arr))
{
$user_ampel_arr = sortUserAmpelData($user_ampel_arr);
}
//filter ampeln for popup (if at least one mandatory, which is neither expired nor before vorlaufzeit)
if ($is_popup)
@@ -224,20 +227,27 @@ function getUserAmpelData($user)
function sortUserAmpelData($user_ampel_arr)
{
//first: sort deadline
$deadline_arr = array();
foreach ($user_ampel_arr as $key => $val)
$deadline[$key] = $val['deadline'];
{
$deadline_arr[$key] = $val['deadline'];
}
array_multisort($deadline, SORT_DESC, $user_ampel_arr);
array_multisort($deadline_arr, SORT_DESC, $user_ampel_arr);
//second: sort inactive after active
$active_ampel_arr = array();
$inactive_ampel_arr = array();
foreach ($user_ampel_arr as $user_ampel)
{
if ($user_ampel['active'])
{
$active_ampel_arr[] = $user_ampel;
}
else
{
$inactive_ampel_arr[] = $user_ampel;
}
}
return $user_ampel_arr = array_merge($active_ampel_arr, $inactive_ampel_arr);
}
+1 -1
View File
@@ -987,7 +987,7 @@ if($projekt->getProjekteMitarbeiter($user, true))
<input type="text" class="datepicker_datum" id="von_datum" name="von_datum" value="'.$db->convert_html_chars($datum->formatDatum($von, $format='d.m.Y')).'" size="9">
<input onchange="checkZeiten()" type="text" class="timepicker" id="von_uhrzeit" name="von_uhrzeit" value="'.$db->convert_html_chars($datum->formatDatum($von, $format='H:i')).'" size="4">
</td>';
if ($za_simple == 0)
if ($za_simple == 0 || $anzprojekte > 0)
{
echo '
<td align="center">
+2 -2
View File
@@ -330,7 +330,7 @@ if (isset($_POST['fileupload']))
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
{
$dms = new dms();
if(!$dms->setPermission($uploadfile))
echo $dms->errormsg;
@@ -1616,7 +1616,7 @@ function drawChangeKategorie($dms_id, $page = NULL, $dpp = NULL)
if ($kategorienResult->kategorie_kurzbz == $dms->kategorie_kurzbz)
$selected = 'selected';
echo '<option '.$selected.' value="'.$kategorienResult->kategorie_kurzbz.'">'.$x.$kategorienResult->bezeichnung.' ['.$kategorienResult->kategorie_kurzbz.']</option>';
echo '<option '.$selected.' value="'.$kategorienResult->kategorie_kurzbz.'">'.$kategorienResult->bezeichnung.' ['.$kategorienResult->kategorie_kurzbz.']</option>';
}
echo '</select>
+2
View File
@@ -267,6 +267,8 @@
"ml/json-ld": "1.*",
"mottie/tablesorter": "^2.29",
"nategood/httpful": "^0.2.20",
"netcarver/textile": "^3.5",
"nicolaskruchten/pivottable": "^2.15.0",
Generated
+52 -2
View File
@@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "0a7b99cf08f40f15cad6397a2097d834",
"content-hash": "4065f6ebe38d16462908ebbdac8adf7d",
"hash": "e5e3e110545316baa4087a8e1a283a7c",
"content-hash": "e191f9af8e2103de78eaa130122ec72b",
"packages": [
{
"name": "BlackrockDigital/startbootstrap-sb-admin-2",
@@ -1159,6 +1159,56 @@
],
"time": "2018-07-10 13:32:19"
},
{
"name": "nategood/httpful",
"version": "0.2.20",
"source": {
"type": "git",
"url": "https://github.com/nategood/httpful.git",
"reference": "c1cd4d46a4b281229032cf39d4dd852f9887c0f6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nategood/httpful/zipball/c1cd4d46a4b281229032cf39d4dd852f9887c0f6",
"reference": "c1cd4d46a4b281229032cf39d4dd852f9887c0f6",
"shasum": ""
},
"require": {
"ext-curl": "*",
"php": ">=5.3"
},
"require-dev": {
"phpunit/phpunit": "*"
},
"type": "library",
"autoload": {
"psr-0": {
"Httpful": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nate Good",
"email": "me@nategood.com",
"homepage": "http://nategood.com"
}
],
"description": "A Readable, Chainable, REST friendly, PHP HTTP Client",
"homepage": "http://github.com/nategood/httpful",
"keywords": [
"api",
"curl",
"http",
"requests",
"rest",
"restful"
],
"time": "2015-10-26 16:11:30"
},
{
"name": "netcarver/textile",
"version": "v3.6.0",
+5 -1
View File
@@ -4529,9 +4529,13 @@ function StudentAnrechnungNeu()
var col = tree.columns ? tree.columns["student-treecol-studiengang_kz"] : "student-treecol-studiengang_kz";
var stg_kz = tree.view.getCellText(tree.currentIndex,col);
// Prestudent-ID ermitteln
var col = tree.columns ? tree.columns["student-treecol-prestudent_id"] : "student-treecol-prestudent_id";
var prestudentId = tree.view.getCellText(tree.currentIndex,col);
//Lehrveranstaltung Drop Down laden
var LVDropDown = document.getElementById('student-anrechnungen-menulist-lehrveranstaltung');
url="<?php echo APP_ROOT;?>rdf/lehrveranstaltung.rdf.php?stg_kz="+stg_kz+"&"+gettimestamp();
url="<?php echo APP_ROOT;?>rdf/lehrveranstaltung_studienplan.rdf.php?&prestudent="+prestudentId+"&"+gettimestamp();
//Alte DS entfernen
var oldDatasources = LVDropDown.database.GetDataSources();
+16
View File
@@ -421,6 +421,22 @@ class benutzerberechtigung extends basis_db
UNION
SELECT
benutzerberechtigung_id, tbl_benutzerfunktion.uid, tbl_benutzerrolle.funktion_kurzbz,
tbl_benutzerrolle.rolle_kurzbz, tbl_rolleberechtigung.berechtigung_kurzbz, tbl_benutzerrolle.art, tbl_rolleberechtigung.art art1,
tbl_benutzerfunktion.oe_kurzbz, tbl_benutzerrolle.studiensemester_kurzbz, tbl_benutzerrolle.start,
tbl_benutzerrolle.ende, tbl_benutzerrolle.negativ, tbl_benutzerrolle.updateamum, tbl_benutzerrolle.updatevon,
tbl_benutzerrolle.insertamum, tbl_benutzerrolle.insertvon,tbl_benutzerrolle.kostenstelle_id,tbl_benutzerrolle.anmerkung
FROM
system.tbl_benutzerrolle
JOIN public.tbl_benutzerfunktion USING(funktion_kurzbz)
JOIN system.tbl_rolleberechtigung ON(tbl_benutzerrolle.rolle_kurzbz=tbl_rolleberechtigung.rolle_kurzbz)
WHERE tbl_benutzerfunktion.uid=".$this->db_add_param($uid)."
AND (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now())
AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now())
UNION
SELECT
benutzerberechtigung_id, '', tbl_benutzerrolle.funktion_kurzbz,
tbl_benutzerrolle.rolle_kurzbz, tbl_benutzerrolle.berechtigung_kurzbz, tbl_benutzerrolle.art, tbl_benutzerrolle.art art1,
-38
View File
@@ -1097,42 +1097,4 @@ 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;
}
}
?>
+40 -38
View File
@@ -23,8 +23,8 @@
/**
* Klasse Mail
* @create 2008-11-20
*
* Versendet ein Mail als Text, Html, CC und BCC Empfaenger,
*
* Versendet ein Mail als Text, Html, CC und BCC Empfaenger,
* Replyto und Attachments
*/
@@ -40,7 +40,7 @@ class mail
public $htmlContent;
public $attachments;
public $errormsg;
/**
* MAIL - Konstruktor
* $to Empfaenger
@@ -73,18 +73,18 @@ class mail
$this->BCC_recievers = ($this->BCC_recievers!=''?MAIL_DEBUG:'');
$this->replyTo = ($this->replyTo!=''?MAIL_DEBUG:'');
}
$mime_boundary_alternative = 'ALT+'.md5(time());
$mime_boundary_mixed = 'MIXD+'.md5(time());
$eol="\n";
if(defined('MAIL_FROM') && MAIL_FROM!='')
$this->sender = MAIL_FROM;
// Header
$header = '';
$header .= "From: {$this->sender}".$eol;
if (!empty($this->CC_recievers))
$header .= "CC: {$this->CC_recievers}".$eol;
if (!empty($this->BCC_recievers))
@@ -94,11 +94,13 @@ class mail
if (!empty($this->replyTo))
$header .= "Return-Path: {$this->replyTo}".$eol;
$header .= 'X-Mailer: FHComplete V1'.$eol;
$header .= 'X-Mailer: FHComplete V1'.$eol;
$header .= 'Mime-Version: 1.0'.$eol;
$header .= 'Precedence: bulk'.$eol;
$header .= 'Auto-Submitted: auto-generated'.$eol;
$header .= "Content-Type: multipart/related; boundary=\"$mime_boundary_mixed\"".$eol;
$header .= "Content-Transfer-Encoding: 8bit".$eol;
// Body
$mailbody = "";
$mailbody .= $eol;
@@ -112,8 +114,8 @@ class mail
$mailbody .= $this->textContent[0];
$mailbody .= $eol;
$mailbody .= $eol;
if (!empty($this->htmlContent[0]))
if (!empty($this->htmlContent[0]))
{
$mailbody .= "--$mime_boundary_alternative".$eol;
$mailbody .= "Content-Type: text/html; charset={$this->htmlContent[1]}".$eol;
@@ -126,17 +128,17 @@ class mail
$mailbody .= "--{$mime_boundary_alternative}--".$eol;
$mailbody .= $eol;
$mailbody .= "--$mime_boundary_mixed";
// Attachments Plain
if (is_array($this->attachmentsplain) && (count($this->attachmentsplain) > 0))
if (is_array($this->attachmentsplain) && (count($this->attachmentsplain) > 0))
{
foreach ($this->attachmentsplain as $attachment)
foreach ($this->attachmentsplain as $attachment)
{
$dispo = 'attachment';
$mailbody .= $eol;
$mailbody .= "Content-Disposition: $dispo; filename={$attachment[2]}".$eol;
$mailbody .= "Content-Type: {$attachment[1]}; name={$attachment[2]}".$eol;
$mailbody .= 'Content-Transfer-Encoding: '.$attachment[3].$eol;
$mailbody .= $eol;
$mailbody .= $attachment[0];
@@ -144,17 +146,17 @@ class mail
$mailbody .= "--$mime_boundary_mixed";
}
}
// Attachments Binary
if (is_array($this->attachments) && (count($this->attachments) > 0))
if (is_array($this->attachments) && (count($this->attachments) > 0))
{
foreach ($this->attachments as $attachment)
foreach ($this->attachments as $attachment)
{
$dispo = empty($attachment[3]) ? 'attachment' : 'inline';
$mailbody .= $eol;
$mailbody .= "Content-Disposition: $dispo; filename={$attachment[2]}".$eol;
$mailbody .= "Content-Type: {$attachment[1]}; name={$attachment[2]}".$eol;
if (!empty($attachment[3]))
$mailbody .= "Content-Type: {$attachment[1]}; name={$attachment[2]}".$eol;
if (!empty($attachment[3]))
{
$mailbody .= "Content-ID: <{$attachment[3]}>".$eol;
}
@@ -166,15 +168,15 @@ class mail
}
}
$mailbody .= "--".$eol;
// Subject Encoding setzen
$subject = "=?UTF-8?B?".base64_encode($this->subject)."?=";
// Senden
if(mail($this->to, $subject, $mailbody, $header))
return true;
else
return false;
else
return false;
}
/**
@@ -187,7 +189,7 @@ class mail
$this->textContent[2] = $encoding;
return true;
}
/**
* Setzt den HTMLText fuer ein Mail
*/
@@ -198,7 +200,7 @@ class mail
$this->htmlContent[2] = $encoding;
if (empty($this->textContent[0]))
$this->setTextContent(strip_tags($html), $charset, $encoding);
return true;
}
@@ -211,27 +213,27 @@ class mail
*/
public function addAttachmentBinary($file, $type, $name, $ContentID = "")
{
if (!file_exists($file))
if (!file_exists($file))
{
$this->errormsg = 'Attachment wurde nicht gefunden';
return false;
}
$handle = fopen($file,'rb');
if (!$handle)
if (!$handle)
{
$this->errormsg = 'Fehler beim Oeffnen der Datei';
return false;
}
$file_content = fread($handle,filesize($file));
@fclose($handle);
$attachment_string = chunk_split(base64_encode($file_content));
$this->attachments[] = Array($attachment_string, $type, $name, $ContentID);
return true;
}
/**
* Fuegt ein Bild zum Mail hinzu
* $image image-URL
@@ -242,16 +244,16 @@ class mail
public function addEmbeddedImage ($image, $type, $name = '', $ContentID)
{
$image_string = file_get_contents($image);
if (!$image_string)
if (!$image_string)
{
$this->errormsg = 'Fehler beim Einlesen der Datei';
return false;
}
$image_b64 = chunk_split(base64_encode($image_string), 76, "\n");
$this->attachments[] = Array($image_b64, $type, $name, $ContentID);
}
/**
* Fuegt ein Attachment zum Mail hinzu
* $content
@@ -272,14 +274,14 @@ class mail
$this->replyTo = $repl;
return true;
}
/**
* Setzt die CC Empfaenger
*/
public function setCCRecievers($rcvs)
{
$this->CC_recievers = '';
if (is_array($rcvs))
if (is_array($rcvs))
{
foreach ($rcvs as $rcv)
$this->CC_recievers .= ",$rcv";
@@ -291,14 +293,14 @@ class mail
}
return true;
}
/**
* Setzt die BCC Empfaenger
*/
public function setBCCRecievers($rcvs)
{
$this->BCC_recievers = '';
if (is_array($rcvs))
if (is_array($rcvs))
{
foreach ($rcvs as $rcv)
$this->BCC_recievers .= ",$rcv";
+17 -4
View File
@@ -1090,7 +1090,7 @@ class mitarbeiter extends benutzer
}
/**
* Gibt ein Array mit den UIDs der Untergebenen zurueck
* Gibt ein Array mit den UIDs der aktiv beschäftigten Untergebenen zurueck
*/
public function getUntergebene($uid=null)
{
@@ -1115,7 +1115,15 @@ class mitarbeiter extends benutzer
}
//Alle Personen holen die dieser Organisationseinheit untergeordnet sind
$qry = "SELECT distinct uid FROM public.tbl_benutzerfunktion WHERE ((funktion_kurzbz='oezuordnung' AND (false ";
$qry = "
SELECT distinct
uid
FROM
public.tbl_benutzerfunktion
JOIN
public.tbl_benutzer
USING (uid)
WHERE ((funktion_kurzbz='oezuordnung' AND (false ";
if($oe!='')
$qry.=" OR oe_kurzbz in($oe)";
@@ -1125,8 +1133,13 @@ class mitarbeiter extends benutzer
if($oe!='')
$qry.=" OR (funktion_kurzbz='ass' AND oe_kurzbz in($oe))";
$qry.= ") AND (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND
(tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now());";
$qry.= ")
AND
(tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now())
AND
(tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())
AND
tbl_benutzer.aktiv = 'true';";
if($this->db_query($qry))
{
+2 -2
View File
@@ -754,7 +754,7 @@ or not exists
//check if addon casetime is installed
$qrytable = "
SELECT EXISTS(
SELECT *
SELECT 1
FROM information_schema.tables
WHERE
table_schema = 'addon' AND
@@ -763,7 +763,7 @@ or not exists
";
$res = $this->db_query($qrytable);
if ($this->db_fetch_row($res)[0]===true)
if ($this->db_fetch_row($res)[0] == 't')
{
//check if sent timesheets for the UID exist
$where = "uid=".$this->db_add_param($user);
Regular → Executable
+1
View File
@@ -42,4 +42,5 @@ $this->phrasen['zeitsperre/legendeErreichbarkeit']='E...Erreichbarkeit (n=nicht
$this->phrasen['zeitsperre/legendeVertretung']='V...Vertretung';
$this->phrasen['zeitsperre/legendeDurchwahl']='(123)...Durchwahl';
$this->phrasen['zeitsperre/vertretungNichtKorrekt']='Die angegebene Vertretung kann nicht gefunden werden. Bitte prüfen Sie die Vertretung und versuchen Sie es erneut.';
$this->phrasen['zeitsperre/vorSperrdatum']='Datum liegt vor dem Sperrdatum der Zeitliste';
?>
Regular → Executable
+1
View File
@@ -42,4 +42,5 @@ $this->phrasen['zeitsperre/legendeErreichbarkeit']='A...Availability (n=not avai
$this->phrasen['zeitsperre/legendeVertretung']='S...Substitute';
$this->phrasen['zeitsperre/legendeDurchwahl']='(123)...Extension';
$this->phrasen['zeitsperre/vertretungNichtKorrekt']='The selected substitute is invalid. Please check the substitute an try again.';
$this->phrasen['zeitsperre/vorSperrdatum']='Date is before last open timesheet date';
?>
+1 -1
View File
@@ -68,7 +68,7 @@ else
$xml = '<?xml version="1.0" encoding="UTF-8" ?><lehrauftraege>';
$stg_arr = array();
$studiengang = new studiengang();
$studiengang->getAll();
$studiengang->getAll(null, false);
foreach ($studiengang->result as $row)
$stg_arr[$row->studiengang_kz] = $row->kuerzel;
+91
View File
@@ -0,0 +1,91 @@
<?php
/* Copyright (C) 2018 Technikum-Wien
*
* 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: Nikolaus Krondraf <krondraf@technikum-wien.at>
*/
// header fuer no cache
header("Cache-Control: no-cache");
header("Cache-Control: post-check=0, pre-check=0",false);
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Pragma: no-cache");
// content type setzen
header("Content-type: application/xhtml+xml");
// xml
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
// DAO
require_once('../config/vilesci.config.inc.php');
require_once('../include/functions.inc.php');
require_once('../include/lehrveranstaltung.class.php');
require_once('../include/prestudent.class.php');
$uid=get_uid();
$error_msg='';
$error_msg.=loadVariables($uid);
if (isset($_GET['prestudent']))
$prestudent_id = $_GET['prestudent'];
else
die('prestudent is not set!');
$lehrveranstaltung=new lehrveranstaltung();
$prestudent = new Prestudent();
$prestudent->getLastStatus($prestudent_id);
$lehrveranstaltung->loadLehrveranstaltungStudienplan($prestudent->studienplan_id);
$rdf_url='http://www.technikum-wien.at/lehrveranstaltung/';
echo '
<RDF:RDF
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:LVA="'.$rdf_url.'rdf#">
<RDF:Seq about="'.$rdf_url.'liste">
';
foreach ($lehrveranstaltung->lehrveranstaltungen as $row)
{
echo'<RDF:li>
<RDF:Description id="'.$row->lehrveranstaltung_id.'" about="'.$rdf_url.$row->lehrveranstaltung_id.'">
<LVA:lehrveranstaltung_id><![CDATA['.$row->lehrveranstaltung_id.']]></LVA:lehrveranstaltung_id>
<LVA:kurzbz><![CDATA['.$row->kurzbz.']]></LVA:kurzbz>
<LVA:bezeichnung><![CDATA['.$row->bezeichnung.']]></LVA:bezeichnung>
<LVA:bezeichnung_english><![CDATA['.$row->bezeichnung_english.']]></LVA:bezeichnung_english>
<LVA:studiengang_kz><![CDATA['.$row->studiengang_kz.']]></LVA:studiengang_kz>
<LVA:semester><![CDATA['.$row->semester.']]></LVA:semester>
<LVA:sprache><![CDATA['.$row->sprache.']]></LVA:sprache>
<LVA:ects><![CDATA['.$row->ects.']]></LVA:ects>
<LVA:semesterstunden><![CDATA['.$row->semesterstunden.']]></LVA:semesterstunden>
<LVA:anmerkung><![CDATA['.$row->anmerkung.']]></LVA:anmerkung>
<LVA:lehre><![CDATA['.($row->lehre?'Ja':'Nein').']]></LVA:lehre>
<LVA:lehreverzeichnis><![CDATA['.$row->lehreverzeichnis.']]></LVA:lehreverzeichnis>
<LVA:aktiv><![CDATA['.($row->aktiv?'Ja':'Nein').']]></LVA:aktiv>
<LVA:planfaktor><![CDATA['.$row->planfaktor.']]></LVA:planfaktor>
<LVA:planlektoren><![CDATA['.$row->planlektoren.']]></LVA:planlektoren>
<LVA:planpersonalkosten><![CDATA['.$row->planpersonalkosten.']]></LVA:planpersonalkosten>
<LVA:plankostenprolektor><![CDATA['.$row->plankostenprolektor.']]></LVA:plankostenprolektor>
<LVA:lehrform_kurzbz><![CDATA['.$row->lehrform_kurzbz.']]></LVA:lehrform_kurzbz>
<LVA:orgform_kurzbz><![CDATA['.$row->orgform_kurzbz.']]></LVA:orgform_kurzbz>
<LVA:oe_kurzbz><![CDATA['.$row->oe_kurzbz.']]></LVA:oe_kurzbz>
</RDF:Description>
</RDF:li>';
}
?>
</RDF:Seq>
</RDF:RDF>
+1 -1
View File
@@ -138,7 +138,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
WHERE
prestudent_id=".$db->db_add_param($row->prestudent_id)." AND
studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)." AND
tbl_prestudentstatus.status_kurzbz not in('Incoming','Aufgenommener','Bewerber','Wartender', 'Interessent')
tbl_prestudentstatus.status_kurzbz not in('Incoming','Aufgenommener','Bewerber','Wartender', 'Interessent', 'Abgewiesener')
ORDER BY DATUM DESC LIMIT 1";
if($result_sem = $db->db_query($qry))
{
+9 -9
View File
@@ -58,7 +58,7 @@ if($result = $db->db_query($qry))
$message .= " - Ihr Home-Verzeichnis (inkl. aller Dateien) gelöscht werden.\n";
$message .= "\n";
$message .= "Falls es sich bei der Deaktivierung um einen Irrtum handelt, würden wir Sie bitten, sich umgehend mit den KollegInnen in der Personalabteilung in Verbindung zu setzen: ";
$message .= "Frau Maria Meyer-Mölleringhof, meyermoe@technikum-wien.at\n";
$message .= "Frau Natalie König, natalie.koenig@technikum-wien.at\n";
$message .= "\n";
$message .= "Mit freundlichen Grüßen\n";
$message .= "\n";
@@ -90,9 +90,9 @@ if($result = $db->db_query($qry))
$message .= "\n";
$message .= "Falls Sie weiterhin über Neuigkeiten an der FH Technikum Wien informiert werden wollen, können Sie unter www.technikum-wien.at/newsletter den kostenlosen Newsletter abonnieren.\n";
}
$to = $row->uid.'@'.DOMAIN;
$mail = new mail($to,'no-reply@'.DOMAIN,'Ihr Datensatz wurde deaktiviert! '.$row->uid, $message);
$mail->send();
$text.= "Warnung zur Accountloeschung wurde an $row->uid verschickt\n";
@@ -159,7 +159,7 @@ if($result = $db->db_query($qry))
if($mail->send())
$text.="Abbrecher Infomail an $to verschickt\n";
else
$text.="Fehler beim Versenden des Abbrecher Infomails an $to !\n";
$text.="Fehler beim Versenden des Abbrecher Infomails an $to !\n";
}
}
@@ -187,7 +187,7 @@ if($result = $db->db_query($qry))
$message .= "1200 Wien \n";
$message .= "\n";
$message .= "Falls Sie weiterhin über Neuigkeiten an der FH Technikum Wien informiert werden wollen, können Sie unter www.technikum-wien.at/newsletter den kostenlosen Newsletter abonnieren.\n";
$to = $row->uid.'@'.DOMAIN;
$mail = new mail($to,'no-reply@'.DOMAIN,'Ihr Datensatz wurde deaktiviert! Letzte Warnung '.$row->uid, $message);
@@ -212,7 +212,7 @@ if($result = $db->db_query($qry))
$message .= " - Ihr Home-Verzeichnis (inkl. aller Dateien) gelöscht werden\n";
$message .= "\n";
$message .= "Falls es sich bei der Deaktivierung um einen Irrtum handelt, würden wir Sie bitten, sich umgehend mit den KollegInnen in der Personalabteilung in Verbindung zu setzen: ";
$message .= "Frau Maria Meyer-Mölleringhof, meyermoe@technikum-wien.at\n";
$message .= "Frau Natalie König, natalie.koenig@technikum-wien.at\n";
$message .= "\n";
$message .= "Mit freundlichen Grüßen\n";
$message .= "\n";
@@ -221,9 +221,9 @@ if($result = $db->db_query($qry))
$message .= "1200 Wien \n";
$message .= "\n";
$message .= "Falls Sie weiterhin über Neuigkeiten an der FH Technikum Wien informiert werden wollen, können Sie unter www.technikum-wien.at/newsletter den kostenlosen Newsletter abonnieren.\n";
$to = $row->uid.'@'.DOMAIN;
$mail = new mail($to,'no-reply@'.DOMAIN, 'Ihr Datensatz wurde deaktiviert! Letzte Warnung '.$row->uid, $message);
$mail->send();
$text.= "Letzte Warnung zur Accountloeschung wurde an $row->uid verschickt\n";
@@ -238,4 +238,4 @@ if($text!='')
}
echo '</body></html>';
?>
?>
+60
View File
@@ -2322,6 +2322,66 @@ if(!$result = @$db->db_query("SELECT bezeichnung FROM public.tbl_filter LIMIT 1"
echo '<br>public.tbl_filter: Spalte bezeichnung hinzugefuegt';
}
// vw_mitarbeiter updateaktivamum updateaktivvon
if(!$result = @$db->db_query("SELECT updateaktivam FROM campus.vw_mitarbeiter LIMIT 1"))
{
$qry = "CREATE OR REPLACE VIEW campus.vw_mitarbeiter as
SELECT tbl_benutzer.uid,
tbl_mitarbeiter.ausbildungcode,
tbl_mitarbeiter.personalnummer,
tbl_mitarbeiter.kurzbz,
tbl_mitarbeiter.lektor,
tbl_mitarbeiter.fixangestellt,
tbl_mitarbeiter.telefonklappe,
tbl_benutzer.person_id,
tbl_benutzer.alias,
tbl_person.geburtsnation,
tbl_person.sprache,
tbl_person.anrede,
tbl_person.titelpost,
tbl_person.titelpre,
tbl_person.nachname,
tbl_person.vorname,
tbl_person.vornamen,
tbl_person.gebdatum,
tbl_person.gebort,
tbl_person.gebzeit,
tbl_person.foto,
tbl_mitarbeiter.anmerkung,
tbl_person.homepage,
tbl_person.svnr,
tbl_person.ersatzkennzeichen,
tbl_person.geschlecht,
tbl_person.familienstand,
tbl_person.anzahlkinder,
tbl_mitarbeiter.ort_kurzbz,
tbl_benutzer.aktiv,
tbl_mitarbeiter.bismelden,
tbl_mitarbeiter.standort_id,
tbl_mitarbeiter.updateamum,
tbl_mitarbeiter.updatevon,
tbl_mitarbeiter.insertamum,
tbl_mitarbeiter.insertvon,
tbl_mitarbeiter.ext_id,
tbl_benutzer.aktivierungscode,
( SELECT tbl_kontakt.kontakt
FROM tbl_kontakt
WHERE tbl_kontakt.person_id = tbl_person.person_id AND tbl_kontakt.kontakttyp::text = 'email'::text
ORDER BY tbl_kontakt.zustellung DESC
LIMIT 1) AS email_privat,
tbl_benutzer.updateaktivam,
tbl_benutzer.updateaktivvon,
greatest(tbl_person.updateamum, tbl_benutzer.updateamum, tbl_mitarbeiter.updateamum) as lastupdate
FROM public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON tbl_mitarbeiter.mitarbeiter_uid::text = tbl_benutzer.uid::text
JOIN public.tbl_person USING (person_id);
";
if(!$db->db_query($qry))
echo '<strong>campus.vw_mitarbeiter: '.$db->db_last_error().'</strong><br>';
else
echo '<br>campus.vw_mitarbeiter: Spalte updateaktivam, updateaktivon, lastupdate hinzugefuegt';
}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
File diff suppressed because it is too large Load Diff
+7 -6
View File
@@ -52,11 +52,11 @@ if (isset($_POST['new']))
{
if(!$rechte->isBerechtigt('lehre/gruppe',null,'sui'))
die($rechte->errormsg);
$e = new benutzergruppe();
$uid = $_POST['uid'];
if (!$e->load($uid, $kurzbz))
{
{
$e->new=true;
$e->gruppe_kurzbz = $kurzbz;
$e->updateamum = date('Y-m-d H:i:s');
@@ -67,12 +67,12 @@ if (isset($_POST['new']))
if(!$e->save())
die($e->errormsg);
}
else
else
{
$errormsg = '<span class="error">Diese Person ist bereits der Gruppe zugeteilt</span>';
}
}
else
else
$errormsg = '<span class="error">UID '.$_POST['uid'].' wurde nicht gefunden</span>';
}
else if (isset($_GET['type']) && $_GET['type']=='delete')
@@ -110,6 +110,7 @@ if(!$gruppe->load($kurzbz))
<?php
echo "<a href='einheit_menu.php?studiengang_kz=$gruppe->studiengang_kz'>Zurück zur &Uuml;bersicht</a><br><br>";
echo $errormsg;
$generiertegruppe = $gruppe->generiert;
if(!$gruppe->generiert)
{
echo '
@@ -145,7 +146,7 @@ if(!$gruppe->generiert)
<HR>
';
}
else
else
{
echo ' Name: <input type="text" name="uid" id="uid" disabled="disabled"/>
<INPUT type="submit" name="new" value="Hinzuf&uuml;gen" disabled="disabled">
@@ -185,7 +186,7 @@ else
echo "<td>".$row->nachname."</td>";
echo "<td>".$row->vorname."</td>";
echo "<td>".$row->uid."</td>";
if(!$gruppe->generiert && $rechte->isBerechtigt('lehre/gruppe',null,'suid'))
if(!$generiertegruppe && $rechte->isBerechtigt('lehre/gruppe',null,'suid'))
echo '<td class="button"><a href="einheit_det.php?uid='.$row->uid.'&type=delete&kurzbz='.$kurzbz.'">Delete</a></td>';
echo "</tr>\n";
}
@@ -391,7 +391,20 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
$sel = "";
$htmlstr .= "<option id='".$rolle_arr[$i]."' value='".$rolle_arr[$i]."' ".$sel." onclick='disable(\"berechtigung_kurzbz_".$b->benutzerberechtigung_id."\");' >".$rolle_arr[$i]."</option>";
}
$htmlstr .= " </select></td>\n";
$htmlstr .= " </select>";
// Wenn editiert wird, zu der Zeile Springen
$htmlstr.="
<a name='editrow'>
<script language='javascript'>
$(document).ready(function()
{
var url = location.href;
location.href = '#editrow'
history.replaceState(null,null,url);
});
</script>";
$htmlstr.="</td>\n";
//Berechtigung
$htmlstr .= " <td name='td_$b->benutzerberechtigung_id'><select name='berechtigung_kurzbz' id='berechtigung_kurzbz_$b->benutzerberechtigung_id' ".($b->rolle_kurzbz!=''?'disabled':'')." onchange='markier(\"td_".$b->benutzerberechtigung_id."\"); setnull(\"rolle_kurzbz_$b->benutzerberechtigung_id\");'>\n";
+6
View File
@@ -89,6 +89,9 @@ if (!$filter->loadAll())
<th title="Kurzbezeichnung des Filters">
KurzBz
</th>
<th>
Bezeichnung
</th>
<th>
ValueName
</th>
@@ -125,6 +128,9 @@ if (!$filter->loadAll())
<?php echo $filter->kurzbz ?>
</a>
</td>
<td>
<?php echo $db->convert_html_chars($filter->bezeichnung) ?>
</td>
<td>
<?php echo $db->convert_html_chars($filter->valuename) ?>
</td>
+46 -46
View File
@@ -3,40 +3,40 @@
/**
* PDO principal backend
*
* This is a simple principal backend that maps exactly to the users table, as
* This is a simple principal backend that maps exactly to the users table, as
* used by Sabre_DAV_Auth_Backend_PDO.
*
* It assumes all principals are in a single collection. The default collection
* It assumes all principals are in a single collection. The default collection
* is 'principals/', but this can be overriden.
*
* @package Sabre
* @subpackage DAVACL
* @copyright Copyright (C) 2007-2011 Rooftop Solutions. All rights reserved.
* @author Evert Pot (http://www.rooftopsolutions.nl/)
* @author Evert Pot (http://www.rooftopsolutions.nl/)
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
*/
class MySabre_DAVACL_PrincipalBackend implements \Sabre\DAVACL\PrincipalBackend\BackendInterface
{
/**
* PDO table name for 'principals'
*
* @var string
* PDO table name for 'principals'
*
* @var string
*/
protected $tableName;
/**
* PDO table name for 'group members'
*
* @var string
* PDO table name for 'group members'
*
* @var string
*/
protected $groupMembersTableName;
protected $result_ma;
/**
* Sets up the backend.
*
*
* @param PDO $pdo
* @param string $tableName
* @param string $tableName
*/
public function __construct($auth)
{
@@ -46,7 +46,7 @@ class MySabre_DAVACL_PrincipalBackend implements \Sabre\DAVACL\PrincipalBackend\
$ma = new mitarbeiter();
$this->result_ma = $ma->getMitarbeiter(null,null,null);
*/
}
}
/**
* Liefert den eingeloggten User
@@ -60,20 +60,20 @@ class MySabre_DAVACL_PrincipalBackend implements \Sabre\DAVACL\PrincipalBackend\
/**
* Returns a list of principals based on a prefix.
*
* This prefix will often contain something like 'principals'. You are only
* This prefix will often contain something like 'principals'. You are only
* expected to return principals that are in this base path.
*
* You are expected to return at least a 'uri' for every user, you can
* You are expected to return at least a 'uri' for every user, you can
* return any additional properties if you wish so. Common properties are:
* {DAV:}displayname
* {http://sabredav.org/ns}email-address - This is a custom SabreDAV
* {DAV:}displayname
* {http://sabredav.org/ns}email-address - This is a custom SabreDAV
* field that's actualy injected in a number of other properties. If
* you have an email address, use this property.
*
* @param string $prefixPath
* @return array
*
* @param string $prefixPath
* @return array
*/
public function getPrincipalsByPrefix($prefixPath)
public function getPrincipalsByPrefix($prefixPath)
{
//$prefixPath = principals
//error_log('Principal.php/getPrincipalsByPrefix('.$prefixPath.')');
@@ -82,7 +82,7 @@ class MySabre_DAVACL_PrincipalBackend implements \Sabre\DAVACL\PrincipalBackend\
if($prefixPath=='principals')
{
$principals[] = array(
'id' => $user,
'uri' => 'principals/'.$user,
@@ -118,7 +118,7 @@ class MySabre_DAVACL_PrincipalBackend implements \Sabre\DAVACL\PrincipalBackend\
'{DAV:}displayname' => '',
'{http://sabredav.org/ns}email-address' => '',
);
}*/
}
else //if($prefixPath=='principals/oesi')
@@ -138,13 +138,13 @@ class MySabre_DAVACL_PrincipalBackend implements \Sabre\DAVACL\PrincipalBackend\
/**
* Returns a specific principal, specified by it's path.
* The returned structure should be the exact same as from
* getPrincipalsByPrefix.
*
* @param string $path
* @return array
* The returned structure should be the exact same as from
* getPrincipalsByPrefix.
*
* @param string $path
* @return array
*/
public function getPrincipalByPath($path)
public function getPrincipalByPath($path)
{
//$path = principals/oesi
//error_log('Principal.php/getPrincipalByPath('.$path.')');
@@ -164,26 +164,26 @@ class MySabre_DAVACL_PrincipalBackend implements \Sabre\DAVACL\PrincipalBackend\
}
/**
* Returns the list of members for a group-principal
*
* @param string $principal
* @return array
* Returns the list of members for a group-principal
*
* @param string $principal
* @return array
*/
public function getGroupMemberSet($principal)
public function getGroupMemberSet($principal)
{
//error_log('Principal.php/getGroupMemberSet('.$principal.')');
$result = array();
return $result;
}
/**
* Returns the list of groups a principal is a member of
*
* @param string $principal
* @return array
* Returns the list of groups a principal is a member of
*
* @param string $principal
* @return array
*/
public function getGroupMembership($principal)
public function getGroupMembership($principal)
{
//$principal = username
// error_log('Principal.php/getGroupMembership('.$principal.')');
@@ -215,17 +215,17 @@ class MySabre_DAVACL_PrincipalBackend implements \Sabre\DAVACL\PrincipalBackend\
/**
* Updates the list of group members for a group principal.
*
* The principals should be passed as a list of uri's.
*
* @param string $principal
* @param array $members
* The principals should be passed as a list of uri's.
*
* @param string $principal
* @param array $members
* @return void
*/
public function setGroupMemberSet($principal, array $members)
public function setGroupMemberSet($principal, array $members)
{
throw new \Sabre\DAV\Exception('Not implemented');
}
public function updatePrincipal($path, $mutations)
{
throw new \Sabre\DAV\Exception('Not implemented');
@@ -233,6 +233,6 @@ class MySabre_DAVACL_PrincipalBackend implements \Sabre\DAVACL\PrincipalBackend\
public function searchPrincipals($prefixPath,array $searchProperties)
{
throw new \Sabre\DAV\Exceptin('Not implemented');
throw new \Sabre\DAV\Exception('Not implemented');
}
}