mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| abeed5ab73 | |||
| 3cfc63f34b |
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
/* Copyright (C) 2024 FH 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: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
|
||||
* Manuela Thamer <manuela.thamer@technikum-wien.at>
|
||||
*/
|
||||
/**
|
||||
* Dieses Script liefert Zeitverfügbarkeiten und -sperren des übergebenen Parameters (uid, foreign_uid oder oekurz_bz)
|
||||
*
|
||||
* Aufruf: link + [params]
|
||||
* link: URL:',APP_ROOT'/fhcomplete/cis/public/ical_zeitsperren.php/cipher_encryption/
|
||||
* [params]
|
||||
* uid=oesi (Termine: "ZEITSPERRE" bzw."VERFUEGBAR", Bezeichnungen der Zeitsperren)
|
||||
* oe_kurzbz=SystemEntwicklungCore (Termine: "ZEITSPERRE" bzw."VERFUEGBAR", "NAME MITARBEITER")
|
||||
* foreign_uid=oesi (Termine: "ZEITSPERRE" bzw."VERFUEGBAR", "NAME MITARBEITER")
|
||||
* Beispielaufruf php
|
||||
* echo "<a href=" . APP_ROOT. "cis/public/ical_zeitsperren.php/cipher_encryption/".encryptData('uid=oesi',ZEITSPERREN_CYPHER_KEY).">Beispielaufruf <a/>";
|
||||
*/
|
||||
require_once('../../config/cis.config.inc.php');
|
||||
require_once('../../include/benutzer.class.php');
|
||||
require_once('../../include/zeitsperre.class.php');
|
||||
require_once('../../include/datum.class.php');
|
||||
require_once('../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../include/benutzerfunktion.class.php');
|
||||
|
||||
$params = mb_substr($_SERVER['PATH_INFO'],1);
|
||||
$paramsArray = explode('/',$params);
|
||||
|
||||
if ($paramsArray[0] == 'cipher_encryption')
|
||||
{
|
||||
$string = decryptData($paramsArray[1],ZEITSPERREN_CYPHER_KEY);
|
||||
}
|
||||
$delimiter = "=";
|
||||
|
||||
$position = strpos($string, $delimiter);
|
||||
if ($position !== false)
|
||||
{
|
||||
$substring = substr($string, 0, $position);
|
||||
}
|
||||
else
|
||||
{
|
||||
die('invalid Parameterformat');
|
||||
}
|
||||
|
||||
$private = ($substring == 'uid') ? true : false;
|
||||
|
||||
if($substring == 'uid' || $substring == 'foreign_uid')
|
||||
{
|
||||
$uid = substr($string, $position + 1);
|
||||
$bn = new benutzer();
|
||||
if(!$bn->load($uid))
|
||||
die('uid' . $uid . ' not found');
|
||||
$filename = $uid;
|
||||
}
|
||||
elseif($substring == 'oe_kurzbz')
|
||||
{
|
||||
$oe = substr($string, $position + 1);
|
||||
|
||||
//check if valid Oe
|
||||
$bf = new benutzerfunktion();
|
||||
if ($bf->getOeFunktionen($oe, 'oezuordnung'))
|
||||
{
|
||||
$uidArr = array();
|
||||
|
||||
foreach ($bf->result as $uid) {
|
||||
$uidArr[] = $uid->uid;
|
||||
}
|
||||
|
||||
if ($uidArr == null)
|
||||
die('oe_kurzbz not found');
|
||||
else
|
||||
$uid = $uidArr;
|
||||
$filename = $oe;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
die('Parameter not valid');
|
||||
}
|
||||
|
||||
header("Content-Type: text/calendar; charset=UTF-8");
|
||||
header("Content-disposition: filename=".$filename."_Zeitsperren_Verfuegbarkeiten.ics");
|
||||
|
||||
echo "BEGIN:VCALENDAR\n";
|
||||
echo "VERSION:2.0\n";
|
||||
echo "PRODID:-//FH TECHNIKUM WIEN//EN\n";
|
||||
echo 'DTSTART;TZID=Europe/Vienna:',date('Ymd', mktime(0,0,0,date('m'),date('d')-5,date('Y'))),"T000000\n";
|
||||
echo 'DTEND;TZID=Europe/Vienna:',date('Ymd', mktime(0,0,0,date('m'),date('d')+30,date('Y'))),"T000000\n";
|
||||
echo "BEGIN:VTIMEZONE
|
||||
TZID:Europe/Vienna
|
||||
BEGIN:DAYLIGHT
|
||||
TZOFFSETFROM:+0100
|
||||
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
|
||||
DTSTART:19810329T020000
|
||||
TZNAME:GMT+02:00
|
||||
TZOFFSETTO:+0200
|
||||
END:DAYLIGHT
|
||||
BEGIN:STANDARD
|
||||
TZOFFSETFROM:+0200
|
||||
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
|
||||
DTSTART:19961027T030000
|
||||
TZNAME:GMT+01:00
|
||||
TZOFFSETTO:+0100
|
||||
END:STANDARD
|
||||
END:VTIMEZONE\n";
|
||||
|
||||
//echo 'URL:',APP_ROOT,'cis/public/ical_zeitsperren.php/',$uid,"\n";
|
||||
|
||||
//Zeitsperren des Users (der User) laden
|
||||
$zeitsperre = new zeitsperre();
|
||||
$zeitsperre->getZeitsperrenForIcal($uid);
|
||||
|
||||
foreach ($zeitsperre->result as $z)
|
||||
{
|
||||
$typ = $z->zeitsperretyp_kurzbz;
|
||||
$name = trim($z->vorname . " " . $z->nachname);
|
||||
$titel = $typ == 'ZVerfueg' ? "VERFUEGBAR" : "ZEITSPERRE";
|
||||
$bezeichnung = $private ? ($typ . " " . $z->bezeichnung) : $name;
|
||||
$dateVon = new DateTime($z->von);
|
||||
$dtstart = $dateVon->format('Ymd\THis');
|
||||
$dateBis = new DateTime($z->bis);
|
||||
$dtend = $dateBis->format('Ymd\THis');
|
||||
|
||||
echo "BEGIN:VEVENT\r\n"
|
||||
."SUMMARY: ". $titel."\r\n"
|
||||
."DESCRIPTION: ". $bezeichnung."\r\n"
|
||||
."DTSTART;TZID=Europe/Vienna:".$dtstart."\r\n"
|
||||
."DTEND;TZID=Europe/Vienna:".$dtend."\r\n"
|
||||
."TRANSP:OPAQUE\r\n"
|
||||
."END:VEVENT\r\n";
|
||||
}
|
||||
echo "END:VCALENDAR\r\n";
|
||||
?>
|
||||
@@ -155,6 +155,9 @@ define('LVPLAN_KATEGORIE', 'StundenplanTW');
|
||||
// Key zum Verschluesseln des LV-Plan Google Links
|
||||
define('LVPLAN_CYPHER_KEY',pack('H*', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'));
|
||||
|
||||
// Key zum Verschluesseln Zeitsperren/Zeitverfügbarkeiten
|
||||
define('ZEITSPERREN_CYPHER_KEY',pack('H*', 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'));
|
||||
|
||||
// Gibt an ob Termine aus dem Vorsemester nach der Semesterhaelfte des Folgesemesters
|
||||
// noch im pers. LVPan aufscheinen.
|
||||
// true | false
|
||||
|
||||
@@ -633,5 +633,75 @@ class zeitsperre extends basis_db
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt alle Zeitsperren eines Benutzers (bzw. einer OE) für Ical Export
|
||||
* @param $uid bzw Array($uids)
|
||||
* @param $bisgrenze wenn true werden nur die Zeitsperren des
|
||||
* aktuellen Geschaeftsjahres geholt (1.9.-31.8.)
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function getZeitsperrenForIcal($uid, $bisgrenze=true)
|
||||
{
|
||||
if(!is_array($uid))
|
||||
$uid = [$uid];
|
||||
|
||||
$qry = "SELECT
|
||||
zeitsperretyp_kurzbz,
|
||||
bezeichnung,
|
||||
mitarbeiter_uid,
|
||||
CONCAT(vondatum, ' ', std1.beginn) AS von,
|
||||
CONCAT(bisdatum, ' ', std2.ende) AS bis,
|
||||
vondatum, vonstunde, bisdatum, bisstunde,
|
||||
p.vorname, p.nachname
|
||||
FROM campus.tbl_zeitsperre zs
|
||||
JOIN campus.tbl_zeitsperretyp USING (zeitsperretyp_kurzbz)
|
||||
JOIN public.tbl_benutzer bn ON (bn.uid = zs.mitarbeiter_uid)
|
||||
JOIN public.tbl_person p ON (bn.person_id = p.person_id)
|
||||
LEFT JOIN lehre.tbl_stunde std1 ON (std1.stunde = zs.vonstunde)
|
||||
LEFT JOIN lehre.tbl_stunde std2 ON (std2.stunde = zs.bisstunde)
|
||||
WHERE mitarbeiter_uid in (". $this->db_implode4SQL($uid) . ")";
|
||||
|
||||
if($bisgrenze)
|
||||
{
|
||||
$qry.=" AND (
|
||||
(date_part('month',vondatum)>=9 AND date_part('year', vondatum)>='".(date('Y')-1)."')
|
||||
OR
|
||||
(date_part('month',vondatum)<9 AND date_part('year', vondatum)>='".(date('Y'))."')
|
||||
)";
|
||||
}
|
||||
|
||||
$qry.= " ORDER BY vondatum DESC";
|
||||
|
||||
var_dump($qry);
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new zeitsperre();
|
||||
|
||||
$obj->mitarbeiter_uid = $row->mitarbeiter_uid;
|
||||
$obj->zeitsperretyp_kurzbz = $row->zeitsperretyp_kurzbz;
|
||||
$obj->bezeichnung = $row->bezeichnung;
|
||||
$obj->vondatum = $row->vondatum;
|
||||
$obj->vonstunde = $row->vonstunde;
|
||||
$obj->bisdatum = $row->bisdatum;
|
||||
$obj->bisstunde = $row->bisstunde;
|
||||
$obj->von = $row->von;
|
||||
$obj->bis = $row->bis;
|
||||
$obj->vorname = $row->vorname;
|
||||
$obj->nachname = $row->nachname;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Zeitsperren für ical';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user