From bcfd08fcb8b349ad98674850f0828530169c0819 Mon Sep 17 00:00:00 2001 From: oesi Date: Tue, 7 Nov 2017 09:28:42 +0100 Subject: [PATCH 001/126] =?UTF-8?q?Anzeigefehler=20in=20Ansicht=20f=C3=BCr?= =?UTF-8?q?=20Administratoren=20korrigiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/tools/zeitaufzeichnung.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index a61aabe07..eb14c2744 100755 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -60,6 +60,8 @@ if(isset($_GET['uid'])) if($rechte->isBerechtigt('admin') || $rechte->isBerechtigt('mitarbeiter/urlaube', null, 'suid')) { $user = $_GET['uid']; + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($user); } else { From 5f68d3e735403797af576f6fb6ddde266b4eeb25 Mon Sep 17 00:00:00 2001 From: oesi Date: Tue, 7 Nov 2017 17:27:25 +0100 Subject: [PATCH 002/126] Readded deleted function --- include/studienplan.class.php | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/include/studienplan.class.php b/include/studienplan.class.php index cb7fad8f1..67701e227 100644 --- a/include/studienplan.class.php +++ b/include/studienplan.class.php @@ -137,6 +137,40 @@ class studienplan extends basis_db } } + public function deleteSemesterZuordnung($studienplan_id, $studiensemester_kurzbz, $ausbildungssemester = NULL) + { + if (!is_numeric($studienplan_id)) + { + $this->errormsg = 'studienplan_id muss eine gueltige Zahl sein'; + return false; + } + + if (!is_string($studiensemester_kurzbz) || strlen($studiensemester_kurzbz) != 6) + { + $this->errormsg = 'studiensemester_kurzbz muss ein String mit 6 Zeichen sein'; + return false; + } + + $qry = 'DELETE FROM lehre.tbl_studienplan_semester + WHERE studienplan_id=' . $this->db_add_param($studienplan_id) . ' AND + studiensemester_kurzbz=' . $this->db_add_param($studiensemester_kurzbz) . ''; + + if ($ausbildungssemester !== null) + $qry.=' AND semester=' . $this->db_add_param($ausbildungssemester) . ''; + + $qry.=';'; + + if ($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Löschen der Zuordnung' . "\n"; + return false; + } + } + /** * Laedt die Studienplaene einer Studienordnung und Optional einer Organisationsform * From 04941732949791710e40ae8bc0dc98f1f244ea75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 8 Nov 2017 11:55:19 +0100 Subject: [PATCH 003/126] =?UTF-8?q?Hinweis=20erg=C3=A4nzt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- system/checkStudenten.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/checkStudenten.php b/system/checkStudenten.php index 814b1edae..c59f36b71 100644 --- a/system/checkStudenten.php +++ b/system/checkStudenten.php @@ -748,7 +748,7 @@ foreach ($ausgabe as $stg_kz => $value)   - Studienplan ist in diesem Semester nicht gültig + Studienplan ist in diesem Semester nicht gültig (nicht BIS relevant) "; break; default: From 28f1cf80c61f238c4c58202f65d383069bbe3b92 Mon Sep 17 00:00:00 2001 From: oesi Date: Wed, 8 Nov 2017 18:28:21 +0100 Subject: [PATCH 004/126] Praktikanten aus dem TW_FIX Verteiler entfernt --- system/mlists/mlists_generate.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/mlists/mlists_generate.php b/system/mlists/mlists_generate.php index e4b2d4de9..b1e024ac9 100644 --- a/system/mlists/mlists_generate.php +++ b/system/mlists/mlists_generate.php @@ -191,7 +191,7 @@ $error_msg=''; WHERE fixangestellt AND aktiv AND mitarbeiter_uid NOT LIKE '\\\\_%' - AND NOT EXISTS(SELECT 1 FROM public.tbl_benutzerfunktion WHERE funktion_kurzbz='hilfskraft' AND uid=mitarbeiter_uid AND (datum_bis>=now() or datum_bis is null))"; + AND NOT EXISTS(SELECT 1 FROM public.tbl_benutzerfunktion WHERE funktion_kurzbz in('hilfskraft','praktikum') AND uid=mitarbeiter_uid AND (datum_bis>=now() or datum_bis is null))"; //Alle aktiven MitarbeiterInnen mit Attribut fixangestellt=true und lektor=true $verteilerArray['tw_fix_lkt']['bezeichnung'] = 'Alle fixangestellten LektorInnen'; $verteilerArray['tw_fix_lkt']['beschreibung'] = 'Alle fixangestellten LektorInnen an der FH Technikum Wien'; From 3c4ca2a9cc9f6ff5b0bcbed2ed411d0e1dc9e470 Mon Sep 17 00:00:00 2001 From: Gerry Raab Date: Fri, 10 Nov 2017 01:25:44 +0100 Subject: [PATCH 005/126] =?UTF-8?q?anwesenheitsliste=20verplante=20r=C3=A4?= =?UTF-8?q?ume=20k=C3=B6nnen=20angezeigt=20werden,=20config=20ob=20fotolis?= =?UTF-8?q?ten=20angezeigt=20werden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/lehre/anwesenheitsliste.pdf.php | 37 ++++++++++-- cis/private/lehre/anwesenheitsliste.php | 62 +++++++++++---------- 2 files changed, 65 insertions(+), 34 deletions(-) diff --git a/cis/private/lehre/anwesenheitsliste.pdf.php b/cis/private/lehre/anwesenheitsliste.pdf.php index 8e2c6f4c0..80d823a4f 100755 --- a/cis/private/lehre/anwesenheitsliste.pdf.php +++ b/cis/private/lehre/anwesenheitsliste.pdf.php @@ -44,15 +44,15 @@ else $lv = new lehrveranstaltung(); $lv->load($lvid); - + if(isset($_GET['stsem'])) $studiensemester = $_GET['stsem']; else die('Eine Studiensemester muss uebergeben werden'); -if( !$berechtigung->isBerechtigt('admin') - && !$berechtigung->isBerechtigt('assistenz') - && !$berechtigung->isBerechtigt('lehre', $lv->oe_kurzbz, 's') +if( !$berechtigung->isBerechtigt('admin') + && !$berechtigung->isBerechtigt('assistenz') + && !$berechtigung->isBerechtigt('lehre', $lv->oe_kurzbz, 's') && !check_lektor_lehrveranstaltung($user,$lvid,$studiensemester)) die('Sie muessen LektorIn der LV sein oder das Recht "ADMIN", "ASSISTENZ" oder "LEHRE" haben, um diese Seite aufrufen zu koennen'); @@ -95,6 +95,34 @@ if($result = $db->db_query($qry)) } } + +// Verplante Räume laden +$qry = "SELECT distinct(ort_kurzbz) + FROM lehre.tbl_stundenplan + WHERE lehreinheit_id in + ( + SELECT lehreinheit_id + FROM campus.vw_lehreinheit + WHERE lehrveranstaltung_id = ".$db->db_add_param($lvid, FHC_INTEGER)." + AND studiensemester_kurzbz = ".$db->db_add_param($studiensemester)." + )"; +if($lehreinheit!='') + $qry.= " AND tbl_stundenplan.lehreinheit_id = ".$db->db_add_param($lehreinheit, FHC_INTEGER); + + +$raum_string = ''; +if($result = $db->db_query($qry)) +{ + while($row = $db->db_fetch_object($result)) + { + if($raum_string!='') + $raum_string.=', '; + if($row->ort_kurzbz!='') + $raum_string.=$row->ort_kurzbz; + } +} + + $stg = new studiengang(); $stg->load($lv->studiengang_kz); @@ -114,6 +142,7 @@ $data = array( 'studiensemester'=>$studiensemester, 'semester'=>$lv->semester, 'orgform'=>$lv->orgform_kurzbz, + 'raum'=>$raum_string, ); //Lehrende der LV laden und in ein Array schreiben diff --git a/cis/private/lehre/anwesenheitsliste.php b/cis/private/lehre/anwesenheitsliste.php index 70a24f924..4e328f5f2 100644 --- a/cis/private/lehre/anwesenheitsliste.php +++ b/cis/private/lehre/anwesenheitsliste.php @@ -33,15 +33,15 @@ require_once('../../../include/studiengang.class.php'); require_once('../../../include/lehrveranstaltung.class.php'); require_once('../../../include/phrasen.class.php'); - - - $sprache = getSprache(); - $p=new phrasen($sprache); - + + + $sprache = getSprache(); + $p=new phrasen($sprache); + if (!$db = new basis_db()) die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung')); - - $error=0; + + $error=0; if(isset($_GET['stg_kz']) && is_numeric($_GET['stg_kz'])) $stg_kz=$_GET['stg_kz']; else @@ -56,10 +56,10 @@ $lvid=$_GET['lvid']; else $error=2; - + if(isset($_GET['stsem']) && check_stsem($_GET['stsem'])) $stsem = $_GET['stsem']; - else + else die($p->t('anwesenheitsliste/studiensemesterIstUngueltig')); ?> @@ -92,28 +92,28 @@ $stg_arr = array(); $stg_obj = new studiengang(); $stg_obj->getAll(); - + foreach ($stg_obj->result as $row) $stg_arr[$row->studiengang_kz]=$row->kuerzel; - + $lv = new lehrveranstaltung($lvid); - + $aw_content .= "".$p->t('anwesenheitsliste/gesamtliste')." $lv->bezeichnung"; $awbild_content .= "".$p->t('anwesenheitsliste/gesamtliste')." $lv->bezeichnung"; $nt_content .= "".$p->t('anwesenheitsliste/gesamtliste')." $lv->bezeichnung"; - + echo ""; - $qry = "SELECT *, tbl_lehreinheitgruppe.studiengang_kz, tbl_lehreinheitgruppe.semester FROM lehre.tbl_lehreinheit JOIN lehre.tbl_lehreinheitgruppe USING(lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + $qry = "SELECT *, tbl_lehreinheitgruppe.studiengang_kz, tbl_lehreinheitgruppe.semester FROM lehre.tbl_lehreinheit JOIN lehre.tbl_lehreinheitgruppe USING(lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) WHERE lehrveranstaltung_id='$lvid' AND studiensemester_kurzbz=".$db->db_add_param($stsem); $qry = "SELECT *, tbl_lehreinheitgruppe.studiengang_kz, tbl_lehreinheitgruppe.semester ,tbl_lehreinheit.lehrform_kurzbz - FROM lehre.tbl_lehreinheit - JOIN lehre.tbl_lehreinheitgruppe USING(lehreinheit_id) - JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + FROM lehre.tbl_lehreinheit + JOIN lehre.tbl_lehreinheitgruppe USING(lehreinheit_id) + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) WHERE lehrveranstaltung_id='$lvid' AND studiensemester_kurzbz=".$db->db_add_param($stsem); - + if($result = $db->db_query($qry)) { if($db->db_num_rows($result)>0) @@ -129,7 +129,7 @@ $qry = "SELECT * FROM lehre.tbl_lehreinheitmitarbeiter JOIN public.tbl_mitarbeiter USING(mitarbeiter_uid) WHERE lehreinheit_id=".$db->db_add_param($lastlehreinheit); $lektoren = ''; - + if($result_lkt = $db->db_query($qry)) { while($row_lkt = $db->db_fetch_object($result_lkt)) @@ -139,26 +139,26 @@ $lektoren .= $row_lkt->kurzbz; } } - + $aw_content .= "   $kurzbz - $lehrform - $gruppen ($lektoren)"; $awbild_content .= "   $kurzbz - $lehrform - $gruppen ($lektoren)"; $nt_content .= "   $kurzbz - $lehrform - $gruppen ($lektoren)"; - + $lastlehreinheit = $row->lehreinheit_id; $gruppen=''; } - else + else $lastlehreinheit = $row->lehreinheit_id; } - + if($gruppen!='') $gruppen.= ', '; - + if($row->gruppe_kurzbz!='') $gruppen .= $row->gruppe_kurzbz; - else + else $gruppen .= trim($stg_arr[$row->studiengang_kz].'-'.$row->semester.$row->verband.$row->gruppe); - + $lehrform = $row->lehrform_kurzbz; $kurzbz = $row->kurzbz; } @@ -174,7 +174,7 @@ $lektoren .= $row_lkt->kurzbz; } } - + $aw_content .= "   $kurzbz - $lehrform - $gruppen ($lektoren)"; $awbild_content .= "   $kurzbz - $lehrform - $gruppen ($lektoren)"; $nt_content .= "   $kurzbz - $lehrform - $gruppen ($lektoren)"; @@ -191,7 +191,7 @@ $aw_content = "".$aw_content."

".$p->t('anwesenheitsliste/anwesenheitslisten')."

"; else $aw_content = $p->t('anwesenheitsliste/keineStudentenVorhanden'); - + if($awbild_content!='') $awbild_content = "".$awbild_content."

".$p->t('anwesenheitsliste/anwesenheitslistenMitBildern')."

"; else @@ -208,9 +208,11 @@ $nt_content=''; if(defined('CIS_ANWESENHEITSLISTE_ANWESENHEITSLISTE_ANZEIGEN') && !CIS_ANWESENHEITSLISTE_ANWESENHEITSLISTE_ANZEIGEN) $aw_content=''; + if(defined('CIS_ANWESENHEITSLISTE_ANWESENHEITSLISTE_BILD_ANZEIGEN') && !CIS_ANWESENHEITSLISTE_ANWESENHEITSLISTE_BILD_ANZEIGEN) + $awbild_content=''; echo " - + @@ -220,7 +222,7 @@ - +
$aw_content
$nt_content
"; } } From 0bc0a09bf49528e9a1a6bda228f27dccee82d809 Mon Sep 17 00:00:00 2001 From: Paolo Date: Mon, 13 Nov 2017 10:45:49 +0100 Subject: [PATCH 006/126] - Removed file system execute permission for all files (no directories) - application/extensions file system permission now is 775 - application/logs file system permission now is 775 - Added extensions directory in application/: config, controllers, helpers, hooks, libraries, models, views and widgets - Added view views/extensions/manage.php - Added controller controllers/system/extensions/Manager.php - Added library ExtensionsLib to manage extensions - Added model models/system/Extensions_model.php - Moved code related to print out info from MigrationLib to EPrintfLib --- CHANGELOG.md | 0 application/cache/index.html | 0 application/config/autoload.php | 0 application/config/config.php | 0 application/config/constants.php | 0 application/config/database.php | 0 application/config/doctypes.php | 0 application/config/extensions/.placeholder | 1 + application/config/fhcomplete.php | 0 application/config/foreign_chars.php | 0 application/config/hooks.php | 0 application/config/index.html | 0 application/config/mail.php | 0 application/config/memcached.php | 0 application/config/migration.php | 0 application/config/mimes.php | 0 application/config/profiler.php | 0 application/config/roles.php | 0 application/config/routes.php | 0 application/config/smileys.php | 0 application/config/user_agents.php | 0 application/controllers/ViewMessage.php | 0 application/controllers/Vilesci.php | 0 .../controllers/extensions/.placeholder | 1 + application/controllers/index.html | 0 application/controllers/system/Login.php | 0 application/controllers/system/Messages.php | 0 application/controllers/system/Vorlage.php | 0 .../controllers/system/extensions/Manager.php | 83 ++ application/core/index.html | 0 application/helpers/extensions/.placeholder | 1 + application/helpers/index.html | 0 application/hooks/extensions/.placeholder | 1 + application/hooks/index.html | 0 application/index.html | 0 application/language/de-AT/index.html | 0 application/language/index.html | 0 application/language/system/index.html | 0 application/libraries/EPrintfLib.php | 138 +++ application/libraries/ExtensionsLib.php | 824 ++++++++++++++++++ application/libraries/MailLib.php | 0 application/libraries/MessageLib.php | 0 application/libraries/MigrationLib.php | 249 ++---- application/libraries/extensions/.placeholder | 1 + application/libraries/index.html | 0 application/logs/index.html | 0 application/models/extensions/.placeholder | 1 + application/models/index.html | 0 .../Organisationseinheit_model.php | 0 .../models/system/Extensions_model.php | 56 ++ .../models/system/MessageToken_model.php | 0 application/third_party/index.html | 0 application/views/errors/cli/error_404.php | 0 application/views/errors/cli/error_db.php | 0 .../views/errors/cli/error_exception.php | 0 .../views/errors/cli/error_general.php | 0 application/views/errors/cli/error_php.php | 0 application/views/errors/cli/index.html | 0 application/views/errors/html/error_404.php | 0 application/views/errors/html/error_db.php | 0 .../views/errors/html/error_exception.php | 0 .../views/errors/html/error_general.php | 0 application/views/errors/html/error_php.php | 0 application/views/errors/html/index.html | 0 application/views/errors/index.html | 0 application/views/extensions/.placeholder | 1 + application/views/index.html | 0 .../views/system/extensions/manager.php | 168 ++++ application/views/system/messageHTML.php | 0 .../views/system/vorlage/templatetextList.php | 0 application/views/templates/mailHTML.php | 0 .../widgets/Organisationseinheit_widget.php | 0 application/widgets/extensions/.placeholder | 1 + application/widgets/mimetype_widget.php | 0 assets/grocery_crud/languages/catalan.php | 0 .../themes/flexigrid/css/flexigrid.css | 0 .../themes/flexigrid/views/list_template.php | 0 cis/ampel.php | 0 cis/cisdocs/muster_semesterplan.doc | Bin cis/private/coodle/coodle_autocomplete.php | 0 cis/private/coodle/coodle_events.php | 0 cis/private/coodle/stammdaten.php | 0 cis/private/coodle/termin.php | 0 cis/private/coodle/uebersicht.php | 0 cis/private/lehre/abgabe_student_file.php | 0 cis/private/lehre/anwesenheitsliste.pdf.php | 0 .../lehre/anwesenheitsliste_bilder.pdf.php | 0 .../lehre/benotungstool/functions.inc.php | 0 .../benotungstool/legesamtnoteeintragen.php | 0 .../benotungstool/lvgesamtnoteeintragen.php | 0 .../benotungstool/nachpruefungeintragen.php | 0 .../zipdownload_benotungstool.php | 0 cis/private/lehre/lesson.php | 0 cis/private/lehre/pruefung/pruefung.js.php | 0 .../pruefung/pruefungsanmeldung.json.php | 0 .../lehre/pruefung/pruefungsanmeldung.php | 0 .../pruefungsanmeldungen_liste.pdf.php | 0 .../pruefung/pruefungsanmeldungen_liste.php | 0 .../pruefungsanmeldungen_verwalten.php | 0 .../lehre/pruefung/pruefungsbewertung.js.php | 0 .../pruefung/pruefungsbewertung.json.php | 0 .../lehre/pruefung/pruefungsbewertung.php | 0 .../pruefung/pruefungsfenster_anlegen.php | 0 .../lehre/pruefung/pruefungstermin.json.php | 0 .../pruefung/pruefungstermin_aendern.php | 0 .../pruefung/pruefungstermin_festlegen.php | 0 cis/private/lehre/swd.php | 0 cis/private/outgoing/akteupload.php | 0 cis/private/outgoing/outgoing.php | 0 cis/private/outgoing/registration.php | 0 cis/private/profile/dokumente.php | 0 cis/private/profile/freebusy.php | 0 cis/private/profile/studienplan.php | 0 cis/private/profile/urlaubsfreigabe.php | 0 cis/private/profile/urlaubstool.php | 0 cis/private/profile/zeitsperre_resturlaub.php | 0 cis/private/tools/ampelleiteruebersicht.php | 0 cis/private/tools/ampelverwaltung.php | 0 cis/private/tools/suche.php | 0 cis/private/tools/zeitaufzeichnung.php | 0 cis/public/accountactivation.php | 0 cis/public/coodle.php | 0 cis/public/freebusy.php | 0 cis/public/freebusy_coodle.php | 0 cis/public/freebusy_lvplan.php | 0 cis/public/freebusy_sogo.php | 0 cis/public/freebusy_zeitsperren.php | 0 cis/public/prestudententool/auth.php | 0 cis/public/prestudententool/index.php | 0 cis/public/prestudententool/prestudent.php | 0 cis/testtool/admin/uebersichtFragen.php | 0 cms/admin_dms.php | 0 cms/image.php | 0 cms/index.html | 0 cms/menu.inc.php | 0 cms/menu/menu_addon.class.php | 0 cms/menu/menu_addon_freifaecher.inc.php | 0 .../menu_addon_lehrveranstaltungen.inc.php | 0 cms/menu/menu_addon_meinelv.inc.php | 0 cms/menu/menu_addon_spacer.inc.php | 0 cms/menu/menu_addon_test.inc.php | 0 cms/menu/menu_addon_urlaub.inc.php | 0 cms/menu/menu_addon_zeitsperren.inc.php | 0 cms/news.php | 0 cms/newsverwaltung.php | 0 composer.json | 0 config/cis.config-default.inc.php | 0 content/createAusbildungsvertrag.php | 0 content/dokumentenakt.pdf.php | 0 content/notiz.xml.php | 0 content/planner.js.php | 0 content/planner.overlay.js.php | 0 content/planner.overlay.xul.php | 0 content/planner.xul.php | 0 content/projekt/GanttChart.svg | 0 content/projekt/bestellung.overlay.js.php | 0 content/projekt/bestellung.overlay.xul.php | 0 content/projekt/gantt.css | 0 content/projekt/gantt.overlay.js.php | 0 content/projekt/gantt.overlay.xul.php | 0 content/projekt/gantt.svg.css | 0 content/projekt/gantt.svg.php | 0 content/projekt/gantt.svg.xbl | 0 content/projekt/mantisdetail.overlay.xul.php | 0 content/projekt/parsedown.php | 0 content/projekt/projekt.overlay.js.php | 0 content/projekt/projekt.overlay.xul.php | 0 .../projekt/projekt_ressource.window.js.php | 0 .../projekt/projekt_ressource.window.xul.php | 0 content/projekt/projektdetail.overlay.xul.php | 0 .../projekt/projektdokument.overlay.js.php | 0 .../projekt/projektdokument.overlay.xul.php | 0 content/projekt/projektdokument.window.js.php | 0 .../projekt/projektdokument.window.xul.php | 0 content/projekt/projektphase.overlay.js.php | 0 content/projekt/projektphase.overlay.xul.php | 0 .../projektphasedetail.overlay.xul.php | 0 content/projekt/projekttask.overlay.js.php | 0 content/projekt/projekttask.overlay.xul.php | 0 .../projekt/projekttaskdetail.overlay.xul.php | 0 content/projekt/ressource.js.php | 0 content/projekt/ressource.overlay.js.php | 0 content/projekt/ressource.overlay.xul.php | 0 content/projekt/ressource.xml.php | 0 content/projekt/ressourcenauslastung.php | 0 content/projektbeschreibung.php | 0 content/statistik/StudierendeZGV.php | 0 content/statistik/dropout.php | 0 content/statistik/dropoutZGV.php | 0 .../student/studentabschlusspruefung.js.php | 0 .../studentabschlusspruefungoverlay.xul.php | 0 content/zutrittskarte.php | 0 include/abschlusspruefung.class.php | 0 include/ampel.class.php | 0 include/auth_demo.class.php | 0 include/coodle.class.php | 0 include/fotostatus.class.php | 0 include/freebusy.class.php | 0 include/functions.inc.php | 0 include/gantt.class.php | 0 include/globals.inc.php | 0 include/ical.class.php | 0 include/infoscreen.class.php | 0 include/js/fullcalendar/fullcalendar.css | 0 include/js/fullcalendar/fullcalendar.js | 0 include/js/fullcalendar/fullcalendar.min.js | 0 .../js/fullcalendar/fullcalendar.print.css | 0 include/js/fullcalendar/gcal.js | 0 include/js/jstree/README.txt | 0 include/js/jstree/_docs/!style.css | 0 include/js/jstree/_docs/_drive.png | Bin include/js/jstree/_docs/_html_data.html | 0 include/js/jstree/_docs/_json_data.json | 0 include/js/jstree/_docs/_search_data.json | 0 include/js/jstree/_docs/_search_result.json | 0 include/js/jstree/_docs/_xml_flat.xml | 0 include/js/jstree/_docs/_xml_nest.xml | 0 include/js/jstree/_docs/checkbox.html | 0 include/js/jstree/_docs/contextmenu.html | 0 include/js/jstree/_docs/cookies.html | 0 include/js/jstree/_docs/core.html | 0 include/js/jstree/_docs/crrm.html | 0 include/js/jstree/_docs/dnd.html | 0 include/js/jstree/_docs/hotkeys.html | 0 include/js/jstree/_docs/html_data.html | 0 include/js/jstree/_docs/index.html | 0 include/js/jstree/_docs/json_data.html | 0 include/js/jstree/_docs/languages.html | 0 include/js/jstree/_docs/logo.png | Bin include/js/jstree/_docs/search.html | 0 include/js/jstree/_docs/sort.html | 0 include/js/jstree/_docs/syntax/!script.js | 0 include/js/jstree/_docs/syntax/!style.css | 0 include/js/jstree/_docs/syntax/clipboard.swf | Bin include/js/jstree/_docs/syntax/help.png | Bin include/js/jstree/_docs/syntax/magnifier.png | Bin .../jstree/_docs/syntax/page_white_code.png | Bin .../jstree/_docs/syntax/page_white_copy.png | Bin include/js/jstree/_docs/syntax/printer.png | Bin include/js/jstree/_docs/syntax/wrapping.png | Bin include/js/jstree/_docs/themeroller.html | 0 include/js/jstree/_docs/themes.html | 0 include/js/jstree/_docs/types.html | 0 include/js/jstree/_docs/ui.html | 0 include/js/jstree/_docs/unique.html | 0 include/js/jstree/_docs/xml_data.html | 0 include/js/jstree/_lib/jquery.cookie.js | 0 include/js/jstree/_lib/jquery.hotkeys.js | 0 include/js/jstree/_lib/jquery.js | 0 include/js/jstree/jquery.jstree.js | 0 include/js/jstree/themes/apple/bg.jpg | Bin include/js/jstree/themes/apple/d.png | Bin include/js/jstree/themes/apple/dot_for_ie.gif | Bin include/js/jstree/themes/apple/style.css | 0 include/js/jstree/themes/apple/throbber.gif | Bin include/js/jstree/themes/classic/d.gif | Bin include/js/jstree/themes/classic/d.png | Bin .../js/jstree/themes/classic/dot_for_ie.gif | Bin include/js/jstree/themes/classic/style.css | 0 include/js/jstree/themes/classic/throbber.gif | Bin include/js/jstree/themes/default-rtl/d.gif | Bin include/js/jstree/themes/default-rtl/d.png | Bin include/js/jstree/themes/default-rtl/dots.gif | Bin .../js/jstree/themes/default-rtl/style.css | 0 .../js/jstree/themes/default-rtl/throbber.gif | Bin include/js/jstree/themes/default/d.gif | Bin include/js/jstree/themes/default/d.png | Bin include/js/jstree/themes/default/style.css | 0 include/js/jstree/themes/default/throbber.gif | Bin include/js/treeGrid/.gitignore | 0 include/js/treeGrid/CHANGELOG.txt | 0 include/js/treeGrid/LICENSE | 0 include/js/treeGrid/README.md | 0 include/js/treeGrid/css/jquery.treegrid.css | 0 .../css/bootstrap-responsive.css | 0 .../css/bootstrap-responsive.min.css | 0 .../bootstrap-2.3.2/css/bootstrap.css | 0 .../bootstrap-2.3.2/css/bootstrap.min.css | 0 .../img/glyphicons-halflings-white.png | Bin .../img/glyphicons-halflings.png | Bin .../examples/bootstrap-2.3.2/js/bootstrap.js | 0 .../bootstrap-2.3.2/js/bootstrap.min.js | 0 .../bootstrap-3.0.0/css/bootstrap-theme.css | 0 .../css/bootstrap-theme.min.css | 0 .../bootstrap-3.0.0/css/bootstrap.css | 0 .../bootstrap-3.0.0/css/bootstrap.min.css | 0 .../fonts/glyphicons-halflings-regular.eot | Bin .../fonts/glyphicons-halflings-regular.svg | 0 .../fonts/glyphicons-halflings-regular.ttf | Bin .../fonts/glyphicons-halflings-regular.woff | Bin .../examples/bootstrap-3.0.0/js/bootstrap.js | 0 .../bootstrap-3.0.0/js/bootstrap.min.js | 0 .../js/treeGrid/examples/example-basic.html | 0 .../examples/example-bootstrap-2.html | 0 .../examples/example-bootstrap-3.html | 0 .../js/treeGrid/examples/example-column.html | 0 .../treeGrid/examples/example-save-state.html | 0 include/js/treeGrid/img/collapse.png | Bin include/js/treeGrid/img/expand.png | Bin include/js/treeGrid/img/file.png | Bin include/js/treeGrid/img/folder.png | Bin include/js/treeGrid/index.html | 0 include/js/treeGrid/js/jquery-1.10.2.js | 0 include/js/treeGrid/js/jquery.cookie.js | 0 .../treeGrid/js/jquery.treegrid.bootstrap2.js | 0 .../treeGrid/js/jquery.treegrid.bootstrap3.js | 0 include/js/treeGrid/js/jquery.treegrid.js | 0 include/js/treeGrid/jstreegrid.js | 0 include/js/treeGrid/params.json | 0 include/js/treeGrid/styles.css | 0 include/js/treeGrid/test.html | 0 include/js/treeGrid/tests/qunit-1.12.0.css | 0 include/js/treeGrid/tests/qunit-1.12.0.js | 0 include/js/treeGrid/tests/tests.js | 0 include/js/treeGrid/treegrid.jquery.json | 0 include/konto.class.php | 0 include/legesamtnote.class.php | 0 include/lehre_tools.class.php | 0 include/lehrtyp.class.php | 0 include/lehrveranstaltung.class.php | 0 include/mantis.class.php | 0 include/notiz.class.php | 0 include/preoutgoing.class.php | 0 include/prestudent.class.php | 0 include/projekt.class.php | 0 include/projektbenutzer.class.php | 0 include/projektphase.class.php | 0 include/projekttask.class.php | 0 include/pruefung.class.php | 0 include/pruefungCis.class.php | 0 include/rdf.class.php | 0 include/ressource.class.php | 0 include/sabredav/ChangeLog | 0 include/sabredav/LICENSE | 0 include/sabredav/README.md | 0 include/sabredav/bin/build.php | 0 include/sabredav/bin/googlecode_upload.py | 0 include/sabredav/bin/migrateto17.php | 0 include/sabredav/bin/naturalselection.py | 0 include/sabredav/bin/sabredav | 0 include/sabredav/bin/sabredav.php | 0 include/sabredav/bin/vobjectvalidate.php | 0 include/sabredav/composer.json | 0 include/sabredav/composer.lock | 0 .../sabredav/examples/addressbookserver.php | 0 include/sabredav/examples/basicauth.php | 0 include/sabredav/examples/calendarserver.php | 0 include/sabredav/examples/digestauth.php | 0 include/sabredav/examples/fileserver.php | 0 include/sabredav/examples/groupwareserver.php | 0 include/sabredav/examples/simplefsserver.php | 0 .../examples/sql/mysql.addressbook.sql | 0 .../sabredav/examples/sql/mysql.calendars.sql | 0 include/sabredav/examples/sql/mysql.locks.sql | 0 .../examples/sql/mysql.principals.sql | 0 include/sabredav/examples/sql/mysql.users.sql | 0 .../examples/sql/pgsql.addressbook.sql | 0 .../sabredav/examples/sql/pgsql.calendars.sql | 0 include/sabredav/examples/sql/pgsql.locks.sql | 0 .../examples/sql/pgsql.principals.sql | 0 include/sabredav/examples/sql/pgsql.users.sql | 0 .../examples/sql/sqlite.addressbooks.sql | 0 .../examples/sql/sqlite.calendars.sql | 0 .../sabredav/examples/sql/sqlite.locks.sql | 0 .../examples/sql/sqlite.principals.sql | 0 .../sabredav/examples/sql/sqlite.users.sql | 0 .../examples/webserver/apache2_htaccess.conf | 0 .../examples/webserver/apache2_vhost.conf | 0 .../examples/webserver/apache2_vhost_cgi.conf | 0 .../Sabre/CalDAV/Backend/AbstractBackend.php | 0 .../Sabre/CalDAV/Backend/BackendInterface.php | 0 .../CalDAV/Backend/NotificationSupport.php | 0 .../sabredav/lib/Sabre/CalDAV/Backend/PDO.php | 0 .../Sabre/CalDAV/Backend/SharingSupport.php | 0 .../sabredav/lib/Sabre/CalDAV/Calendar.php | 0 .../lib/Sabre/CalDAV/CalendarObject.php | 0 .../lib/Sabre/CalDAV/CalendarQueryParser.php | 0 .../Sabre/CalDAV/CalendarQueryValidator.php | 0 .../lib/Sabre/CalDAV/CalendarRootNode.php | 0 .../CalDAV/Exception/InvalidComponentType.php | 0 .../lib/Sabre/CalDAV/ICSExportPlugin.php | 0 .../sabredav/lib/Sabre/CalDAV/ICalendar.php | 0 .../lib/Sabre/CalDAV/ICalendarObject.php | 0 .../lib/Sabre/CalDAV/IShareableCalendar.php | 0 .../lib/Sabre/CalDAV/ISharedCalendar.php | 0 .../Sabre/CalDAV/Notifications/Collection.php | 0 .../CalDAV/Notifications/ICollection.php | 0 .../lib/Sabre/CalDAV/Notifications/INode.php | 0 .../Notifications/INotificationType.php | 0 .../lib/Sabre/CalDAV/Notifications/Node.php | 0 .../Notifications/Notification/Invite.php | 0 .../Notification/InviteReply.php | 0 .../Notification/SystemStatus.php | 0 include/sabredav/lib/Sabre/CalDAV/Plugin.php | 0 .../lib/Sabre/CalDAV/Principal/Collection.php | 0 .../lib/Sabre/CalDAV/Principal/IProxyRead.php | 0 .../Sabre/CalDAV/Principal/IProxyWrite.php | 0 .../lib/Sabre/CalDAV/Principal/ProxyRead.php | 0 .../lib/Sabre/CalDAV/Principal/ProxyWrite.php | 0 .../lib/Sabre/CalDAV/Principal/User.php | 0 .../CalDAV/Property/AllowedSharingModes.php | 0 .../lib/Sabre/CalDAV/Property/Invite.php | 0 .../Property/ScheduleCalendarTransp.php | 0 .../SupportedCalendarComponentSet.php | 0 .../CalDAV/Property/SupportedCalendarData.php | 0 .../CalDAV/Property/SupportedCollationSet.php | 0 .../lib/Sabre/CalDAV/Schedule/IMip.php | 0 .../lib/Sabre/CalDAV/Schedule/IOutbox.php | 0 .../lib/Sabre/CalDAV/Schedule/Outbox.php | 0 .../lib/Sabre/CalDAV/ShareableCalendar.php | 0 .../lib/Sabre/CalDAV/SharedCalendar.php | 0 .../lib/Sabre/CalDAV/SharingPlugin.php | 0 .../lib/Sabre/CalDAV/UserCalendars.php | 0 include/sabredav/lib/Sabre/CalDAV/Version.php | 0 .../lib/Sabre/CardDAV/AddressBook.php | 0 .../Sabre/CardDAV/AddressBookQueryParser.php | 0 .../lib/Sabre/CardDAV/AddressBookRoot.php | 0 .../Sabre/CardDAV/Backend/AbstractBackend.php | 0 .../CardDAV/Backend/BackendInterface.php | 0 .../lib/Sabre/CardDAV/Backend/PDO.php | 0 include/sabredav/lib/Sabre/CardDAV/Card.php | 0 .../lib/Sabre/CardDAV/IAddressBook.php | 0 include/sabredav/lib/Sabre/CardDAV/ICard.php | 0 .../sabredav/lib/Sabre/CardDAV/IDirectory.php | 0 include/sabredav/lib/Sabre/CardDAV/Plugin.php | 0 .../CardDAV/Property/SupportedAddressData.php | 0 .../lib/Sabre/CardDAV/UserAddressBooks.php | 0 .../lib/Sabre/CardDAV/VCFExportPlugin.php | 0 .../sabredav/lib/Sabre/CardDAV/Version.php | 0 .../Sabre/DAV/Auth/Backend/AbstractBasic.php | 0 .../Sabre/DAV/Auth/Backend/AbstractDigest.php | 0 .../lib/Sabre/DAV/Auth/Backend/Apache.php | 0 .../DAV/Auth/Backend/BackendInterface.php | 0 .../lib/Sabre/DAV/Auth/Backend/File.php | 0 .../lib/Sabre/DAV/Auth/Backend/PDO.php | 0 .../sabredav/lib/Sabre/DAV/Auth/Plugin.php | 0 .../Sabre/DAV/Browser/GuessContentType.php | 0 .../Sabre/DAV/Browser/MapGetToPropFind.php | 0 .../sabredav/lib/Sabre/DAV/Browser/Plugin.php | 0 .../lib/Sabre/DAV/Browser/assets/favicon.ico | Bin .../DAV/Browser/assets/icons/addressbook.png | Bin .../DAV/Browser/assets/icons/calendar.png | Bin .../Sabre/DAV/Browser/assets/icons/card.png | Bin .../DAV/Browser/assets/icons/collection.png | Bin .../Sabre/DAV/Browser/assets/icons/file.png | Bin .../Sabre/DAV/Browser/assets/icons/parent.png | Bin .../DAV/Browser/assets/icons/principal.png | Bin include/sabredav/lib/Sabre/DAV/Client.php | 0 include/sabredav/lib/Sabre/DAV/Collection.php | 0 include/sabredav/lib/Sabre/DAV/Exception.php | 0 .../lib/Sabre/DAV/Exception/BadRequest.php | 0 .../lib/Sabre/DAV/Exception/Conflict.php | 0 .../Sabre/DAV/Exception/ConflictingLock.php | 0 .../lib/Sabre/DAV/Exception/FileNotFound.php | 0 .../lib/Sabre/DAV/Exception/Forbidden.php | 0 .../DAV/Exception/InsufficientStorage.php | 0 .../DAV/Exception/InvalidResourceType.php | 0 .../Sabre/DAV/Exception/LengthRequired.php | 0 .../Exception/LockTokenMatchesRequestUri.php | 0 .../lib/Sabre/DAV/Exception/Locked.php | 0 .../Sabre/DAV/Exception/MethodNotAllowed.php | 0 .../Sabre/DAV/Exception/NotAuthenticated.php | 0 .../lib/Sabre/DAV/Exception/NotFound.php | 0 .../Sabre/DAV/Exception/NotImplemented.php | 0 .../Sabre/DAV/Exception/PaymentRequired.php | 0 .../DAV/Exception/PreconditionFailed.php | 0 .../DAV/Exception/ReportNotSupported.php | 0 .../RequestedRangeNotSatisfiable.php | 0 .../DAV/Exception/ServiceUnavailable.php | 0 .../DAV/Exception/UnsupportedMediaType.php | 0 .../sabredav/lib/Sabre/DAV/FS/Directory.php | 0 include/sabredav/lib/Sabre/DAV/FS/File.php | 0 include/sabredav/lib/Sabre/DAV/FS/Node.php | 0 .../lib/Sabre/DAV/FSExt/Directory.php | 0 include/sabredav/lib/Sabre/DAV/FSExt/File.php | 0 include/sabredav/lib/Sabre/DAV/FSExt/Node.php | 0 include/sabredav/lib/Sabre/DAV/File.php | 0 .../sabredav/lib/Sabre/DAV/ICollection.php | 0 .../lib/Sabre/DAV/IExtendedCollection.php | 0 include/sabredav/lib/Sabre/DAV/IFile.php | 0 include/sabredav/lib/Sabre/DAV/INode.php | 0 .../sabredav/lib/Sabre/DAV/IProperties.php | 0 include/sabredav/lib/Sabre/DAV/IQuota.php | 0 .../DAV/Locks/Backend/AbstractBackend.php | 0 .../DAV/Locks/Backend/BackendInterface.php | 0 .../lib/Sabre/DAV/Locks/Backend/FS.php | 0 .../lib/Sabre/DAV/Locks/Backend/File.php | 0 .../lib/Sabre/DAV/Locks/Backend/PDO.php | 0 .../sabredav/lib/Sabre/DAV/Locks/LockInfo.php | 0 .../sabredav/lib/Sabre/DAV/Locks/Plugin.php | 0 .../sabredav/lib/Sabre/DAV/Mount/Plugin.php | 0 include/sabredav/lib/Sabre/DAV/Node.php | 0 include/sabredav/lib/Sabre/DAV/ObjectTree.php | 0 .../lib/Sabre/DAV/PartialUpdate/IFile.php | 0 .../Sabre/DAV/PartialUpdate/IPatchSupport.php | 0 .../lib/Sabre/DAV/PartialUpdate/Plugin.php | 0 include/sabredav/lib/Sabre/DAV/Property.php | 0 .../Sabre/DAV/Property/GetLastModified.php | 0 .../sabredav/lib/Sabre/DAV/Property/Href.php | 0 .../lib/Sabre/DAV/Property/HrefList.php | 0 .../sabredav/lib/Sabre/DAV/Property/IHref.php | 0 .../lib/Sabre/DAV/Property/LockDiscovery.php | 0 .../lib/Sabre/DAV/Property/ResourceType.php | 0 .../lib/Sabre/DAV/Property/Response.php | 0 .../lib/Sabre/DAV/Property/ResponseList.php | 0 .../lib/Sabre/DAV/Property/SupportedLock.php | 0 .../Sabre/DAV/Property/SupportedReportSet.php | 0 .../lib/Sabre/DAV/PropertyInterface.php | 0 include/sabredav/lib/Sabre/DAV/Server.php | 0 .../sabredav/lib/Sabre/DAV/ServerPlugin.php | 0 .../lib/Sabre/DAV/SimpleCollection.php | 0 include/sabredav/lib/Sabre/DAV/SimpleFile.php | 0 include/sabredav/lib/Sabre/DAV/StringUtil.php | 0 .../Sabre/DAV/TemporaryFileFilterPlugin.php | 0 include/sabredav/lib/Sabre/DAV/Tree.php | 0 .../lib/Sabre/DAV/Tree/Filesystem.php | 0 include/sabredav/lib/Sabre/DAV/URLUtil.php | 0 include/sabredav/lib/Sabre/DAV/UUIDUtil.php | 0 include/sabredav/lib/Sabre/DAV/Version.php | 0 include/sabredav/lib/Sabre/DAV/XMLUtil.php | 0 .../DAVACL/AbstractPrincipalCollection.php | 0 .../Sabre/DAVACL/Exception/AceConflict.php | 0 .../Sabre/DAVACL/Exception/NeedPrivileges.php | 0 .../lib/Sabre/DAVACL/Exception/NoAbstract.php | 0 .../Exception/NotRecognizedPrincipal.php | 0 .../Exception/NotSupportedPrivilege.php | 0 include/sabredav/lib/Sabre/DAVACL/IACL.php | 0 .../sabredav/lib/Sabre/DAVACL/IPrincipal.php | 0 .../lib/Sabre/DAVACL/IPrincipalCollection.php | 0 include/sabredav/lib/Sabre/DAVACL/Plugin.php | 0 .../sabredav/lib/Sabre/DAVACL/Principal.php | 0 .../PrincipalBackend/AbstractBackend.php | 0 .../PrincipalBackend/BackendInterface.php | 0 .../lib/Sabre/DAVACL/PrincipalBackend/PDO.php | 0 .../lib/Sabre/DAVACL/PrincipalCollection.php | 0 .../lib/Sabre/DAVACL/Property/Acl.php | 0 .../Sabre/DAVACL/Property/AclRestrictions.php | 0 .../Property/CurrentUserPrivilegeSet.php | 0 .../lib/Sabre/DAVACL/Property/Principal.php | 0 .../DAVACL/Property/SupportedPrivilegeSet.php | 0 include/sabredav/lib/Sabre/DAVACL/Version.php | 0 include/sabredav/lib/Sabre/HTTP/AWSAuth.php | 0 .../sabredav/lib/Sabre/HTTP/AbstractAuth.php | 0 include/sabredav/lib/Sabre/HTTP/BasicAuth.php | 0 .../sabredav/lib/Sabre/HTTP/DigestAuth.php | 0 include/sabredav/lib/Sabre/HTTP/Request.php | 0 include/sabredav/lib/Sabre/HTTP/Response.php | 0 include/sabredav/lib/Sabre/HTTP/Util.php | 0 include/sabredav/lib/Sabre/HTTP/Version.php | 0 include/sabredav/lib/Sabre/autoload.php | 0 .../Sabre/CalDAV/Backend/AbstractPDOTest.php | 0 .../Sabre/CalDAV/Backend/AbstractTest.php | 0 .../tests/Sabre/CalDAV/Backend/Mock.php | 0 .../Sabre/CalDAV/Backend/PDOMySQLTest.php | 0 .../Sabre/CalDAV/Backend/PDOSqliteTest.php | 0 .../tests/Sabre/CalDAV/CalendarObjectTest.php | 0 .../Sabre/CalDAV/CalendarQueryParserTest.php | 0 .../Sabre/CalDAV/CalendarQueryVAlarmTest.php | 0 .../CalDAV/CalendarQueryValidatorTest.php | 0 .../tests/Sabre/CalDAV/CalendarTest.php | 0 .../ExpandEventsDTSTARTandDTENDTest.php | 0 .../ExpandEventsDTSTARTandDTENDbyDayTest.php | 0 .../CalDAV/ExpandEventsDoubleEventsTest.php | 0 .../tests/Sabre/CalDAV/FreeBusyReportTest.php | 0 .../Sabre/CalDAV/FreeBusyRequestTest.php | 0 .../Sabre/CalDAV/GetEventsByTimerangeTest.php | 0 .../Sabre/CalDAV/ICSExportPluginTest.php | 0 .../tests/Sabre/CalDAV/Issue166Test.php | 0 .../tests/Sabre/CalDAV/Issue172Test.php | 0 .../tests/Sabre/CalDAV/Issue203Test.php | 0 .../tests/Sabre/CalDAV/Issue205Test.php | 0 .../tests/Sabre/CalDAV/Issue211Test.php | 0 .../tests/Sabre/CalDAV/Issue220Test.php | 0 .../tests/Sabre/CalDAV/Issue228Test.php | 0 .../CalDAV/Notifications/CollectionTest.php | 0 .../Sabre/CalDAV/Notifications/NodeTest.php | 0 .../Notification/InviteReplyTest.php | 0 .../Notifications/Notification/InviteTest.php | 0 .../Notification/SystemStatusTest.php | 0 .../tests/Sabre/CalDAV/OutboxPostTest.php | 0 .../tests/Sabre/CalDAV/PluginTest.php | 0 .../Sabre/CalDAV/Principal/CollectionTest.php | 0 .../Sabre/CalDAV/Principal/ProxyReadTest.php | 0 .../Sabre/CalDAV/Principal/ProxyWriteTest.php | 0 .../tests/Sabre/CalDAV/Principal/UserTest.php | 0 .../Property/AllowedSharingModesTest.php | 0 .../Sabre/CalDAV/Property/InviteTest.php | 0 .../Property/ScheduleCalendarTranspTest.php | 0 .../SupportedCalendarComponentSetTest.php | 0 .../Property/SupportedCalendarDataTest.php | 0 .../Property/SupportedCollationSetTest.php | 0 .../tests/Sabre/CalDAV/Schedule/IMip/Mock.php | 0 .../Sabre/CalDAV/Schedule/OutboxTest.php | 0 .../Sabre/CalDAV/ShareableCalendarTest.php | 0 .../tests/Sabre/CalDAV/SharedCalendarTest.php | 0 .../tests/Sabre/CalDAV/SharingPluginTest.php | 0 .../sabredav/tests/Sabre/CalDAV/TestUtil.php | 0 .../UserCalendarsSharedCalendarsTest.php | 0 .../tests/Sabre/CalDAV/UserCalendarsTest.php | 0 .../tests/Sabre/CalDAV/ValidateICalTest.php | 0 .../tests/Sabre/CalDAV/VersionTest.php | 0 .../Sabre/CardDAV/AbstractPluginTest.php | 0 .../CardDAV/AddressBookQueryParserTest.php | 0 .../Sabre/CardDAV/AddressBookQueryTest.php | 0 .../Sabre/CardDAV/AddressBookRootTest.php | 0 .../tests/Sabre/CardDAV/AddressBookTest.php | 0 .../Sabre/CardDAV/Backend/AbstractPDOTest.php | 0 .../tests/Sabre/CardDAV/Backend/Mock.php | 0 .../Sabre/CardDAV/Backend/PDOMySQLTest.php | 0 .../Sabre/CardDAV/Backend/PDOSqliteTest.php | 0 .../sabredav/tests/Sabre/CardDAV/CardTest.php | 0 .../tests/Sabre/CardDAV/IDirectoryTest.php | 0 .../tests/Sabre/CardDAV/MultiGetTest.php | 0 .../tests/Sabre/CardDAV/PluginTest.php | 0 .../Property/SupportedAddressDataTest.php | 0 .../CardDAV/SogoStripContentTypeTest.php | 0 .../sabredav/tests/Sabre/CardDAV/TestUtil.php | 0 .../Sabre/CardDAV/UserAddressBooksTest.php | 0 .../tests/Sabre/CardDAV/VCFExportTest.php | 0 .../Sabre/CardDAV/ValidateFilterTest.php | 0 .../tests/Sabre/CardDAV/ValidateVCardTest.php | 0 .../tests/Sabre/CardDAV/VersionTest.php | 0 .../tests/Sabre/DAV/AbstractServer.php | 0 .../DAV/Auth/Backend/AbstractBasicTest.php | 0 .../DAV/Auth/Backend/AbstractDigestTest.php | 0 .../DAV/Auth/Backend/AbstractPDOTest.php | 0 .../Sabre/DAV/Auth/Backend/ApacheTest.php | 0 .../tests/Sabre/DAV/Auth/Backend/FileTest.php | 0 .../tests/Sabre/DAV/Auth/Backend/Mock.php | 0 .../Sabre/DAV/Auth/Backend/PDOMySQLTest.php | 0 .../Sabre/DAV/Auth/Backend/PDOSqliteTest.php | 0 .../tests/Sabre/DAV/Auth/PluginTest.php | 0 .../tests/Sabre/DAV/BasicNodeTest.php | 0 .../DAV/Browser/GuessContentTypeTest.php | 0 .../DAV/Browser/MapGetToPropFindTest.php | 0 .../tests/Sabre/DAV/Browser/PluginTest.php | 0 .../sabredav/tests/Sabre/DAV/ClientMock.php | 0 .../sabredav/tests/Sabre/DAV/ClientTest.php | 0 .../tests/Sabre/DAV/Exception/LockedTest.php | 0 .../DAV/Exception/PaymentRequiredTest.php | 0 .../tests/Sabre/DAV/ExceptionTest.php | 0 .../tests/Sabre/DAV/FSExt/FileTest.php | 0 .../tests/Sabre/DAV/FSExt/NodeTest.php | 0 .../tests/Sabre/DAV/FSExt/ServerTest.php | 0 .../tests/Sabre/DAV/HTTPPreferParsingTest.php | 0 .../tests/Sabre/DAV/HttpDeleteTest.php | 0 .../sabredav/tests/Sabre/DAV/HttpPutTest.php | 0 .../sabredav/tests/Sabre/DAV/Issue33Test.php | 0 .../Sabre/DAV/Locks/Backend/AbstractTest.php | 0 .../tests/Sabre/DAV/Locks/Backend/FSTest.php | 0 .../Sabre/DAV/Locks/Backend/FileTest.php | 0 .../Sabre/DAV/Locks/Backend/PDOMySQLTest.php | 0 .../tests/Sabre/DAV/Locks/Backend/PDOTest.php | 0 .../Sabre/DAV/Locks/GetIfConditionsTest.php | 0 .../tests/Sabre/DAV/Locks/MSWordTest.php | 0 .../tests/Sabre/DAV/Locks/PluginTest.php | 0 .../tests/Sabre/DAV/Mock/Collection.php | 0 .../sabredav/tests/Sabre/DAV/Mock/File.php | 0 .../tests/Sabre/DAV/Mount/PluginTest.php | 0 .../tests/Sabre/DAV/ObjectTreeTest.php | 0 .../Sabre/DAV/PartialUpdate/FileMock.php | 0 .../Sabre/DAV/PartialUpdate/PluginTest.php | 0 .../DAV/PartialUpdate/SpecificationTest.php | 0 .../DAV/Property/GetLastModifiedTest.php | 0 .../tests/Sabre/DAV/Property/HrefListTest.php | 0 .../tests/Sabre/DAV/Property/HrefTest.php | 0 .../Sabre/DAV/Property/ResourceTypeTest.php | 0 .../Sabre/DAV/Property/ResponseListTest.php | 0 .../tests/Sabre/DAV/Property/ResponseTest.php | 0 .../DAV/Property/SupportedReportSetTest.php | 0 .../tests/Sabre/DAV/ServerCopyMoveTest.php | 0 .../tests/Sabre/DAV/ServerEventsTest.php | 0 .../tests/Sabre/DAV/ServerMKCOLTest.php | 0 .../tests/Sabre/DAV/ServerPluginTest.php | 0 .../Sabre/DAV/ServerPreconditionTest.php | 0 .../tests/Sabre/DAV/ServerPropsTest.php | 0 .../tests/Sabre/DAV/ServerRangeTest.php | 0 .../tests/Sabre/DAV/ServerSimpleTest.php | 0 .../Sabre/DAV/ServerUpdatePropertiesTest.php | 0 .../tests/Sabre/DAV/SimpleFileTest.php | 0 .../tests/Sabre/DAV/StringUtilTest.php | 0 .../Sabre/DAV/TemporaryFileFilterTest.php | 0 .../sabredav/tests/Sabre/DAV/TestPlugin.php | 0 .../tests/Sabre/DAV/Tree/FilesystemTest.php | 0 include/sabredav/tests/Sabre/DAV/TreeTest.php | 0 .../sabredav/tests/Sabre/DAV/URLUtilTest.php | 0 .../sabredav/tests/Sabre/DAV/UUIDUtilTest.php | 0 .../sabredav/tests/Sabre/DAV/XMLUtilTest.php | 0 .../tests/Sabre/DAVACL/ACLMethodTest.php | 0 .../tests/Sabre/DAVACL/AllowAccessTest.php | 0 .../tests/Sabre/DAVACL/BlockAccessTest.php | 0 .../DAVACL/Exception/AceConflictTest.php | 0 .../Exception/NeedPrivilegesExceptionTest.php | 0 .../Sabre/DAVACL/Exception/NoAbstractTest.php | 0 .../Exception/NotRecognizedPrincipalTest.php | 0 .../Exception/NotSupportedPrivilegeTest.php | 0 .../Sabre/DAVACL/ExpandPropertiesTest.php | 0 .../tests/Sabre/DAVACL/MockACLNode.php | 0 .../tests/Sabre/DAVACL/MockPrincipal.php | 0 .../tests/Sabre/DAVACL/PluginAdminTest.php | 0 .../Sabre/DAVACL/PluginPropertiesTest.php | 0 .../DAVACL/PluginUpdatePropertiesTest.php | 0 .../PrincipalBackend/AbstractPDOTest.php | 0 .../Sabre/DAVACL/PrincipalBackend/Mock.php | 0 .../DAVACL/PrincipalBackend/PDOMySQLTest.php | 0 .../DAVACL/PrincipalBackend/PDOSqliteTest.php | 0 .../Sabre/DAVACL/PrincipalCollectionTest.php | 0 .../DAVACL/PrincipalPropertySearchTest.php | 0 .../DAVACL/PrincipalSearchPropertySetTest.php | 0 .../tests/Sabre/DAVACL/PrincipalTest.php | 0 .../DAVACL/Property/ACLRestrictionsTest.php | 0 .../tests/Sabre/DAVACL/Property/ACLTest.php | 0 .../Property/CurrentUserPrivilegeSetTest.php | 0 .../Sabre/DAVACL/Property/PrincipalTest.php | 0 .../Property/SupportedPrivilegeSetTest.php | 0 .../tests/Sabre/DAVACL/SimplePluginTest.php | 0 .../tests/Sabre/DAVACL/VersionTest.php | 0 .../sabredav/tests/Sabre/DAVServerTest.php | 0 .../sabredav/tests/Sabre/HTTP/AWSAuthTest.php | 0 .../tests/Sabre/HTTP/BasicAuthTest.php | 0 .../tests/Sabre/HTTP/DigestAuthTest.php | 0 .../sabredav/tests/Sabre/HTTP/RequestTest.php | 0 .../tests/Sabre/HTTP/ResponseMock.php | 0 .../tests/Sabre/HTTP/ResponseTest.php | 0 .../sabredav/tests/Sabre/HTTP/UtilTest.php | 0 .../sabredav/tests/Sabre/HTTP/VersionTest.php | 0 include/sabredav/tests/Sabre/TestUtil.php | 0 include/sabredav/tests/bootstrap.php | 0 include/sabredav/tests/composer.vobject3.json | 0 include/sabredav/tests/phpunit.xml | 0 include/sabredav/vendor/autoload.php | 0 .../sabredav/vendor/composer/ClassLoader.php | 0 .../vendor/composer/autoload_classmap.php | 0 .../vendor/composer/autoload_namespaces.php | 0 .../vendor/composer/autoload_psr4.php | 0 .../vendor/composer/autoload_real.php | 0 .../sabredav/vendor/composer/installed.json | 0 .../sabredav/vendor/sabre/vobject/.gitignore | 0 .../sabredav/vendor/sabre/vobject/.travis.yml | 0 .../sabredav/vendor/sabre/vobject/ChangeLog | 0 include/sabredav/vendor/sabre/vobject/LICENSE | 0 .../sabredav/vendor/sabre/vobject/README.md | 0 .../vendor/sabre/vobject/bin/bench.php | 0 .../vobject/bin/generateicalendardata.php | 0 .../sabre/vobject/bin/vobjectvalidate.php | 0 .../vendor/sabre/vobject/composer.json | 0 .../vobject/lib/Sabre/VObject/Component.php | 0 .../lib/Sabre/VObject/Component/VAlarm.php | 0 .../lib/Sabre/VObject/Component/VCalendar.php | 0 .../lib/Sabre/VObject/Component/VCard.php | 0 .../lib/Sabre/VObject/Component/VEvent.php | 0 .../lib/Sabre/VObject/Component/VFreeBusy.php | 0 .../lib/Sabre/VObject/Component/VJournal.php | 0 .../lib/Sabre/VObject/Component/VTodo.php | 0 .../lib/Sabre/VObject/DateTimeParser.php | 0 .../vobject/lib/Sabre/VObject/Document.php | 0 .../vobject/lib/Sabre/VObject/ElementList.php | 0 .../lib/Sabre/VObject/FreeBusyGenerator.php | 0 .../sabre/vobject/lib/Sabre/VObject/Node.php | 0 .../vobject/lib/Sabre/VObject/Parameter.php | 0 .../lib/Sabre/VObject/ParseException.php | 0 .../vobject/lib/Sabre/VObject/Property.php | 0 .../lib/Sabre/VObject/Property/Compound.php | 0 .../lib/Sabre/VObject/Property/DateTime.php | 0 .../Sabre/VObject/Property/MultiDateTime.php | 0 .../vobject/lib/Sabre/VObject/Reader.php | 0 .../lib/Sabre/VObject/RecurrenceIterator.php | 0 .../lib/Sabre/VObject/Splitter/ICalendar.php | 0 .../VObject/Splitter/SplitterInterface.php | 0 .../lib/Sabre/VObject/Splitter/VCard.php | 0 .../vobject/lib/Sabre/VObject/StringUtil.php | 0 .../lib/Sabre/VObject/TimeZoneUtil.php | 0 .../vobject/lib/Sabre/VObject/Version.php | 0 .../vobject/lib/Sabre/VObject/includes.php | 0 .../Sabre/VObject/Component/VAlarmTest.php | 0 .../Sabre/VObject/Component/VCalendarTest.php | 0 .../Sabre/VObject/Component/VCardTest.php | 0 .../Sabre/VObject/Component/VEventTest.php | 0 .../Sabre/VObject/Component/VFreeBusyTest.php | 0 .../Sabre/VObject/Component/VJournalTest.php | 0 .../Sabre/VObject/Component/VTodoTest.php | 0 .../tests/Sabre/VObject/ComponentTest.php | 0 .../Sabre/VObject/DateTimeParserTest.php | 0 .../tests/Sabre/VObject/DocumentTest.php | 0 .../tests/Sabre/VObject/ElementListTest.php | 0 .../tests/Sabre/VObject/EmClientTest.php | 0 .../Sabre/VObject/FreeBusyGeneratorTest.php | 0 .../tests/Sabre/VObject/Issue153Test.php | 0 .../tests/Sabre/VObject/Issue154Test.php | 0 .../tests/Sabre/VObject/Issue48Test.php | 0 .../tests/Sabre/VObject/Issue50Test.php | 0 .../tests/Sabre/VObject/ParameterTest.php | 0 .../Sabre/VObject/Property/CompoundTest.php | 0 .../Sabre/VObject/Property/DateTimeTest.php | 0 .../VObject/Property/MultiDateTimeTest.php | 0 .../tests/Sabre/VObject/PropertyTest.php | 0 .../tests/Sabre/VObject/ReaderTest.php | 0 ...urrenceIteratorFifthTuesdayProblemTest.php | 0 .../RecurrenceIteratorIncorrectExpandTest.php | 0 ...urrenceIteratorInfiniteLoopProblemTest.php | 0 .../RecurrenceIteratorMinusOneProblemTest.php | 0 ...ecurrenceIteratorMissingOverriddenTest.php | 0 .../Sabre/VObject/RecurrenceIteratorTest.php | 0 .../tests/Sabre/VObject/SlashRTest.php | 0 .../Sabre/VObject/Splitter/ICalendarTest.php | 0 .../Sabre/VObject/Splitter/VCardTest.php | 0 .../tests/Sabre/VObject/StringUtilTest.php | 0 .../tests/Sabre/VObject/TimeZoneUtilTest.php | 0 .../tests/Sabre/VObject/VersionTest.php | 0 .../vobject/tests/Sabre/VObject/issue153.vcf | 0 .../vendor/sabre/vobject/tests/bootstrap.php | 0 .../vendor/sabre/vobject/tests/phpunit.xml | 0 include/securimage/AHGBold.ttf | Bin include/securimage/LICENSE.txt | 0 include/securimage/README.FONT.txt | 0 include/securimage/README.txt | 0 include/securimage/WavFile.php | 0 include/securimage/audio/en/0.wav | Bin include/securimage/audio/en/1.wav | Bin include/securimage/audio/en/10.wav | Bin include/securimage/audio/en/11.wav | Bin include/securimage/audio/en/12.wav | Bin include/securimage/audio/en/13.wav | Bin include/securimage/audio/en/14.wav | Bin include/securimage/audio/en/15.wav | Bin include/securimage/audio/en/16.wav | Bin include/securimage/audio/en/17.wav | Bin include/securimage/audio/en/18.wav | Bin include/securimage/audio/en/19.wav | Bin include/securimage/audio/en/2.wav | Bin include/securimage/audio/en/20.wav | Bin include/securimage/audio/en/3.wav | Bin include/securimage/audio/en/4.wav | Bin include/securimage/audio/en/5.wav | Bin include/securimage/audio/en/6.wav | Bin include/securimage/audio/en/7.wav | Bin include/securimage/audio/en/8.wav | Bin include/securimage/audio/en/9.wav | Bin include/securimage/audio/en/A.wav | Bin include/securimage/audio/en/B.wav | Bin include/securimage/audio/en/C.wav | Bin include/securimage/audio/en/D.wav | Bin include/securimage/audio/en/E.wav | Bin include/securimage/audio/en/F.wav | Bin include/securimage/audio/en/G.wav | Bin include/securimage/audio/en/H.wav | Bin include/securimage/audio/en/I.wav | Bin include/securimage/audio/en/J.wav | Bin include/securimage/audio/en/K.wav | Bin include/securimage/audio/en/L.wav | Bin include/securimage/audio/en/M.wav | Bin include/securimage/audio/en/MINUS.wav | Bin include/securimage/audio/en/N.wav | Bin include/securimage/audio/en/O.wav | Bin include/securimage/audio/en/P.wav | Bin include/securimage/audio/en/PLUS.wav | Bin include/securimage/audio/en/Q.wav | Bin include/securimage/audio/en/R.wav | Bin include/securimage/audio/en/S.wav | Bin include/securimage/audio/en/T.wav | Bin include/securimage/audio/en/TIMES.wav | Bin include/securimage/audio/en/U.wav | Bin include/securimage/audio/en/V.wav | Bin include/securimage/audio/en/W.wav | Bin include/securimage/audio/en/X.wav | Bin include/securimage/audio/en/Y.wav | Bin include/securimage/audio/en/Z.wav | Bin include/securimage/audio/en/error.wav | Bin .../securimage/audio/noise/check-point-1.wav | Bin .../audio/noise/crowd-talking-1.wav | Bin .../audio/noise/crowd-talking-6.wav | Bin .../audio/noise/crowd-talking-7.wav | Bin .../securimage/audio/noise/kids-playing-1.wav | Bin include/securimage/backgrounds/bg3.jpg | Bin include/securimage/backgrounds/bg4.jpg | Bin include/securimage/backgrounds/bg5.jpg | Bin include/securimage/backgrounds/bg6.png | Bin include/securimage/captcha.html | 0 include/securimage/database/.htaccess | 0 include/securimage/database/index.html | 0 include/securimage/database/securimage.sq3 | Bin include/securimage/images/audio_icon.png | Bin include/securimage/images/refresh.png | Bin include/securimage/securimage.php | 0 include/securimage/securimage_play.php | 0 include/securimage/securimage_play.swf | Bin include/securimage/securimage_show.php | 0 include/securimage/words/words.txt | 0 include/service.class.php | 0 include/studentnote.class.php | 0 include/studiengang.class.php | 0 include/studienjahr.class.php | 0 include/tiny_mce/langs/de.js | 0 .../tiny_mce/plugins/advhr/langs/de_dlg.js | 0 .../tiny_mce/plugins/advimage/langs/de_dlg.js | 0 .../tiny_mce/plugins/advlink/langs/de_dlg.js | 0 .../tiny_mce/plugins/emotions/langs/de_dlg.js | 0 .../tiny_mce/plugins/fullpage/langs/de_dlg.js | 0 .../tiny_mce/plugins/media/langs/de_dlg.js | 0 .../tiny_mce/plugins/paste/langs/de_dlg.js | 0 .../plugins/searchreplace/langs/de_dlg.js | 0 .../tiny_mce/plugins/style/langs/de_dlg.js | 0 .../tiny_mce/plugins/table/langs/de_dlg.js | 0 .../tiny_mce/plugins/template/langs/de_dlg.js | 0 .../tiny_mce/plugins/wordc/langs/de_dlg.js | 0 .../tiny_mce/plugins/wordc/langs/en_dlg.js | 0 .../plugins/xhtmlxtras/langs/de_dlg.js | 0 include/tiny_mce/themes/advanced/langs/de.js | 0 .../tiny_mce/themes/advanced/langs/de_dlg.js | 0 include/tiny_mce/themes/simple/langs/de.js | 0 include/tw/generateZahlungsreferenz.inc.php | 0 include/tw/index.html | 0 include/tw/vilesci_menu_main.inc.php | 0 include/vendor_custom/easyui/icon.css | 0 include/webservicerecht.class.php | 0 include/wochenplan.class.php | 0 include/xslfo2pdf/fpdf/myfpdf.php | 0 include/zeitaufzeichnung.class.php | 0 include/zeitsperre.class.php | 0 include/zgv.class.php | 0 locale/de-AT/abgabetool.php | 0 locale/de-AT/coodle.php | 0 locale/de-AT/dms_link.php | 0 locale/de-AT/errors.php | 0 locale/de-AT/freebusy.php | 0 locale/de-AT/global.php | 0 locale/de-AT/incoming.php | 0 locale/de-AT/ktu.php | 0 locale/de-AT/lehre.php | 0 locale/de-AT/lvaliste.php | 0 locale/de-AT/mail.php | 0 locale/de-AT/menu.php | 0 locale/de-AT/news.php | 0 locale/de-AT/notebookregister.php | 0 locale/de-AT/passwort.php | 0 locale/de-AT/personensuche.php | 0 locale/de-AT/planner.dtd | 0 locale/de-AT/pruefung.php | 0 locale/de-AT/semesterplan.php | 0 locale/de-AT/studienplan.php | 0 locale/de-AT/tools.php | 0 locale/de-AT/zeitaufzeichnung.php | 0 locale/de-AT/zeitsperre.php | 0 locale/de-SFU/planner.dtd | 0 locale/en-US/abgabetool.php | 0 locale/en-US/coodle.php | 0 locale/en-US/dms_link.php | 0 locale/en-US/errors.php | 0 locale/en-US/global.php | 0 locale/en-US/incoming.php | 0 locale/en-US/lehre.php | 0 locale/en-US/lvaliste.php | 0 locale/en-US/menu.php | 0 locale/en-US/news.php | 0 locale/en-US/notebookregister.php | 0 locale/en-US/passwort.php | 0 locale/en-US/personensuche.php | 0 locale/en-US/pruefung.php | 0 locale/en-US/semesterplan.php | 0 locale/en-US/tools.php | 0 locale/en-US/zeitaufzeichnung.php | 0 locale/en-US/zeitsperre.php | 0 locale/it-IT/abgabetool.php | 0 locale/it-IT/anwesenheitsliste.php | 0 locale/it-IT/benotungstool.php | 0 locale/it-IT/buchungen.php | 0 locale/it-IT/coodle.php | 0 locale/it-IT/courseInformation.php | 0 locale/it-IT/dms_link.php | 0 locale/it-IT/errors.php | 0 locale/it-IT/eventkalender.php | 0 locale/it-IT/feedback.php | 0 locale/it-IT/freebusy.php | 0 locale/it-IT/freifach.php | 0 locale/it-IT/gesamtnote.php | 0 locale/it-IT/global.php | 0 locale/it-IT/incoming.php | 0 locale/it-IT/lehre.php | 0 locale/it-IT/lvaliste.php | 0 locale/it-IT/lvinfo.php | 0 locale/it-IT/lvplan.php | 0 locale/it-IT/mail.php | 0 locale/it-IT/mailverteiler.php | 0 locale/it-IT/menu.php | 0 locale/it-IT/news.php | 0 locale/it-IT/notebookregister.php | 0 locale/it-IT/notfallbestimmungen.php | 0 locale/it-IT/passwort.php | 0 locale/it-IT/personensuche.php | 0 locale/it-IT/profil.php | 0 locale/it-IT/pruefung.php | 0 locale/it-IT/semesterplan.php | 0 locale/it-IT/services.php | 0 locale/it-IT/studienplan.php | 0 locale/it-IT/telefonverzeichnis.php | 0 locale/it-IT/testtool.php | 0 locale/it-IT/tools.php | 0 locale/it-IT/upload.php | 0 locale/it-IT/urlaubstool.php | 0 locale/it-IT/zeitaufzeichnung.php | 0 locale/it-IT/zeitsperre.php | 0 locale/it-IT/zeitwunsch.php | 0 rdf/abschlusspruefung.rdf.php | 0 rdf/aufwandstyp.rdf.php | 0 rdf/ausbildungsvertrag.xml.php | 0 rdf/bestelldetail.rdf.php | 0 rdf/dms.rdf.php | 0 rdf/erfolgsnachweis.rdf.php | 0 rdf/learningagreement_outgoing.rdf.php | 0 rdf/lehrveranstaltungszeugnis_ktu.rdf.php | 0 rdf/mantis.rdf.php | 0 rdf/projekt.rdf.php | 0 rdf/projektbeschreibung.rdf.php | 0 rdf/projektphase.rdf.php | 0 rdf/projekttask.rdf.php | 0 rdf/ressource.rdf.php | 0 rdf/student.rdf.php | 0 rdf/zertifikat.rdf.php | 0 skin/images/ampel_gelb.png | Bin skin/images/ampel_gruen.png | Bin skin/images/ampel_rot.png | Bin skin/images/button_mail.gif | Bin skin/images/cbox-check.gif | Bin skin/images/changed.png | Bin skin/images/date_go_grau.png | Bin skin/images/delete_x_grau.png | Bin skin/images/edit_grau.png | Bin skin/images/help.png | Bin skin/images/info.png | Bin skin/images/ja.png | Bin skin/images/nein.png | Bin skin/images/offen.png | Bin skin/images/ok.png | Bin skin/images/round.png | Bin skin/images/search.png | Bin skin/images/uebung_copy.jpg | Bin skin/jquery-ui-1.9.2.custom.min.css | 0 skin/planner.css | 0 skin/styles/stp/BannerLogo.jpg | Bin skin/styles/stp/KTULogo.jpg | Bin skin/styles/stp/KTULogo.png | Bin soap/kartenverlaengerung.soap.php | 0 soap/kartenverlaengerung.test.php | 0 soap/kartenverlaengerung.wsdl.php | 0 soap/lehrveranstaltung.soap.php | 0 soap/lehrveranstaltung.wsdl.php | 0 soap/lvplan.soap.php | 0 soap/lvplan.wsdl.php | 0 soap/mitarbeiter.soap.php | 0 soap/mitarbeiter.wsdl.php | 0 soap/notiz.soap.php | 0 soap/notiz.wsdl.php | 0 soap/ort.soap.php | 0 soap/ort.wsdl.php | 0 soap/person.soap.php | 0 soap/person.wsdl.php | 0 soap/projekt.soap.php | 0 soap/projekt.wsdl.php | 0 soap/projekt_jquery_client.php | 0 soap/projektphase.soap.php | 0 soap/projektphase.wsdl.php | 0 soap/ressource_projekt.soap.php | 0 soap/soap_test_lv.php | 0 soap/soap_test_lvplan.php | 0 soap/soap_test_mitarbeiter.php | 0 soap/soap_test_ort.php | 0 soap/soap_test_person.php | 0 soap/soap_test_student.php | 0 soap/student.soap.php | 0 soap/student.wsdl.php | 0 system/dbupdate_3.2.php | 0 system/erinnerungsmail_coodle.php | 0 system/services/systemd/phantomjs@.service | 0 system/services/upstart/unoconv.conf | 0 system/sync/sync_stpldev_stpl.php | 0 system/templates/include.xsd | 0 system/templates/include_xslt_xhtml.xslt | 0 system/templates/news.xsd | 0 system/templates/news_infoscreen.xsd | 0 .../templates/news_infoscreen_xslt_xhtml.xslt | 0 system/templates/news_xslt_xhtml.xslt | 0 system/vorlage_zip/OutgoingChangeL.odt | Bin system/vorlage_zip/OutgoingLearning.odt | Bin system/vorlage_zip/PrProtBA.odt | Bin system/vorlage_zip/PrProtMA.odt | Bin system/vorlage_zip/Zutrittskarte.odt | Bin system/xsl/ZertifikatAO.xsl | 0 system/xsl/Zutrittskarte.xsl | 0 .../admin/XPI/PlannerProduktiv/Planner.xpi | Bin .../chrome/content/contents.rdf | 0 .../chrome/content/planner.xul | 0 .../XPI/PlannerProduktiv/chrome/planner.jar | Bin vilesci/admin/XPI/PlannerProduktiv/install.js | 0 .../admin/XPI/PlannerProduktiv/install.rdf | 0 .../XPI/Seamonkey2.11/fhcomplete/make.sh | 0 vilesci/fhausweis/bildpruefung.php | 0 vilesci/fhausweis/kartenkorrektur.php | 0 vilesci/fhausweis/kartentausch.php | 0 vilesci/fhausweis/kartenverwaltung.php | 0 vilesci/fhausweis/kartezuweisen.php | 0 vilesci/fhausweis/search.php | 0 vilesci/fhausweis/verlaengerung.php | 0 vilesci/lehre/einheit_autocomplete.php | 0 vilesci/lehre/freifach.php | 0 vilesci/lehre/freifach_lektoren.php | 0 .../lehre/lehrveranstaltung_kompatibel.php | 0 vilesci/lehre/studienordnung.js | 0 vilesci/personen/leistungsstipendium.php | 0 vilesci/personen/outgoing_detail.php | 0 vilesci/personen/outgoing_frameset.php | 0 vilesci/personen/outgoing_uebersicht.php | 0 vilesci/stammdaten/ampel_details.php | 0 vilesci/stammdaten/ampel_frameset.html | 0 vilesci/stammdaten/ampel_uebersicht.php | 0 .../generatefromsipass_predelete.php | 0 vilesci/stammdaten/infoscreen_details.php | 0 vilesci/stammdaten/infoscreen_frameset.html | 0 vilesci/stammdaten/infoscreen_preview.php | 0 vilesci/stammdaten/infoscreen_uebersicht.php | 0 vilesci/stammdaten/lvbgruppenverwaltung.js | 0 .../stammdaten/lvbgruppenverwaltungDetail.php | 0 .../stammdaten/lvbgruppenverwaltungTree.php | 0 vilesci/stammdaten/service_details.php | 0 vilesci/stammdaten/service_frameset.html | 0 vilesci/stammdaten/service_uebersicht.php | 0 vilesci/stammdaten/studiengang_edit.php | 0 webdav/google.txt | 0 1127 files changed, 1351 insertions(+), 175 deletions(-) mode change 100755 => 100644 CHANGELOG.md mode change 100755 => 100644 application/cache/index.html mode change 100755 => 100644 application/config/autoload.php mode change 100755 => 100644 application/config/config.php mode change 100755 => 100644 application/config/constants.php mode change 100755 => 100644 application/config/database.php mode change 100755 => 100644 application/config/doctypes.php create mode 100644 application/config/extensions/.placeholder mode change 100755 => 100644 application/config/fhcomplete.php mode change 100755 => 100644 application/config/foreign_chars.php mode change 100755 => 100644 application/config/hooks.php mode change 100755 => 100644 application/config/index.html mode change 100755 => 100644 application/config/mail.php mode change 100755 => 100644 application/config/memcached.php mode change 100755 => 100644 application/config/migration.php mode change 100755 => 100644 application/config/mimes.php mode change 100755 => 100644 application/config/profiler.php mode change 100755 => 100644 application/config/roles.php mode change 100755 => 100644 application/config/routes.php mode change 100755 => 100644 application/config/smileys.php mode change 100755 => 100644 application/config/user_agents.php mode change 100755 => 100644 application/controllers/ViewMessage.php mode change 100755 => 100644 application/controllers/Vilesci.php create mode 100644 application/controllers/extensions/.placeholder mode change 100755 => 100644 application/controllers/index.html mode change 100755 => 100644 application/controllers/system/Login.php mode change 100755 => 100644 application/controllers/system/Messages.php mode change 100755 => 100644 application/controllers/system/Vorlage.php create mode 100644 application/controllers/system/extensions/Manager.php mode change 100755 => 100644 application/core/index.html create mode 100644 application/helpers/extensions/.placeholder mode change 100755 => 100644 application/helpers/index.html create mode 100644 application/hooks/extensions/.placeholder mode change 100755 => 100644 application/hooks/index.html mode change 100755 => 100644 application/index.html mode change 100755 => 100644 application/language/de-AT/index.html mode change 100755 => 100644 application/language/index.html mode change 100755 => 100644 application/language/system/index.html create mode 100644 application/libraries/EPrintfLib.php create mode 100644 application/libraries/ExtensionsLib.php mode change 100755 => 100644 application/libraries/MailLib.php mode change 100755 => 100644 application/libraries/MessageLib.php create mode 100644 application/libraries/extensions/.placeholder mode change 100755 => 100644 application/libraries/index.html mode change 100755 => 100644 application/logs/index.html create mode 100644 application/models/extensions/.placeholder mode change 100755 => 100644 application/models/index.html mode change 100755 => 100644 application/models/organisation/Organisationseinheit_model.php create mode 100644 application/models/system/Extensions_model.php mode change 100755 => 100644 application/models/system/MessageToken_model.php mode change 100755 => 100644 application/third_party/index.html mode change 100755 => 100644 application/views/errors/cli/error_404.php mode change 100755 => 100644 application/views/errors/cli/error_db.php mode change 100755 => 100644 application/views/errors/cli/error_exception.php mode change 100755 => 100644 application/views/errors/cli/error_general.php mode change 100755 => 100644 application/views/errors/cli/error_php.php mode change 100755 => 100644 application/views/errors/cli/index.html mode change 100755 => 100644 application/views/errors/html/error_404.php mode change 100755 => 100644 application/views/errors/html/error_db.php mode change 100755 => 100644 application/views/errors/html/error_exception.php mode change 100755 => 100644 application/views/errors/html/error_general.php mode change 100755 => 100644 application/views/errors/html/error_php.php mode change 100755 => 100644 application/views/errors/html/index.html mode change 100755 => 100644 application/views/errors/index.html create mode 100644 application/views/extensions/.placeholder mode change 100755 => 100644 application/views/index.html create mode 100644 application/views/system/extensions/manager.php mode change 100755 => 100644 application/views/system/messageHTML.php mode change 100755 => 100644 application/views/system/vorlage/templatetextList.php mode change 100755 => 100644 application/views/templates/mailHTML.php mode change 100755 => 100644 application/widgets/Organisationseinheit_widget.php create mode 100644 application/widgets/extensions/.placeholder mode change 100755 => 100644 application/widgets/mimetype_widget.php mode change 100755 => 100644 assets/grocery_crud/languages/catalan.php mode change 100755 => 100644 assets/grocery_crud/themes/flexigrid/css/flexigrid.css mode change 100755 => 100644 assets/grocery_crud/themes/flexigrid/views/list_template.php mode change 100755 => 100644 cis/ampel.php mode change 100755 => 100644 cis/cisdocs/muster_semesterplan.doc mode change 100755 => 100644 cis/private/coodle/coodle_autocomplete.php mode change 100755 => 100644 cis/private/coodle/coodle_events.php mode change 100755 => 100644 cis/private/coodle/stammdaten.php mode change 100755 => 100644 cis/private/coodle/termin.php mode change 100755 => 100644 cis/private/coodle/uebersicht.php mode change 100755 => 100644 cis/private/lehre/abgabe_student_file.php mode change 100755 => 100644 cis/private/lehre/anwesenheitsliste.pdf.php mode change 100755 => 100644 cis/private/lehre/anwesenheitsliste_bilder.pdf.php mode change 100755 => 100644 cis/private/lehre/benotungstool/functions.inc.php mode change 100755 => 100644 cis/private/lehre/benotungstool/legesamtnoteeintragen.php mode change 100755 => 100644 cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php mode change 100755 => 100644 cis/private/lehre/benotungstool/nachpruefungeintragen.php mode change 100755 => 100644 cis/private/lehre/benotungstool/zipdownload_benotungstool.php mode change 100755 => 100644 cis/private/lehre/lesson.php mode change 100755 => 100644 cis/private/lehre/pruefung/pruefung.js.php mode change 100755 => 100644 cis/private/lehre/pruefung/pruefungsanmeldung.json.php mode change 100755 => 100644 cis/private/lehre/pruefung/pruefungsanmeldung.php mode change 100755 => 100644 cis/private/lehre/pruefung/pruefungsanmeldungen_liste.pdf.php mode change 100755 => 100644 cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php mode change 100755 => 100644 cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php mode change 100755 => 100644 cis/private/lehre/pruefung/pruefungsbewertung.js.php mode change 100755 => 100644 cis/private/lehre/pruefung/pruefungsbewertung.json.php mode change 100755 => 100644 cis/private/lehre/pruefung/pruefungsbewertung.php mode change 100755 => 100644 cis/private/lehre/pruefung/pruefungsfenster_anlegen.php mode change 100755 => 100644 cis/private/lehre/pruefung/pruefungstermin.json.php mode change 100755 => 100644 cis/private/lehre/pruefung/pruefungstermin_aendern.php mode change 100755 => 100644 cis/private/lehre/pruefung/pruefungstermin_festlegen.php mode change 100755 => 100644 cis/private/lehre/swd.php mode change 100755 => 100644 cis/private/outgoing/akteupload.php mode change 100755 => 100644 cis/private/outgoing/outgoing.php mode change 100755 => 100644 cis/private/outgoing/registration.php mode change 100755 => 100644 cis/private/profile/dokumente.php mode change 100755 => 100644 cis/private/profile/freebusy.php mode change 100755 => 100644 cis/private/profile/studienplan.php mode change 100755 => 100644 cis/private/profile/urlaubsfreigabe.php mode change 100755 => 100644 cis/private/profile/urlaubstool.php mode change 100755 => 100644 cis/private/profile/zeitsperre_resturlaub.php mode change 100755 => 100644 cis/private/tools/ampelleiteruebersicht.php mode change 100755 => 100644 cis/private/tools/ampelverwaltung.php mode change 100755 => 100644 cis/private/tools/suche.php mode change 100755 => 100644 cis/private/tools/zeitaufzeichnung.php mode change 100755 => 100644 cis/public/accountactivation.php mode change 100755 => 100644 cis/public/coodle.php mode change 100755 => 100644 cis/public/freebusy.php mode change 100755 => 100644 cis/public/freebusy_coodle.php mode change 100755 => 100644 cis/public/freebusy_lvplan.php mode change 100755 => 100644 cis/public/freebusy_sogo.php mode change 100755 => 100644 cis/public/freebusy_zeitsperren.php mode change 100755 => 100644 cis/public/prestudententool/auth.php mode change 100755 => 100644 cis/public/prestudententool/index.php mode change 100755 => 100644 cis/public/prestudententool/prestudent.php mode change 100755 => 100644 cis/testtool/admin/uebersichtFragen.php mode change 100755 => 100644 cms/admin_dms.php mode change 100755 => 100644 cms/image.php mode change 100755 => 100644 cms/index.html mode change 100755 => 100644 cms/menu.inc.php mode change 100755 => 100644 cms/menu/menu_addon.class.php mode change 100755 => 100644 cms/menu/menu_addon_freifaecher.inc.php mode change 100755 => 100644 cms/menu/menu_addon_lehrveranstaltungen.inc.php mode change 100755 => 100644 cms/menu/menu_addon_meinelv.inc.php mode change 100755 => 100644 cms/menu/menu_addon_spacer.inc.php mode change 100755 => 100644 cms/menu/menu_addon_test.inc.php mode change 100755 => 100644 cms/menu/menu_addon_urlaub.inc.php mode change 100755 => 100644 cms/menu/menu_addon_zeitsperren.inc.php mode change 100755 => 100644 cms/news.php mode change 100755 => 100644 cms/newsverwaltung.php mode change 100755 => 100644 composer.json mode change 100755 => 100644 config/cis.config-default.inc.php mode change 100755 => 100644 content/createAusbildungsvertrag.php mode change 100755 => 100644 content/dokumentenakt.pdf.php mode change 100755 => 100644 content/notiz.xml.php mode change 100755 => 100644 content/planner.js.php mode change 100755 => 100644 content/planner.overlay.js.php mode change 100755 => 100644 content/planner.overlay.xul.php mode change 100755 => 100644 content/planner.xul.php mode change 100755 => 100644 content/projekt/GanttChart.svg mode change 100755 => 100644 content/projekt/bestellung.overlay.js.php mode change 100755 => 100644 content/projekt/bestellung.overlay.xul.php mode change 100755 => 100644 content/projekt/gantt.css mode change 100755 => 100644 content/projekt/gantt.overlay.js.php mode change 100755 => 100644 content/projekt/gantt.overlay.xul.php mode change 100755 => 100644 content/projekt/gantt.svg.css mode change 100755 => 100644 content/projekt/gantt.svg.php mode change 100755 => 100644 content/projekt/gantt.svg.xbl mode change 100755 => 100644 content/projekt/mantisdetail.overlay.xul.php mode change 100755 => 100644 content/projekt/parsedown.php mode change 100755 => 100644 content/projekt/projekt.overlay.js.php mode change 100755 => 100644 content/projekt/projekt.overlay.xul.php mode change 100755 => 100644 content/projekt/projekt_ressource.window.js.php mode change 100755 => 100644 content/projekt/projekt_ressource.window.xul.php mode change 100755 => 100644 content/projekt/projektdetail.overlay.xul.php mode change 100755 => 100644 content/projekt/projektdokument.overlay.js.php mode change 100755 => 100644 content/projekt/projektdokument.overlay.xul.php mode change 100755 => 100644 content/projekt/projektdokument.window.js.php mode change 100755 => 100644 content/projekt/projektdokument.window.xul.php mode change 100755 => 100644 content/projekt/projektphase.overlay.js.php mode change 100755 => 100644 content/projekt/projektphase.overlay.xul.php mode change 100755 => 100644 content/projekt/projektphasedetail.overlay.xul.php mode change 100755 => 100644 content/projekt/projekttask.overlay.js.php mode change 100755 => 100644 content/projekt/projekttask.overlay.xul.php mode change 100755 => 100644 content/projekt/projekttaskdetail.overlay.xul.php mode change 100755 => 100644 content/projekt/ressource.js.php mode change 100755 => 100644 content/projekt/ressource.overlay.js.php mode change 100755 => 100644 content/projekt/ressource.overlay.xul.php mode change 100755 => 100644 content/projekt/ressource.xml.php mode change 100755 => 100644 content/projekt/ressourcenauslastung.php mode change 100755 => 100644 content/projektbeschreibung.php mode change 100755 => 100644 content/statistik/StudierendeZGV.php mode change 100755 => 100644 content/statistik/dropout.php mode change 100755 => 100644 content/statistik/dropoutZGV.php mode change 100755 => 100644 content/student/studentabschlusspruefung.js.php mode change 100755 => 100644 content/student/studentabschlusspruefungoverlay.xul.php mode change 100755 => 100644 content/zutrittskarte.php mode change 100755 => 100644 include/abschlusspruefung.class.php mode change 100755 => 100644 include/ampel.class.php mode change 100755 => 100644 include/auth_demo.class.php mode change 100755 => 100644 include/coodle.class.php mode change 100755 => 100644 include/fotostatus.class.php mode change 100755 => 100644 include/freebusy.class.php mode change 100755 => 100644 include/functions.inc.php mode change 100755 => 100644 include/gantt.class.php mode change 100755 => 100644 include/globals.inc.php mode change 100755 => 100644 include/ical.class.php mode change 100755 => 100644 include/infoscreen.class.php mode change 100755 => 100644 include/js/fullcalendar/fullcalendar.css mode change 100755 => 100644 include/js/fullcalendar/fullcalendar.js mode change 100755 => 100644 include/js/fullcalendar/fullcalendar.min.js mode change 100755 => 100644 include/js/fullcalendar/fullcalendar.print.css mode change 100755 => 100644 include/js/fullcalendar/gcal.js mode change 100755 => 100644 include/js/jstree/README.txt mode change 100755 => 100644 include/js/jstree/_docs/!style.css mode change 100755 => 100644 include/js/jstree/_docs/_drive.png mode change 100755 => 100644 include/js/jstree/_docs/_html_data.html mode change 100755 => 100644 include/js/jstree/_docs/_json_data.json mode change 100755 => 100644 include/js/jstree/_docs/_search_data.json mode change 100755 => 100644 include/js/jstree/_docs/_search_result.json mode change 100755 => 100644 include/js/jstree/_docs/_xml_flat.xml mode change 100755 => 100644 include/js/jstree/_docs/_xml_nest.xml mode change 100755 => 100644 include/js/jstree/_docs/checkbox.html mode change 100755 => 100644 include/js/jstree/_docs/contextmenu.html mode change 100755 => 100644 include/js/jstree/_docs/cookies.html mode change 100755 => 100644 include/js/jstree/_docs/core.html mode change 100755 => 100644 include/js/jstree/_docs/crrm.html mode change 100755 => 100644 include/js/jstree/_docs/dnd.html mode change 100755 => 100644 include/js/jstree/_docs/hotkeys.html mode change 100755 => 100644 include/js/jstree/_docs/html_data.html mode change 100755 => 100644 include/js/jstree/_docs/index.html mode change 100755 => 100644 include/js/jstree/_docs/json_data.html mode change 100755 => 100644 include/js/jstree/_docs/languages.html mode change 100755 => 100644 include/js/jstree/_docs/logo.png mode change 100755 => 100644 include/js/jstree/_docs/search.html mode change 100755 => 100644 include/js/jstree/_docs/sort.html mode change 100755 => 100644 include/js/jstree/_docs/syntax/!script.js mode change 100755 => 100644 include/js/jstree/_docs/syntax/!style.css mode change 100755 => 100644 include/js/jstree/_docs/syntax/clipboard.swf mode change 100755 => 100644 include/js/jstree/_docs/syntax/help.png mode change 100755 => 100644 include/js/jstree/_docs/syntax/magnifier.png mode change 100755 => 100644 include/js/jstree/_docs/syntax/page_white_code.png mode change 100755 => 100644 include/js/jstree/_docs/syntax/page_white_copy.png mode change 100755 => 100644 include/js/jstree/_docs/syntax/printer.png mode change 100755 => 100644 include/js/jstree/_docs/syntax/wrapping.png mode change 100755 => 100644 include/js/jstree/_docs/themeroller.html mode change 100755 => 100644 include/js/jstree/_docs/themes.html mode change 100755 => 100644 include/js/jstree/_docs/types.html mode change 100755 => 100644 include/js/jstree/_docs/ui.html mode change 100755 => 100644 include/js/jstree/_docs/unique.html mode change 100755 => 100644 include/js/jstree/_docs/xml_data.html mode change 100755 => 100644 include/js/jstree/_lib/jquery.cookie.js mode change 100755 => 100644 include/js/jstree/_lib/jquery.hotkeys.js mode change 100755 => 100644 include/js/jstree/_lib/jquery.js mode change 100755 => 100644 include/js/jstree/jquery.jstree.js mode change 100755 => 100644 include/js/jstree/themes/apple/bg.jpg mode change 100755 => 100644 include/js/jstree/themes/apple/d.png mode change 100755 => 100644 include/js/jstree/themes/apple/dot_for_ie.gif mode change 100755 => 100644 include/js/jstree/themes/apple/style.css mode change 100755 => 100644 include/js/jstree/themes/apple/throbber.gif mode change 100755 => 100644 include/js/jstree/themes/classic/d.gif mode change 100755 => 100644 include/js/jstree/themes/classic/d.png mode change 100755 => 100644 include/js/jstree/themes/classic/dot_for_ie.gif mode change 100755 => 100644 include/js/jstree/themes/classic/style.css mode change 100755 => 100644 include/js/jstree/themes/classic/throbber.gif mode change 100755 => 100644 include/js/jstree/themes/default-rtl/d.gif mode change 100755 => 100644 include/js/jstree/themes/default-rtl/d.png mode change 100755 => 100644 include/js/jstree/themes/default-rtl/dots.gif mode change 100755 => 100644 include/js/jstree/themes/default-rtl/style.css mode change 100755 => 100644 include/js/jstree/themes/default-rtl/throbber.gif mode change 100755 => 100644 include/js/jstree/themes/default/d.gif mode change 100755 => 100644 include/js/jstree/themes/default/d.png mode change 100755 => 100644 include/js/jstree/themes/default/style.css mode change 100755 => 100644 include/js/jstree/themes/default/throbber.gif mode change 100755 => 100644 include/js/treeGrid/.gitignore mode change 100755 => 100644 include/js/treeGrid/CHANGELOG.txt mode change 100755 => 100644 include/js/treeGrid/LICENSE mode change 100755 => 100644 include/js/treeGrid/README.md mode change 100755 => 100644 include/js/treeGrid/css/jquery.treegrid.css mode change 100755 => 100644 include/js/treeGrid/examples/bootstrap-2.3.2/css/bootstrap-responsive.css mode change 100755 => 100644 include/js/treeGrid/examples/bootstrap-2.3.2/css/bootstrap-responsive.min.css mode change 100755 => 100644 include/js/treeGrid/examples/bootstrap-2.3.2/css/bootstrap.css mode change 100755 => 100644 include/js/treeGrid/examples/bootstrap-2.3.2/css/bootstrap.min.css mode change 100755 => 100644 include/js/treeGrid/examples/bootstrap-2.3.2/img/glyphicons-halflings-white.png mode change 100755 => 100644 include/js/treeGrid/examples/bootstrap-2.3.2/img/glyphicons-halflings.png mode change 100755 => 100644 include/js/treeGrid/examples/bootstrap-2.3.2/js/bootstrap.js mode change 100755 => 100644 include/js/treeGrid/examples/bootstrap-2.3.2/js/bootstrap.min.js mode change 100755 => 100644 include/js/treeGrid/examples/bootstrap-3.0.0/css/bootstrap-theme.css mode change 100755 => 100644 include/js/treeGrid/examples/bootstrap-3.0.0/css/bootstrap-theme.min.css mode change 100755 => 100644 include/js/treeGrid/examples/bootstrap-3.0.0/css/bootstrap.css mode change 100755 => 100644 include/js/treeGrid/examples/bootstrap-3.0.0/css/bootstrap.min.css mode change 100755 => 100644 include/js/treeGrid/examples/bootstrap-3.0.0/fonts/glyphicons-halflings-regular.eot mode change 100755 => 100644 include/js/treeGrid/examples/bootstrap-3.0.0/fonts/glyphicons-halflings-regular.svg mode change 100755 => 100644 include/js/treeGrid/examples/bootstrap-3.0.0/fonts/glyphicons-halflings-regular.ttf mode change 100755 => 100644 include/js/treeGrid/examples/bootstrap-3.0.0/fonts/glyphicons-halflings-regular.woff mode change 100755 => 100644 include/js/treeGrid/examples/bootstrap-3.0.0/js/bootstrap.js mode change 100755 => 100644 include/js/treeGrid/examples/bootstrap-3.0.0/js/bootstrap.min.js mode change 100755 => 100644 include/js/treeGrid/examples/example-basic.html mode change 100755 => 100644 include/js/treeGrid/examples/example-bootstrap-2.html mode change 100755 => 100644 include/js/treeGrid/examples/example-bootstrap-3.html mode change 100755 => 100644 include/js/treeGrid/examples/example-column.html mode change 100755 => 100644 include/js/treeGrid/examples/example-save-state.html mode change 100755 => 100644 include/js/treeGrid/img/collapse.png mode change 100755 => 100644 include/js/treeGrid/img/expand.png mode change 100755 => 100644 include/js/treeGrid/img/file.png mode change 100755 => 100644 include/js/treeGrid/img/folder.png mode change 100755 => 100644 include/js/treeGrid/index.html mode change 100755 => 100644 include/js/treeGrid/js/jquery-1.10.2.js mode change 100755 => 100644 include/js/treeGrid/js/jquery.cookie.js mode change 100755 => 100644 include/js/treeGrid/js/jquery.treegrid.bootstrap2.js mode change 100755 => 100644 include/js/treeGrid/js/jquery.treegrid.bootstrap3.js mode change 100755 => 100644 include/js/treeGrid/js/jquery.treegrid.js mode change 100755 => 100644 include/js/treeGrid/jstreegrid.js mode change 100755 => 100644 include/js/treeGrid/params.json mode change 100755 => 100644 include/js/treeGrid/styles.css mode change 100755 => 100644 include/js/treeGrid/test.html mode change 100755 => 100644 include/js/treeGrid/tests/qunit-1.12.0.css mode change 100755 => 100644 include/js/treeGrid/tests/qunit-1.12.0.js mode change 100755 => 100644 include/js/treeGrid/tests/tests.js mode change 100755 => 100644 include/js/treeGrid/treegrid.jquery.json mode change 100755 => 100644 include/konto.class.php mode change 100755 => 100644 include/legesamtnote.class.php mode change 100755 => 100644 include/lehre_tools.class.php mode change 100755 => 100644 include/lehrtyp.class.php mode change 100755 => 100644 include/lehrveranstaltung.class.php mode change 100755 => 100644 include/mantis.class.php mode change 100755 => 100644 include/notiz.class.php mode change 100755 => 100644 include/preoutgoing.class.php mode change 100755 => 100644 include/prestudent.class.php mode change 100755 => 100644 include/projekt.class.php mode change 100755 => 100644 include/projektbenutzer.class.php mode change 100755 => 100644 include/projektphase.class.php mode change 100755 => 100644 include/projekttask.class.php mode change 100755 => 100644 include/pruefung.class.php mode change 100755 => 100644 include/pruefungCis.class.php mode change 100755 => 100644 include/rdf.class.php mode change 100755 => 100644 include/ressource.class.php mode change 100755 => 100644 include/sabredav/ChangeLog mode change 100755 => 100644 include/sabredav/LICENSE mode change 100755 => 100644 include/sabredav/README.md mode change 100755 => 100644 include/sabredav/bin/build.php mode change 100755 => 100644 include/sabredav/bin/googlecode_upload.py mode change 100755 => 100644 include/sabredav/bin/migrateto17.php mode change 100755 => 100644 include/sabredav/bin/naturalselection.py mode change 100755 => 100644 include/sabredav/bin/sabredav mode change 100755 => 100644 include/sabredav/bin/sabredav.php mode change 100755 => 100644 include/sabredav/bin/vobjectvalidate.php mode change 100755 => 100644 include/sabredav/composer.json mode change 100755 => 100644 include/sabredav/composer.lock mode change 100755 => 100644 include/sabredav/examples/addressbookserver.php mode change 100755 => 100644 include/sabredav/examples/basicauth.php mode change 100755 => 100644 include/sabredav/examples/calendarserver.php mode change 100755 => 100644 include/sabredav/examples/digestauth.php mode change 100755 => 100644 include/sabredav/examples/fileserver.php mode change 100755 => 100644 include/sabredav/examples/groupwareserver.php mode change 100755 => 100644 include/sabredav/examples/simplefsserver.php mode change 100755 => 100644 include/sabredav/examples/sql/mysql.addressbook.sql mode change 100755 => 100644 include/sabredav/examples/sql/mysql.calendars.sql mode change 100755 => 100644 include/sabredav/examples/sql/mysql.locks.sql mode change 100755 => 100644 include/sabredav/examples/sql/mysql.principals.sql mode change 100755 => 100644 include/sabredav/examples/sql/mysql.users.sql mode change 100755 => 100644 include/sabredav/examples/sql/pgsql.addressbook.sql mode change 100755 => 100644 include/sabredav/examples/sql/pgsql.calendars.sql mode change 100755 => 100644 include/sabredav/examples/sql/pgsql.locks.sql mode change 100755 => 100644 include/sabredav/examples/sql/pgsql.principals.sql mode change 100755 => 100644 include/sabredav/examples/sql/pgsql.users.sql mode change 100755 => 100644 include/sabredav/examples/sql/sqlite.addressbooks.sql mode change 100755 => 100644 include/sabredav/examples/sql/sqlite.calendars.sql mode change 100755 => 100644 include/sabredav/examples/sql/sqlite.locks.sql mode change 100755 => 100644 include/sabredav/examples/sql/sqlite.principals.sql mode change 100755 => 100644 include/sabredav/examples/sql/sqlite.users.sql mode change 100755 => 100644 include/sabredav/examples/webserver/apache2_htaccess.conf mode change 100755 => 100644 include/sabredav/examples/webserver/apache2_vhost.conf mode change 100755 => 100644 include/sabredav/examples/webserver/apache2_vhost_cgi.conf mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Backend/AbstractBackend.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Backend/BackendInterface.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Backend/NotificationSupport.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Backend/PDO.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Backend/SharingSupport.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Calendar.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/CalendarObject.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/CalendarQueryParser.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/CalendarQueryValidator.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/CalendarRootNode.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Exception/InvalidComponentType.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/ICSExportPlugin.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/ICalendar.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/ICalendarObject.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/IShareableCalendar.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/ISharedCalendar.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Notifications/Collection.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Notifications/ICollection.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Notifications/INode.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Notifications/INotificationType.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Notifications/Node.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Notifications/Notification/Invite.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Notifications/Notification/InviteReply.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Notifications/Notification/SystemStatus.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Plugin.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Principal/Collection.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Principal/IProxyRead.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Principal/IProxyWrite.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Principal/ProxyRead.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Principal/ProxyWrite.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Principal/User.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Property/AllowedSharingModes.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Property/Invite.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Property/ScheduleCalendarTransp.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Property/SupportedCalendarComponentSet.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Property/SupportedCalendarData.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Property/SupportedCollationSet.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Schedule/IMip.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Schedule/IOutbox.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Schedule/Outbox.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/ShareableCalendar.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/SharedCalendar.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/SharingPlugin.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/UserCalendars.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CalDAV/Version.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CardDAV/AddressBook.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CardDAV/AddressBookQueryParser.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CardDAV/AddressBookRoot.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CardDAV/Backend/AbstractBackend.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CardDAV/Backend/BackendInterface.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CardDAV/Backend/PDO.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CardDAV/Card.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CardDAV/IAddressBook.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CardDAV/ICard.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CardDAV/IDirectory.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CardDAV/Plugin.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CardDAV/Property/SupportedAddressData.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CardDAV/UserAddressBooks.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CardDAV/VCFExportPlugin.php mode change 100755 => 100644 include/sabredav/lib/Sabre/CardDAV/Version.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Auth/Backend/AbstractBasic.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Auth/Backend/AbstractDigest.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Auth/Backend/Apache.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Auth/Backend/BackendInterface.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Auth/Backend/File.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Auth/Backend/PDO.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Auth/Plugin.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Browser/GuessContentType.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Browser/MapGetToPropFind.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Browser/Plugin.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Browser/assets/favicon.ico mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Browser/assets/icons/addressbook.png mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Browser/assets/icons/calendar.png mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Browser/assets/icons/card.png mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Browser/assets/icons/collection.png mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Browser/assets/icons/file.png mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Browser/assets/icons/parent.png mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Browser/assets/icons/principal.png mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Client.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Collection.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/BadRequest.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/Conflict.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/ConflictingLock.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/FileNotFound.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/Forbidden.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/InsufficientStorage.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/InvalidResourceType.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/LengthRequired.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/LockTokenMatchesRequestUri.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/Locked.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/MethodNotAllowed.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/NotAuthenticated.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/NotFound.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/NotImplemented.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/PaymentRequired.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/PreconditionFailed.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/ReportNotSupported.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/RequestedRangeNotSatisfiable.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/ServiceUnavailable.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Exception/UnsupportedMediaType.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/FS/Directory.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/FS/File.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/FS/Node.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/FSExt/Directory.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/FSExt/File.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/FSExt/Node.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/File.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/ICollection.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/IExtendedCollection.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/IFile.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/INode.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/IProperties.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/IQuota.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Locks/Backend/AbstractBackend.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Locks/Backend/BackendInterface.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Locks/Backend/FS.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Locks/Backend/File.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Locks/Backend/PDO.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Locks/LockInfo.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Locks/Plugin.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Mount/Plugin.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Node.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/ObjectTree.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/PartialUpdate/IFile.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/PartialUpdate/IPatchSupport.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/PartialUpdate/Plugin.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Property.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Property/GetLastModified.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Property/Href.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Property/HrefList.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Property/IHref.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Property/LockDiscovery.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Property/ResourceType.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Property/Response.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Property/ResponseList.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Property/SupportedLock.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Property/SupportedReportSet.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/PropertyInterface.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Server.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/ServerPlugin.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/SimpleCollection.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/SimpleFile.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/StringUtil.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/TemporaryFileFilterPlugin.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Tree.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Tree/Filesystem.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/URLUtil.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/UUIDUtil.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/Version.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAV/XMLUtil.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/AbstractPrincipalCollection.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/Exception/AceConflict.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/Exception/NeedPrivileges.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/Exception/NoAbstract.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/Exception/NotRecognizedPrincipal.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/Exception/NotSupportedPrivilege.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/IACL.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/IPrincipal.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/IPrincipalCollection.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/Plugin.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/Principal.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/PrincipalBackend/AbstractBackend.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/PrincipalBackend/BackendInterface.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/PrincipalBackend/PDO.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/PrincipalCollection.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/Property/Acl.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/Property/AclRestrictions.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/Property/CurrentUserPrivilegeSet.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/Property/Principal.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/Property/SupportedPrivilegeSet.php mode change 100755 => 100644 include/sabredav/lib/Sabre/DAVACL/Version.php mode change 100755 => 100644 include/sabredav/lib/Sabre/HTTP/AWSAuth.php mode change 100755 => 100644 include/sabredav/lib/Sabre/HTTP/AbstractAuth.php mode change 100755 => 100644 include/sabredav/lib/Sabre/HTTP/BasicAuth.php mode change 100755 => 100644 include/sabredav/lib/Sabre/HTTP/DigestAuth.php mode change 100755 => 100644 include/sabredav/lib/Sabre/HTTP/Request.php mode change 100755 => 100644 include/sabredav/lib/Sabre/HTTP/Response.php mode change 100755 => 100644 include/sabredav/lib/Sabre/HTTP/Util.php mode change 100755 => 100644 include/sabredav/lib/Sabre/HTTP/Version.php mode change 100755 => 100644 include/sabredav/lib/Sabre/autoload.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Backend/AbstractTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Backend/Mock.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Backend/PDOMySQLTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Backend/PDOSqliteTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/CalendarObjectTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/CalendarQueryParserTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/CalendarQueryVAlarmTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/CalendarQueryValidatorTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/CalendarTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDbyDayTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/ExpandEventsDoubleEventsTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/FreeBusyReportTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/FreeBusyRequestTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/GetEventsByTimerangeTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/ICSExportPluginTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Issue166Test.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Issue172Test.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Issue203Test.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Issue205Test.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Issue211Test.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Issue220Test.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Issue228Test.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Notifications/CollectionTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Notifications/NodeTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Notifications/Notification/InviteReplyTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Notifications/Notification/InviteTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Notifications/Notification/SystemStatusTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/OutboxPostTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/PluginTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Principal/CollectionTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Principal/ProxyReadTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Principal/ProxyWriteTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Principal/UserTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Property/AllowedSharingModesTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Property/InviteTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Property/ScheduleCalendarTranspTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Property/SupportedCalendarComponentSetTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Property/SupportedCalendarDataTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Property/SupportedCollationSetTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Schedule/IMip/Mock.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/Schedule/OutboxTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/ShareableCalendarTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/SharedCalendarTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/SharingPluginTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/TestUtil.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/UserCalendarsSharedCalendarsTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/UserCalendarsTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/ValidateICalTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CalDAV/VersionTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/AbstractPluginTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/AddressBookQueryParserTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/AddressBookQueryTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/AddressBookRootTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/AddressBookTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/Backend/Mock.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/Backend/PDOSqliteTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/CardTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/IDirectoryTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/MultiGetTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/PluginTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/Property/SupportedAddressDataTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/SogoStripContentTypeTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/TestUtil.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/UserAddressBooksTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/VCFExportTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/ValidateFilterTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/ValidateVCardTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/CardDAV/VersionTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/AbstractServer.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Auth/Backend/AbstractBasicTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Auth/Backend/AbstractPDOTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Auth/Backend/ApacheTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Auth/Backend/FileTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Auth/Backend/Mock.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Auth/Backend/PDOMySQLTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Auth/Backend/PDOSqliteTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Auth/PluginTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/BasicNodeTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Browser/GuessContentTypeTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Browser/MapGetToPropFindTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Browser/PluginTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/ClientMock.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/ClientTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Exception/LockedTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Exception/PaymentRequiredTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/ExceptionTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/FSExt/FileTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/FSExt/NodeTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/FSExt/ServerTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/HTTPPreferParsingTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/HttpDeleteTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/HttpPutTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Issue33Test.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Locks/Backend/AbstractTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Locks/Backend/FSTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Locks/Backend/FileTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Locks/Backend/PDOMySQLTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Locks/Backend/PDOTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Locks/GetIfConditionsTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Locks/MSWordTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Locks/PluginTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Mock/Collection.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Mock/File.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Mount/PluginTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/ObjectTreeTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/PartialUpdate/FileMock.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/PartialUpdate/PluginTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Property/GetLastModifiedTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Property/HrefListTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Property/HrefTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Property/ResourceTypeTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Property/ResponseListTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Property/ResponseTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Property/SupportedReportSetTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/ServerCopyMoveTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/ServerEventsTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/ServerMKCOLTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/ServerPluginTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/ServerPreconditionTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/ServerPropsTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/ServerRangeTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/ServerSimpleTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/ServerUpdatePropertiesTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/SimpleFileTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/StringUtilTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/TemporaryFileFilterTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/TestPlugin.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/Tree/FilesystemTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/TreeTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/URLUtilTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/UUIDUtilTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAV/XMLUtilTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/ACLMethodTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/AllowAccessTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/BlockAccessTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/Exception/AceConflictTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/Exception/NeedPrivilegesExceptionTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/Exception/NoAbstractTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/Exception/NotRecognizedPrincipalTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/Exception/NotSupportedPrivilegeTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/ExpandPropertiesTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/MockACLNode.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/MockPrincipal.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/PluginAdminTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/PluginPropertiesTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/PluginUpdatePropertiesTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/PrincipalBackend/AbstractPDOTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/PrincipalBackend/PDOMySQLTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/PrincipalBackend/PDOSqliteTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/PrincipalCollectionTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/PrincipalPropertySearchTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/PrincipalSearchPropertySetTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/PrincipalTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/Property/ACLRestrictionsTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/Property/ACLTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/Property/CurrentUserPrivilegeSetTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/Property/PrincipalTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/Property/SupportedPrivilegeSetTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/SimplePluginTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVACL/VersionTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/DAVServerTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/HTTP/AWSAuthTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/HTTP/BasicAuthTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/HTTP/DigestAuthTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/HTTP/RequestTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/HTTP/ResponseMock.php mode change 100755 => 100644 include/sabredav/tests/Sabre/HTTP/ResponseTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/HTTP/UtilTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/HTTP/VersionTest.php mode change 100755 => 100644 include/sabredav/tests/Sabre/TestUtil.php mode change 100755 => 100644 include/sabredav/tests/bootstrap.php mode change 100755 => 100644 include/sabredav/tests/composer.vobject3.json mode change 100755 => 100644 include/sabredav/tests/phpunit.xml mode change 100755 => 100644 include/sabredav/vendor/autoload.php mode change 100755 => 100644 include/sabredav/vendor/composer/ClassLoader.php mode change 100755 => 100644 include/sabredav/vendor/composer/autoload_classmap.php mode change 100755 => 100644 include/sabredav/vendor/composer/autoload_namespaces.php mode change 100755 => 100644 include/sabredav/vendor/composer/autoload_psr4.php mode change 100755 => 100644 include/sabredav/vendor/composer/autoload_real.php mode change 100755 => 100644 include/sabredav/vendor/composer/installed.json mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/.gitignore mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/.travis.yml mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/ChangeLog mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/LICENSE mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/README.md mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/bin/bench.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/bin/generateicalendardata.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/bin/vobjectvalidate.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/composer.json mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VAlarm.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VCalendar.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VCard.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VEvent.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VFreeBusy.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VJournal.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VTodo.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/DateTimeParser.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Document.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/ElementList.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/FreeBusyGenerator.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Node.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Parameter.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/ParseException.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Property.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Property/Compound.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Property/DateTime.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Property/MultiDateTime.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Reader.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/RecurrenceIterator.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Splitter/ICalendar.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Splitter/SplitterInterface.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Splitter/VCard.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/StringUtil.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/TimeZoneUtil.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Version.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/includes.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VAlarmTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VCalendarTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VCardTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VEventTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VFreeBusyTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VJournalTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VTodoTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/ComponentTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/DateTimeParserTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/DocumentTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/ElementListTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/EmClientTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/FreeBusyGeneratorTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Issue153Test.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Issue154Test.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Issue48Test.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Issue50Test.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/ParameterTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Property/CompoundTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Property/DateTimeTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Property/MultiDateTimeTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/PropertyTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/ReaderTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/RecurrenceIteratorFifthTuesdayProblemTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/RecurrenceIteratorIncorrectExpandTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/RecurrenceIteratorInfiniteLoopProblemTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/RecurrenceIteratorMinusOneProblemTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/RecurrenceIteratorMissingOverriddenTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/RecurrenceIteratorTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/SlashRTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Splitter/ICalendarTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Splitter/VCardTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/StringUtilTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/TimeZoneUtilTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/VersionTest.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/issue153.vcf mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/bootstrap.php mode change 100755 => 100644 include/sabredav/vendor/sabre/vobject/tests/phpunit.xml mode change 100755 => 100644 include/securimage/AHGBold.ttf mode change 100755 => 100644 include/securimage/LICENSE.txt mode change 100755 => 100644 include/securimage/README.FONT.txt mode change 100755 => 100644 include/securimage/README.txt mode change 100755 => 100644 include/securimage/WavFile.php mode change 100755 => 100644 include/securimage/audio/en/0.wav mode change 100755 => 100644 include/securimage/audio/en/1.wav mode change 100755 => 100644 include/securimage/audio/en/10.wav mode change 100755 => 100644 include/securimage/audio/en/11.wav mode change 100755 => 100644 include/securimage/audio/en/12.wav mode change 100755 => 100644 include/securimage/audio/en/13.wav mode change 100755 => 100644 include/securimage/audio/en/14.wav mode change 100755 => 100644 include/securimage/audio/en/15.wav mode change 100755 => 100644 include/securimage/audio/en/16.wav mode change 100755 => 100644 include/securimage/audio/en/17.wav mode change 100755 => 100644 include/securimage/audio/en/18.wav mode change 100755 => 100644 include/securimage/audio/en/19.wav mode change 100755 => 100644 include/securimage/audio/en/2.wav mode change 100755 => 100644 include/securimage/audio/en/20.wav mode change 100755 => 100644 include/securimage/audio/en/3.wav mode change 100755 => 100644 include/securimage/audio/en/4.wav mode change 100755 => 100644 include/securimage/audio/en/5.wav mode change 100755 => 100644 include/securimage/audio/en/6.wav mode change 100755 => 100644 include/securimage/audio/en/7.wav mode change 100755 => 100644 include/securimage/audio/en/8.wav mode change 100755 => 100644 include/securimage/audio/en/9.wav mode change 100755 => 100644 include/securimage/audio/en/A.wav mode change 100755 => 100644 include/securimage/audio/en/B.wav mode change 100755 => 100644 include/securimage/audio/en/C.wav mode change 100755 => 100644 include/securimage/audio/en/D.wav mode change 100755 => 100644 include/securimage/audio/en/E.wav mode change 100755 => 100644 include/securimage/audio/en/F.wav mode change 100755 => 100644 include/securimage/audio/en/G.wav mode change 100755 => 100644 include/securimage/audio/en/H.wav mode change 100755 => 100644 include/securimage/audio/en/I.wav mode change 100755 => 100644 include/securimage/audio/en/J.wav mode change 100755 => 100644 include/securimage/audio/en/K.wav mode change 100755 => 100644 include/securimage/audio/en/L.wav mode change 100755 => 100644 include/securimage/audio/en/M.wav mode change 100755 => 100644 include/securimage/audio/en/MINUS.wav mode change 100755 => 100644 include/securimage/audio/en/N.wav mode change 100755 => 100644 include/securimage/audio/en/O.wav mode change 100755 => 100644 include/securimage/audio/en/P.wav mode change 100755 => 100644 include/securimage/audio/en/PLUS.wav mode change 100755 => 100644 include/securimage/audio/en/Q.wav mode change 100755 => 100644 include/securimage/audio/en/R.wav mode change 100755 => 100644 include/securimage/audio/en/S.wav mode change 100755 => 100644 include/securimage/audio/en/T.wav mode change 100755 => 100644 include/securimage/audio/en/TIMES.wav mode change 100755 => 100644 include/securimage/audio/en/U.wav mode change 100755 => 100644 include/securimage/audio/en/V.wav mode change 100755 => 100644 include/securimage/audio/en/W.wav mode change 100755 => 100644 include/securimage/audio/en/X.wav mode change 100755 => 100644 include/securimage/audio/en/Y.wav mode change 100755 => 100644 include/securimage/audio/en/Z.wav mode change 100755 => 100644 include/securimage/audio/en/error.wav mode change 100755 => 100644 include/securimage/audio/noise/check-point-1.wav mode change 100755 => 100644 include/securimage/audio/noise/crowd-talking-1.wav mode change 100755 => 100644 include/securimage/audio/noise/crowd-talking-6.wav mode change 100755 => 100644 include/securimage/audio/noise/crowd-talking-7.wav mode change 100755 => 100644 include/securimage/audio/noise/kids-playing-1.wav mode change 100755 => 100644 include/securimage/backgrounds/bg3.jpg mode change 100755 => 100644 include/securimage/backgrounds/bg4.jpg mode change 100755 => 100644 include/securimage/backgrounds/bg5.jpg mode change 100755 => 100644 include/securimage/backgrounds/bg6.png mode change 100755 => 100644 include/securimage/captcha.html mode change 100755 => 100644 include/securimage/database/.htaccess mode change 100755 => 100644 include/securimage/database/index.html mode change 100755 => 100644 include/securimage/database/securimage.sq3 mode change 100755 => 100644 include/securimage/images/audio_icon.png mode change 100755 => 100644 include/securimage/images/refresh.png mode change 100755 => 100644 include/securimage/securimage.php mode change 100755 => 100644 include/securimage/securimage_play.php mode change 100755 => 100644 include/securimage/securimage_play.swf mode change 100755 => 100644 include/securimage/securimage_show.php mode change 100755 => 100644 include/securimage/words/words.txt mode change 100755 => 100644 include/service.class.php mode change 100755 => 100644 include/studentnote.class.php mode change 100755 => 100644 include/studiengang.class.php mode change 100755 => 100644 include/studienjahr.class.php mode change 100755 => 100644 include/tiny_mce/langs/de.js mode change 100755 => 100644 include/tiny_mce/plugins/advhr/langs/de_dlg.js mode change 100755 => 100644 include/tiny_mce/plugins/advimage/langs/de_dlg.js mode change 100755 => 100644 include/tiny_mce/plugins/advlink/langs/de_dlg.js mode change 100755 => 100644 include/tiny_mce/plugins/emotions/langs/de_dlg.js mode change 100755 => 100644 include/tiny_mce/plugins/fullpage/langs/de_dlg.js mode change 100755 => 100644 include/tiny_mce/plugins/media/langs/de_dlg.js mode change 100755 => 100644 include/tiny_mce/plugins/paste/langs/de_dlg.js mode change 100755 => 100644 include/tiny_mce/plugins/searchreplace/langs/de_dlg.js mode change 100755 => 100644 include/tiny_mce/plugins/style/langs/de_dlg.js mode change 100755 => 100644 include/tiny_mce/plugins/table/langs/de_dlg.js mode change 100755 => 100644 include/tiny_mce/plugins/template/langs/de_dlg.js mode change 100755 => 100644 include/tiny_mce/plugins/wordc/langs/de_dlg.js mode change 100755 => 100644 include/tiny_mce/plugins/wordc/langs/en_dlg.js mode change 100755 => 100644 include/tiny_mce/plugins/xhtmlxtras/langs/de_dlg.js mode change 100755 => 100644 include/tiny_mce/themes/advanced/langs/de.js mode change 100755 => 100644 include/tiny_mce/themes/advanced/langs/de_dlg.js mode change 100755 => 100644 include/tiny_mce/themes/simple/langs/de.js mode change 100755 => 100644 include/tw/generateZahlungsreferenz.inc.php mode change 100755 => 100644 include/tw/index.html mode change 100755 => 100644 include/tw/vilesci_menu_main.inc.php mode change 100755 => 100644 include/vendor_custom/easyui/icon.css mode change 100755 => 100644 include/webservicerecht.class.php mode change 100755 => 100644 include/wochenplan.class.php mode change 100755 => 100644 include/xslfo2pdf/fpdf/myfpdf.php mode change 100755 => 100644 include/zeitaufzeichnung.class.php mode change 100755 => 100644 include/zeitsperre.class.php mode change 100755 => 100644 include/zgv.class.php mode change 100755 => 100644 locale/de-AT/abgabetool.php mode change 100755 => 100644 locale/de-AT/coodle.php mode change 100755 => 100644 locale/de-AT/dms_link.php mode change 100755 => 100644 locale/de-AT/errors.php mode change 100755 => 100644 locale/de-AT/freebusy.php mode change 100755 => 100644 locale/de-AT/global.php mode change 100755 => 100644 locale/de-AT/incoming.php mode change 100755 => 100644 locale/de-AT/ktu.php mode change 100755 => 100644 locale/de-AT/lehre.php mode change 100755 => 100644 locale/de-AT/lvaliste.php mode change 100755 => 100644 locale/de-AT/mail.php mode change 100755 => 100644 locale/de-AT/menu.php mode change 100755 => 100644 locale/de-AT/news.php mode change 100755 => 100644 locale/de-AT/notebookregister.php mode change 100755 => 100644 locale/de-AT/passwort.php mode change 100755 => 100644 locale/de-AT/personensuche.php mode change 100755 => 100644 locale/de-AT/planner.dtd mode change 100755 => 100644 locale/de-AT/pruefung.php mode change 100755 => 100644 locale/de-AT/semesterplan.php mode change 100755 => 100644 locale/de-AT/studienplan.php mode change 100755 => 100644 locale/de-AT/tools.php mode change 100755 => 100644 locale/de-AT/zeitaufzeichnung.php mode change 100755 => 100644 locale/de-AT/zeitsperre.php mode change 100755 => 100644 locale/de-SFU/planner.dtd mode change 100755 => 100644 locale/en-US/abgabetool.php mode change 100755 => 100644 locale/en-US/coodle.php mode change 100755 => 100644 locale/en-US/dms_link.php mode change 100755 => 100644 locale/en-US/errors.php mode change 100755 => 100644 locale/en-US/global.php mode change 100755 => 100644 locale/en-US/incoming.php mode change 100755 => 100644 locale/en-US/lehre.php mode change 100755 => 100644 locale/en-US/lvaliste.php mode change 100755 => 100644 locale/en-US/menu.php mode change 100755 => 100644 locale/en-US/news.php mode change 100755 => 100644 locale/en-US/notebookregister.php mode change 100755 => 100644 locale/en-US/passwort.php mode change 100755 => 100644 locale/en-US/personensuche.php mode change 100755 => 100644 locale/en-US/pruefung.php mode change 100755 => 100644 locale/en-US/semesterplan.php mode change 100755 => 100644 locale/en-US/tools.php mode change 100755 => 100644 locale/en-US/zeitaufzeichnung.php mode change 100755 => 100644 locale/en-US/zeitsperre.php mode change 100755 => 100644 locale/it-IT/abgabetool.php mode change 100755 => 100644 locale/it-IT/anwesenheitsliste.php mode change 100755 => 100644 locale/it-IT/benotungstool.php mode change 100755 => 100644 locale/it-IT/buchungen.php mode change 100755 => 100644 locale/it-IT/coodle.php mode change 100755 => 100644 locale/it-IT/courseInformation.php mode change 100755 => 100644 locale/it-IT/dms_link.php mode change 100755 => 100644 locale/it-IT/errors.php mode change 100755 => 100644 locale/it-IT/eventkalender.php mode change 100755 => 100644 locale/it-IT/feedback.php mode change 100755 => 100644 locale/it-IT/freebusy.php mode change 100755 => 100644 locale/it-IT/freifach.php mode change 100755 => 100644 locale/it-IT/gesamtnote.php mode change 100755 => 100644 locale/it-IT/global.php mode change 100755 => 100644 locale/it-IT/incoming.php mode change 100755 => 100644 locale/it-IT/lehre.php mode change 100755 => 100644 locale/it-IT/lvaliste.php mode change 100755 => 100644 locale/it-IT/lvinfo.php mode change 100755 => 100644 locale/it-IT/lvplan.php mode change 100755 => 100644 locale/it-IT/mail.php mode change 100755 => 100644 locale/it-IT/mailverteiler.php mode change 100755 => 100644 locale/it-IT/menu.php mode change 100755 => 100644 locale/it-IT/news.php mode change 100755 => 100644 locale/it-IT/notebookregister.php mode change 100755 => 100644 locale/it-IT/notfallbestimmungen.php mode change 100755 => 100644 locale/it-IT/passwort.php mode change 100755 => 100644 locale/it-IT/personensuche.php mode change 100755 => 100644 locale/it-IT/profil.php mode change 100755 => 100644 locale/it-IT/pruefung.php mode change 100755 => 100644 locale/it-IT/semesterplan.php mode change 100755 => 100644 locale/it-IT/services.php mode change 100755 => 100644 locale/it-IT/studienplan.php mode change 100755 => 100644 locale/it-IT/telefonverzeichnis.php mode change 100755 => 100644 locale/it-IT/testtool.php mode change 100755 => 100644 locale/it-IT/tools.php mode change 100755 => 100644 locale/it-IT/upload.php mode change 100755 => 100644 locale/it-IT/urlaubstool.php mode change 100755 => 100644 locale/it-IT/zeitaufzeichnung.php mode change 100755 => 100644 locale/it-IT/zeitsperre.php mode change 100755 => 100644 locale/it-IT/zeitwunsch.php mode change 100755 => 100644 rdf/abschlusspruefung.rdf.php mode change 100755 => 100644 rdf/aufwandstyp.rdf.php mode change 100755 => 100644 rdf/ausbildungsvertrag.xml.php mode change 100755 => 100644 rdf/bestelldetail.rdf.php mode change 100755 => 100644 rdf/dms.rdf.php mode change 100755 => 100644 rdf/erfolgsnachweis.rdf.php mode change 100755 => 100644 rdf/learningagreement_outgoing.rdf.php mode change 100755 => 100644 rdf/lehrveranstaltungszeugnis_ktu.rdf.php mode change 100755 => 100644 rdf/mantis.rdf.php mode change 100755 => 100644 rdf/projekt.rdf.php mode change 100755 => 100644 rdf/projektbeschreibung.rdf.php mode change 100755 => 100644 rdf/projektphase.rdf.php mode change 100755 => 100644 rdf/projekttask.rdf.php mode change 100755 => 100644 rdf/ressource.rdf.php mode change 100755 => 100644 rdf/student.rdf.php mode change 100755 => 100644 rdf/zertifikat.rdf.php mode change 100755 => 100644 skin/images/ampel_gelb.png mode change 100755 => 100644 skin/images/ampel_gruen.png mode change 100755 => 100644 skin/images/ampel_rot.png mode change 100755 => 100644 skin/images/button_mail.gif mode change 100755 => 100644 skin/images/cbox-check.gif mode change 100755 => 100644 skin/images/changed.png mode change 100755 => 100644 skin/images/date_go_grau.png mode change 100755 => 100644 skin/images/delete_x_grau.png mode change 100755 => 100644 skin/images/edit_grau.png mode change 100755 => 100644 skin/images/help.png mode change 100755 => 100644 skin/images/info.png mode change 100755 => 100644 skin/images/ja.png mode change 100755 => 100644 skin/images/nein.png mode change 100755 => 100644 skin/images/offen.png mode change 100755 => 100644 skin/images/ok.png mode change 100755 => 100644 skin/images/round.png mode change 100755 => 100644 skin/images/search.png mode change 100755 => 100644 skin/images/uebung_copy.jpg mode change 100755 => 100644 skin/jquery-ui-1.9.2.custom.min.css mode change 100755 => 100644 skin/planner.css mode change 100755 => 100644 skin/styles/stp/BannerLogo.jpg mode change 100755 => 100644 skin/styles/stp/KTULogo.jpg mode change 100755 => 100644 skin/styles/stp/KTULogo.png mode change 100755 => 100644 soap/kartenverlaengerung.soap.php mode change 100755 => 100644 soap/kartenverlaengerung.test.php mode change 100755 => 100644 soap/kartenverlaengerung.wsdl.php mode change 100755 => 100644 soap/lehrveranstaltung.soap.php mode change 100755 => 100644 soap/lehrveranstaltung.wsdl.php mode change 100755 => 100644 soap/lvplan.soap.php mode change 100755 => 100644 soap/lvplan.wsdl.php mode change 100755 => 100644 soap/mitarbeiter.soap.php mode change 100755 => 100644 soap/mitarbeiter.wsdl.php mode change 100755 => 100644 soap/notiz.soap.php mode change 100755 => 100644 soap/notiz.wsdl.php mode change 100755 => 100644 soap/ort.soap.php mode change 100755 => 100644 soap/ort.wsdl.php mode change 100755 => 100644 soap/person.soap.php mode change 100755 => 100644 soap/person.wsdl.php mode change 100755 => 100644 soap/projekt.soap.php mode change 100755 => 100644 soap/projekt.wsdl.php mode change 100755 => 100644 soap/projekt_jquery_client.php mode change 100755 => 100644 soap/projektphase.soap.php mode change 100755 => 100644 soap/projektphase.wsdl.php mode change 100755 => 100644 soap/ressource_projekt.soap.php mode change 100755 => 100644 soap/soap_test_lv.php mode change 100755 => 100644 soap/soap_test_lvplan.php mode change 100755 => 100644 soap/soap_test_mitarbeiter.php mode change 100755 => 100644 soap/soap_test_ort.php mode change 100755 => 100644 soap/soap_test_person.php mode change 100755 => 100644 soap/soap_test_student.php mode change 100755 => 100644 soap/student.soap.php mode change 100755 => 100644 soap/student.wsdl.php mode change 100755 => 100644 system/dbupdate_3.2.php mode change 100755 => 100644 system/erinnerungsmail_coodle.php mode change 100755 => 100644 system/services/systemd/phantomjs@.service mode change 100755 => 100644 system/services/upstart/unoconv.conf mode change 100755 => 100644 system/sync/sync_stpldev_stpl.php mode change 100755 => 100644 system/templates/include.xsd mode change 100755 => 100644 system/templates/include_xslt_xhtml.xslt mode change 100755 => 100644 system/templates/news.xsd mode change 100755 => 100644 system/templates/news_infoscreen.xsd mode change 100755 => 100644 system/templates/news_infoscreen_xslt_xhtml.xslt mode change 100755 => 100644 system/templates/news_xslt_xhtml.xslt mode change 100755 => 100644 system/vorlage_zip/OutgoingChangeL.odt mode change 100755 => 100644 system/vorlage_zip/OutgoingLearning.odt mode change 100755 => 100644 system/vorlage_zip/PrProtBA.odt mode change 100755 => 100644 system/vorlage_zip/PrProtMA.odt mode change 100755 => 100644 system/vorlage_zip/Zutrittskarte.odt mode change 100755 => 100644 system/xsl/ZertifikatAO.xsl mode change 100755 => 100644 system/xsl/Zutrittskarte.xsl mode change 100755 => 100644 vilesci/admin/XPI/PlannerProduktiv/Planner.xpi mode change 100755 => 100644 vilesci/admin/XPI/PlannerProduktiv/chrome/content/contents.rdf mode change 100755 => 100644 vilesci/admin/XPI/PlannerProduktiv/chrome/content/planner.xul mode change 100755 => 100644 vilesci/admin/XPI/PlannerProduktiv/chrome/planner.jar mode change 100755 => 100644 vilesci/admin/XPI/PlannerProduktiv/install.js mode change 100755 => 100644 vilesci/admin/XPI/PlannerProduktiv/install.rdf mode change 100755 => 100644 vilesci/admin/XPI/Seamonkey2.11/fhcomplete/make.sh mode change 100755 => 100644 vilesci/fhausweis/bildpruefung.php mode change 100755 => 100644 vilesci/fhausweis/kartenkorrektur.php mode change 100755 => 100644 vilesci/fhausweis/kartentausch.php mode change 100755 => 100644 vilesci/fhausweis/kartenverwaltung.php mode change 100755 => 100644 vilesci/fhausweis/kartezuweisen.php mode change 100755 => 100644 vilesci/fhausweis/search.php mode change 100755 => 100644 vilesci/fhausweis/verlaengerung.php mode change 100755 => 100644 vilesci/lehre/einheit_autocomplete.php mode change 100755 => 100644 vilesci/lehre/freifach.php mode change 100755 => 100644 vilesci/lehre/freifach_lektoren.php mode change 100755 => 100644 vilesci/lehre/lehrveranstaltung_kompatibel.php mode change 100755 => 100644 vilesci/lehre/studienordnung.js mode change 100755 => 100644 vilesci/personen/leistungsstipendium.php mode change 100755 => 100644 vilesci/personen/outgoing_detail.php mode change 100755 => 100644 vilesci/personen/outgoing_frameset.php mode change 100755 => 100644 vilesci/personen/outgoing_uebersicht.php mode change 100755 => 100644 vilesci/stammdaten/ampel_details.php mode change 100755 => 100644 vilesci/stammdaten/ampel_frameset.html mode change 100755 => 100644 vilesci/stammdaten/ampel_uebersicht.php mode change 100755 => 100644 vilesci/stammdaten/imexport/zutrittskarten/generatefromsipass_predelete.php mode change 100755 => 100644 vilesci/stammdaten/infoscreen_details.php mode change 100755 => 100644 vilesci/stammdaten/infoscreen_frameset.html mode change 100755 => 100644 vilesci/stammdaten/infoscreen_preview.php mode change 100755 => 100644 vilesci/stammdaten/infoscreen_uebersicht.php mode change 100755 => 100644 vilesci/stammdaten/lvbgruppenverwaltung.js mode change 100755 => 100644 vilesci/stammdaten/lvbgruppenverwaltungDetail.php mode change 100755 => 100644 vilesci/stammdaten/lvbgruppenverwaltungTree.php mode change 100755 => 100644 vilesci/stammdaten/service_details.php mode change 100755 => 100644 vilesci/stammdaten/service_frameset.html mode change 100755 => 100644 vilesci/stammdaten/service_uebersicht.php mode change 100755 => 100644 vilesci/stammdaten/studiengang_edit.php mode change 100755 => 100644 webdav/google.txt diff --git a/CHANGELOG.md b/CHANGELOG.md old mode 100755 new mode 100644 diff --git a/application/cache/index.html b/application/cache/index.html old mode 100755 new mode 100644 diff --git a/application/config/autoload.php b/application/config/autoload.php old mode 100755 new mode 100644 diff --git a/application/config/config.php b/application/config/config.php old mode 100755 new mode 100644 diff --git a/application/config/constants.php b/application/config/constants.php old mode 100755 new mode 100644 diff --git a/application/config/database.php b/application/config/database.php old mode 100755 new mode 100644 diff --git a/application/config/doctypes.php b/application/config/doctypes.php old mode 100755 new mode 100644 diff --git a/application/config/extensions/.placeholder b/application/config/extensions/.placeholder new file mode 100644 index 000000000..8d1c8b69c --- /dev/null +++ b/application/config/extensions/.placeholder @@ -0,0 +1 @@ + diff --git a/application/config/fhcomplete.php b/application/config/fhcomplete.php old mode 100755 new mode 100644 diff --git a/application/config/foreign_chars.php b/application/config/foreign_chars.php old mode 100755 new mode 100644 diff --git a/application/config/hooks.php b/application/config/hooks.php old mode 100755 new mode 100644 diff --git a/application/config/index.html b/application/config/index.html old mode 100755 new mode 100644 diff --git a/application/config/mail.php b/application/config/mail.php old mode 100755 new mode 100644 diff --git a/application/config/memcached.php b/application/config/memcached.php old mode 100755 new mode 100644 diff --git a/application/config/migration.php b/application/config/migration.php old mode 100755 new mode 100644 diff --git a/application/config/mimes.php b/application/config/mimes.php old mode 100755 new mode 100644 diff --git a/application/config/profiler.php b/application/config/profiler.php old mode 100755 new mode 100644 diff --git a/application/config/roles.php b/application/config/roles.php old mode 100755 new mode 100644 diff --git a/application/config/routes.php b/application/config/routes.php old mode 100755 new mode 100644 diff --git a/application/config/smileys.php b/application/config/smileys.php old mode 100755 new mode 100644 diff --git a/application/config/user_agents.php b/application/config/user_agents.php old mode 100755 new mode 100644 diff --git a/application/controllers/ViewMessage.php b/application/controllers/ViewMessage.php old mode 100755 new mode 100644 diff --git a/application/controllers/Vilesci.php b/application/controllers/Vilesci.php old mode 100755 new mode 100644 diff --git a/application/controllers/extensions/.placeholder b/application/controllers/extensions/.placeholder new file mode 100644 index 000000000..8d1c8b69c --- /dev/null +++ b/application/controllers/extensions/.placeholder @@ -0,0 +1 @@ + diff --git a/application/controllers/index.html b/application/controllers/index.html old mode 100755 new mode 100644 diff --git a/application/controllers/system/Login.php b/application/controllers/system/Login.php old mode 100755 new mode 100644 diff --git a/application/controllers/system/Messages.php b/application/controllers/system/Messages.php old mode 100755 new mode 100644 diff --git a/application/controllers/system/Vorlage.php b/application/controllers/system/Vorlage.php old mode 100755 new mode 100644 diff --git a/application/controllers/system/extensions/Manager.php b/application/controllers/system/extensions/Manager.php new file mode 100644 index 000000000..8eda6be41 --- /dev/null +++ b/application/controllers/system/extensions/Manager.php @@ -0,0 +1,83 @@ +load->helper(array('form', 'url')); + + // Loads the extensions library + $this->load->library('ExtensionsLib'); + } + + /** + * + */ + public function index() + { + $viewData = array( + 'extensions' => $this->extensionslib->getInstalledExtensions() + ); + + $this->load->view('core/system/extensions/manager.php', $viewData); + } + + /** + * + */ + public function toggleExtension() + { + $toggleExtension = false; + + $extension_id = $this->input->post('extension_id'); + $enabled = $this->input->post('enabled'); + + if ($enabled === 'true') + { + $toggleExtension = $this->extensionslib->enableExtension($extension_id); + } + else + { + $toggleExtension = $this->extensionslib->disableExtension($extension_id); + } + + $this->output + ->set_content_type('application/json') + ->set_output(json_encode($toggleExtension)); + } + + /** + * + */ + public function delExtension() + { + $delExtension = false; + + $extension_id = $this->input->post('extension_id'); + + $delExtension = $this->extensionslib->delExtension($extension_id); + + $this->output + ->set_content_type('application/json') + ->set_output(json_encode($delExtension)); + } + + /** + * + */ + public function uploadExtension() + { + $this->extensionslib->installExtension(); + } +} diff --git a/application/core/index.html b/application/core/index.html old mode 100755 new mode 100644 diff --git a/application/helpers/extensions/.placeholder b/application/helpers/extensions/.placeholder new file mode 100644 index 000000000..8d1c8b69c --- /dev/null +++ b/application/helpers/extensions/.placeholder @@ -0,0 +1 @@ + diff --git a/application/helpers/index.html b/application/helpers/index.html old mode 100755 new mode 100644 diff --git a/application/hooks/extensions/.placeholder b/application/hooks/extensions/.placeholder new file mode 100644 index 000000000..8d1c8b69c --- /dev/null +++ b/application/hooks/extensions/.placeholder @@ -0,0 +1 @@ + diff --git a/application/hooks/index.html b/application/hooks/index.html old mode 100755 new mode 100644 diff --git a/application/index.html b/application/index.html old mode 100755 new mode 100644 diff --git a/application/language/de-AT/index.html b/application/language/de-AT/index.html old mode 100755 new mode 100644 diff --git a/application/language/index.html b/application/language/index.html old mode 100755 new mode 100644 diff --git a/application/language/system/index.html b/application/language/system/index.html old mode 100755 new mode 100644 diff --git a/application/libraries/EPrintfLib.php b/application/libraries/EPrintfLib.php new file mode 100644 index 000000000..dbef1348c --- /dev/null +++ b/application/libraries/EPrintfLib.php @@ -0,0 +1,138 @@ + "red", 33 => "orange"); + // Used to set if the migration process is called via command line or via browser + private $cli; + + /** + * Object initialization + */ + public function __construct() + { + // Get code igniter instance + $this->ci =& get_instance(); + + $this->setCli(); + } + + // ------------------------------------------------------------------------------------------------- + // Public methods + + /** + * Prints a formatted message + */ + public function printMessage($message) + { + $this->_print(EPrintfLib::MSG_PREFIX, $message); + } + + /** + * Prints a formatted info + */ + public function printInfo($info) + { + $this->_print(EPrintfLib::INFO_PREFIX, $info, EPrintfLib::INFO_COLOR); + } + + /** + * Prints a formatted error + */ + public function printError($error) + { + $this->_print(EPrintfLib::ERROR_PREFIX, $error, EPrintfLib::ERROR_COLOR); + } + + /** + * Print only the end of line + */ + public function printEOL() + { + echo $this->getEOL(); + } + + // ------------------------------------------------------------------------------------------------- + // Private methods + + /** + * Set property cli to false if the migration process is called via command line + * otherwise to false if it's called via browser + */ + private function setCli() + { + if ($this->ci->input->is_cli_request()) + { + $this->cli = true; + } + else + { + $this->cli = false; + } + } + + /** + * Returns the character of end of line + * PHP_EOL platform dependent if cli is true + * Tag
if cli is false + */ + private function getEOL() + { + if ($this->cli === true) + { + return PHP_EOL; + } + else + { + return "
"; + } + } + + /** + * Returns the string needed to color the output + */ + private function getColored($color) + { + $colored = "%s"; + + if (!is_null($color)) + { + if ($this->cli === true) + { + $colored = "\033[".$color."m%s\033[37m"; + } + else + { + $colored = "HTML_COLORS[$color]."\">%s"; + } + } + + return $colored; + } + + /** + * Print a message, even colored if specified + */ + private function _print($prefix, $text, $color = null) + { + printf($this->getColored($color), sprintf("%s %s".$this->getEOL(), $prefix, $text)); + } +} diff --git a/application/libraries/ExtensionsLib.php b/application/libraries/ExtensionsLib.php new file mode 100644 index 000000000..196d0d57e --- /dev/null +++ b/application/libraries/ExtensionsLib.php @@ -0,0 +1,824 @@ +ci =& get_instance(); + + // Loads message configurationx + $this->ci->config->load('message'); + + // Loads EPrintfLib + $this->ci->load->library('EPrintfLib'); + + // Loading models + $this->ci->load->model('core/system/Extensions_model', 'ExtensionsModel'); + + // + $this->_errorOccurred = false; + $this->_currentInstalledExtensionVersion = 0; + } + + // ------------------------------------------------------------------------------------------------- + // Public methods + + /** + * + */ + public function installExtension() + { + $extensionDB = null; + $extensionJson = null; + + $this->_printInfo('WARNING!!! Please do not change page or stop this procedure before it is finished'); + + $this->_loadUploadLibrary(); + + $uploadData = $this->_uploadExtension(); + + if ($uploadData != null) + { + $this->_extractExtension($uploadData->fullPath); + + if (!$this->_errorOccurred) + { + $extensionDB = $this->_loadPreviousInstallation($uploadData->extensionName); + } + + if (!$this->_errorOccurred) + { + $this->_chkFSStructure($uploadData->extensionName); + } + + if (!$this->_errorOccurred) + { + $extensionJson = $this->_chkExtensionJson($uploadData->extensionName, $extensionDB); + } + + if ($extensionJson != null) + { + $this->_printStart('Proceding with the installation of the extension: '.$extensionJson->name); + $this->_printEnd(); + + $this->_cleanPreviousInstallation($extensionJson); + + $this->_installExtension($extensionJson); + + if (!$this->_errorOccurred) + { + $this->_loadSQLs( + ExtensionsLib::UPLOAD_PATH.$extensionJson->name.'/'.ExtensionsLib::SQL_DIRECTORY, + $extensionJson + ); + } + + if (!$this->_errorOccurred) + { + $this->_moveExtension($extensionJson->name); + } + + if (!$this->_errorOccurred) + { + $this->_createSymLinks($extensionJson->name); + } + } + else + { + $this->_errorOccurred = true; + } + } + else + { + $this->_errorOccurred = true; + } + + if ($this->_errorOccurred === false) + { + if (!$this->_rrm($uploadData->fullPath)) + { + $this->_printInfo('Error while cleaning upload directory. Not a blocking error'); + } + + $this->_printMessage('Extension correctly installed, you can safely close this page'); + } + else + { + $this->_printError('There was a blocking error while installing/updating an extension, rolling back'); + + $this->_rollback($uploadData, $extensionDB, $extensionJson); + } + } + + /** + * + */ + public function delExtension($extensionId) + { + $delExtension = false; + + $result = $this->ci->ExtensionsModel->load($extensionId); + if (hasData($result)) + { + $extensionName = $result->retval[0]->name; + $this->_delSoftLinks($extensionName); // not to be checked, could fail if the extension is disabled + $delExtension = $this->_rrm(ExtensionsLib::EXTENSIONS_PATH.$extensionName); + + $this->ci->ExtensionsModel->addSelect('extension_id'); + $result = $this->ci->ExtensionsModel->loadWhere(array('name' => $extensionName)); + if (hasData($result)) + { + $extsArray = array(); + foreach ($result->retval as $key => $extension) + { + $result = $this->ci->ExtensionsModel->delete($extension->extension_id); + if (isSuccess($result)) + { + $delExtension = true; + } + } + } + } + + return $delExtension; + } + + /** + * + */ + public function getInstalledExtensions() + { + return $this->ci->ExtensionsModel->getInstalledExtensions(); + } + + /** + * + */ + public function enableExtension($extensionId) + { + return $this->_toggleExtension($extensionId, true); + } + + /** + * + */ + public function disableExtension($extensionId) + { + return $this->_toggleExtension($extensionId, false); + } + + // ------------------------------------------------------------------------------------------------- + // Private methods + + /** + * + */ + private function _loadUploadLibrary() + { + $this->ci->load->library( + 'upload', + array( + 'upload_path' => ExtensionsLib::UPLOAD_PATH, + 'allowed_types' => '*', + 'overwrite' => true + ) + ); + } + + /** + * + */ + private function _uploadExtension() + { + $_uploadExtension = null; + + $this->_printStart('Uploading extension'); + + if ($this->ci->upload->do_upload(ExtensionsLib::FILE_INPUT_NAME)) + { + $uploadData = $this->ci->upload->data(); + $uploadedFileExtension = '.'.pathinfo($uploadData['full_path'], PATHINFO_EXTENSION); + if (!in_array($uploadedFileExtension, ExtensionsLib::ARCHIVE_EXTENSIONS)) + { + $this->_printFailure('file extension must be tgz OR tbz2'); + + if (isset($uploadData['full_path']) && file_exists($uploadData['full_path'])) + { + $this->_rrm($uploadData['full_path']); + } + } + else + { + $_uploadExtension = new stdClass(); + $_uploadExtension->extensionName = str_replace(ExtensionsLib::ARCHIVE_EXTENSIONS, '', $uploadData['file_name']); + $_uploadExtension->fullPath = $uploadData['full_path']; + } + } + else + { + $this->_printFailure($this->ci->upload->display_errors('', '')); + } + + $this->_printSuccess($_uploadExtension != null); + + $this->_printEnd(); + + return $_uploadExtension; + } + + /** + * + */ + private function _extractExtension($uploadPath) + { + $this->_printStart('Extracting extension'); + + try + { + $pd = new PharData($uploadPath); + + $pd->extractTo(ExtensionsLib::UPLOAD_PATH, null, true); + } + catch (UnexpectedValueException $uva) + { + $this->_errorOccurred = true; + $this->_printFailure('provided an invalid archive'); + } + catch (PharException $pe) + { + $this->_errorOccurred = true; + $this->_printFailure('generic error occurred, check logs'); + } + + $this->_printSuccess(!$this->_errorOccurred); + + $this->_printEnd(); + } + + /** + * + */ + private function _loadPreviousInstallation($extensionName) + { + $extensionDB = null; + + $this->_printStart('Loads any previous installation data'); + + $this->ci->ExtensionsModel->addOrder('version', 'DESC'); + $this->ci->ExtensionsModel->addLimit(1); + $result = $this->ci->ExtensionsModel->loadWhere(array('name' => $extensionName)); + if (isError($result)) + { + $this->_errorOccurred = true; + $this->_printFailure('data base error'); + } + else + { + if (hasData($result)) + { + $extensionDB = $result->retval[0]; + } + else + { + $this->_printMessage('not found'); + } + } + + $this->_printSuccess(!$this->_errorOccurred); + + $this->_printEnd(); + + return $extensionDB; + } + + /** + * + */ + private function _chkFSStructure($extensionName) + { + $this->_printStart('Checking extension file system structure'); + + if (is_dir(ExtensionsLib::UPLOAD_PATH.$extensionName)) + { + if (!file_exists(ExtensionsLib::UPLOAD_PATH.$extensionName.'/'.ExtensionsLib::EXTENSION_JSON_NAME)) + { + $this->_errorOccurred = true; + $this->_printFailure('missing extension.json'); + } + } + else + { + $this->_errorOccurred = true; + $this->_printFailure('the root directory of the archive must have the same extension name'); + } + + $this->_printSuccess(!$this->_errorOccurred); + + $this->_printEnd(); + } + + /** + * + */ + private function _chkExtensionJson($extensionName, $extensionDB) + { + $this->_printStart('Parsing and checking extension.json'); + + $extensionJson = json_decode( + file_get_contents(ExtensionsLib::UPLOAD_PATH.$extensionName.'/'.ExtensionsLib::EXTENSION_JSON_NAME) + ); + + if ($extensionJson != null && isset($extensionJson->name) && $extensionJson->name == $extensionName) + { + if (isset($extensionJson->version)) + { + $extensionJson->currentInstalledVersion = 0; + + if ($extensionDB != null) + { + $extensionJson->extension_id = $extensionDB->extension_id; // + $extensionJson->currentInstalledVersion = $extensionDB->version; + + $this->_printMessage('Extension already installed!'); + $this->_printMessage('Current version: '.$extensionDB->version); + $this->_printMessage('Version of the uploaded extension: '.$extensionJson->version); + + if ($extensionJson->version == $extensionDB->version) + { + $this->_printMessage('Updating the same version!'); + } + elseif ($extensionJson->version > $extensionDB->version) + { + $this->_printMessage('Updating to a new version!'); + } + else + { + $extensionJson = null; + $this->_printFailure('downgrade must be performed manually'); + } + } + else + { + $this->_printMessage('Version of the uploaded extension: '.$extensionJson->version); + } + + if ($extensionJson != null) + { + require_once('version.php'); + if (isset($extensionJson->core_version) && $extensionJson->core_version == $fhcomplete_version) + { + $this->_printMessage('Required core version: '.$extensionJson->core_version); + $this->_printMessage('Current core version: '.$fhcomplete_version); + + if (isset($extensionJson->dependencies) + && is_array($extensionJson->dependencies) + && count($extensionJson->dependencies) > 0) + { + $result = $this->ci->ExtensionsModel->getDependencies($extensionJson->dependencies); + if (hasData($result) && count($result->retval) == count($extensionJson->dependencies)) + { + if (isset($extensionJson->dependencies)) + { + $extensionJson->dependencies = str_replace('[', '{', json_encode($extensionJson->dependencies)); + $extensionJson->dependencies = str_replace(']', '}', $extensionJson->dependencies); + + $this->_printMessage('Required dependencies: '.$extensionJson->dependencies); + } + else + { + $extensionJson->dependencies = ''; + + $this->_printMessage('No dependencies are required'); + } + } + else + { + $extensionJson = null; + $this->_printFailure('dependencies are missing, install them to proceed'); + } + } + elseif (isset($extensionJson->dependencies) && !is_array($extensionJson->dependencies)) + { + $extensionJson = null; + $this->_printFailure('dependencies parameter must be an array'); + } + elseif (!isset($extensionJson->dependencies)) + { + $this->_printMessage('No dependencies are required'); + } + } + else + { + $extensionJson = null; + $this->_printFailure('core_version parameter is missing or it is not equal to the versione of the core'); + } + } + } + else + { + $extensionJson = null; + $this->_printFailure('version is missing'); + } + } + else + { + $extensionJson = null; + $this->_printFailure('name is missing or not equal to extension name'); + } + + $this->_printSuccess($extensionJson != null); + + $this->_printEnd(); + + return $extensionJson; + } + + /** + * + */ + private function _cleanPreviousInstallation($extensionJson) + { + $this->_printStart('Cleaning any previous installations in DB and file system'); + + if (isset($extensionJson->extension_id)) + { + if ($this->delExtension($extensionJson->extension_id)) + { + $this->_printSuccess(true); + } + else + { + $this->_printFailure('please check logs'); + } + } + else + { + $this->_printMessage('No need to clean, no previous installations found'); + } + + $this->_printEnd(); + } + + /** + * + */ + private function _installExtension($extensionJson) + { + $this->_printStart('Adding new entry in the DB'); + + $result = $this->ci->ExtensionsModel->insert( + array( + 'name' => $extensionJson->name, + 'description' => isset($extensionJson->description) ? $extensionJson->description : null, + 'version' => $extensionJson->version, + 'license' => isset($extensionJson->license) ? $extensionJson->license : null, + 'url' => isset($extensionJson->url) ? $extensionJson->url : null, + 'core_version' => $extensionJson->core_version, + 'dependencies' => $extensionJson->dependencies + ) + ); + if (isSuccess($result)) + { + $this->_printSuccess(true); + } + else + { + $this->_errorOccurred = true; + $this->_printFailure('error while saving extension into DB'); + } + + $this->_printEnd(); + } + + /** + * TODO + */ + private function _loadSQLs($pkgSQLsPath, $extensionJson) + { + $this->_printStart('Loading and executing SQL files'); + + for ($sqlDir = $extensionJson->currentInstalledVersion; $sqlDir <= $extensionJson->version; $sqlDir++) + { + if (($files = glob($pkgSQLsPath.'/'.$sqlDir.'/*'.ExtensionsLib::SQL_FILE_EXTENSION)) != false) + { + foreach ($files as $file) + { + $sql = file_get_contents($file); + + $this->_printMessage('Executing query:'); + $this->_printMessage($sql); + + if (!isSuccess($result = @$this->ci->ExtensionsModel->executeQuery($sql))) + { + $this->_errorOccurred = true; + $this->_printFailure(' error occurred while executing the query'); + $this->_printInfo('Is not possible to rollback the DB changes, must be done manually'); + break; + } + else + { + $this->_printMessage('Query result:'); + var_dump($result->retval); + $this->ci->eprintflib->printEOL(); + } + } + } + } + + $this->_printSuccess(!$this->_errorOccurred); + + $this->_printEnd(); + } + + /** + * + */ + private function _moveExtension($extensionName) + { + $this->_printStart('Moving the upload extension from upload folder to extension folder'); + + $this->_printMessage('Current extension directory: '.ExtensionsLib::UPLOAD_PATH.$extensionName); + $this->_printMessage('Directory where it will be moved: '.ExtensionsLib::EXTENSIONS_PATH.$extensionName); + + if (rename(ExtensionsLib::UPLOAD_PATH.$extensionName.'/', ExtensionsLib::EXTENSIONS_PATH.$extensionName)) + { + $this->_printSuccess(true); + } + else + { + $this->_errorOccurred = true; + $this->_printFailure('error while moving'); + } + + $this->_printEnd(); + } + + /** + * + */ + private function _createSymLinks($extensionName) + { + $this->_printStart('Creating symlinks'); + + if ($this->_addSoftLinks($extensionName)) + { + $this->_printSuccess(true); + } + else + { + $this->_errorOccurred = true; + $this->_printFailure('error while creating sym links'); + } + + $this->_printEnd(); + } + + /** + * + */ + private function _delSoftLinks($extensionName) + { + $_delSoftLinks = false; + + foreach (ExtensionsLib::SOFTLINK_TARGET_DIRECTORIES as $key => $targetDirectory) + { + if (file_exists(APPPATH.$targetDirectory.'/'.$extensionName)) + { + $_delSoftLinks = unlink(APPPATH.$targetDirectory.'/'.$extensionName); + if (!$_delSoftLinks) + { + break; + } + } + } + + return $_delSoftLinks; + } + + /** + * Recursive remove + */ + private function _rrm($dir) + { + if (!file_exists($dir)) + { + return true; + } + + if (!is_dir($dir)) + { + return unlink($dir); + } + + foreach (scandir($dir) as $item) + { + if ($item == '.' || $item == '..') + { + continue; + } + + if (!$this->_rrm($dir . DIRECTORY_SEPARATOR . $item)) + { + return false; + } + } + + return rmdir($dir); + } + + /** + * + */ + private function _addSoftLinks($extensionName) + { + $_addSoftLinks = false; + $extensionPath = ExtensionsLib::EXTENSIONS_PATH.$extensionName.'/'; + + foreach (ExtensionsLib::SOFTLINK_TARGET_DIRECTORIES as $key => $targetDirectory) + { + if (!file_exists(APPPATH.$targetDirectory.'/'.$extensionName)) + { + if (!is_dir($extensionPath.$targetDirectory)) + { + mkdir($extensionPath.$targetDirectory); + } + + $_addSoftLinks = symlink($extensionPath.$targetDirectory, APPPATH.$targetDirectory.'/'.$extensionName); + if (!$_addSoftLinks) + { + break; + } + } + } + + return $_addSoftLinks; + } + + /** + * + */ + private function _rollback($uploadData, $extensionDB, $extensionJson) + { + $this->_printStart('Rolling back the installation'); + + $this->_printMessage('Removing the uploaded file from upload directory'); + if ($uploadData != null && isset($uploadData->fullPath) && file_exists($uploadData->fullPath)) + { + $this->_rrm($uploadData->fullPath); + } + + $this->_printMessage('Removing the extracted data from the upload directory'); + if ($uploadData != null + && isset($uploadData->extensionName) + && file_exists(ExtensionsLib::UPLOAD_PATH.$uploadData->extensionName)) + { + $this->_rrm(ExtensionsLib::UPLOAD_PATH.$uploadData->extensionName); + } + + if ($uploadData != null && isset($uploadData->extensionName) && $extensionDB == null) + { + $this->ci->ExtensionsModel->addOrder('version', 'DESC'); + $this->ci->ExtensionsModel->addLimit(1); + $result = $this->ci->ExtensionsModel->loadWhere(array('name' => $uploadData->extensionName)); + if (hasData($result)) + { + $this->_printMessage('Removing entries in the DB related to this extension'); + $this->delExtension($result->retval[0]->extension_id); + } + } + else + { + if ($extensionJson != null && isset($extensionJson->extension_id)) + { + $this->ci->ExtensionsModel->delete($extensionJson->extension_id); + } + } + + $this->_printMessage('Rollback finished'); + + $this->_printEnd(); + } + + /** + * + */ + private function _toggleExtension($extensionId, $enabled) + { + $_toggleExtension = false; + + $result = $this->ci->ExtensionsModel->load($extensionId); + if (hasData($result)) + { + $extensionName = $result->retval[0]->name; + + if (!in_array($extensionName, ExtensionsLib::DIRECTORIES_BLACKLIST)) + { + if ($enabled === true) + { + $_toggleExtension = $this->_addSoftLinks($extensionName); + } + else + { + $_toggleExtension = $this->_delSoftLinks($extensionName); + } + + if ($_toggleExtension) + { + $result = $this->ci->ExtensionsModel->update($extensionId, array('enabled' => $enabled)); + if (isSuccess($result)) + { + $_toggleExtension = true; + } + else + { + $this->_delSoftLinks($extensionName); + } + } + } + } + + return $_toggleExtension; + } + + /** + * + */ + private function _printError($error) + { + $this->ci->eprintflib->printError($error); + } + + /** + * + */ + private function _printFailure($error) + { + $this->_printError('Failed: '.$error); + } + + /** + * + */ + private function _printMessage($message) + { + $this->ci->eprintflib->printMessage($message); + } + + /** + * + */ + private function _printSuccess($cond) + { + if ($cond === true) + { + $this->_printMessage('Success!!!'); + } + } + + /** + * + */ + private function _printInfo($info) + { + $this->ci->eprintflib->printInfo($info); + } + + /** + * + */ + private function _printStart($startMessage) + { + $this->_printInfo('------------------------------------------------------------------------------------------'); + $this->_printMessage($startMessage); + } + + /** + * + */ + private function _printEnd() + { + $this->_printInfo('------------------------------------------------------------------------------------------'); + } +} diff --git a/application/libraries/MailLib.php b/application/libraries/MailLib.php old mode 100755 new mode 100644 diff --git a/application/libraries/MessageLib.php b/application/libraries/MessageLib.php old mode 100755 new mode 100644 diff --git a/application/libraries/MigrationLib.php b/application/libraries/MigrationLib.php index a35cafc65..a461d7a82 100644 --- a/application/libraries/MigrationLib.php +++ b/application/libraries/MigrationLib.php @@ -7,173 +7,72 @@ if (! defined("BASEPATH")) exit("No direct script access allowed"); */ class MigrationLib extends CI_Migration { - // Prefixes and separator for messages - const MSG_PREFIX = "[-]"; - const INFO_PREFIX = "[I]"; - const ERROR_PREFIX = "[E]"; - const SEPARATOR = "------------------------------"; - // Console colors codes - const ERROR_COLOR = 31; - const INFO_COLOR = 33; - - const PRINT_QUERY_LEN = 60; - - // HTML colors names - private $HTML_COLORS = array(31 => "red", 33 => "orange"); - // Used to set if the migration process is called via command line or via browser - private $cli; - /** * Object initialization */ public function __construct() { parent::__construct(); - $this->setCli(); + + // Loads EPrintfLib + $this->load->library('EPrintfLib'); } - - /** - * Set property cli to false if the migration process is called via command line - * otherwise to false if it's called via browser - */ - private function setCli() - { - if ($this->input->is_cli_request()) - { - $this->cli = true; - } - else - { - $this->cli = false; - } - } - - /** - * Returns the character of end of line - * PHP_EOL platform dependent if cli is true - * Tag
if cli is false - */ - private function getEOL() - { - if ($this->cli === true) - { - return PHP_EOL; - } - else - { - return "
"; - } - } - - /** - * Returns the string needed to color the output - */ - private function getColored($color) - { - $colored = "%s"; - - if (!is_null($color)) - { - if ($this->cli === true) - { - $colored = "\033[".$color."m%s\033[37m"; - } - else - { - $colored = "HTML_COLORS[$color]."\">%s"; - } - } - - return $colored; - } - - /** - * Print a message, even colored if specified - */ - private function _print($prefix, $text, $color = null) - { - printf($this->getColored($color), sprintf("%s %s".$this->getEOL(), $prefix, $text)); - } - - /** - * Prints a formatted message - */ - private function printMessage($message) - { - $this->_print(MigrationLib::MSG_PREFIX, $message); - } - - /** - * Prints a formatted info - */ - private function printInfo($info) - { - $this->_print(MigrationLib::INFO_PREFIX, $info, MigrationLib::INFO_COLOR); - } - - /** - * Prints a formatted error - */ - private function printError($error) - { - $this->_print(MigrationLib::ERROR_PREFIX, $error, MigrationLib::ERROR_COLOR); - } - + /** * Check if a column exists in a table and schema */ private function columnExists($name, $schema, $table) { $query = sprintf("SELECT %s FROM %s.%s LIMIT 1", $name, $schema, $table); - + if (@$this->db->simple_query($query)) { return true; } - + return false; } - + /** * Print an info about the starting of method up */ protected function startUP() { - $this->printInfo( - sprintf("%s Start method up of class %s %s", MigrationLib::SEPARATOR, get_called_class(), MigrationLib::SEPARATOR) + $this->eprintflib->printInfo( + sprintf("%s Start method up of class %s %s", EPrintfLib::SEPARATOR, get_called_class(), EPrintfLib::SEPARATOR) ); } - + /** * Print an info about the ending of method up */ protected function endUP() { - $this->printInfo( - sprintf("%s End method up of class %s %s", MigrationLib::SEPARATOR, get_called_class(), MigrationLib::SEPARATOR) + $this->eprintflib->printInfo( + sprintf("%s End method up of class %s %s", EPrintfLib::SEPARATOR, get_called_class(), EPrintfLib::SEPARATOR) ); } - + /** * Print an info about the starting of method down */ protected function startDown() { - $this->printInfo( - sprintf("%s Start method down of class %s %s", MigrationLib::SEPARATOR, get_called_class(), MigrationLib::SEPARATOR) + $this->eprintflib->printInfo( + sprintf("%s Start method down of class %s %s", EPrintfLib::SEPARATOR, get_called_class(), EPrintfLib::SEPARATOR) ); } - + /** * Print an info about the ending of method down */ protected function endDown() { - $this->printInfo( - sprintf("%s End method down of class %s %s", MigrationLib::SEPARATOR, get_called_class(), MigrationLib::SEPARATOR) + $this->eprintflib->printInfo( + sprintf("%s End method down of class %s %s", EPrintfLib::SEPARATOR, get_called_class(), EPrintfLib::SEPARATOR) ); } - + /** * Adds a column, with attributes, to a table and schema */ @@ -185,20 +84,20 @@ class MigrationLib extends CI_Migration { if ($this->dbforge->add_column($schema.'.'.$table, array($name => $definition))) { - $this->printMessage(sprintf("Column %s.%s.%s of type %s added", $schema, $table, $name, $definition["type"])); + $this->eprintflib->printMessage(sprintf("Column %s.%s.%s of type %s added", $schema, $table, $name, $definition["type"])); } else { - $this->printError(sprintf("Error while adding column %s.%s.%s of type %s", $schema, $table, $name, $definition["type"])); + $this->eprintflib->printError(sprintf("Error while adding column %s.%s.%s of type %s", $schema, $table, $name, $definition["type"])); } } else { - $this->printInfo(sprintf("Column %s.%s.%s already exists", $schema, $table, $name)); + $this->eprintflib->printInfo(sprintf("Column %s.%s.%s already exists", $schema, $table, $name)); } } } - + /** * Modifies a column, and its attributes, of a table and schema */ @@ -210,20 +109,20 @@ class MigrationLib extends CI_Migration { if ($this->dbforge->modify_column($schema.'.'.$table, array($name => $definition))) { - $this->printMessage(sprintf("Column %s.%s.%s has been modified", $schema, $table, $name)); + $this->eprintflib->printMessage(sprintf("Column %s.%s.%s has been modified", $schema, $table, $name)); } else { - $this->printError(sprintf("Error while modifying column %s.%s.%s", $schema, $table, $name)); + $this->eprintflib->printError(sprintf("Error while modifying column %s.%s.%s", $schema, $table, $name)); } } else { - $this->printInfo(sprintf("Column %s.%s.%s doesn't exist", $schema, $table, $name)); + $this->eprintflib->printInfo(sprintf("Column %s.%s.%s doesn't exist", $schema, $table, $name)); } } } - + /** * Drops a column from a table and schema */ @@ -233,19 +132,19 @@ class MigrationLib extends CI_Migration { if ($this->dbforge->drop_column($schema.'.'.$table, $field)) { - $this->printMessage(sprintf("Column %s.%s.%s has been dropped", $schema, $table, $field)); + $this->eprintflib->printMessage(sprintf("Column %s.%s.%s has been dropped", $schema, $table, $field)); } else { - $this->printError(sprintf("Error while dropping column %s.%s.%s", $schema, $table, $field)); + $this->eprintflib->printError(sprintf("Error while dropping column %s.%s.%s", $schema, $table, $field)); } } else { - $this->printInfo(sprintf("Column %s.%s.%s doesn't exist", $schema, $table, $field)); + $this->eprintflib->printInfo(sprintf("Column %s.%s.%s doesn't exist", $schema, $table, $field)); } } - + /** * Sets a column as primary key of a table and schema */ @@ -273,17 +172,17 @@ class MigrationLib extends CI_Migration { $query = sprintf("ALTER TABLE %s.%s ADD CONSTRAINT %s PRIMARY KEY (%s)", $schema, $table, $name, $fields); } - + if (@$this->db->simple_query($query)) { - $this->printMessage(sprintf("Added primary key %s on table %s.%s", $name, $schema, $table)); + $this->eprintflib->printMessage(sprintf("Added primary key %s on table %s.%s", $name, $schema, $table)); } else { - $this->printError(sprintf("Adding primary key %s on table %s.%s", $name, $schema, $table)); + $this->eprintflib->printError(sprintf("Adding primary key %s on table %s.%s", $name, $schema, $table)); } } - + /** * Sets a column as foreign key of a table and schema */ @@ -300,17 +199,17 @@ class MigrationLib extends CI_Migration $fieldDest, $attributes ); - + if (@$this->db->simple_query($query)) { - $this->printMessage(sprintf("Added foreign key %s on table %s.%s", $name, $schema, $table)); + $this->eprintflib->printMessage(sprintf("Added foreign key %s on table %s.%s", $name, $schema, $table)); } else { - $this->printError(sprintf("Adding foreign key %s on table %s.%s", $name, $schema, $table)); + $this->eprintflib->printError(sprintf("Adding foreign key %s on table %s.%s", $name, $schema, $table)); } } - + /** * Sets a column as unique key of a table and schema */ @@ -338,17 +237,17 @@ class MigrationLib extends CI_Migration { $query = sprintf("CREATE UNIQUE INDEX %s ON %s.%s (%s)", $name, $schema, $table, $fields); } - + if (@$this->db->simple_query($query)) { - $this->printMessage(sprintf("Added unique key %s on table %s.%s", $name, $schema, $table)); + $this->eprintflib->printMessage(sprintf("Added unique key %s on table %s.%s", $name, $schema, $table)); } else { - $this->printError(sprintf("Adding unique key %s on table %s.%s", $name, $schema, $table)); + $this->eprintflib->printError(sprintf("Adding unique key %s on table %s.%s", $name, $schema, $table)); } } - + /** * Grants permissions to a user on a table and schema */ @@ -379,7 +278,7 @@ class MigrationLib extends CI_Migration if (@$this->db->simple_query($query)) { - $this->printMessage( + $this->eprintflib->printMessage( sprintf( "Granted permissions %s on table %s.%s to user %s", is_null($stringPermission) ? $permissions : $stringPermission, @@ -391,7 +290,7 @@ class MigrationLib extends CI_Migration } else { - $this->printError( + $this->eprintflib->printError( sprintf( "Granting permissions %s on table %s.%s to user %s", is_null($stringPermission) ? $permissions : $stringPermission, @@ -402,24 +301,24 @@ class MigrationLib extends CI_Migration ); } } - + /** * Creates a table in a schema with columns */ protected function createTable($schema, $table, $fields) { $this->dbforge->add_field($fields); - + if ($this->dbforge->create_table($schema.'.'.$table, true)) { - $this->printMessage(sprintf("Table %s.%s created or existing", $schema, $table)); + $this->eprintflib->printMessage(sprintf("Table %s.%s created or existing", $schema, $table)); } else { - $this->printError(sprintf("Creating table %s.%s", $schema, $table)); + $this->eprintflib->printError(sprintf("Creating table %s.%s", $schema, $table)); } } - + /** * Drops a table from a schema */ @@ -427,62 +326,62 @@ class MigrationLib extends CI_Migration { if ($this->dbforge->drop_table($schema.".".$table)) { - $this->printMessage(sprintf("Table %s.%s has been dropped", $schema, $table)); + $this->eprintflib->printMessage(sprintf("Table %s.%s has been dropped", $schema, $table)); } else { - $this->printError(sprintf("Dropping table %s.%s", $schema, $table)); + $this->eprintflib->printError(sprintf("Dropping table %s.%s", $schema, $table)); } } - + /** * Initializes a sequence with the max value of a column */ protected function initializeSequence($schemaSrc, $sequence, $schemaDst, $table, $field) { $query = sprintf("SELECT SETVAL('%s.%s', (SELECT MAX(%s) FROM %s.%s))", $schemaSrc, $sequence, $field, $schemaDst, $table); - + if (@$this->db->simple_query($query)) { - $this->printMessage(sprintf("Sequence %s.%s has been initialized", $schemaSrc, $sequence)); + $this->eprintflib->printMessage(sprintf("Sequence %s.%s has been initialized", $schemaSrc, $sequence)); } else { - $this->printError(sprintf("Initializing sequence %s.%s", $schemaSrc, $sequence)); + $this->eprintflib->printError(sprintf("Initializing sequence %s.%s", $schemaSrc, $sequence)); } } - + /** * Add comment to a column */ protected function addCommentToColumn($schema, $table, $field, $comment) { $query = sprintf("COMMENT ON COLUMN %s.%s.%s IS ?", $schema, $table, $field); - + if (@$this->db->query($query, array($comment))) { - $this->printMessage(sprintf("Comment added to %s.%s.%s", $schema, $table, $field)); + $this->eprintflib->printMessage(sprintf("Comment added to %s.%s.%s", $schema, $table, $field)); } else { - $this->printError(sprintf("Error while adding comment to %s.%s.%s", $schema, $table, $field)); + $this->eprintflib->printError(sprintf("Error while adding comment to %s.%s.%s", $schema, $table, $field)); } } - + /** * Add comment to a table */ protected function addCommentToTable($schema, $table, $comment) { $query = sprintf("COMMENT ON TABLE %s.%s IS ?", $schema, $table, $field); - + if (@$this->db->query($query, array($comment))) { - $this->printMessage(sprintf("Comment added to %s.%s", $schema, $table)); + $this->eprintflib->printMessage(sprintf("Comment added to %s.%s", $schema, $table)); } else { - $this->printError(sprintf("Error while adding comment to %s.%s", $schema, $table)); + $this->eprintflib->printError(sprintf("Error while adding comment to %s.%s", $schema, $table)); } } /** @@ -515,7 +414,7 @@ class MigrationLib extends CI_Migration if (@$this->db->simple_query($query)) { - $this->printMessage( + $this->eprintflib->printMessage( sprintf( "Granted permissions %s on sequence %s.%s to user %s", is_null($stringPermission) ? $permissions : $stringPermission, @@ -527,7 +426,7 @@ class MigrationLib extends CI_Migration } else { - $this->printError( + $this->eprintflib->printError( sprintf( "Granting permissions %s on sequence %s.%s to user %s", is_null($stringPermission) ? $permissions : $stringPermission, @@ -538,7 +437,7 @@ class MigrationLib extends CI_Migration ); } } - + /** * Executes the given query */ @@ -547,21 +446,21 @@ class MigrationLib extends CI_Migration if (! @$this->db->simple_query($query)) { $error = $this->db->error(); - + if (is_array($error) && isset($error["message"])) { - $this->printError($error["message"]); + $this->eprintflib->printError($error["message"]); } else { - $this->printError("Error while executing a query"); + $this->eprintflib->printError("Error while executing a query"); } } - - $this->printInfo( + + $this->eprintflib->printInfo( "Query correctly executed: ". - substr(preg_replace("/\s+/", " ", trim($query)), 0, MigrationLib::PRINT_QUERY_LEN). - (strlen($query) > MigrationLib::PRINT_QUERY_LEN ? "..." : "") + substr(preg_replace("/\s+/", " ", trim($query)), 0, EPrintfLib::PRINT_QUERY_LEN). + (strlen($query) > EPrintfLib::PRINT_QUERY_LEN ? "..." : "") ); } } diff --git a/application/libraries/extensions/.placeholder b/application/libraries/extensions/.placeholder new file mode 100644 index 000000000..8d1c8b69c --- /dev/null +++ b/application/libraries/extensions/.placeholder @@ -0,0 +1 @@ + diff --git a/application/libraries/index.html b/application/libraries/index.html old mode 100755 new mode 100644 diff --git a/application/logs/index.html b/application/logs/index.html old mode 100755 new mode 100644 diff --git a/application/models/extensions/.placeholder b/application/models/extensions/.placeholder new file mode 100644 index 000000000..8d1c8b69c --- /dev/null +++ b/application/models/extensions/.placeholder @@ -0,0 +1 @@ + diff --git a/application/models/index.html b/application/models/index.html old mode 100755 new mode 100644 diff --git a/application/models/organisation/Organisationseinheit_model.php b/application/models/organisation/Organisationseinheit_model.php old mode 100755 new mode 100644 diff --git a/application/models/system/Extensions_model.php b/application/models/system/Extensions_model.php new file mode 100644 index 000000000..c93817040 --- /dev/null +++ b/application/models/system/Extensions_model.php @@ -0,0 +1,56 @@ +dbTable = 'system.tbl_extensions'; + $this->pk = 'extension_id'; + } + + /** + * getDependencies + */ + public function getDependencies($dependencies) + { + if (isError($ent = $this->isEntitled($this->dbTable, PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent; + + return $this->execQuery( + 'SELECT * + FROM '.$this->dbTable.' + WHERE enabled = TRUE + AND name IN ?', + array('name' => $dependencies) + ); + } + + /** + * + */ + public function getInstalledExtensions() + { + $query = 'SELECT extension_id, e1.name, e1.version, description, license, url, core_version, dependencies, enabled + FROM system.tbl_extensions e1 + INNER JOIN ( + SELECT name, MAX(version) AS version + FROM system.tbl_extensions + GROUP BY name) e2 + ON (e1.name = e2.name AND e1.version = e2.version)'; + + return $this->execQuery($query); + } + + /** + * + */ + public function executeQuery($sql) + { + if (isError($ent = $this->isEntitled($this->dbTable, PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent; + + return $this->execQuery($sql); + } +} diff --git a/application/models/system/MessageToken_model.php b/application/models/system/MessageToken_model.php old mode 100755 new mode 100644 diff --git a/application/third_party/index.html b/application/third_party/index.html old mode 100755 new mode 100644 diff --git a/application/views/errors/cli/error_404.php b/application/views/errors/cli/error_404.php old mode 100755 new mode 100644 diff --git a/application/views/errors/cli/error_db.php b/application/views/errors/cli/error_db.php old mode 100755 new mode 100644 diff --git a/application/views/errors/cli/error_exception.php b/application/views/errors/cli/error_exception.php old mode 100755 new mode 100644 diff --git a/application/views/errors/cli/error_general.php b/application/views/errors/cli/error_general.php old mode 100755 new mode 100644 diff --git a/application/views/errors/cli/error_php.php b/application/views/errors/cli/error_php.php old mode 100755 new mode 100644 diff --git a/application/views/errors/cli/index.html b/application/views/errors/cli/index.html old mode 100755 new mode 100644 diff --git a/application/views/errors/html/error_404.php b/application/views/errors/html/error_404.php old mode 100755 new mode 100644 diff --git a/application/views/errors/html/error_db.php b/application/views/errors/html/error_db.php old mode 100755 new mode 100644 diff --git a/application/views/errors/html/error_exception.php b/application/views/errors/html/error_exception.php old mode 100755 new mode 100644 diff --git a/application/views/errors/html/error_general.php b/application/views/errors/html/error_general.php old mode 100755 new mode 100644 diff --git a/application/views/errors/html/error_php.php b/application/views/errors/html/error_php.php old mode 100755 new mode 100644 diff --git a/application/views/errors/html/index.html b/application/views/errors/html/index.html old mode 100755 new mode 100644 diff --git a/application/views/errors/index.html b/application/views/errors/index.html old mode 100755 new mode 100644 diff --git a/application/views/extensions/.placeholder b/application/views/extensions/.placeholder new file mode 100644 index 000000000..8d1c8b69c --- /dev/null +++ b/application/views/extensions/.placeholder @@ -0,0 +1 @@ + diff --git a/application/views/index.html b/application/views/index.html old mode 100755 new mode 100644 diff --git a/application/views/system/extensions/manager.php b/application/views/system/extensions/manager.php new file mode 100644 index 000000000..e3b6e8345 --- /dev/null +++ b/application/views/system/extensions/manager.php @@ -0,0 +1,168 @@ +load->view('core/templates/header', array('title' => 'Extensions manager', 'jqueryV1' => true, 'tablesort' => true)); ?> + + + + + + '; + } + elseif (isError($extensions)) + { + echo 'An error occurred while retriving extenions list.'; + } + elseif (hasData($extensions)) + { + ?> +
+ List of installed extensions +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + '; + + foreach ($extensions->retval as $key => $extension) + { + echo sprintf( + $tableRow, + $extension->name, + $extension->description, + $extension->version, + $extension->license, + $extension->url, + $extension->core_version, + count($extension->dependencies) == 0 ? 'None' : json_encode($extension->dependencies), + $extension->extension_id, + $extension->enabled === true ? 'checked' : '', + $extension->extension_id + ); + } + ?> + + +
NameDescriptionVersionLicenceURLMinimum required Core versionDependes on (extensions)Enabled 
%s%s%s%s%s%s%s + + + Remove +
+ + +
+ + + + + + + + +load->view('core/templates/footer'); ?> diff --git a/application/views/system/messageHTML.php b/application/views/system/messageHTML.php old mode 100755 new mode 100644 diff --git a/application/views/system/vorlage/templatetextList.php b/application/views/system/vorlage/templatetextList.php old mode 100755 new mode 100644 diff --git a/application/views/templates/mailHTML.php b/application/views/templates/mailHTML.php old mode 100755 new mode 100644 diff --git a/application/widgets/Organisationseinheit_widget.php b/application/widgets/Organisationseinheit_widget.php old mode 100755 new mode 100644 diff --git a/application/widgets/extensions/.placeholder b/application/widgets/extensions/.placeholder new file mode 100644 index 000000000..8d1c8b69c --- /dev/null +++ b/application/widgets/extensions/.placeholder @@ -0,0 +1 @@ + diff --git a/application/widgets/mimetype_widget.php b/application/widgets/mimetype_widget.php old mode 100755 new mode 100644 diff --git a/assets/grocery_crud/languages/catalan.php b/assets/grocery_crud/languages/catalan.php old mode 100755 new mode 100644 diff --git a/assets/grocery_crud/themes/flexigrid/css/flexigrid.css b/assets/grocery_crud/themes/flexigrid/css/flexigrid.css old mode 100755 new mode 100644 diff --git a/assets/grocery_crud/themes/flexigrid/views/list_template.php b/assets/grocery_crud/themes/flexigrid/views/list_template.php old mode 100755 new mode 100644 diff --git a/cis/ampel.php b/cis/ampel.php old mode 100755 new mode 100644 diff --git a/cis/cisdocs/muster_semesterplan.doc b/cis/cisdocs/muster_semesterplan.doc old mode 100755 new mode 100644 diff --git a/cis/private/coodle/coodle_autocomplete.php b/cis/private/coodle/coodle_autocomplete.php old mode 100755 new mode 100644 diff --git a/cis/private/coodle/coodle_events.php b/cis/private/coodle/coodle_events.php old mode 100755 new mode 100644 diff --git a/cis/private/coodle/stammdaten.php b/cis/private/coodle/stammdaten.php old mode 100755 new mode 100644 diff --git a/cis/private/coodle/termin.php b/cis/private/coodle/termin.php old mode 100755 new mode 100644 diff --git a/cis/private/coodle/uebersicht.php b/cis/private/coodle/uebersicht.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/abgabe_student_file.php b/cis/private/lehre/abgabe_student_file.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/anwesenheitsliste.pdf.php b/cis/private/lehre/anwesenheitsliste.pdf.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/anwesenheitsliste_bilder.pdf.php b/cis/private/lehre/anwesenheitsliste_bilder.pdf.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/benotungstool/functions.inc.php b/cis/private/lehre/benotungstool/functions.inc.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/benotungstool/legesamtnoteeintragen.php b/cis/private/lehre/benotungstool/legesamtnoteeintragen.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php b/cis/private/lehre/benotungstool/lvgesamtnoteeintragen.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/benotungstool/nachpruefungeintragen.php b/cis/private/lehre/benotungstool/nachpruefungeintragen.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/benotungstool/zipdownload_benotungstool.php b/cis/private/lehre/benotungstool/zipdownload_benotungstool.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/lesson.php b/cis/private/lehre/lesson.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/pruefung/pruefung.js.php b/cis/private/lehre/pruefung/pruefung.js.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.php b/cis/private/lehre/pruefung/pruefungsanmeldung.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.pdf.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.pdf.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_verwalten.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/pruefung/pruefungsbewertung.js.php b/cis/private/lehre/pruefung/pruefungsbewertung.js.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/pruefung/pruefungsbewertung.json.php b/cis/private/lehre/pruefung/pruefungsbewertung.json.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/pruefung/pruefungsbewertung.php b/cis/private/lehre/pruefung/pruefungsbewertung.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php b/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/pruefung/pruefungstermin.json.php b/cis/private/lehre/pruefung/pruefungstermin.json.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/pruefung/pruefungstermin_aendern.php b/cis/private/lehre/pruefung/pruefungstermin_aendern.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/pruefung/pruefungstermin_festlegen.php b/cis/private/lehre/pruefung/pruefungstermin_festlegen.php old mode 100755 new mode 100644 diff --git a/cis/private/lehre/swd.php b/cis/private/lehre/swd.php old mode 100755 new mode 100644 diff --git a/cis/private/outgoing/akteupload.php b/cis/private/outgoing/akteupload.php old mode 100755 new mode 100644 diff --git a/cis/private/outgoing/outgoing.php b/cis/private/outgoing/outgoing.php old mode 100755 new mode 100644 diff --git a/cis/private/outgoing/registration.php b/cis/private/outgoing/registration.php old mode 100755 new mode 100644 diff --git a/cis/private/profile/dokumente.php b/cis/private/profile/dokumente.php old mode 100755 new mode 100644 diff --git a/cis/private/profile/freebusy.php b/cis/private/profile/freebusy.php old mode 100755 new mode 100644 diff --git a/cis/private/profile/studienplan.php b/cis/private/profile/studienplan.php old mode 100755 new mode 100644 diff --git a/cis/private/profile/urlaubsfreigabe.php b/cis/private/profile/urlaubsfreigabe.php old mode 100755 new mode 100644 diff --git a/cis/private/profile/urlaubstool.php b/cis/private/profile/urlaubstool.php old mode 100755 new mode 100644 diff --git a/cis/private/profile/zeitsperre_resturlaub.php b/cis/private/profile/zeitsperre_resturlaub.php old mode 100755 new mode 100644 diff --git a/cis/private/tools/ampelleiteruebersicht.php b/cis/private/tools/ampelleiteruebersicht.php old mode 100755 new mode 100644 diff --git a/cis/private/tools/ampelverwaltung.php b/cis/private/tools/ampelverwaltung.php old mode 100755 new mode 100644 diff --git a/cis/private/tools/suche.php b/cis/private/tools/suche.php old mode 100755 new mode 100644 diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php old mode 100755 new mode 100644 diff --git a/cis/public/accountactivation.php b/cis/public/accountactivation.php old mode 100755 new mode 100644 diff --git a/cis/public/coodle.php b/cis/public/coodle.php old mode 100755 new mode 100644 diff --git a/cis/public/freebusy.php b/cis/public/freebusy.php old mode 100755 new mode 100644 diff --git a/cis/public/freebusy_coodle.php b/cis/public/freebusy_coodle.php old mode 100755 new mode 100644 diff --git a/cis/public/freebusy_lvplan.php b/cis/public/freebusy_lvplan.php old mode 100755 new mode 100644 diff --git a/cis/public/freebusy_sogo.php b/cis/public/freebusy_sogo.php old mode 100755 new mode 100644 diff --git a/cis/public/freebusy_zeitsperren.php b/cis/public/freebusy_zeitsperren.php old mode 100755 new mode 100644 diff --git a/cis/public/prestudententool/auth.php b/cis/public/prestudententool/auth.php old mode 100755 new mode 100644 diff --git a/cis/public/prestudententool/index.php b/cis/public/prestudententool/index.php old mode 100755 new mode 100644 diff --git a/cis/public/prestudententool/prestudent.php b/cis/public/prestudententool/prestudent.php old mode 100755 new mode 100644 diff --git a/cis/testtool/admin/uebersichtFragen.php b/cis/testtool/admin/uebersichtFragen.php old mode 100755 new mode 100644 diff --git a/cms/admin_dms.php b/cms/admin_dms.php old mode 100755 new mode 100644 diff --git a/cms/image.php b/cms/image.php old mode 100755 new mode 100644 diff --git a/cms/index.html b/cms/index.html old mode 100755 new mode 100644 diff --git a/cms/menu.inc.php b/cms/menu.inc.php old mode 100755 new mode 100644 diff --git a/cms/menu/menu_addon.class.php b/cms/menu/menu_addon.class.php old mode 100755 new mode 100644 diff --git a/cms/menu/menu_addon_freifaecher.inc.php b/cms/menu/menu_addon_freifaecher.inc.php old mode 100755 new mode 100644 diff --git a/cms/menu/menu_addon_lehrveranstaltungen.inc.php b/cms/menu/menu_addon_lehrveranstaltungen.inc.php old mode 100755 new mode 100644 diff --git a/cms/menu/menu_addon_meinelv.inc.php b/cms/menu/menu_addon_meinelv.inc.php old mode 100755 new mode 100644 diff --git a/cms/menu/menu_addon_spacer.inc.php b/cms/menu/menu_addon_spacer.inc.php old mode 100755 new mode 100644 diff --git a/cms/menu/menu_addon_test.inc.php b/cms/menu/menu_addon_test.inc.php old mode 100755 new mode 100644 diff --git a/cms/menu/menu_addon_urlaub.inc.php b/cms/menu/menu_addon_urlaub.inc.php old mode 100755 new mode 100644 diff --git a/cms/menu/menu_addon_zeitsperren.inc.php b/cms/menu/menu_addon_zeitsperren.inc.php old mode 100755 new mode 100644 diff --git a/cms/news.php b/cms/news.php old mode 100755 new mode 100644 diff --git a/cms/newsverwaltung.php b/cms/newsverwaltung.php old mode 100755 new mode 100644 diff --git a/composer.json b/composer.json old mode 100755 new mode 100644 diff --git a/config/cis.config-default.inc.php b/config/cis.config-default.inc.php old mode 100755 new mode 100644 diff --git a/content/createAusbildungsvertrag.php b/content/createAusbildungsvertrag.php old mode 100755 new mode 100644 diff --git a/content/dokumentenakt.pdf.php b/content/dokumentenakt.pdf.php old mode 100755 new mode 100644 diff --git a/content/notiz.xml.php b/content/notiz.xml.php old mode 100755 new mode 100644 diff --git a/content/planner.js.php b/content/planner.js.php old mode 100755 new mode 100644 diff --git a/content/planner.overlay.js.php b/content/planner.overlay.js.php old mode 100755 new mode 100644 diff --git a/content/planner.overlay.xul.php b/content/planner.overlay.xul.php old mode 100755 new mode 100644 diff --git a/content/planner.xul.php b/content/planner.xul.php old mode 100755 new mode 100644 diff --git a/content/projekt/GanttChart.svg b/content/projekt/GanttChart.svg old mode 100755 new mode 100644 diff --git a/content/projekt/bestellung.overlay.js.php b/content/projekt/bestellung.overlay.js.php old mode 100755 new mode 100644 diff --git a/content/projekt/bestellung.overlay.xul.php b/content/projekt/bestellung.overlay.xul.php old mode 100755 new mode 100644 diff --git a/content/projekt/gantt.css b/content/projekt/gantt.css old mode 100755 new mode 100644 diff --git a/content/projekt/gantt.overlay.js.php b/content/projekt/gantt.overlay.js.php old mode 100755 new mode 100644 diff --git a/content/projekt/gantt.overlay.xul.php b/content/projekt/gantt.overlay.xul.php old mode 100755 new mode 100644 diff --git a/content/projekt/gantt.svg.css b/content/projekt/gantt.svg.css old mode 100755 new mode 100644 diff --git a/content/projekt/gantt.svg.php b/content/projekt/gantt.svg.php old mode 100755 new mode 100644 diff --git a/content/projekt/gantt.svg.xbl b/content/projekt/gantt.svg.xbl old mode 100755 new mode 100644 diff --git a/content/projekt/mantisdetail.overlay.xul.php b/content/projekt/mantisdetail.overlay.xul.php old mode 100755 new mode 100644 diff --git a/content/projekt/parsedown.php b/content/projekt/parsedown.php old mode 100755 new mode 100644 diff --git a/content/projekt/projekt.overlay.js.php b/content/projekt/projekt.overlay.js.php old mode 100755 new mode 100644 diff --git a/content/projekt/projekt.overlay.xul.php b/content/projekt/projekt.overlay.xul.php old mode 100755 new mode 100644 diff --git a/content/projekt/projekt_ressource.window.js.php b/content/projekt/projekt_ressource.window.js.php old mode 100755 new mode 100644 diff --git a/content/projekt/projekt_ressource.window.xul.php b/content/projekt/projekt_ressource.window.xul.php old mode 100755 new mode 100644 diff --git a/content/projekt/projektdetail.overlay.xul.php b/content/projekt/projektdetail.overlay.xul.php old mode 100755 new mode 100644 diff --git a/content/projekt/projektdokument.overlay.js.php b/content/projekt/projektdokument.overlay.js.php old mode 100755 new mode 100644 diff --git a/content/projekt/projektdokument.overlay.xul.php b/content/projekt/projektdokument.overlay.xul.php old mode 100755 new mode 100644 diff --git a/content/projekt/projektdokument.window.js.php b/content/projekt/projektdokument.window.js.php old mode 100755 new mode 100644 diff --git a/content/projekt/projektdokument.window.xul.php b/content/projekt/projektdokument.window.xul.php old mode 100755 new mode 100644 diff --git a/content/projekt/projektphase.overlay.js.php b/content/projekt/projektphase.overlay.js.php old mode 100755 new mode 100644 diff --git a/content/projekt/projektphase.overlay.xul.php b/content/projekt/projektphase.overlay.xul.php old mode 100755 new mode 100644 diff --git a/content/projekt/projektphasedetail.overlay.xul.php b/content/projekt/projektphasedetail.overlay.xul.php old mode 100755 new mode 100644 diff --git a/content/projekt/projekttask.overlay.js.php b/content/projekt/projekttask.overlay.js.php old mode 100755 new mode 100644 diff --git a/content/projekt/projekttask.overlay.xul.php b/content/projekt/projekttask.overlay.xul.php old mode 100755 new mode 100644 diff --git a/content/projekt/projekttaskdetail.overlay.xul.php b/content/projekt/projekttaskdetail.overlay.xul.php old mode 100755 new mode 100644 diff --git a/content/projekt/ressource.js.php b/content/projekt/ressource.js.php old mode 100755 new mode 100644 diff --git a/content/projekt/ressource.overlay.js.php b/content/projekt/ressource.overlay.js.php old mode 100755 new mode 100644 diff --git a/content/projekt/ressource.overlay.xul.php b/content/projekt/ressource.overlay.xul.php old mode 100755 new mode 100644 diff --git a/content/projekt/ressource.xml.php b/content/projekt/ressource.xml.php old mode 100755 new mode 100644 diff --git a/content/projekt/ressourcenauslastung.php b/content/projekt/ressourcenauslastung.php old mode 100755 new mode 100644 diff --git a/content/projektbeschreibung.php b/content/projektbeschreibung.php old mode 100755 new mode 100644 diff --git a/content/statistik/StudierendeZGV.php b/content/statistik/StudierendeZGV.php old mode 100755 new mode 100644 diff --git a/content/statistik/dropout.php b/content/statistik/dropout.php old mode 100755 new mode 100644 diff --git a/content/statistik/dropoutZGV.php b/content/statistik/dropoutZGV.php old mode 100755 new mode 100644 diff --git a/content/student/studentabschlusspruefung.js.php b/content/student/studentabschlusspruefung.js.php old mode 100755 new mode 100644 diff --git a/content/student/studentabschlusspruefungoverlay.xul.php b/content/student/studentabschlusspruefungoverlay.xul.php old mode 100755 new mode 100644 diff --git a/content/zutrittskarte.php b/content/zutrittskarte.php old mode 100755 new mode 100644 diff --git a/include/abschlusspruefung.class.php b/include/abschlusspruefung.class.php old mode 100755 new mode 100644 diff --git a/include/ampel.class.php b/include/ampel.class.php old mode 100755 new mode 100644 diff --git a/include/auth_demo.class.php b/include/auth_demo.class.php old mode 100755 new mode 100644 diff --git a/include/coodle.class.php b/include/coodle.class.php old mode 100755 new mode 100644 diff --git a/include/fotostatus.class.php b/include/fotostatus.class.php old mode 100755 new mode 100644 diff --git a/include/freebusy.class.php b/include/freebusy.class.php old mode 100755 new mode 100644 diff --git a/include/functions.inc.php b/include/functions.inc.php old mode 100755 new mode 100644 diff --git a/include/gantt.class.php b/include/gantt.class.php old mode 100755 new mode 100644 diff --git a/include/globals.inc.php b/include/globals.inc.php old mode 100755 new mode 100644 diff --git a/include/ical.class.php b/include/ical.class.php old mode 100755 new mode 100644 diff --git a/include/infoscreen.class.php b/include/infoscreen.class.php old mode 100755 new mode 100644 diff --git a/include/js/fullcalendar/fullcalendar.css b/include/js/fullcalendar/fullcalendar.css old mode 100755 new mode 100644 diff --git a/include/js/fullcalendar/fullcalendar.js b/include/js/fullcalendar/fullcalendar.js old mode 100755 new mode 100644 diff --git a/include/js/fullcalendar/fullcalendar.min.js b/include/js/fullcalendar/fullcalendar.min.js old mode 100755 new mode 100644 diff --git a/include/js/fullcalendar/fullcalendar.print.css b/include/js/fullcalendar/fullcalendar.print.css old mode 100755 new mode 100644 diff --git a/include/js/fullcalendar/gcal.js b/include/js/fullcalendar/gcal.js old mode 100755 new mode 100644 diff --git a/include/js/jstree/README.txt b/include/js/jstree/README.txt old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/!style.css b/include/js/jstree/_docs/!style.css old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/_drive.png b/include/js/jstree/_docs/_drive.png old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/_html_data.html b/include/js/jstree/_docs/_html_data.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/_json_data.json b/include/js/jstree/_docs/_json_data.json old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/_search_data.json b/include/js/jstree/_docs/_search_data.json old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/_search_result.json b/include/js/jstree/_docs/_search_result.json old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/_xml_flat.xml b/include/js/jstree/_docs/_xml_flat.xml old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/_xml_nest.xml b/include/js/jstree/_docs/_xml_nest.xml old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/checkbox.html b/include/js/jstree/_docs/checkbox.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/contextmenu.html b/include/js/jstree/_docs/contextmenu.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/cookies.html b/include/js/jstree/_docs/cookies.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/core.html b/include/js/jstree/_docs/core.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/crrm.html b/include/js/jstree/_docs/crrm.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/dnd.html b/include/js/jstree/_docs/dnd.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/hotkeys.html b/include/js/jstree/_docs/hotkeys.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/html_data.html b/include/js/jstree/_docs/html_data.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/index.html b/include/js/jstree/_docs/index.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/json_data.html b/include/js/jstree/_docs/json_data.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/languages.html b/include/js/jstree/_docs/languages.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/logo.png b/include/js/jstree/_docs/logo.png old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/search.html b/include/js/jstree/_docs/search.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/sort.html b/include/js/jstree/_docs/sort.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/syntax/!script.js b/include/js/jstree/_docs/syntax/!script.js old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/syntax/!style.css b/include/js/jstree/_docs/syntax/!style.css old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/syntax/clipboard.swf b/include/js/jstree/_docs/syntax/clipboard.swf old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/syntax/help.png b/include/js/jstree/_docs/syntax/help.png old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/syntax/magnifier.png b/include/js/jstree/_docs/syntax/magnifier.png old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/syntax/page_white_code.png b/include/js/jstree/_docs/syntax/page_white_code.png old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/syntax/page_white_copy.png b/include/js/jstree/_docs/syntax/page_white_copy.png old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/syntax/printer.png b/include/js/jstree/_docs/syntax/printer.png old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/syntax/wrapping.png b/include/js/jstree/_docs/syntax/wrapping.png old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/themeroller.html b/include/js/jstree/_docs/themeroller.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/themes.html b/include/js/jstree/_docs/themes.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/types.html b/include/js/jstree/_docs/types.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/ui.html b/include/js/jstree/_docs/ui.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/unique.html b/include/js/jstree/_docs/unique.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_docs/xml_data.html b/include/js/jstree/_docs/xml_data.html old mode 100755 new mode 100644 diff --git a/include/js/jstree/_lib/jquery.cookie.js b/include/js/jstree/_lib/jquery.cookie.js old mode 100755 new mode 100644 diff --git a/include/js/jstree/_lib/jquery.hotkeys.js b/include/js/jstree/_lib/jquery.hotkeys.js old mode 100755 new mode 100644 diff --git a/include/js/jstree/_lib/jquery.js b/include/js/jstree/_lib/jquery.js old mode 100755 new mode 100644 diff --git a/include/js/jstree/jquery.jstree.js b/include/js/jstree/jquery.jstree.js old mode 100755 new mode 100644 diff --git a/include/js/jstree/themes/apple/bg.jpg b/include/js/jstree/themes/apple/bg.jpg old mode 100755 new mode 100644 diff --git a/include/js/jstree/themes/apple/d.png b/include/js/jstree/themes/apple/d.png old mode 100755 new mode 100644 diff --git a/include/js/jstree/themes/apple/dot_for_ie.gif b/include/js/jstree/themes/apple/dot_for_ie.gif old mode 100755 new mode 100644 diff --git a/include/js/jstree/themes/apple/style.css b/include/js/jstree/themes/apple/style.css old mode 100755 new mode 100644 diff --git a/include/js/jstree/themes/apple/throbber.gif b/include/js/jstree/themes/apple/throbber.gif old mode 100755 new mode 100644 diff --git a/include/js/jstree/themes/classic/d.gif b/include/js/jstree/themes/classic/d.gif old mode 100755 new mode 100644 diff --git a/include/js/jstree/themes/classic/d.png b/include/js/jstree/themes/classic/d.png old mode 100755 new mode 100644 diff --git a/include/js/jstree/themes/classic/dot_for_ie.gif b/include/js/jstree/themes/classic/dot_for_ie.gif old mode 100755 new mode 100644 diff --git a/include/js/jstree/themes/classic/style.css b/include/js/jstree/themes/classic/style.css old mode 100755 new mode 100644 diff --git a/include/js/jstree/themes/classic/throbber.gif b/include/js/jstree/themes/classic/throbber.gif old mode 100755 new mode 100644 diff --git a/include/js/jstree/themes/default-rtl/d.gif b/include/js/jstree/themes/default-rtl/d.gif old mode 100755 new mode 100644 diff --git a/include/js/jstree/themes/default-rtl/d.png b/include/js/jstree/themes/default-rtl/d.png old mode 100755 new mode 100644 diff --git a/include/js/jstree/themes/default-rtl/dots.gif b/include/js/jstree/themes/default-rtl/dots.gif old mode 100755 new mode 100644 diff --git a/include/js/jstree/themes/default-rtl/style.css b/include/js/jstree/themes/default-rtl/style.css old mode 100755 new mode 100644 diff --git a/include/js/jstree/themes/default-rtl/throbber.gif b/include/js/jstree/themes/default-rtl/throbber.gif old mode 100755 new mode 100644 diff --git a/include/js/jstree/themes/default/d.gif b/include/js/jstree/themes/default/d.gif old mode 100755 new mode 100644 diff --git a/include/js/jstree/themes/default/d.png b/include/js/jstree/themes/default/d.png old mode 100755 new mode 100644 diff --git a/include/js/jstree/themes/default/style.css b/include/js/jstree/themes/default/style.css old mode 100755 new mode 100644 diff --git a/include/js/jstree/themes/default/throbber.gif b/include/js/jstree/themes/default/throbber.gif old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/.gitignore b/include/js/treeGrid/.gitignore old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/CHANGELOG.txt b/include/js/treeGrid/CHANGELOG.txt old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/LICENSE b/include/js/treeGrid/LICENSE old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/README.md b/include/js/treeGrid/README.md old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/css/jquery.treegrid.css b/include/js/treeGrid/css/jquery.treegrid.css old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/bootstrap-2.3.2/css/bootstrap-responsive.css b/include/js/treeGrid/examples/bootstrap-2.3.2/css/bootstrap-responsive.css old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/bootstrap-2.3.2/css/bootstrap-responsive.min.css b/include/js/treeGrid/examples/bootstrap-2.3.2/css/bootstrap-responsive.min.css old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/bootstrap-2.3.2/css/bootstrap.css b/include/js/treeGrid/examples/bootstrap-2.3.2/css/bootstrap.css old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/bootstrap-2.3.2/css/bootstrap.min.css b/include/js/treeGrid/examples/bootstrap-2.3.2/css/bootstrap.min.css old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/bootstrap-2.3.2/img/glyphicons-halflings-white.png b/include/js/treeGrid/examples/bootstrap-2.3.2/img/glyphicons-halflings-white.png old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/bootstrap-2.3.2/img/glyphicons-halflings.png b/include/js/treeGrid/examples/bootstrap-2.3.2/img/glyphicons-halflings.png old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/bootstrap-2.3.2/js/bootstrap.js b/include/js/treeGrid/examples/bootstrap-2.3.2/js/bootstrap.js old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/bootstrap-2.3.2/js/bootstrap.min.js b/include/js/treeGrid/examples/bootstrap-2.3.2/js/bootstrap.min.js old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/bootstrap-3.0.0/css/bootstrap-theme.css b/include/js/treeGrid/examples/bootstrap-3.0.0/css/bootstrap-theme.css old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/bootstrap-3.0.0/css/bootstrap-theme.min.css b/include/js/treeGrid/examples/bootstrap-3.0.0/css/bootstrap-theme.min.css old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/bootstrap-3.0.0/css/bootstrap.css b/include/js/treeGrid/examples/bootstrap-3.0.0/css/bootstrap.css old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/bootstrap-3.0.0/css/bootstrap.min.css b/include/js/treeGrid/examples/bootstrap-3.0.0/css/bootstrap.min.css old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/bootstrap-3.0.0/fonts/glyphicons-halflings-regular.eot b/include/js/treeGrid/examples/bootstrap-3.0.0/fonts/glyphicons-halflings-regular.eot old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/bootstrap-3.0.0/fonts/glyphicons-halflings-regular.svg b/include/js/treeGrid/examples/bootstrap-3.0.0/fonts/glyphicons-halflings-regular.svg old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/bootstrap-3.0.0/fonts/glyphicons-halflings-regular.ttf b/include/js/treeGrid/examples/bootstrap-3.0.0/fonts/glyphicons-halflings-regular.ttf old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/bootstrap-3.0.0/fonts/glyphicons-halflings-regular.woff b/include/js/treeGrid/examples/bootstrap-3.0.0/fonts/glyphicons-halflings-regular.woff old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/bootstrap-3.0.0/js/bootstrap.js b/include/js/treeGrid/examples/bootstrap-3.0.0/js/bootstrap.js old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/bootstrap-3.0.0/js/bootstrap.min.js b/include/js/treeGrid/examples/bootstrap-3.0.0/js/bootstrap.min.js old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/example-basic.html b/include/js/treeGrid/examples/example-basic.html old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/example-bootstrap-2.html b/include/js/treeGrid/examples/example-bootstrap-2.html old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/example-bootstrap-3.html b/include/js/treeGrid/examples/example-bootstrap-3.html old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/example-column.html b/include/js/treeGrid/examples/example-column.html old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/examples/example-save-state.html b/include/js/treeGrid/examples/example-save-state.html old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/img/collapse.png b/include/js/treeGrid/img/collapse.png old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/img/expand.png b/include/js/treeGrid/img/expand.png old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/img/file.png b/include/js/treeGrid/img/file.png old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/img/folder.png b/include/js/treeGrid/img/folder.png old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/index.html b/include/js/treeGrid/index.html old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/js/jquery-1.10.2.js b/include/js/treeGrid/js/jquery-1.10.2.js old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/js/jquery.cookie.js b/include/js/treeGrid/js/jquery.cookie.js old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/js/jquery.treegrid.bootstrap2.js b/include/js/treeGrid/js/jquery.treegrid.bootstrap2.js old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/js/jquery.treegrid.bootstrap3.js b/include/js/treeGrid/js/jquery.treegrid.bootstrap3.js old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/js/jquery.treegrid.js b/include/js/treeGrid/js/jquery.treegrid.js old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/jstreegrid.js b/include/js/treeGrid/jstreegrid.js old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/params.json b/include/js/treeGrid/params.json old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/styles.css b/include/js/treeGrid/styles.css old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/test.html b/include/js/treeGrid/test.html old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/tests/qunit-1.12.0.css b/include/js/treeGrid/tests/qunit-1.12.0.css old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/tests/qunit-1.12.0.js b/include/js/treeGrid/tests/qunit-1.12.0.js old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/tests/tests.js b/include/js/treeGrid/tests/tests.js old mode 100755 new mode 100644 diff --git a/include/js/treeGrid/treegrid.jquery.json b/include/js/treeGrid/treegrid.jquery.json old mode 100755 new mode 100644 diff --git a/include/konto.class.php b/include/konto.class.php old mode 100755 new mode 100644 diff --git a/include/legesamtnote.class.php b/include/legesamtnote.class.php old mode 100755 new mode 100644 diff --git a/include/lehre_tools.class.php b/include/lehre_tools.class.php old mode 100755 new mode 100644 diff --git a/include/lehrtyp.class.php b/include/lehrtyp.class.php old mode 100755 new mode 100644 diff --git a/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php old mode 100755 new mode 100644 diff --git a/include/mantis.class.php b/include/mantis.class.php old mode 100755 new mode 100644 diff --git a/include/notiz.class.php b/include/notiz.class.php old mode 100755 new mode 100644 diff --git a/include/preoutgoing.class.php b/include/preoutgoing.class.php old mode 100755 new mode 100644 diff --git a/include/prestudent.class.php b/include/prestudent.class.php old mode 100755 new mode 100644 diff --git a/include/projekt.class.php b/include/projekt.class.php old mode 100755 new mode 100644 diff --git a/include/projektbenutzer.class.php b/include/projektbenutzer.class.php old mode 100755 new mode 100644 diff --git a/include/projektphase.class.php b/include/projektphase.class.php old mode 100755 new mode 100644 diff --git a/include/projekttask.class.php b/include/projekttask.class.php old mode 100755 new mode 100644 diff --git a/include/pruefung.class.php b/include/pruefung.class.php old mode 100755 new mode 100644 diff --git a/include/pruefungCis.class.php b/include/pruefungCis.class.php old mode 100755 new mode 100644 diff --git a/include/rdf.class.php b/include/rdf.class.php old mode 100755 new mode 100644 diff --git a/include/ressource.class.php b/include/ressource.class.php old mode 100755 new mode 100644 diff --git a/include/sabredav/ChangeLog b/include/sabredav/ChangeLog old mode 100755 new mode 100644 diff --git a/include/sabredav/LICENSE b/include/sabredav/LICENSE old mode 100755 new mode 100644 diff --git a/include/sabredav/README.md b/include/sabredav/README.md old mode 100755 new mode 100644 diff --git a/include/sabredav/bin/build.php b/include/sabredav/bin/build.php old mode 100755 new mode 100644 diff --git a/include/sabredav/bin/googlecode_upload.py b/include/sabredav/bin/googlecode_upload.py old mode 100755 new mode 100644 diff --git a/include/sabredav/bin/migrateto17.php b/include/sabredav/bin/migrateto17.php old mode 100755 new mode 100644 diff --git a/include/sabredav/bin/naturalselection.py b/include/sabredav/bin/naturalselection.py old mode 100755 new mode 100644 diff --git a/include/sabredav/bin/sabredav b/include/sabredav/bin/sabredav old mode 100755 new mode 100644 diff --git a/include/sabredav/bin/sabredav.php b/include/sabredav/bin/sabredav.php old mode 100755 new mode 100644 diff --git a/include/sabredav/bin/vobjectvalidate.php b/include/sabredav/bin/vobjectvalidate.php old mode 100755 new mode 100644 diff --git a/include/sabredav/composer.json b/include/sabredav/composer.json old mode 100755 new mode 100644 diff --git a/include/sabredav/composer.lock b/include/sabredav/composer.lock old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/addressbookserver.php b/include/sabredav/examples/addressbookserver.php old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/basicauth.php b/include/sabredav/examples/basicauth.php old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/calendarserver.php b/include/sabredav/examples/calendarserver.php old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/digestauth.php b/include/sabredav/examples/digestauth.php old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/fileserver.php b/include/sabredav/examples/fileserver.php old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/groupwareserver.php b/include/sabredav/examples/groupwareserver.php old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/simplefsserver.php b/include/sabredav/examples/simplefsserver.php old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/sql/mysql.addressbook.sql b/include/sabredav/examples/sql/mysql.addressbook.sql old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/sql/mysql.calendars.sql b/include/sabredav/examples/sql/mysql.calendars.sql old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/sql/mysql.locks.sql b/include/sabredav/examples/sql/mysql.locks.sql old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/sql/mysql.principals.sql b/include/sabredav/examples/sql/mysql.principals.sql old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/sql/mysql.users.sql b/include/sabredav/examples/sql/mysql.users.sql old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/sql/pgsql.addressbook.sql b/include/sabredav/examples/sql/pgsql.addressbook.sql old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/sql/pgsql.calendars.sql b/include/sabredav/examples/sql/pgsql.calendars.sql old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/sql/pgsql.locks.sql b/include/sabredav/examples/sql/pgsql.locks.sql old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/sql/pgsql.principals.sql b/include/sabredav/examples/sql/pgsql.principals.sql old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/sql/pgsql.users.sql b/include/sabredav/examples/sql/pgsql.users.sql old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/sql/sqlite.addressbooks.sql b/include/sabredav/examples/sql/sqlite.addressbooks.sql old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/sql/sqlite.calendars.sql b/include/sabredav/examples/sql/sqlite.calendars.sql old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/sql/sqlite.locks.sql b/include/sabredav/examples/sql/sqlite.locks.sql old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/sql/sqlite.principals.sql b/include/sabredav/examples/sql/sqlite.principals.sql old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/sql/sqlite.users.sql b/include/sabredav/examples/sql/sqlite.users.sql old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/webserver/apache2_htaccess.conf b/include/sabredav/examples/webserver/apache2_htaccess.conf old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/webserver/apache2_vhost.conf b/include/sabredav/examples/webserver/apache2_vhost.conf old mode 100755 new mode 100644 diff --git a/include/sabredav/examples/webserver/apache2_vhost_cgi.conf b/include/sabredav/examples/webserver/apache2_vhost_cgi.conf old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Backend/AbstractBackend.php b/include/sabredav/lib/Sabre/CalDAV/Backend/AbstractBackend.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Backend/BackendInterface.php b/include/sabredav/lib/Sabre/CalDAV/Backend/BackendInterface.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Backend/NotificationSupport.php b/include/sabredav/lib/Sabre/CalDAV/Backend/NotificationSupport.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Backend/PDO.php b/include/sabredav/lib/Sabre/CalDAV/Backend/PDO.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Backend/SharingSupport.php b/include/sabredav/lib/Sabre/CalDAV/Backend/SharingSupport.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Calendar.php b/include/sabredav/lib/Sabre/CalDAV/Calendar.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/CalendarObject.php b/include/sabredav/lib/Sabre/CalDAV/CalendarObject.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/CalendarQueryParser.php b/include/sabredav/lib/Sabre/CalDAV/CalendarQueryParser.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/CalendarQueryValidator.php b/include/sabredav/lib/Sabre/CalDAV/CalendarQueryValidator.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/CalendarRootNode.php b/include/sabredav/lib/Sabre/CalDAV/CalendarRootNode.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Exception/InvalidComponentType.php b/include/sabredav/lib/Sabre/CalDAV/Exception/InvalidComponentType.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/ICSExportPlugin.php b/include/sabredav/lib/Sabre/CalDAV/ICSExportPlugin.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/ICalendar.php b/include/sabredav/lib/Sabre/CalDAV/ICalendar.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/ICalendarObject.php b/include/sabredav/lib/Sabre/CalDAV/ICalendarObject.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/IShareableCalendar.php b/include/sabredav/lib/Sabre/CalDAV/IShareableCalendar.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/ISharedCalendar.php b/include/sabredav/lib/Sabre/CalDAV/ISharedCalendar.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Notifications/Collection.php b/include/sabredav/lib/Sabre/CalDAV/Notifications/Collection.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Notifications/ICollection.php b/include/sabredav/lib/Sabre/CalDAV/Notifications/ICollection.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Notifications/INode.php b/include/sabredav/lib/Sabre/CalDAV/Notifications/INode.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Notifications/INotificationType.php b/include/sabredav/lib/Sabre/CalDAV/Notifications/INotificationType.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Notifications/Node.php b/include/sabredav/lib/Sabre/CalDAV/Notifications/Node.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Notifications/Notification/Invite.php b/include/sabredav/lib/Sabre/CalDAV/Notifications/Notification/Invite.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Notifications/Notification/InviteReply.php b/include/sabredav/lib/Sabre/CalDAV/Notifications/Notification/InviteReply.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Notifications/Notification/SystemStatus.php b/include/sabredav/lib/Sabre/CalDAV/Notifications/Notification/SystemStatus.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Plugin.php b/include/sabredav/lib/Sabre/CalDAV/Plugin.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Principal/Collection.php b/include/sabredav/lib/Sabre/CalDAV/Principal/Collection.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Principal/IProxyRead.php b/include/sabredav/lib/Sabre/CalDAV/Principal/IProxyRead.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Principal/IProxyWrite.php b/include/sabredav/lib/Sabre/CalDAV/Principal/IProxyWrite.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Principal/ProxyRead.php b/include/sabredav/lib/Sabre/CalDAV/Principal/ProxyRead.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Principal/ProxyWrite.php b/include/sabredav/lib/Sabre/CalDAV/Principal/ProxyWrite.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Principal/User.php b/include/sabredav/lib/Sabre/CalDAV/Principal/User.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Property/AllowedSharingModes.php b/include/sabredav/lib/Sabre/CalDAV/Property/AllowedSharingModes.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Property/Invite.php b/include/sabredav/lib/Sabre/CalDAV/Property/Invite.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Property/ScheduleCalendarTransp.php b/include/sabredav/lib/Sabre/CalDAV/Property/ScheduleCalendarTransp.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Property/SupportedCalendarComponentSet.php b/include/sabredav/lib/Sabre/CalDAV/Property/SupportedCalendarComponentSet.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Property/SupportedCalendarData.php b/include/sabredav/lib/Sabre/CalDAV/Property/SupportedCalendarData.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Property/SupportedCollationSet.php b/include/sabredav/lib/Sabre/CalDAV/Property/SupportedCollationSet.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Schedule/IMip.php b/include/sabredav/lib/Sabre/CalDAV/Schedule/IMip.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Schedule/IOutbox.php b/include/sabredav/lib/Sabre/CalDAV/Schedule/IOutbox.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Schedule/Outbox.php b/include/sabredav/lib/Sabre/CalDAV/Schedule/Outbox.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/ShareableCalendar.php b/include/sabredav/lib/Sabre/CalDAV/ShareableCalendar.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/SharedCalendar.php b/include/sabredav/lib/Sabre/CalDAV/SharedCalendar.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/SharingPlugin.php b/include/sabredav/lib/Sabre/CalDAV/SharingPlugin.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/UserCalendars.php b/include/sabredav/lib/Sabre/CalDAV/UserCalendars.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CalDAV/Version.php b/include/sabredav/lib/Sabre/CalDAV/Version.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CardDAV/AddressBook.php b/include/sabredav/lib/Sabre/CardDAV/AddressBook.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CardDAV/AddressBookQueryParser.php b/include/sabredav/lib/Sabre/CardDAV/AddressBookQueryParser.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CardDAV/AddressBookRoot.php b/include/sabredav/lib/Sabre/CardDAV/AddressBookRoot.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CardDAV/Backend/AbstractBackend.php b/include/sabredav/lib/Sabre/CardDAV/Backend/AbstractBackend.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CardDAV/Backend/BackendInterface.php b/include/sabredav/lib/Sabre/CardDAV/Backend/BackendInterface.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CardDAV/Backend/PDO.php b/include/sabredav/lib/Sabre/CardDAV/Backend/PDO.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CardDAV/Card.php b/include/sabredav/lib/Sabre/CardDAV/Card.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CardDAV/IAddressBook.php b/include/sabredav/lib/Sabre/CardDAV/IAddressBook.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CardDAV/ICard.php b/include/sabredav/lib/Sabre/CardDAV/ICard.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CardDAV/IDirectory.php b/include/sabredav/lib/Sabre/CardDAV/IDirectory.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CardDAV/Plugin.php b/include/sabredav/lib/Sabre/CardDAV/Plugin.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CardDAV/Property/SupportedAddressData.php b/include/sabredav/lib/Sabre/CardDAV/Property/SupportedAddressData.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CardDAV/UserAddressBooks.php b/include/sabredav/lib/Sabre/CardDAV/UserAddressBooks.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CardDAV/VCFExportPlugin.php b/include/sabredav/lib/Sabre/CardDAV/VCFExportPlugin.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/CardDAV/Version.php b/include/sabredav/lib/Sabre/CardDAV/Version.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Auth/Backend/AbstractBasic.php b/include/sabredav/lib/Sabre/DAV/Auth/Backend/AbstractBasic.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Auth/Backend/AbstractDigest.php b/include/sabredav/lib/Sabre/DAV/Auth/Backend/AbstractDigest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Auth/Backend/Apache.php b/include/sabredav/lib/Sabre/DAV/Auth/Backend/Apache.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Auth/Backend/BackendInterface.php b/include/sabredav/lib/Sabre/DAV/Auth/Backend/BackendInterface.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Auth/Backend/File.php b/include/sabredav/lib/Sabre/DAV/Auth/Backend/File.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Auth/Backend/PDO.php b/include/sabredav/lib/Sabre/DAV/Auth/Backend/PDO.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Auth/Plugin.php b/include/sabredav/lib/Sabre/DAV/Auth/Plugin.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Browser/GuessContentType.php b/include/sabredav/lib/Sabre/DAV/Browser/GuessContentType.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Browser/MapGetToPropFind.php b/include/sabredav/lib/Sabre/DAV/Browser/MapGetToPropFind.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Browser/Plugin.php b/include/sabredav/lib/Sabre/DAV/Browser/Plugin.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Browser/assets/favicon.ico b/include/sabredav/lib/Sabre/DAV/Browser/assets/favicon.ico old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Browser/assets/icons/addressbook.png b/include/sabredav/lib/Sabre/DAV/Browser/assets/icons/addressbook.png old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Browser/assets/icons/calendar.png b/include/sabredav/lib/Sabre/DAV/Browser/assets/icons/calendar.png old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Browser/assets/icons/card.png b/include/sabredav/lib/Sabre/DAV/Browser/assets/icons/card.png old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Browser/assets/icons/collection.png b/include/sabredav/lib/Sabre/DAV/Browser/assets/icons/collection.png old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Browser/assets/icons/file.png b/include/sabredav/lib/Sabre/DAV/Browser/assets/icons/file.png old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Browser/assets/icons/parent.png b/include/sabredav/lib/Sabre/DAV/Browser/assets/icons/parent.png old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Browser/assets/icons/principal.png b/include/sabredav/lib/Sabre/DAV/Browser/assets/icons/principal.png old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Client.php b/include/sabredav/lib/Sabre/DAV/Client.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Collection.php b/include/sabredav/lib/Sabre/DAV/Collection.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception.php b/include/sabredav/lib/Sabre/DAV/Exception.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/BadRequest.php b/include/sabredav/lib/Sabre/DAV/Exception/BadRequest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/Conflict.php b/include/sabredav/lib/Sabre/DAV/Exception/Conflict.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/ConflictingLock.php b/include/sabredav/lib/Sabre/DAV/Exception/ConflictingLock.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/FileNotFound.php b/include/sabredav/lib/Sabre/DAV/Exception/FileNotFound.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/Forbidden.php b/include/sabredav/lib/Sabre/DAV/Exception/Forbidden.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/InsufficientStorage.php b/include/sabredav/lib/Sabre/DAV/Exception/InsufficientStorage.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/InvalidResourceType.php b/include/sabredav/lib/Sabre/DAV/Exception/InvalidResourceType.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/LengthRequired.php b/include/sabredav/lib/Sabre/DAV/Exception/LengthRequired.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/LockTokenMatchesRequestUri.php b/include/sabredav/lib/Sabre/DAV/Exception/LockTokenMatchesRequestUri.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/Locked.php b/include/sabredav/lib/Sabre/DAV/Exception/Locked.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/MethodNotAllowed.php b/include/sabredav/lib/Sabre/DAV/Exception/MethodNotAllowed.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/NotAuthenticated.php b/include/sabredav/lib/Sabre/DAV/Exception/NotAuthenticated.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/NotFound.php b/include/sabredav/lib/Sabre/DAV/Exception/NotFound.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/NotImplemented.php b/include/sabredav/lib/Sabre/DAV/Exception/NotImplemented.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/PaymentRequired.php b/include/sabredav/lib/Sabre/DAV/Exception/PaymentRequired.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/PreconditionFailed.php b/include/sabredav/lib/Sabre/DAV/Exception/PreconditionFailed.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/ReportNotSupported.php b/include/sabredav/lib/Sabre/DAV/Exception/ReportNotSupported.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/RequestedRangeNotSatisfiable.php b/include/sabredav/lib/Sabre/DAV/Exception/RequestedRangeNotSatisfiable.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/ServiceUnavailable.php b/include/sabredav/lib/Sabre/DAV/Exception/ServiceUnavailable.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Exception/UnsupportedMediaType.php b/include/sabredav/lib/Sabre/DAV/Exception/UnsupportedMediaType.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/FS/Directory.php b/include/sabredav/lib/Sabre/DAV/FS/Directory.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/FS/File.php b/include/sabredav/lib/Sabre/DAV/FS/File.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/FS/Node.php b/include/sabredav/lib/Sabre/DAV/FS/Node.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/FSExt/Directory.php b/include/sabredav/lib/Sabre/DAV/FSExt/Directory.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/FSExt/File.php b/include/sabredav/lib/Sabre/DAV/FSExt/File.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/FSExt/Node.php b/include/sabredav/lib/Sabre/DAV/FSExt/Node.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/File.php b/include/sabredav/lib/Sabre/DAV/File.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/ICollection.php b/include/sabredav/lib/Sabre/DAV/ICollection.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/IExtendedCollection.php b/include/sabredav/lib/Sabre/DAV/IExtendedCollection.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/IFile.php b/include/sabredav/lib/Sabre/DAV/IFile.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/INode.php b/include/sabredav/lib/Sabre/DAV/INode.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/IProperties.php b/include/sabredav/lib/Sabre/DAV/IProperties.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/IQuota.php b/include/sabredav/lib/Sabre/DAV/IQuota.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Locks/Backend/AbstractBackend.php b/include/sabredav/lib/Sabre/DAV/Locks/Backend/AbstractBackend.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Locks/Backend/BackendInterface.php b/include/sabredav/lib/Sabre/DAV/Locks/Backend/BackendInterface.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Locks/Backend/FS.php b/include/sabredav/lib/Sabre/DAV/Locks/Backend/FS.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Locks/Backend/File.php b/include/sabredav/lib/Sabre/DAV/Locks/Backend/File.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Locks/Backend/PDO.php b/include/sabredav/lib/Sabre/DAV/Locks/Backend/PDO.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Locks/LockInfo.php b/include/sabredav/lib/Sabre/DAV/Locks/LockInfo.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Locks/Plugin.php b/include/sabredav/lib/Sabre/DAV/Locks/Plugin.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Mount/Plugin.php b/include/sabredav/lib/Sabre/DAV/Mount/Plugin.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Node.php b/include/sabredav/lib/Sabre/DAV/Node.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/ObjectTree.php b/include/sabredav/lib/Sabre/DAV/ObjectTree.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/PartialUpdate/IFile.php b/include/sabredav/lib/Sabre/DAV/PartialUpdate/IFile.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/PartialUpdate/IPatchSupport.php b/include/sabredav/lib/Sabre/DAV/PartialUpdate/IPatchSupport.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/PartialUpdate/Plugin.php b/include/sabredav/lib/Sabre/DAV/PartialUpdate/Plugin.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Property.php b/include/sabredav/lib/Sabre/DAV/Property.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Property/GetLastModified.php b/include/sabredav/lib/Sabre/DAV/Property/GetLastModified.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Property/Href.php b/include/sabredav/lib/Sabre/DAV/Property/Href.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Property/HrefList.php b/include/sabredav/lib/Sabre/DAV/Property/HrefList.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Property/IHref.php b/include/sabredav/lib/Sabre/DAV/Property/IHref.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Property/LockDiscovery.php b/include/sabredav/lib/Sabre/DAV/Property/LockDiscovery.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Property/ResourceType.php b/include/sabredav/lib/Sabre/DAV/Property/ResourceType.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Property/Response.php b/include/sabredav/lib/Sabre/DAV/Property/Response.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Property/ResponseList.php b/include/sabredav/lib/Sabre/DAV/Property/ResponseList.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Property/SupportedLock.php b/include/sabredav/lib/Sabre/DAV/Property/SupportedLock.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Property/SupportedReportSet.php b/include/sabredav/lib/Sabre/DAV/Property/SupportedReportSet.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/PropertyInterface.php b/include/sabredav/lib/Sabre/DAV/PropertyInterface.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Server.php b/include/sabredav/lib/Sabre/DAV/Server.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/ServerPlugin.php b/include/sabredav/lib/Sabre/DAV/ServerPlugin.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/SimpleCollection.php b/include/sabredav/lib/Sabre/DAV/SimpleCollection.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/SimpleFile.php b/include/sabredav/lib/Sabre/DAV/SimpleFile.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/StringUtil.php b/include/sabredav/lib/Sabre/DAV/StringUtil.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/TemporaryFileFilterPlugin.php b/include/sabredav/lib/Sabre/DAV/TemporaryFileFilterPlugin.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Tree.php b/include/sabredav/lib/Sabre/DAV/Tree.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Tree/Filesystem.php b/include/sabredav/lib/Sabre/DAV/Tree/Filesystem.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/URLUtil.php b/include/sabredav/lib/Sabre/DAV/URLUtil.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/UUIDUtil.php b/include/sabredav/lib/Sabre/DAV/UUIDUtil.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/Version.php b/include/sabredav/lib/Sabre/DAV/Version.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAV/XMLUtil.php b/include/sabredav/lib/Sabre/DAV/XMLUtil.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/AbstractPrincipalCollection.php b/include/sabredav/lib/Sabre/DAVACL/AbstractPrincipalCollection.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/Exception/AceConflict.php b/include/sabredav/lib/Sabre/DAVACL/Exception/AceConflict.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/Exception/NeedPrivileges.php b/include/sabredav/lib/Sabre/DAVACL/Exception/NeedPrivileges.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/Exception/NoAbstract.php b/include/sabredav/lib/Sabre/DAVACL/Exception/NoAbstract.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/Exception/NotRecognizedPrincipal.php b/include/sabredav/lib/Sabre/DAVACL/Exception/NotRecognizedPrincipal.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/Exception/NotSupportedPrivilege.php b/include/sabredav/lib/Sabre/DAVACL/Exception/NotSupportedPrivilege.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/IACL.php b/include/sabredav/lib/Sabre/DAVACL/IACL.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/IPrincipal.php b/include/sabredav/lib/Sabre/DAVACL/IPrincipal.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/IPrincipalCollection.php b/include/sabredav/lib/Sabre/DAVACL/IPrincipalCollection.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/Plugin.php b/include/sabredav/lib/Sabre/DAVACL/Plugin.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/Principal.php b/include/sabredav/lib/Sabre/DAVACL/Principal.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/PrincipalBackend/AbstractBackend.php b/include/sabredav/lib/Sabre/DAVACL/PrincipalBackend/AbstractBackend.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/PrincipalBackend/BackendInterface.php b/include/sabredav/lib/Sabre/DAVACL/PrincipalBackend/BackendInterface.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/PrincipalBackend/PDO.php b/include/sabredav/lib/Sabre/DAVACL/PrincipalBackend/PDO.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/PrincipalCollection.php b/include/sabredav/lib/Sabre/DAVACL/PrincipalCollection.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/Property/Acl.php b/include/sabredav/lib/Sabre/DAVACL/Property/Acl.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/Property/AclRestrictions.php b/include/sabredav/lib/Sabre/DAVACL/Property/AclRestrictions.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/Property/CurrentUserPrivilegeSet.php b/include/sabredav/lib/Sabre/DAVACL/Property/CurrentUserPrivilegeSet.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/Property/Principal.php b/include/sabredav/lib/Sabre/DAVACL/Property/Principal.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/Property/SupportedPrivilegeSet.php b/include/sabredav/lib/Sabre/DAVACL/Property/SupportedPrivilegeSet.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/DAVACL/Version.php b/include/sabredav/lib/Sabre/DAVACL/Version.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/HTTP/AWSAuth.php b/include/sabredav/lib/Sabre/HTTP/AWSAuth.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/HTTP/AbstractAuth.php b/include/sabredav/lib/Sabre/HTTP/AbstractAuth.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/HTTP/BasicAuth.php b/include/sabredav/lib/Sabre/HTTP/BasicAuth.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/HTTP/DigestAuth.php b/include/sabredav/lib/Sabre/HTTP/DigestAuth.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/HTTP/Request.php b/include/sabredav/lib/Sabre/HTTP/Request.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/HTTP/Response.php b/include/sabredav/lib/Sabre/HTTP/Response.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/HTTP/Util.php b/include/sabredav/lib/Sabre/HTTP/Util.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/HTTP/Version.php b/include/sabredav/lib/Sabre/HTTP/Version.php old mode 100755 new mode 100644 diff --git a/include/sabredav/lib/Sabre/autoload.php b/include/sabredav/lib/Sabre/autoload.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php b/include/sabredav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Backend/AbstractTest.php b/include/sabredav/tests/Sabre/CalDAV/Backend/AbstractTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Backend/Mock.php b/include/sabredav/tests/Sabre/CalDAV/Backend/Mock.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Backend/PDOMySQLTest.php b/include/sabredav/tests/Sabre/CalDAV/Backend/PDOMySQLTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Backend/PDOSqliteTest.php b/include/sabredav/tests/Sabre/CalDAV/Backend/PDOSqliteTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/CalendarObjectTest.php b/include/sabredav/tests/Sabre/CalDAV/CalendarObjectTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/CalendarQueryParserTest.php b/include/sabredav/tests/Sabre/CalDAV/CalendarQueryParserTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/CalendarQueryVAlarmTest.php b/include/sabredav/tests/Sabre/CalDAV/CalendarQueryVAlarmTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/CalendarQueryValidatorTest.php b/include/sabredav/tests/Sabre/CalDAV/CalendarQueryValidatorTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/CalendarTest.php b/include/sabredav/tests/Sabre/CalDAV/CalendarTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDTest.php b/include/sabredav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDbyDayTest.php b/include/sabredav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDbyDayTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/ExpandEventsDoubleEventsTest.php b/include/sabredav/tests/Sabre/CalDAV/ExpandEventsDoubleEventsTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/FreeBusyReportTest.php b/include/sabredav/tests/Sabre/CalDAV/FreeBusyReportTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/FreeBusyRequestTest.php b/include/sabredav/tests/Sabre/CalDAV/FreeBusyRequestTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/GetEventsByTimerangeTest.php b/include/sabredav/tests/Sabre/CalDAV/GetEventsByTimerangeTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/ICSExportPluginTest.php b/include/sabredav/tests/Sabre/CalDAV/ICSExportPluginTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Issue166Test.php b/include/sabredav/tests/Sabre/CalDAV/Issue166Test.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Issue172Test.php b/include/sabredav/tests/Sabre/CalDAV/Issue172Test.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Issue203Test.php b/include/sabredav/tests/Sabre/CalDAV/Issue203Test.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Issue205Test.php b/include/sabredav/tests/Sabre/CalDAV/Issue205Test.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Issue211Test.php b/include/sabredav/tests/Sabre/CalDAV/Issue211Test.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Issue220Test.php b/include/sabredav/tests/Sabre/CalDAV/Issue220Test.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Issue228Test.php b/include/sabredav/tests/Sabre/CalDAV/Issue228Test.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Notifications/CollectionTest.php b/include/sabredav/tests/Sabre/CalDAV/Notifications/CollectionTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Notifications/NodeTest.php b/include/sabredav/tests/Sabre/CalDAV/Notifications/NodeTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Notifications/Notification/InviteReplyTest.php b/include/sabredav/tests/Sabre/CalDAV/Notifications/Notification/InviteReplyTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Notifications/Notification/InviteTest.php b/include/sabredav/tests/Sabre/CalDAV/Notifications/Notification/InviteTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Notifications/Notification/SystemStatusTest.php b/include/sabredav/tests/Sabre/CalDAV/Notifications/Notification/SystemStatusTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/OutboxPostTest.php b/include/sabredav/tests/Sabre/CalDAV/OutboxPostTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/PluginTest.php b/include/sabredav/tests/Sabre/CalDAV/PluginTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Principal/CollectionTest.php b/include/sabredav/tests/Sabre/CalDAV/Principal/CollectionTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Principal/ProxyReadTest.php b/include/sabredav/tests/Sabre/CalDAV/Principal/ProxyReadTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Principal/ProxyWriteTest.php b/include/sabredav/tests/Sabre/CalDAV/Principal/ProxyWriteTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Principal/UserTest.php b/include/sabredav/tests/Sabre/CalDAV/Principal/UserTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Property/AllowedSharingModesTest.php b/include/sabredav/tests/Sabre/CalDAV/Property/AllowedSharingModesTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Property/InviteTest.php b/include/sabredav/tests/Sabre/CalDAV/Property/InviteTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Property/ScheduleCalendarTranspTest.php b/include/sabredav/tests/Sabre/CalDAV/Property/ScheduleCalendarTranspTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Property/SupportedCalendarComponentSetTest.php b/include/sabredav/tests/Sabre/CalDAV/Property/SupportedCalendarComponentSetTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Property/SupportedCalendarDataTest.php b/include/sabredav/tests/Sabre/CalDAV/Property/SupportedCalendarDataTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Property/SupportedCollationSetTest.php b/include/sabredav/tests/Sabre/CalDAV/Property/SupportedCollationSetTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Schedule/IMip/Mock.php b/include/sabredav/tests/Sabre/CalDAV/Schedule/IMip/Mock.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/Schedule/OutboxTest.php b/include/sabredav/tests/Sabre/CalDAV/Schedule/OutboxTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/ShareableCalendarTest.php b/include/sabredav/tests/Sabre/CalDAV/ShareableCalendarTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/SharedCalendarTest.php b/include/sabredav/tests/Sabre/CalDAV/SharedCalendarTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/SharingPluginTest.php b/include/sabredav/tests/Sabre/CalDAV/SharingPluginTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/TestUtil.php b/include/sabredav/tests/Sabre/CalDAV/TestUtil.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/UserCalendarsSharedCalendarsTest.php b/include/sabredav/tests/Sabre/CalDAV/UserCalendarsSharedCalendarsTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/UserCalendarsTest.php b/include/sabredav/tests/Sabre/CalDAV/UserCalendarsTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/ValidateICalTest.php b/include/sabredav/tests/Sabre/CalDAV/ValidateICalTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CalDAV/VersionTest.php b/include/sabredav/tests/Sabre/CalDAV/VersionTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/AbstractPluginTest.php b/include/sabredav/tests/Sabre/CardDAV/AbstractPluginTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/AddressBookQueryParserTest.php b/include/sabredav/tests/Sabre/CardDAV/AddressBookQueryParserTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/AddressBookQueryTest.php b/include/sabredav/tests/Sabre/CardDAV/AddressBookQueryTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/AddressBookRootTest.php b/include/sabredav/tests/Sabre/CardDAV/AddressBookRootTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/AddressBookTest.php b/include/sabredav/tests/Sabre/CardDAV/AddressBookTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php b/include/sabredav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/Backend/Mock.php b/include/sabredav/tests/Sabre/CardDAV/Backend/Mock.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php b/include/sabredav/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/Backend/PDOSqliteTest.php b/include/sabredav/tests/Sabre/CardDAV/Backend/PDOSqliteTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/CardTest.php b/include/sabredav/tests/Sabre/CardDAV/CardTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/IDirectoryTest.php b/include/sabredav/tests/Sabre/CardDAV/IDirectoryTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/MultiGetTest.php b/include/sabredav/tests/Sabre/CardDAV/MultiGetTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/PluginTest.php b/include/sabredav/tests/Sabre/CardDAV/PluginTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/Property/SupportedAddressDataTest.php b/include/sabredav/tests/Sabre/CardDAV/Property/SupportedAddressDataTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/SogoStripContentTypeTest.php b/include/sabredav/tests/Sabre/CardDAV/SogoStripContentTypeTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/TestUtil.php b/include/sabredav/tests/Sabre/CardDAV/TestUtil.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/UserAddressBooksTest.php b/include/sabredav/tests/Sabre/CardDAV/UserAddressBooksTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/VCFExportTest.php b/include/sabredav/tests/Sabre/CardDAV/VCFExportTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/ValidateFilterTest.php b/include/sabredav/tests/Sabre/CardDAV/ValidateFilterTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/ValidateVCardTest.php b/include/sabredav/tests/Sabre/CardDAV/ValidateVCardTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/CardDAV/VersionTest.php b/include/sabredav/tests/Sabre/CardDAV/VersionTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/AbstractServer.php b/include/sabredav/tests/Sabre/DAV/AbstractServer.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Auth/Backend/AbstractBasicTest.php b/include/sabredav/tests/Sabre/DAV/Auth/Backend/AbstractBasicTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php b/include/sabredav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Auth/Backend/AbstractPDOTest.php b/include/sabredav/tests/Sabre/DAV/Auth/Backend/AbstractPDOTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Auth/Backend/ApacheTest.php b/include/sabredav/tests/Sabre/DAV/Auth/Backend/ApacheTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Auth/Backend/FileTest.php b/include/sabredav/tests/Sabre/DAV/Auth/Backend/FileTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Auth/Backend/Mock.php b/include/sabredav/tests/Sabre/DAV/Auth/Backend/Mock.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Auth/Backend/PDOMySQLTest.php b/include/sabredav/tests/Sabre/DAV/Auth/Backend/PDOMySQLTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Auth/Backend/PDOSqliteTest.php b/include/sabredav/tests/Sabre/DAV/Auth/Backend/PDOSqliteTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Auth/PluginTest.php b/include/sabredav/tests/Sabre/DAV/Auth/PluginTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/BasicNodeTest.php b/include/sabredav/tests/Sabre/DAV/BasicNodeTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Browser/GuessContentTypeTest.php b/include/sabredav/tests/Sabre/DAV/Browser/GuessContentTypeTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Browser/MapGetToPropFindTest.php b/include/sabredav/tests/Sabre/DAV/Browser/MapGetToPropFindTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Browser/PluginTest.php b/include/sabredav/tests/Sabre/DAV/Browser/PluginTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/ClientMock.php b/include/sabredav/tests/Sabre/DAV/ClientMock.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/ClientTest.php b/include/sabredav/tests/Sabre/DAV/ClientTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Exception/LockedTest.php b/include/sabredav/tests/Sabre/DAV/Exception/LockedTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Exception/PaymentRequiredTest.php b/include/sabredav/tests/Sabre/DAV/Exception/PaymentRequiredTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/ExceptionTest.php b/include/sabredav/tests/Sabre/DAV/ExceptionTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/FSExt/FileTest.php b/include/sabredav/tests/Sabre/DAV/FSExt/FileTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/FSExt/NodeTest.php b/include/sabredav/tests/Sabre/DAV/FSExt/NodeTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/FSExt/ServerTest.php b/include/sabredav/tests/Sabre/DAV/FSExt/ServerTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/HTTPPreferParsingTest.php b/include/sabredav/tests/Sabre/DAV/HTTPPreferParsingTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/HttpDeleteTest.php b/include/sabredav/tests/Sabre/DAV/HttpDeleteTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/HttpPutTest.php b/include/sabredav/tests/Sabre/DAV/HttpPutTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Issue33Test.php b/include/sabredav/tests/Sabre/DAV/Issue33Test.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Locks/Backend/AbstractTest.php b/include/sabredav/tests/Sabre/DAV/Locks/Backend/AbstractTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Locks/Backend/FSTest.php b/include/sabredav/tests/Sabre/DAV/Locks/Backend/FSTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Locks/Backend/FileTest.php b/include/sabredav/tests/Sabre/DAV/Locks/Backend/FileTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Locks/Backend/PDOMySQLTest.php b/include/sabredav/tests/Sabre/DAV/Locks/Backend/PDOMySQLTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Locks/Backend/PDOTest.php b/include/sabredav/tests/Sabre/DAV/Locks/Backend/PDOTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Locks/GetIfConditionsTest.php b/include/sabredav/tests/Sabre/DAV/Locks/GetIfConditionsTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Locks/MSWordTest.php b/include/sabredav/tests/Sabre/DAV/Locks/MSWordTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Locks/PluginTest.php b/include/sabredav/tests/Sabre/DAV/Locks/PluginTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Mock/Collection.php b/include/sabredav/tests/Sabre/DAV/Mock/Collection.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Mock/File.php b/include/sabredav/tests/Sabre/DAV/Mock/File.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Mount/PluginTest.php b/include/sabredav/tests/Sabre/DAV/Mount/PluginTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/ObjectTreeTest.php b/include/sabredav/tests/Sabre/DAV/ObjectTreeTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/PartialUpdate/FileMock.php b/include/sabredav/tests/Sabre/DAV/PartialUpdate/FileMock.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/PartialUpdate/PluginTest.php b/include/sabredav/tests/Sabre/DAV/PartialUpdate/PluginTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php b/include/sabredav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Property/GetLastModifiedTest.php b/include/sabredav/tests/Sabre/DAV/Property/GetLastModifiedTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Property/HrefListTest.php b/include/sabredav/tests/Sabre/DAV/Property/HrefListTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Property/HrefTest.php b/include/sabredav/tests/Sabre/DAV/Property/HrefTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Property/ResourceTypeTest.php b/include/sabredav/tests/Sabre/DAV/Property/ResourceTypeTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Property/ResponseListTest.php b/include/sabredav/tests/Sabre/DAV/Property/ResponseListTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Property/ResponseTest.php b/include/sabredav/tests/Sabre/DAV/Property/ResponseTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Property/SupportedReportSetTest.php b/include/sabredav/tests/Sabre/DAV/Property/SupportedReportSetTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/ServerCopyMoveTest.php b/include/sabredav/tests/Sabre/DAV/ServerCopyMoveTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/ServerEventsTest.php b/include/sabredav/tests/Sabre/DAV/ServerEventsTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/ServerMKCOLTest.php b/include/sabredav/tests/Sabre/DAV/ServerMKCOLTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/ServerPluginTest.php b/include/sabredav/tests/Sabre/DAV/ServerPluginTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/ServerPreconditionTest.php b/include/sabredav/tests/Sabre/DAV/ServerPreconditionTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/ServerPropsTest.php b/include/sabredav/tests/Sabre/DAV/ServerPropsTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/ServerRangeTest.php b/include/sabredav/tests/Sabre/DAV/ServerRangeTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/ServerSimpleTest.php b/include/sabredav/tests/Sabre/DAV/ServerSimpleTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/ServerUpdatePropertiesTest.php b/include/sabredav/tests/Sabre/DAV/ServerUpdatePropertiesTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/SimpleFileTest.php b/include/sabredav/tests/Sabre/DAV/SimpleFileTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/StringUtilTest.php b/include/sabredav/tests/Sabre/DAV/StringUtilTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/TemporaryFileFilterTest.php b/include/sabredav/tests/Sabre/DAV/TemporaryFileFilterTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/TestPlugin.php b/include/sabredav/tests/Sabre/DAV/TestPlugin.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/Tree/FilesystemTest.php b/include/sabredav/tests/Sabre/DAV/Tree/FilesystemTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/TreeTest.php b/include/sabredav/tests/Sabre/DAV/TreeTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/URLUtilTest.php b/include/sabredav/tests/Sabre/DAV/URLUtilTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/UUIDUtilTest.php b/include/sabredav/tests/Sabre/DAV/UUIDUtilTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAV/XMLUtilTest.php b/include/sabredav/tests/Sabre/DAV/XMLUtilTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/ACLMethodTest.php b/include/sabredav/tests/Sabre/DAVACL/ACLMethodTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/AllowAccessTest.php b/include/sabredav/tests/Sabre/DAVACL/AllowAccessTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/BlockAccessTest.php b/include/sabredav/tests/Sabre/DAVACL/BlockAccessTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/Exception/AceConflictTest.php b/include/sabredav/tests/Sabre/DAVACL/Exception/AceConflictTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/Exception/NeedPrivilegesExceptionTest.php b/include/sabredav/tests/Sabre/DAVACL/Exception/NeedPrivilegesExceptionTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/Exception/NoAbstractTest.php b/include/sabredav/tests/Sabre/DAVACL/Exception/NoAbstractTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/Exception/NotRecognizedPrincipalTest.php b/include/sabredav/tests/Sabre/DAVACL/Exception/NotRecognizedPrincipalTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/Exception/NotSupportedPrivilegeTest.php b/include/sabredav/tests/Sabre/DAVACL/Exception/NotSupportedPrivilegeTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/ExpandPropertiesTest.php b/include/sabredav/tests/Sabre/DAVACL/ExpandPropertiesTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/MockACLNode.php b/include/sabredav/tests/Sabre/DAVACL/MockACLNode.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/MockPrincipal.php b/include/sabredav/tests/Sabre/DAVACL/MockPrincipal.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/PluginAdminTest.php b/include/sabredav/tests/Sabre/DAVACL/PluginAdminTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/PluginPropertiesTest.php b/include/sabredav/tests/Sabre/DAVACL/PluginPropertiesTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/PluginUpdatePropertiesTest.php b/include/sabredav/tests/Sabre/DAVACL/PluginUpdatePropertiesTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/PrincipalBackend/AbstractPDOTest.php b/include/sabredav/tests/Sabre/DAVACL/PrincipalBackend/AbstractPDOTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php b/include/sabredav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/PrincipalBackend/PDOMySQLTest.php b/include/sabredav/tests/Sabre/DAVACL/PrincipalBackend/PDOMySQLTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/PrincipalBackend/PDOSqliteTest.php b/include/sabredav/tests/Sabre/DAVACL/PrincipalBackend/PDOSqliteTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/PrincipalCollectionTest.php b/include/sabredav/tests/Sabre/DAVACL/PrincipalCollectionTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/PrincipalPropertySearchTest.php b/include/sabredav/tests/Sabre/DAVACL/PrincipalPropertySearchTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/PrincipalSearchPropertySetTest.php b/include/sabredav/tests/Sabre/DAVACL/PrincipalSearchPropertySetTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/PrincipalTest.php b/include/sabredav/tests/Sabre/DAVACL/PrincipalTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/Property/ACLRestrictionsTest.php b/include/sabredav/tests/Sabre/DAVACL/Property/ACLRestrictionsTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/Property/ACLTest.php b/include/sabredav/tests/Sabre/DAVACL/Property/ACLTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/Property/CurrentUserPrivilegeSetTest.php b/include/sabredav/tests/Sabre/DAVACL/Property/CurrentUserPrivilegeSetTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/Property/PrincipalTest.php b/include/sabredav/tests/Sabre/DAVACL/Property/PrincipalTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/Property/SupportedPrivilegeSetTest.php b/include/sabredav/tests/Sabre/DAVACL/Property/SupportedPrivilegeSetTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/SimplePluginTest.php b/include/sabredav/tests/Sabre/DAVACL/SimplePluginTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVACL/VersionTest.php b/include/sabredav/tests/Sabre/DAVACL/VersionTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/DAVServerTest.php b/include/sabredav/tests/Sabre/DAVServerTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/HTTP/AWSAuthTest.php b/include/sabredav/tests/Sabre/HTTP/AWSAuthTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/HTTP/BasicAuthTest.php b/include/sabredav/tests/Sabre/HTTP/BasicAuthTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/HTTP/DigestAuthTest.php b/include/sabredav/tests/Sabre/HTTP/DigestAuthTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/HTTP/RequestTest.php b/include/sabredav/tests/Sabre/HTTP/RequestTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/HTTP/ResponseMock.php b/include/sabredav/tests/Sabre/HTTP/ResponseMock.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/HTTP/ResponseTest.php b/include/sabredav/tests/Sabre/HTTP/ResponseTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/HTTP/UtilTest.php b/include/sabredav/tests/Sabre/HTTP/UtilTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/HTTP/VersionTest.php b/include/sabredav/tests/Sabre/HTTP/VersionTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/Sabre/TestUtil.php b/include/sabredav/tests/Sabre/TestUtil.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/bootstrap.php b/include/sabredav/tests/bootstrap.php old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/composer.vobject3.json b/include/sabredav/tests/composer.vobject3.json old mode 100755 new mode 100644 diff --git a/include/sabredav/tests/phpunit.xml b/include/sabredav/tests/phpunit.xml old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/autoload.php b/include/sabredav/vendor/autoload.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/composer/ClassLoader.php b/include/sabredav/vendor/composer/ClassLoader.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/composer/autoload_classmap.php b/include/sabredav/vendor/composer/autoload_classmap.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/composer/autoload_namespaces.php b/include/sabredav/vendor/composer/autoload_namespaces.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/composer/autoload_psr4.php b/include/sabredav/vendor/composer/autoload_psr4.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/composer/autoload_real.php b/include/sabredav/vendor/composer/autoload_real.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/composer/installed.json b/include/sabredav/vendor/composer/installed.json old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/.gitignore b/include/sabredav/vendor/sabre/vobject/.gitignore old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/.travis.yml b/include/sabredav/vendor/sabre/vobject/.travis.yml old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/ChangeLog b/include/sabredav/vendor/sabre/vobject/ChangeLog old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/LICENSE b/include/sabredav/vendor/sabre/vobject/LICENSE old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/README.md b/include/sabredav/vendor/sabre/vobject/README.md old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/bin/bench.php b/include/sabredav/vendor/sabre/vobject/bin/bench.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/bin/generateicalendardata.php b/include/sabredav/vendor/sabre/vobject/bin/generateicalendardata.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/bin/vobjectvalidate.php b/include/sabredav/vendor/sabre/vobject/bin/vobjectvalidate.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/composer.json b/include/sabredav/vendor/sabre/vobject/composer.json old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VAlarm.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VAlarm.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VCalendar.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VCalendar.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VCard.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VCard.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VEvent.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VEvent.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VFreeBusy.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VFreeBusy.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VJournal.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VJournal.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VTodo.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Component/VTodo.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/DateTimeParser.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/DateTimeParser.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Document.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Document.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/ElementList.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/ElementList.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/FreeBusyGenerator.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/FreeBusyGenerator.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Node.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Node.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Parameter.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Parameter.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/ParseException.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/ParseException.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Property.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Property.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Property/Compound.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Property/Compound.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Property/DateTime.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Property/DateTime.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Property/MultiDateTime.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Property/MultiDateTime.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Reader.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Reader.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/RecurrenceIterator.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/RecurrenceIterator.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Splitter/ICalendar.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Splitter/ICalendar.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Splitter/SplitterInterface.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Splitter/SplitterInterface.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Splitter/VCard.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Splitter/VCard.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/StringUtil.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/StringUtil.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/TimeZoneUtil.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/TimeZoneUtil.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Version.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/Version.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/includes.php b/include/sabredav/vendor/sabre/vobject/lib/Sabre/VObject/includes.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VAlarmTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VAlarmTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VCalendarTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VCalendarTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VCardTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VCardTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VEventTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VEventTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VFreeBusyTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VFreeBusyTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VJournalTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VJournalTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VTodoTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Component/VTodoTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/ComponentTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/ComponentTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/DateTimeParserTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/DateTimeParserTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/DocumentTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/DocumentTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/ElementListTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/ElementListTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/EmClientTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/EmClientTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/FreeBusyGeneratorTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/FreeBusyGeneratorTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Issue153Test.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Issue153Test.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Issue154Test.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Issue154Test.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Issue48Test.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Issue48Test.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Issue50Test.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Issue50Test.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/ParameterTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/ParameterTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Property/CompoundTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Property/CompoundTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Property/DateTimeTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Property/DateTimeTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Property/MultiDateTimeTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Property/MultiDateTimeTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/PropertyTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/PropertyTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/ReaderTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/ReaderTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/RecurrenceIteratorFifthTuesdayProblemTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/RecurrenceIteratorFifthTuesdayProblemTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/RecurrenceIteratorIncorrectExpandTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/RecurrenceIteratorIncorrectExpandTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/RecurrenceIteratorInfiniteLoopProblemTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/RecurrenceIteratorInfiniteLoopProblemTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/RecurrenceIteratorMinusOneProblemTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/RecurrenceIteratorMinusOneProblemTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/RecurrenceIteratorMissingOverriddenTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/RecurrenceIteratorMissingOverriddenTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/RecurrenceIteratorTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/RecurrenceIteratorTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/SlashRTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/SlashRTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Splitter/ICalendarTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Splitter/ICalendarTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Splitter/VCardTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/Splitter/VCardTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/StringUtilTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/StringUtilTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/TimeZoneUtilTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/TimeZoneUtilTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/VersionTest.php b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/VersionTest.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/issue153.vcf b/include/sabredav/vendor/sabre/vobject/tests/Sabre/VObject/issue153.vcf old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/bootstrap.php b/include/sabredav/vendor/sabre/vobject/tests/bootstrap.php old mode 100755 new mode 100644 diff --git a/include/sabredav/vendor/sabre/vobject/tests/phpunit.xml b/include/sabredav/vendor/sabre/vobject/tests/phpunit.xml old mode 100755 new mode 100644 diff --git a/include/securimage/AHGBold.ttf b/include/securimage/AHGBold.ttf old mode 100755 new mode 100644 diff --git a/include/securimage/LICENSE.txt b/include/securimage/LICENSE.txt old mode 100755 new mode 100644 diff --git a/include/securimage/README.FONT.txt b/include/securimage/README.FONT.txt old mode 100755 new mode 100644 diff --git a/include/securimage/README.txt b/include/securimage/README.txt old mode 100755 new mode 100644 diff --git a/include/securimage/WavFile.php b/include/securimage/WavFile.php old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/0.wav b/include/securimage/audio/en/0.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/1.wav b/include/securimage/audio/en/1.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/10.wav b/include/securimage/audio/en/10.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/11.wav b/include/securimage/audio/en/11.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/12.wav b/include/securimage/audio/en/12.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/13.wav b/include/securimage/audio/en/13.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/14.wav b/include/securimage/audio/en/14.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/15.wav b/include/securimage/audio/en/15.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/16.wav b/include/securimage/audio/en/16.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/17.wav b/include/securimage/audio/en/17.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/18.wav b/include/securimage/audio/en/18.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/19.wav b/include/securimage/audio/en/19.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/2.wav b/include/securimage/audio/en/2.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/20.wav b/include/securimage/audio/en/20.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/3.wav b/include/securimage/audio/en/3.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/4.wav b/include/securimage/audio/en/4.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/5.wav b/include/securimage/audio/en/5.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/6.wav b/include/securimage/audio/en/6.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/7.wav b/include/securimage/audio/en/7.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/8.wav b/include/securimage/audio/en/8.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/9.wav b/include/securimage/audio/en/9.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/A.wav b/include/securimage/audio/en/A.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/B.wav b/include/securimage/audio/en/B.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/C.wav b/include/securimage/audio/en/C.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/D.wav b/include/securimage/audio/en/D.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/E.wav b/include/securimage/audio/en/E.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/F.wav b/include/securimage/audio/en/F.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/G.wav b/include/securimage/audio/en/G.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/H.wav b/include/securimage/audio/en/H.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/I.wav b/include/securimage/audio/en/I.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/J.wav b/include/securimage/audio/en/J.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/K.wav b/include/securimage/audio/en/K.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/L.wav b/include/securimage/audio/en/L.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/M.wav b/include/securimage/audio/en/M.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/MINUS.wav b/include/securimage/audio/en/MINUS.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/N.wav b/include/securimage/audio/en/N.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/O.wav b/include/securimage/audio/en/O.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/P.wav b/include/securimage/audio/en/P.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/PLUS.wav b/include/securimage/audio/en/PLUS.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/Q.wav b/include/securimage/audio/en/Q.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/R.wav b/include/securimage/audio/en/R.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/S.wav b/include/securimage/audio/en/S.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/T.wav b/include/securimage/audio/en/T.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/TIMES.wav b/include/securimage/audio/en/TIMES.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/U.wav b/include/securimage/audio/en/U.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/V.wav b/include/securimage/audio/en/V.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/W.wav b/include/securimage/audio/en/W.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/X.wav b/include/securimage/audio/en/X.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/Y.wav b/include/securimage/audio/en/Y.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/Z.wav b/include/securimage/audio/en/Z.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/en/error.wav b/include/securimage/audio/en/error.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/noise/check-point-1.wav b/include/securimage/audio/noise/check-point-1.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/noise/crowd-talking-1.wav b/include/securimage/audio/noise/crowd-talking-1.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/noise/crowd-talking-6.wav b/include/securimage/audio/noise/crowd-talking-6.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/noise/crowd-talking-7.wav b/include/securimage/audio/noise/crowd-talking-7.wav old mode 100755 new mode 100644 diff --git a/include/securimage/audio/noise/kids-playing-1.wav b/include/securimage/audio/noise/kids-playing-1.wav old mode 100755 new mode 100644 diff --git a/include/securimage/backgrounds/bg3.jpg b/include/securimage/backgrounds/bg3.jpg old mode 100755 new mode 100644 diff --git a/include/securimage/backgrounds/bg4.jpg b/include/securimage/backgrounds/bg4.jpg old mode 100755 new mode 100644 diff --git a/include/securimage/backgrounds/bg5.jpg b/include/securimage/backgrounds/bg5.jpg old mode 100755 new mode 100644 diff --git a/include/securimage/backgrounds/bg6.png b/include/securimage/backgrounds/bg6.png old mode 100755 new mode 100644 diff --git a/include/securimage/captcha.html b/include/securimage/captcha.html old mode 100755 new mode 100644 diff --git a/include/securimage/database/.htaccess b/include/securimage/database/.htaccess old mode 100755 new mode 100644 diff --git a/include/securimage/database/index.html b/include/securimage/database/index.html old mode 100755 new mode 100644 diff --git a/include/securimage/database/securimage.sq3 b/include/securimage/database/securimage.sq3 old mode 100755 new mode 100644 diff --git a/include/securimage/images/audio_icon.png b/include/securimage/images/audio_icon.png old mode 100755 new mode 100644 diff --git a/include/securimage/images/refresh.png b/include/securimage/images/refresh.png old mode 100755 new mode 100644 diff --git a/include/securimage/securimage.php b/include/securimage/securimage.php old mode 100755 new mode 100644 diff --git a/include/securimage/securimage_play.php b/include/securimage/securimage_play.php old mode 100755 new mode 100644 diff --git a/include/securimage/securimage_play.swf b/include/securimage/securimage_play.swf old mode 100755 new mode 100644 diff --git a/include/securimage/securimage_show.php b/include/securimage/securimage_show.php old mode 100755 new mode 100644 diff --git a/include/securimage/words/words.txt b/include/securimage/words/words.txt old mode 100755 new mode 100644 diff --git a/include/service.class.php b/include/service.class.php old mode 100755 new mode 100644 diff --git a/include/studentnote.class.php b/include/studentnote.class.php old mode 100755 new mode 100644 diff --git a/include/studiengang.class.php b/include/studiengang.class.php old mode 100755 new mode 100644 diff --git a/include/studienjahr.class.php b/include/studienjahr.class.php old mode 100755 new mode 100644 diff --git a/include/tiny_mce/langs/de.js b/include/tiny_mce/langs/de.js old mode 100755 new mode 100644 diff --git a/include/tiny_mce/plugins/advhr/langs/de_dlg.js b/include/tiny_mce/plugins/advhr/langs/de_dlg.js old mode 100755 new mode 100644 diff --git a/include/tiny_mce/plugins/advimage/langs/de_dlg.js b/include/tiny_mce/plugins/advimage/langs/de_dlg.js old mode 100755 new mode 100644 diff --git a/include/tiny_mce/plugins/advlink/langs/de_dlg.js b/include/tiny_mce/plugins/advlink/langs/de_dlg.js old mode 100755 new mode 100644 diff --git a/include/tiny_mce/plugins/emotions/langs/de_dlg.js b/include/tiny_mce/plugins/emotions/langs/de_dlg.js old mode 100755 new mode 100644 diff --git a/include/tiny_mce/plugins/fullpage/langs/de_dlg.js b/include/tiny_mce/plugins/fullpage/langs/de_dlg.js old mode 100755 new mode 100644 diff --git a/include/tiny_mce/plugins/media/langs/de_dlg.js b/include/tiny_mce/plugins/media/langs/de_dlg.js old mode 100755 new mode 100644 diff --git a/include/tiny_mce/plugins/paste/langs/de_dlg.js b/include/tiny_mce/plugins/paste/langs/de_dlg.js old mode 100755 new mode 100644 diff --git a/include/tiny_mce/plugins/searchreplace/langs/de_dlg.js b/include/tiny_mce/plugins/searchreplace/langs/de_dlg.js old mode 100755 new mode 100644 diff --git a/include/tiny_mce/plugins/style/langs/de_dlg.js b/include/tiny_mce/plugins/style/langs/de_dlg.js old mode 100755 new mode 100644 diff --git a/include/tiny_mce/plugins/table/langs/de_dlg.js b/include/tiny_mce/plugins/table/langs/de_dlg.js old mode 100755 new mode 100644 diff --git a/include/tiny_mce/plugins/template/langs/de_dlg.js b/include/tiny_mce/plugins/template/langs/de_dlg.js old mode 100755 new mode 100644 diff --git a/include/tiny_mce/plugins/wordc/langs/de_dlg.js b/include/tiny_mce/plugins/wordc/langs/de_dlg.js old mode 100755 new mode 100644 diff --git a/include/tiny_mce/plugins/wordc/langs/en_dlg.js b/include/tiny_mce/plugins/wordc/langs/en_dlg.js old mode 100755 new mode 100644 diff --git a/include/tiny_mce/plugins/xhtmlxtras/langs/de_dlg.js b/include/tiny_mce/plugins/xhtmlxtras/langs/de_dlg.js old mode 100755 new mode 100644 diff --git a/include/tiny_mce/themes/advanced/langs/de.js b/include/tiny_mce/themes/advanced/langs/de.js old mode 100755 new mode 100644 diff --git a/include/tiny_mce/themes/advanced/langs/de_dlg.js b/include/tiny_mce/themes/advanced/langs/de_dlg.js old mode 100755 new mode 100644 diff --git a/include/tiny_mce/themes/simple/langs/de.js b/include/tiny_mce/themes/simple/langs/de.js old mode 100755 new mode 100644 diff --git a/include/tw/generateZahlungsreferenz.inc.php b/include/tw/generateZahlungsreferenz.inc.php old mode 100755 new mode 100644 diff --git a/include/tw/index.html b/include/tw/index.html old mode 100755 new mode 100644 diff --git a/include/tw/vilesci_menu_main.inc.php b/include/tw/vilesci_menu_main.inc.php old mode 100755 new mode 100644 diff --git a/include/vendor_custom/easyui/icon.css b/include/vendor_custom/easyui/icon.css old mode 100755 new mode 100644 diff --git a/include/webservicerecht.class.php b/include/webservicerecht.class.php old mode 100755 new mode 100644 diff --git a/include/wochenplan.class.php b/include/wochenplan.class.php old mode 100755 new mode 100644 diff --git a/include/xslfo2pdf/fpdf/myfpdf.php b/include/xslfo2pdf/fpdf/myfpdf.php old mode 100755 new mode 100644 diff --git a/include/zeitaufzeichnung.class.php b/include/zeitaufzeichnung.class.php old mode 100755 new mode 100644 diff --git a/include/zeitsperre.class.php b/include/zeitsperre.class.php old mode 100755 new mode 100644 diff --git a/include/zgv.class.php b/include/zgv.class.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/abgabetool.php b/locale/de-AT/abgabetool.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/coodle.php b/locale/de-AT/coodle.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/dms_link.php b/locale/de-AT/dms_link.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/errors.php b/locale/de-AT/errors.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/freebusy.php b/locale/de-AT/freebusy.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/global.php b/locale/de-AT/global.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/incoming.php b/locale/de-AT/incoming.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/ktu.php b/locale/de-AT/ktu.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/lehre.php b/locale/de-AT/lehre.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/lvaliste.php b/locale/de-AT/lvaliste.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/mail.php b/locale/de-AT/mail.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/menu.php b/locale/de-AT/menu.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/news.php b/locale/de-AT/news.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/notebookregister.php b/locale/de-AT/notebookregister.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/passwort.php b/locale/de-AT/passwort.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/personensuche.php b/locale/de-AT/personensuche.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/planner.dtd b/locale/de-AT/planner.dtd old mode 100755 new mode 100644 diff --git a/locale/de-AT/pruefung.php b/locale/de-AT/pruefung.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/semesterplan.php b/locale/de-AT/semesterplan.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/studienplan.php b/locale/de-AT/studienplan.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/tools.php b/locale/de-AT/tools.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/zeitaufzeichnung.php b/locale/de-AT/zeitaufzeichnung.php old mode 100755 new mode 100644 diff --git a/locale/de-AT/zeitsperre.php b/locale/de-AT/zeitsperre.php old mode 100755 new mode 100644 diff --git a/locale/de-SFU/planner.dtd b/locale/de-SFU/planner.dtd old mode 100755 new mode 100644 diff --git a/locale/en-US/abgabetool.php b/locale/en-US/abgabetool.php old mode 100755 new mode 100644 diff --git a/locale/en-US/coodle.php b/locale/en-US/coodle.php old mode 100755 new mode 100644 diff --git a/locale/en-US/dms_link.php b/locale/en-US/dms_link.php old mode 100755 new mode 100644 diff --git a/locale/en-US/errors.php b/locale/en-US/errors.php old mode 100755 new mode 100644 diff --git a/locale/en-US/global.php b/locale/en-US/global.php old mode 100755 new mode 100644 diff --git a/locale/en-US/incoming.php b/locale/en-US/incoming.php old mode 100755 new mode 100644 diff --git a/locale/en-US/lehre.php b/locale/en-US/lehre.php old mode 100755 new mode 100644 diff --git a/locale/en-US/lvaliste.php b/locale/en-US/lvaliste.php old mode 100755 new mode 100644 diff --git a/locale/en-US/menu.php b/locale/en-US/menu.php old mode 100755 new mode 100644 diff --git a/locale/en-US/news.php b/locale/en-US/news.php old mode 100755 new mode 100644 diff --git a/locale/en-US/notebookregister.php b/locale/en-US/notebookregister.php old mode 100755 new mode 100644 diff --git a/locale/en-US/passwort.php b/locale/en-US/passwort.php old mode 100755 new mode 100644 diff --git a/locale/en-US/personensuche.php b/locale/en-US/personensuche.php old mode 100755 new mode 100644 diff --git a/locale/en-US/pruefung.php b/locale/en-US/pruefung.php old mode 100755 new mode 100644 diff --git a/locale/en-US/semesterplan.php b/locale/en-US/semesterplan.php old mode 100755 new mode 100644 diff --git a/locale/en-US/tools.php b/locale/en-US/tools.php old mode 100755 new mode 100644 diff --git a/locale/en-US/zeitaufzeichnung.php b/locale/en-US/zeitaufzeichnung.php old mode 100755 new mode 100644 diff --git a/locale/en-US/zeitsperre.php b/locale/en-US/zeitsperre.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/abgabetool.php b/locale/it-IT/abgabetool.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/anwesenheitsliste.php b/locale/it-IT/anwesenheitsliste.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/benotungstool.php b/locale/it-IT/benotungstool.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/buchungen.php b/locale/it-IT/buchungen.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/coodle.php b/locale/it-IT/coodle.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/courseInformation.php b/locale/it-IT/courseInformation.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/dms_link.php b/locale/it-IT/dms_link.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/errors.php b/locale/it-IT/errors.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/eventkalender.php b/locale/it-IT/eventkalender.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/feedback.php b/locale/it-IT/feedback.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/freebusy.php b/locale/it-IT/freebusy.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/freifach.php b/locale/it-IT/freifach.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/gesamtnote.php b/locale/it-IT/gesamtnote.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/global.php b/locale/it-IT/global.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/incoming.php b/locale/it-IT/incoming.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/lehre.php b/locale/it-IT/lehre.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/lvaliste.php b/locale/it-IT/lvaliste.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/lvinfo.php b/locale/it-IT/lvinfo.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/lvplan.php b/locale/it-IT/lvplan.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/mail.php b/locale/it-IT/mail.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/mailverteiler.php b/locale/it-IT/mailverteiler.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/menu.php b/locale/it-IT/menu.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/news.php b/locale/it-IT/news.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/notebookregister.php b/locale/it-IT/notebookregister.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/notfallbestimmungen.php b/locale/it-IT/notfallbestimmungen.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/passwort.php b/locale/it-IT/passwort.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/personensuche.php b/locale/it-IT/personensuche.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/profil.php b/locale/it-IT/profil.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/pruefung.php b/locale/it-IT/pruefung.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/semesterplan.php b/locale/it-IT/semesterplan.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/services.php b/locale/it-IT/services.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/studienplan.php b/locale/it-IT/studienplan.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/telefonverzeichnis.php b/locale/it-IT/telefonverzeichnis.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/testtool.php b/locale/it-IT/testtool.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/tools.php b/locale/it-IT/tools.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/upload.php b/locale/it-IT/upload.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/urlaubstool.php b/locale/it-IT/urlaubstool.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/zeitaufzeichnung.php b/locale/it-IT/zeitaufzeichnung.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/zeitsperre.php b/locale/it-IT/zeitsperre.php old mode 100755 new mode 100644 diff --git a/locale/it-IT/zeitwunsch.php b/locale/it-IT/zeitwunsch.php old mode 100755 new mode 100644 diff --git a/rdf/abschlusspruefung.rdf.php b/rdf/abschlusspruefung.rdf.php old mode 100755 new mode 100644 diff --git a/rdf/aufwandstyp.rdf.php b/rdf/aufwandstyp.rdf.php old mode 100755 new mode 100644 diff --git a/rdf/ausbildungsvertrag.xml.php b/rdf/ausbildungsvertrag.xml.php old mode 100755 new mode 100644 diff --git a/rdf/bestelldetail.rdf.php b/rdf/bestelldetail.rdf.php old mode 100755 new mode 100644 diff --git a/rdf/dms.rdf.php b/rdf/dms.rdf.php old mode 100755 new mode 100644 diff --git a/rdf/erfolgsnachweis.rdf.php b/rdf/erfolgsnachweis.rdf.php old mode 100755 new mode 100644 diff --git a/rdf/learningagreement_outgoing.rdf.php b/rdf/learningagreement_outgoing.rdf.php old mode 100755 new mode 100644 diff --git a/rdf/lehrveranstaltungszeugnis_ktu.rdf.php b/rdf/lehrveranstaltungszeugnis_ktu.rdf.php old mode 100755 new mode 100644 diff --git a/rdf/mantis.rdf.php b/rdf/mantis.rdf.php old mode 100755 new mode 100644 diff --git a/rdf/projekt.rdf.php b/rdf/projekt.rdf.php old mode 100755 new mode 100644 diff --git a/rdf/projektbeschreibung.rdf.php b/rdf/projektbeschreibung.rdf.php old mode 100755 new mode 100644 diff --git a/rdf/projektphase.rdf.php b/rdf/projektphase.rdf.php old mode 100755 new mode 100644 diff --git a/rdf/projekttask.rdf.php b/rdf/projekttask.rdf.php old mode 100755 new mode 100644 diff --git a/rdf/ressource.rdf.php b/rdf/ressource.rdf.php old mode 100755 new mode 100644 diff --git a/rdf/student.rdf.php b/rdf/student.rdf.php old mode 100755 new mode 100644 diff --git a/rdf/zertifikat.rdf.php b/rdf/zertifikat.rdf.php old mode 100755 new mode 100644 diff --git a/skin/images/ampel_gelb.png b/skin/images/ampel_gelb.png old mode 100755 new mode 100644 diff --git a/skin/images/ampel_gruen.png b/skin/images/ampel_gruen.png old mode 100755 new mode 100644 diff --git a/skin/images/ampel_rot.png b/skin/images/ampel_rot.png old mode 100755 new mode 100644 diff --git a/skin/images/button_mail.gif b/skin/images/button_mail.gif old mode 100755 new mode 100644 diff --git a/skin/images/cbox-check.gif b/skin/images/cbox-check.gif old mode 100755 new mode 100644 diff --git a/skin/images/changed.png b/skin/images/changed.png old mode 100755 new mode 100644 diff --git a/skin/images/date_go_grau.png b/skin/images/date_go_grau.png old mode 100755 new mode 100644 diff --git a/skin/images/delete_x_grau.png b/skin/images/delete_x_grau.png old mode 100755 new mode 100644 diff --git a/skin/images/edit_grau.png b/skin/images/edit_grau.png old mode 100755 new mode 100644 diff --git a/skin/images/help.png b/skin/images/help.png old mode 100755 new mode 100644 diff --git a/skin/images/info.png b/skin/images/info.png old mode 100755 new mode 100644 diff --git a/skin/images/ja.png b/skin/images/ja.png old mode 100755 new mode 100644 diff --git a/skin/images/nein.png b/skin/images/nein.png old mode 100755 new mode 100644 diff --git a/skin/images/offen.png b/skin/images/offen.png old mode 100755 new mode 100644 diff --git a/skin/images/ok.png b/skin/images/ok.png old mode 100755 new mode 100644 diff --git a/skin/images/round.png b/skin/images/round.png old mode 100755 new mode 100644 diff --git a/skin/images/search.png b/skin/images/search.png old mode 100755 new mode 100644 diff --git a/skin/images/uebung_copy.jpg b/skin/images/uebung_copy.jpg old mode 100755 new mode 100644 diff --git a/skin/jquery-ui-1.9.2.custom.min.css b/skin/jquery-ui-1.9.2.custom.min.css old mode 100755 new mode 100644 diff --git a/skin/planner.css b/skin/planner.css old mode 100755 new mode 100644 diff --git a/skin/styles/stp/BannerLogo.jpg b/skin/styles/stp/BannerLogo.jpg old mode 100755 new mode 100644 diff --git a/skin/styles/stp/KTULogo.jpg b/skin/styles/stp/KTULogo.jpg old mode 100755 new mode 100644 diff --git a/skin/styles/stp/KTULogo.png b/skin/styles/stp/KTULogo.png old mode 100755 new mode 100644 diff --git a/soap/kartenverlaengerung.soap.php b/soap/kartenverlaengerung.soap.php old mode 100755 new mode 100644 diff --git a/soap/kartenverlaengerung.test.php b/soap/kartenverlaengerung.test.php old mode 100755 new mode 100644 diff --git a/soap/kartenverlaengerung.wsdl.php b/soap/kartenverlaengerung.wsdl.php old mode 100755 new mode 100644 diff --git a/soap/lehrveranstaltung.soap.php b/soap/lehrveranstaltung.soap.php old mode 100755 new mode 100644 diff --git a/soap/lehrveranstaltung.wsdl.php b/soap/lehrveranstaltung.wsdl.php old mode 100755 new mode 100644 diff --git a/soap/lvplan.soap.php b/soap/lvplan.soap.php old mode 100755 new mode 100644 diff --git a/soap/lvplan.wsdl.php b/soap/lvplan.wsdl.php old mode 100755 new mode 100644 diff --git a/soap/mitarbeiter.soap.php b/soap/mitarbeiter.soap.php old mode 100755 new mode 100644 diff --git a/soap/mitarbeiter.wsdl.php b/soap/mitarbeiter.wsdl.php old mode 100755 new mode 100644 diff --git a/soap/notiz.soap.php b/soap/notiz.soap.php old mode 100755 new mode 100644 diff --git a/soap/notiz.wsdl.php b/soap/notiz.wsdl.php old mode 100755 new mode 100644 diff --git a/soap/ort.soap.php b/soap/ort.soap.php old mode 100755 new mode 100644 diff --git a/soap/ort.wsdl.php b/soap/ort.wsdl.php old mode 100755 new mode 100644 diff --git a/soap/person.soap.php b/soap/person.soap.php old mode 100755 new mode 100644 diff --git a/soap/person.wsdl.php b/soap/person.wsdl.php old mode 100755 new mode 100644 diff --git a/soap/projekt.soap.php b/soap/projekt.soap.php old mode 100755 new mode 100644 diff --git a/soap/projekt.wsdl.php b/soap/projekt.wsdl.php old mode 100755 new mode 100644 diff --git a/soap/projekt_jquery_client.php b/soap/projekt_jquery_client.php old mode 100755 new mode 100644 diff --git a/soap/projektphase.soap.php b/soap/projektphase.soap.php old mode 100755 new mode 100644 diff --git a/soap/projektphase.wsdl.php b/soap/projektphase.wsdl.php old mode 100755 new mode 100644 diff --git a/soap/ressource_projekt.soap.php b/soap/ressource_projekt.soap.php old mode 100755 new mode 100644 diff --git a/soap/soap_test_lv.php b/soap/soap_test_lv.php old mode 100755 new mode 100644 diff --git a/soap/soap_test_lvplan.php b/soap/soap_test_lvplan.php old mode 100755 new mode 100644 diff --git a/soap/soap_test_mitarbeiter.php b/soap/soap_test_mitarbeiter.php old mode 100755 new mode 100644 diff --git a/soap/soap_test_ort.php b/soap/soap_test_ort.php old mode 100755 new mode 100644 diff --git a/soap/soap_test_person.php b/soap/soap_test_person.php old mode 100755 new mode 100644 diff --git a/soap/soap_test_student.php b/soap/soap_test_student.php old mode 100755 new mode 100644 diff --git a/soap/student.soap.php b/soap/student.soap.php old mode 100755 new mode 100644 diff --git a/soap/student.wsdl.php b/soap/student.wsdl.php old mode 100755 new mode 100644 diff --git a/system/dbupdate_3.2.php b/system/dbupdate_3.2.php old mode 100755 new mode 100644 diff --git a/system/erinnerungsmail_coodle.php b/system/erinnerungsmail_coodle.php old mode 100755 new mode 100644 diff --git a/system/services/systemd/phantomjs@.service b/system/services/systemd/phantomjs@.service old mode 100755 new mode 100644 diff --git a/system/services/upstart/unoconv.conf b/system/services/upstart/unoconv.conf old mode 100755 new mode 100644 diff --git a/system/sync/sync_stpldev_stpl.php b/system/sync/sync_stpldev_stpl.php old mode 100755 new mode 100644 diff --git a/system/templates/include.xsd b/system/templates/include.xsd old mode 100755 new mode 100644 diff --git a/system/templates/include_xslt_xhtml.xslt b/system/templates/include_xslt_xhtml.xslt old mode 100755 new mode 100644 diff --git a/system/templates/news.xsd b/system/templates/news.xsd old mode 100755 new mode 100644 diff --git a/system/templates/news_infoscreen.xsd b/system/templates/news_infoscreen.xsd old mode 100755 new mode 100644 diff --git a/system/templates/news_infoscreen_xslt_xhtml.xslt b/system/templates/news_infoscreen_xslt_xhtml.xslt old mode 100755 new mode 100644 diff --git a/system/templates/news_xslt_xhtml.xslt b/system/templates/news_xslt_xhtml.xslt old mode 100755 new mode 100644 diff --git a/system/vorlage_zip/OutgoingChangeL.odt b/system/vorlage_zip/OutgoingChangeL.odt old mode 100755 new mode 100644 diff --git a/system/vorlage_zip/OutgoingLearning.odt b/system/vorlage_zip/OutgoingLearning.odt old mode 100755 new mode 100644 diff --git a/system/vorlage_zip/PrProtBA.odt b/system/vorlage_zip/PrProtBA.odt old mode 100755 new mode 100644 diff --git a/system/vorlage_zip/PrProtMA.odt b/system/vorlage_zip/PrProtMA.odt old mode 100755 new mode 100644 diff --git a/system/vorlage_zip/Zutrittskarte.odt b/system/vorlage_zip/Zutrittskarte.odt old mode 100755 new mode 100644 diff --git a/system/xsl/ZertifikatAO.xsl b/system/xsl/ZertifikatAO.xsl old mode 100755 new mode 100644 diff --git a/system/xsl/Zutrittskarte.xsl b/system/xsl/Zutrittskarte.xsl old mode 100755 new mode 100644 diff --git a/vilesci/admin/XPI/PlannerProduktiv/Planner.xpi b/vilesci/admin/XPI/PlannerProduktiv/Planner.xpi old mode 100755 new mode 100644 diff --git a/vilesci/admin/XPI/PlannerProduktiv/chrome/content/contents.rdf b/vilesci/admin/XPI/PlannerProduktiv/chrome/content/contents.rdf old mode 100755 new mode 100644 diff --git a/vilesci/admin/XPI/PlannerProduktiv/chrome/content/planner.xul b/vilesci/admin/XPI/PlannerProduktiv/chrome/content/planner.xul old mode 100755 new mode 100644 diff --git a/vilesci/admin/XPI/PlannerProduktiv/chrome/planner.jar b/vilesci/admin/XPI/PlannerProduktiv/chrome/planner.jar old mode 100755 new mode 100644 diff --git a/vilesci/admin/XPI/PlannerProduktiv/install.js b/vilesci/admin/XPI/PlannerProduktiv/install.js old mode 100755 new mode 100644 diff --git a/vilesci/admin/XPI/PlannerProduktiv/install.rdf b/vilesci/admin/XPI/PlannerProduktiv/install.rdf old mode 100755 new mode 100644 diff --git a/vilesci/admin/XPI/Seamonkey2.11/fhcomplete/make.sh b/vilesci/admin/XPI/Seamonkey2.11/fhcomplete/make.sh old mode 100755 new mode 100644 diff --git a/vilesci/fhausweis/bildpruefung.php b/vilesci/fhausweis/bildpruefung.php old mode 100755 new mode 100644 diff --git a/vilesci/fhausweis/kartenkorrektur.php b/vilesci/fhausweis/kartenkorrektur.php old mode 100755 new mode 100644 diff --git a/vilesci/fhausweis/kartentausch.php b/vilesci/fhausweis/kartentausch.php old mode 100755 new mode 100644 diff --git a/vilesci/fhausweis/kartenverwaltung.php b/vilesci/fhausweis/kartenverwaltung.php old mode 100755 new mode 100644 diff --git a/vilesci/fhausweis/kartezuweisen.php b/vilesci/fhausweis/kartezuweisen.php old mode 100755 new mode 100644 diff --git a/vilesci/fhausweis/search.php b/vilesci/fhausweis/search.php old mode 100755 new mode 100644 diff --git a/vilesci/fhausweis/verlaengerung.php b/vilesci/fhausweis/verlaengerung.php old mode 100755 new mode 100644 diff --git a/vilesci/lehre/einheit_autocomplete.php b/vilesci/lehre/einheit_autocomplete.php old mode 100755 new mode 100644 diff --git a/vilesci/lehre/freifach.php b/vilesci/lehre/freifach.php old mode 100755 new mode 100644 diff --git a/vilesci/lehre/freifach_lektoren.php b/vilesci/lehre/freifach_lektoren.php old mode 100755 new mode 100644 diff --git a/vilesci/lehre/lehrveranstaltung_kompatibel.php b/vilesci/lehre/lehrveranstaltung_kompatibel.php old mode 100755 new mode 100644 diff --git a/vilesci/lehre/studienordnung.js b/vilesci/lehre/studienordnung.js old mode 100755 new mode 100644 diff --git a/vilesci/personen/leistungsstipendium.php b/vilesci/personen/leistungsstipendium.php old mode 100755 new mode 100644 diff --git a/vilesci/personen/outgoing_detail.php b/vilesci/personen/outgoing_detail.php old mode 100755 new mode 100644 diff --git a/vilesci/personen/outgoing_frameset.php b/vilesci/personen/outgoing_frameset.php old mode 100755 new mode 100644 diff --git a/vilesci/personen/outgoing_uebersicht.php b/vilesci/personen/outgoing_uebersicht.php old mode 100755 new mode 100644 diff --git a/vilesci/stammdaten/ampel_details.php b/vilesci/stammdaten/ampel_details.php old mode 100755 new mode 100644 diff --git a/vilesci/stammdaten/ampel_frameset.html b/vilesci/stammdaten/ampel_frameset.html old mode 100755 new mode 100644 diff --git a/vilesci/stammdaten/ampel_uebersicht.php b/vilesci/stammdaten/ampel_uebersicht.php old mode 100755 new mode 100644 diff --git a/vilesci/stammdaten/imexport/zutrittskarten/generatefromsipass_predelete.php b/vilesci/stammdaten/imexport/zutrittskarten/generatefromsipass_predelete.php old mode 100755 new mode 100644 diff --git a/vilesci/stammdaten/infoscreen_details.php b/vilesci/stammdaten/infoscreen_details.php old mode 100755 new mode 100644 diff --git a/vilesci/stammdaten/infoscreen_frameset.html b/vilesci/stammdaten/infoscreen_frameset.html old mode 100755 new mode 100644 diff --git a/vilesci/stammdaten/infoscreen_preview.php b/vilesci/stammdaten/infoscreen_preview.php old mode 100755 new mode 100644 diff --git a/vilesci/stammdaten/infoscreen_uebersicht.php b/vilesci/stammdaten/infoscreen_uebersicht.php old mode 100755 new mode 100644 diff --git a/vilesci/stammdaten/lvbgruppenverwaltung.js b/vilesci/stammdaten/lvbgruppenverwaltung.js old mode 100755 new mode 100644 diff --git a/vilesci/stammdaten/lvbgruppenverwaltungDetail.php b/vilesci/stammdaten/lvbgruppenverwaltungDetail.php old mode 100755 new mode 100644 diff --git a/vilesci/stammdaten/lvbgruppenverwaltungTree.php b/vilesci/stammdaten/lvbgruppenverwaltungTree.php old mode 100755 new mode 100644 diff --git a/vilesci/stammdaten/service_details.php b/vilesci/stammdaten/service_details.php old mode 100755 new mode 100644 diff --git a/vilesci/stammdaten/service_frameset.html b/vilesci/stammdaten/service_frameset.html old mode 100755 new mode 100644 diff --git a/vilesci/stammdaten/service_uebersicht.php b/vilesci/stammdaten/service_uebersicht.php old mode 100755 new mode 100644 diff --git a/vilesci/stammdaten/studiengang_edit.php b/vilesci/stammdaten/studiengang_edit.php old mode 100755 new mode 100644 diff --git a/webdav/google.txt b/webdav/google.txt old mode 100755 new mode 100644 From 6f866ede38b82bf7a8eb6b7577461fa601c02384 Mon Sep 17 00:00:00 2001 From: Paolo Date: Mon, 13 Nov 2017 11:13:12 +0100 Subject: [PATCH 007/126] Fixed paths --- application/controllers/system/extensions/Manager.php | 2 +- application/libraries/ExtensionsLib.php | 2 +- application/views/system/extensions/manager.php | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/application/controllers/system/extensions/Manager.php b/application/controllers/system/extensions/Manager.php index 8eda6be41..db56b0d8b 100644 --- a/application/controllers/system/extensions/Manager.php +++ b/application/controllers/system/extensions/Manager.php @@ -30,7 +30,7 @@ class Manager extends VileSci_Controller 'extensions' => $this->extensionslib->getInstalledExtensions() ); - $this->load->view('core/system/extensions/manager.php', $viewData); + $this->load->view('system/extensions/manager.php', $viewData); } /** diff --git a/application/libraries/ExtensionsLib.php b/application/libraries/ExtensionsLib.php index 196d0d57e..146cf49ec 100644 --- a/application/libraries/ExtensionsLib.php +++ b/application/libraries/ExtensionsLib.php @@ -35,7 +35,7 @@ class ExtensionsLib $this->ci->load->library('EPrintfLib'); // Loading models - $this->ci->load->model('core/system/Extensions_model', 'ExtensionsModel'); + $this->ci->load->model('system/Extensions_model', 'ExtensionsModel'); // $this->_errorOccurred = false; diff --git a/application/views/system/extensions/manager.php b/application/views/system/extensions/manager.php index e3b6e8345..6c48bc80a 100644 --- a/application/views/system/extensions/manager.php +++ b/application/views/system/extensions/manager.php @@ -1,4 +1,4 @@ -load->view('core/templates/header', array('title' => 'Extensions manager', 'jqueryV1' => true, 'tablesort' => true)); ?> +load->view('templates/header', array('title' => 'Extensions manager', 'jqueryV1' => true, 'tablesort' => true)); ?> - - - - + + + - - - - - Globale Suche + '; + + include('../../../include/meta/jquery.php'); + include('../../../include/meta/jquery-tablesorter.php'); + +echo 'Globale Suche '; @@ -74,14 +73,22 @@ echo '

'; -if($search=='') +if($search == '') exit; // String aufsplitten und Sonderzeichen entfernen $searchItems = explode(' ',TRIM(str_replace(',', '', $search),'!.?')); +// Leerzeichen und Whitespaces entfernen +$searchItems = preg_replace("/\s/", '', $searchItems); + + +// Leere Strings aus Array entfernen +while ($array_key = array_search("", $searchItems)) + unset ($searchItems[$array_key]); + // Wenn nach dem TRIM keine Zeichen uebrig bleiben, dann abbrechen -if(implode(',', $searchItems)=='') +if(implode(',', $searchItems) == '') exit; //Easter Egg @@ -228,55 +235,56 @@ function searchOE($searchItems) $benutzerfunktion->getOeFunktionen($row->oe_kurzbz,'ass,Leitung,stvLtg,oezuordnung','now()','now()'); $oebezeichnung = new organisationseinheit(); $oebezeichnung->load($row->oe_kurzbz); - echo '

',$row->organisationseinheittyp_kurzbz,' ',$oebezeichnung->bezeichnung,'

'; - echo ' - - - - - - - - - - - - '; - foreach($benutzerfunktion->result as $bf) + if (count($benutzerfunktion->result) > 0) { - $person = new person(); - $person->getPersonFromBenutzer($bf->uid); - $mitarbeiter = new mitarbeiter(); - $mitarbeiter->load($bf->uid); - $kontakt = new kontakt(); - $kontakt->loadFirmaKontakttyp($mitarbeiter->standort_id,'telefon'); - $bisverwendung = new bisverwendung(); - $bisverwendung->getLastAktVerwendung($bf->uid); - echo ''; - echo ''; - echo ''; - echo ''; - - echo ''; - echo ''; - //if($row->alias!='' && !in_array($row->studiengang_kz, $noalias)) ??? Was macht $noalias? - if($person->alias!='') - $mail = $person->alias.'@'.DOMAIN; - else - $mail = $person->uid.'@'.DOMAIN; - echo ''; - //if(!defined('CIS_SUCHE_LVPLAN_ANZEIGEN') || CIS_SUCHE_LVPLAN_ANZEIGEN) - //echo ''; - echo ''; + echo '

',$row->organisationseinheittyp_kurzbz,' ',$oebezeichnung->bezeichnung,'

'; + echo '
',$p->t('global/vorname'),'',$p->t('global/nachname'),'',$p->t('global/funktion'),'',$p->t('global/telefonnummer'),'',$p->t('lvplan/raum'),'',$p->t('global/mail'),'
'.$person->vorname.'',$person->nachname,''.$bf->bezeichnung; - if($person->aktiv==false) - echo ' (ausgeschieden)'; - elseif($bisverwendung->beschausmasscode=='5') - echo ' (karenziert)'; - echo '',($mitarbeiter->telefonklappe!=''?$kontakt->kontakt.'-'.$mitarbeiter->telefonklappe:'-'),'',($mitarbeiter->ort_kurzbz!=''?$mitarbeiter->ort_kurzbz:'-'),'',$mail,''.$p->t('lvplan/lvPlan').'
+ + + + + + + + + + + + '; + foreach($benutzerfunktion->result as $bf) + { + $person = new person(); + $person->getPersonFromBenutzer($bf->uid); + $mitarbeiter = new mitarbeiter(); + $mitarbeiter->load($bf->uid); + $kontakt = new kontakt(); + $kontakt->loadFirmaKontakttyp($mitarbeiter->standort_id,'telefon'); + $bisverwendung = new bisverwendung(); + $bisverwendung->getLastAktVerwendung($bf->uid); + echo ''; + echo ''; + echo ''; + echo ''; + + echo ''; + echo ''; + //if($row->alias!='' && !in_array($row->studiengang_kz, $noalias)) ??? Was macht $noalias? + if($person->alias!='') + $mail = $person->alias.'@'.DOMAIN; + else + $mail = $person->uid.'@'.DOMAIN; + echo ''; + //if(!defined('CIS_SUCHE_LVPLAN_ANZEIGEN') || CIS_SUCHE_LVPLAN_ANZEIGEN) + //echo ''; + echo ''; + echo "\n"; + } echo "\n"; + echo '
',$p->t('global/vorname'),'',$p->t('global/nachname'),'',$p->t('global/funktion'),'',$p->t('global/telefonnummer'),'',$p->t('lvplan/raum'),'',$p->t('global/mail'),'
'.$person->vorname.'',$person->nachname,''.$bf->bezeichnung; + if($bisverwendung->beschausmasscode=='5') + echo ' (karenziert)'; + echo '',($mitarbeiter->telefonklappe!=''?$kontakt->kontakt.'-'.$mitarbeiter->telefonklappe:'-'),'',($mitarbeiter->ort_kurzbz!=''?$mitarbeiter->ort_kurzbz:'-'),'',$mail,''.$p->t('lvplan/lvPlan').'

'; } - echo "\n"; - echo '
'; } } return true; @@ -443,10 +451,10 @@ function searchContent($searchItems) $cms = new content(); $cms->search($searchItems, 21); - if(count($cms->result)>0) + if(count($cms->result) > 0) { echo '

',$p->t('tools/content'),'

'; - if(count($cms->result)>20) + if(count($cms->result) > 20) { echo '

'.$p->t("tools/esWurdenMehrAlsXInhalteGefunden").'

'; } @@ -454,30 +462,25 @@ function searchContent($searchItems) $anzeigesprache=''; foreach($cms->result as $row) { - if ($sprache==$row->sprache) + if ($sprache == $row->sprache) { - if ($anzeigesprache!=$row->sprache) + if ($anzeigesprache != $row->sprache) { - $anzeigesprache=$row->sprache; + $anzeigesprache = $row->sprache; echo '

',$row->sprache,'

'; echo '
    '; } - // Nur die hoechste Version des Contents anzeigen - $version = new content(); - $maxversion = $version->getMaxVersion($row->content_id, $row->sprache); - if ($row->version == $maxversion) + + $berechtigt = new content(); + $berechtigt = $berechtigt->berechtigt($row->content_id, $uid); + if ($berechtigt) { - $berechtigt = new content(); - $berechtigt = $berechtigt->berechtigt($row->content_id, $uid); - if ($berechtigt) - { - echo '
  • '; - echo '',$db->convert_html_chars($row->titel),'
    '; - $preview = findAndMark($row->content, $searchItems); - - echo $preview; - echo '

  • '; - } + echo '
  • '; + echo '',$db->convert_html_chars($row->titel),'
    '; + $preview = findAndMark($row->content, $searchItems); + + echo $preview; + echo '

  • '; } } } @@ -485,11 +488,11 @@ function searchContent($searchItems) $anzeigesprache=''; foreach($cms->result as $row) { - if ($sprache!=$row->sprache) + if ($sprache != $row->sprache) { - if ($anzeigesprache!=$row->sprache) + if ($anzeigesprache != $row->sprache) { - $anzeigesprache=$row->sprache; + $anzeigesprache = $row->sprache; echo '
'; echo '

',$row->sprache,'

'; echo '
    '; diff --git a/include/content.class.php b/include/content.class.php index 0dab34a50..58008ec3d 100644 --- a/include/content.class.php +++ b/include/content.class.php @@ -1268,39 +1268,57 @@ class content extends basis_db } /** - * Durchsucht den Content. Limit optional. + * Durchsucht den CIS-Content nach Uebereinstimmung mit den Suchbegriffen. + * Erst werden Uebereinstimmungen mit dem Titel geliefert (aus den templates contentmittitel, contentohnetitel und redirect) + * und danach solche mit dem Content selbst (aus den templates contentmittitel und contentohnetitel). + * Limit optional. * - * @param array $searchItems - * @param $limit (optional) + * @param array $searchItems Array mit Suchbegriffen + * @param integer $limit (optional) Anzahl an Datensaetzen, die zurueckgegeben werden sollen */ public function search($searchItems, $limit=null) { $qry = "SELECT - distinct on(content_id,sprache,version) * + distinct on(content_id,sprache,version) content_id, content::text, titel, sprache, version, 1 AS sort FROM campus.tbl_contentsprache JOIN campus.tbl_content USING(content_id) WHERE sichtbar=true AND aktiv=true + AND version = (SELECT campus.get_highest_content_version (content_id)) AND template_kurzbz IN('contentmittitel','contentohnetitel','redirect')"; foreach($searchItems as $value) - $qry.=" AND + { + $qry .= " AND + ( + lower(titel::text) like lower('%".$this->db_escape($value)."%') + OR lower(titel::text) like lower('%".$this->db_escape(htmlentities($value,ENT_NOQUOTES,'UTF-8'))."%') + ) + "; + } + $qry .= " UNION SELECT + distinct on(content_id,sprache,version) content_id, content::text, titel, sprache, version, 2 AS sort + FROM + campus.tbl_contentsprache + JOIN campus.tbl_content USING(content_id) + WHERE + sichtbar=true + AND aktiv=true + AND version = (SELECT campus.get_highest_content_version (content_id))"; + foreach($searchItems as $value) + { + $qry .= " AND (template_kurzbz IN('contentmittitel','contentohnetitel') AND ( - lower(content::text) like lower('%".$this->db_escape($value)."%') - OR lower(content::text) like lower('%".$this->db_escape(htmlentities($value,ENT_NOQUOTES,'UTF-8'))."%') - ) - OR template_kurzbz IN('redirect') - AND - ( - lower(titel::text) like lower('%".$this->db_escape($value)."%') - OR lower(titel::text) like lower('%".$this->db_escape(htmlentities($value,ENT_NOQUOTES,'UTF-8'))."%') + lower(content::text) like lower('%".$this->db_escape($value)."%') + OR lower(content::text) like lower('%".$this->db_escape(htmlentities($value,ENT_NOQUOTES,'UTF-8'))."%') ) ) "; - $qry.=" ORDER BY sprache,content_id DESC"; + } + $qry .= " ORDER BY sort,sprache,content_id DESC"; if(!is_null($limit) && is_numeric($limit)) $qry.=" LIMIT ".$limit; From 56e68f680932c36ef567c24f1c1315160a262f34 Mon Sep 17 00:00:00 2001 From: Paolo Date: Wed, 15 Nov 2017 14:45:19 +0100 Subject: [PATCH 024/126] Fixed ALTER SEQUENCE system.tbl_extensions_id_seq OWNED BY in system/dbupdate_3.3.php --- system/dbupdate_3.3.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 9f8aaf0f4..6c5c969e1 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -521,13 +521,13 @@ if(!@$db->db_query("SELECT campus.get_highest_content_version(0)")) WHERE content_id=i_content_id ORDER BY version desc LIMIT 1; - + RETURN rec.version; END; $_$; - + ALTER FUNCTION campus.get_highest_content_version(bigint) OWNER TO fhcomplete;"; - + if(!$db->db_query($qry)) echo 'campus.get_highest_content_version(content_id): '.$db->db_last_error().'
    '; else @@ -558,13 +558,6 @@ if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'tbl_extensi else echo '
    Created sequence: system.tbl_extensions_id_seq'; - // ALTER SEQUENCE system.tbl_extensions_id_seq - $qry = 'ALTER SEQUENCE system.tbl_extensions_id_seq OWNED BY system.tbl_extensions.extension_id;'; - if (!$db->db_query($qry)) - echo 'system.tbl_extensions_id_seq '.$db->db_last_error().'
    '; - else - echo '
    Altered sequence system.tbl_extensions_id_seq'; - // GRANT SELECT, UPDATE ON SEQUENCE system.tbl_extensions_id_seq TO vilesci; $qry = 'GRANT SELECT, UPDATE ON SEQUENCE system.tbl_extensions_id_seq TO vilesci;'; if (!$db->db_query($qry)) @@ -642,6 +635,13 @@ if(!@$db->db_query("SELECT 0 FROM system.tbl_extensions WHERE 0 = 1")) echo 'Adding comment to system.tbl_extensions.dependencies: '.$db->db_last_error().'
    '; else echo '
    Added comment to system.tbl_extensions.dependencies'; + + // ALTER SEQUENCE system.tbl_extensions_id_seq + $qry = 'ALTER SEQUENCE system.tbl_extensions_id_seq OWNED BY system.tbl_extensions.extension_id;'; + if (!$db->db_query($qry)) + echo 'system.tbl_extensions_id_seq '.$db->db_last_error().'
    '; + else + echo '
    Altered sequence system.tbl_extensions_id_seq'; } // UNIQUE INDEX uidx_extensions_name_version From 6b9875f5b9e7280e3a43506ce8b378609d2ca47e Mon Sep 17 00:00:00 2001 From: Paolo Date: Wed, 15 Nov 2017 15:09:13 +0100 Subject: [PATCH 025/126] Better SQL statements to create tbl_extensions in system/dbupdate_3.3.php --- system/dbupdate_3.3.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 6c5c969e1..a36b5c068 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -579,7 +579,7 @@ if(!@$db->db_query("SELECT 0 FROM system.tbl_extensions WHERE 0 = 1")) { $qry = ' CREATE TABLE system.tbl_extensions ( - extension_id integer NOT NULL DEFAULT nextval(\'tbl_extensions_id_seq\'::regclass), + extension_id integer NOT NULL DEFAULT NEXTVAL(\'system.tbl_extensions_id_seq\'), name character varying(128) NOT NULL, version integer NOT NULL, description text, From 8ca79b665761a8b15cd2a9415fb2a2b3f101e159 Mon Sep 17 00:00:00 2001 From: Paolo Date: Thu, 16 Nov 2017 16:27:14 +0100 Subject: [PATCH 026/126] Changed method getOERoot of MessageToken_model to retrive the correct root of the organisation unit tree --- .../models/system/MessageToken_model.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/application/models/system/MessageToken_model.php b/application/models/system/MessageToken_model.php index 8c31a0807..9e62af6e9 100644 --- a/application/models/system/MessageToken_model.php +++ b/application/models/system/MessageToken_model.php @@ -215,7 +215,23 @@ class MessageToken_model extends CI_Model */ public function getOERoot($oe_kurzbz) { - $sql = 'SELECT oe_kurzbz, oe_parent_kurzbz FROM public.tbl_organisationseinheit WHERE oe_kurzbz = ?'; + $sql = ' + WITH RECURSIVE organizations(rid, oe_kurzbz, oe_parent_kurzbz) AS + ( + SELECT 1 AS rid, o.oe_kurzbz, o.oe_parent_kurzbz + FROM public.tbl_organisationseinheit o + WHERE o.oe_kurzbz = ? + UNION ALL + SELECT rid + 1 AS rid, oe.oe_kurzbz, oe.oe_parent_kurzbz + FROM organizations org, public.tbl_organisationseinheit oe + WHERE oe.oe_kurzbz = org.oe_parent_kurzbz + AND oe.aktiv = TRUE + ) + SELECT oe_kurzbz + FROM organizations orgs + ORDER BY rid DESC + LIMIT 1 + '; $result = $this->db->query($sql, array($oe_kurzbz)); if ($result) // If no errors occurred From 50b26ce7624d4eaf88202bb0cee030cf13d72875 Mon Sep 17 00:00:00 2001 From: Paolo Date: Thu, 16 Nov 2017 16:41:20 +0100 Subject: [PATCH 027/126] Changed method getOERoot of MessageToken_model and method redirectByToken of controller to retrive the correct root of the organisation unit tree --- application/controllers/Redirect.php | 21 ++++++------------ .../models/system/MessageToken_model.php | 22 +++++++++++-------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/application/controllers/Redirect.php b/application/controllers/Redirect.php index ffe135003..660709b6f 100644 --- a/application/controllers/Redirect.php +++ b/application/controllers/Redirect.php @@ -53,22 +53,15 @@ class Redirect extends FHC_Controller if ($oe_kurzbz != null && $oe_kurzbz != '') { $organisationRoot = null; + $getOERoot = $this->MessageTokenModel->getOERoot($oe_kurzbz); - if ($getOERoot) // If no errors occurred + if (isSuccess($getOERoot)) // If no errors occurred { - // If data are present - if (is_array($getOERoot->result()) && count($getOERoot->result()) > 0) - { - $organisationseinheit = $getOERoot->result()[0]; - if ($organisationseinheit->oe_kurzbz == null) - { - show_error('No organisation unit present in the message'); - } - else - { - $organisationRoot = $organisationseinheit->oe_kurzbz; - } - } + $organisationRoot = $getOERoot->retval; + } + else + { + show_error('No organisation unit present in the message'); } $addonAufnahmeUrls = $this->config->item('addons_aufnahme_url'); diff --git a/application/models/system/MessageToken_model.php b/application/models/system/MessageToken_model.php index 9e62af6e9..24b9f05ca 100644 --- a/application/models/system/MessageToken_model.php +++ b/application/models/system/MessageToken_model.php @@ -237,17 +237,21 @@ class MessageToken_model extends CI_Model if ($result) // If no errors occurred { // If data are present - if (is_array($result->result()) && count($result->result()) > 0) + if (is_array($result->result()) + && count($result->result()) > 0 + && is_object($result->result()[0]) + && isset($result->result()[0]->oe_kurzbz)) { - $organisationseinheit = $result->result()[0]; - - // If this organisationseinheit has a parent - if ($organisationseinheit->oe_parent_kurzbz != null) - { - // looks for the parent - $result = $this->getOERoot($organisationseinheit->oe_parent_kurzbz); - } + return success($result->result()[0]->oe_kurzbz); } + else + { + return error(); + } + } + else + { + return error($this->db->error()); } return $result; From 12f32d5a29a73ac6b15a74df6a13f6f935ad8b13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 16 Nov 2017 18:12:01 +0100 Subject: [PATCH 028/126] =?UTF-8?q?SWS=20werden=20nun=20nicht=20mehr=20auf?= =?UTF-8?q?=20Karenzierte=20Verwendungen=20geh=C3=A4ngt=20sofern=20vorhand?= =?UTF-8?q?en?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vilesci/bis/checkfunktion.php | 1 + 1 file changed, 1 insertion(+) diff --git a/vilesci/bis/checkfunktion.php b/vilesci/bis/checkfunktion.php index 7c75f7f0c..9c04e353a 100644 --- a/vilesci/bis/checkfunktion.php +++ b/vilesci/bis/checkfunktion.php @@ -115,6 +115,7 @@ if(isset($_POST['action']) && $_POST['action'] == 'run') (ende>now() OR ende is null OR ende>".$db->db_add_param($lastbismeldung).") AND (beginn<".$db->db_add_param($aktbismeldung)." OR beginn is null) AND mitarbeiter_uid=".$db->db_add_param($row->mitarbeiter_uid)." + AND tbl_bisverwendung.beschausmasscode!=5 ORDER BY beginn DESC"; if($result_verw = $db->db_query($qry_verw)) { From 7991e8cd256cd6aad2749ce7540adad976bd0f2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 16 Nov 2017 18:13:54 +0100 Subject: [PATCH 029/126] =?UTF-8?q?Warning=20behoben=20bei=20Incoming/Outg?= =?UTF-8?q?oing=20die=20im=20Meldezeitraum=20keine=20Status=20haben=20jedo?= =?UTF-8?q?ch=20einen=20g=C3=BCltigen=20IO=20eintrag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vilesci/bis/studentenmeldung.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/vilesci/bis/studentenmeldung.php b/vilesci/bis/studentenmeldung.php index 0d249c141..b7fbbc671 100644 --- a/vilesci/bis/studentenmeldung.php +++ b/vilesci/bis/studentenmeldung.php @@ -670,6 +670,7 @@ function GenerateXMLStudentBlock($row) $qrystatus="SELECT * FROM public.tbl_prestudentstatus WHERE prestudent_id=".$db->db_add_param($row->prestudent_id)." AND studiensemester_kurzbz=".$db->db_add_param($ssem)." AND (tbl_prestudentstatus.datum<=".$db->db_add_param($bisdatum).") ORDER BY datum desc, insertamum desc, ext_id desc;"; + if($resultstatus = $db->db_query($qrystatus)) { if($db->db_num_rows($resultstatus)>0) @@ -779,6 +780,26 @@ function GenerateXMLStudentBlock($row) $storgform=$rowstatus->orgform_kurzbz; $aktstatus_stsem = $rowstatus->studiensemester_kurzbz; } + else + { + $aktstatus=''; + $storgform=''; + $aktstatus_datum=''; + $aktstatus_stsem=''; + $sem=''; + $error_log.= "kein gueltiger Status vorhanden"; + + } + } + else + { + $aktstatus=''; + $storgform=''; + $aktstatus_datum=''; + $aktstatus_stsem=''; + $sem=''; + $error_log.= "kein gueltiger Status vorhanden"; + } } } From 0fefdf9c586467e81e8ef5f9bbbbfc96227eb1c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 16 Nov 2017 18:16:31 +0100 Subject: [PATCH 030/126] =?UTF-8?q?Studiengangsleitungen=20werden=20nur=20?= =?UTF-8?q?noch=20an=20Verwendungen=20vom=20Verwendungscode=3D5=20(Studien?= =?UTF-8?q?gangsleitung)=20angeh=C3=A4ngt=20Fehler=20behoben=20wodurch=20S?= =?UTF-8?q?WS=20manchmal=20mit=20,=20statt=20.=20ausgegeben=20wurden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vilesci/bis/personalmeldung.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vilesci/bis/personalmeldung.php b/vilesci/bis/personalmeldung.php index 1ed40dc97..ae1a65741 100644 --- a/vilesci/bis/personalmeldung.php +++ b/vilesci/bis/personalmeldung.php @@ -61,7 +61,7 @@ $mitarbeiterzahl=0; $echt=0; $frei=0; -$nichtmelden = array(11,91,92,94,999,203,145,204, 308, 182, 222); +$nichtmelden = array(11,91,92,94,999,203,145,204,308,182,222); $datumobj=new datum(); @@ -328,7 +328,7 @@ if($result = $db->db_query($qry)) ".$row_verwendung['beschausmasscode']." ".$row_verwendung['verwendung_code'].""; - if(isset($row_verwendung['stgltg'])) + if(isset($row_verwendung['stgltg']) && isset($row_verwendung['verwendung_code']) && $row_verwendung['verwendung_code']==5) { foreach($row_verwendung['stgltg'] as $row_stgl) { @@ -345,7 +345,7 @@ if($result = $db->db_query($qry)) $person_content.=" ".sprintf("%04s",$row_fkt['stgkz'])." - ".$row_fkt['sws'].""; + ".number_format($row_fkt['sws']).""; if($row_fkt['hauptberuflich']=='t') { $person_content.=" From 2b3f16d33cf2092943f0fb17bcd79696ca6e2a8d Mon Sep 17 00:00:00 2001 From: oesi Date: Thu, 16 Nov 2017 18:24:02 +0100 Subject: [PATCH 031/126] =?UTF-8?q?Zus=C3=A4tzliche=20Hinweise=20bei=20Feh?= =?UTF-8?q?lermeldungen=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vilesci/bis/checkverwendung.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vilesci/bis/checkverwendung.php b/vilesci/bis/checkverwendung.php index 9bf358c82..7e03985ca 100644 --- a/vilesci/bis/checkverwendung.php +++ b/vilesci/bis/checkverwendung.php @@ -163,7 +163,7 @@ $qryall='SELECT uid,nachname,vorname FROM campus.vw_mitarbeiter if($resultall = $db->db_query($qryall)) { $num_rows_all=$db->db_num_rows($resultall); - echo "

    Bei $num_rows_all nicht aktiven Mitarbeitern sind die aktuellen Verwendungen nicht plausibel

    "; + echo "

    Bei $num_rows_all nicht aktiven Mitarbeitern sind die aktuellen Verwendungen nicht plausibel (inaktiv aber aktuelle Verwendung)

    "; while($rowall=$db->db_fetch_object($resultall)) { $i=0; @@ -267,7 +267,7 @@ $qryall="SELECT uid,nachname,vorname FROM campus.vw_mitarbeiter if($resultall = $db->db_query($qryall)) { $num_rows_all=$db->db_num_rows($resultall); - echo "

    Bei $num_rows_all aktiven, freien Lektoren ist die Verwendung nicht plausibel

    "; + echo "

    Bei $num_rows_all aktiven, freien Lektoren ist die Verwendung nicht plausibel - Verwendung darf nur 'Lehr- unf Forschungspersonal' oder 'Lehr- und Forschungshilfspersonal' sein

    "; while($rowall=$db->db_fetch_object($resultall)) { $i=0; @@ -306,7 +306,7 @@ $qryall="SELECT DISTINCT lehre.tbl_lehreinheitmitarbeiter.mitarbeiter_uid, nachn if($resultall = $db->db_query($qryall)) { $num_rows_all=$db->db_num_rows($resultall); - echo "

    Bei $num_rows_all Lektoren mit Lehrauftrag sind die Verwendungen nicht plausibel

    "; + echo "

    Bei $num_rows_all Lektoren mit Lehrauftrag sind die Verwendungen nicht plausibel (Lehrauftrag aber keine aktuelle Verwendung)

    "; while($rowall=$db->db_fetch_object($resultall)) { $i++; From e839f07c0c11fa2f61791a0b5ec5f3eabb3d5e0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 17 Nov 2017 08:39:29 +0100 Subject: [PATCH 032/126] =?UTF-8?q?-=20Ausgabe=20optimiert=20-=20Beschreib?= =?UTF-8?q?ungstexte=20zu=20den=20Fehlerkategorien=20hinzugef=C3=BCgt=20-?= =?UTF-8?q?=20Check=20f=C3=BCr=20doppelte=20Verwendungen=20entfernt=20da?= =?UTF-8?q?=20diese=20bei=20der=20Erstellung=20der=20Meldung=20zusammengef?= =?UTF-8?q?=C3=BChrt=20werden=20-=20offene=20Verwendungen=20ohne=20Beginn?= =?UTF-8?q?=20und=20Endedatum=20werden=20jetzt=20zus=C3=A4tzlich=20angezei?= =?UTF-8?q?gt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vilesci/bis/checkverwendung.php | 450 ++++++++++++++++++++++---------- 1 file changed, 318 insertions(+), 132 deletions(-) diff --git a/vilesci/bis/checkverwendung.php b/vilesci/bis/checkverwendung.php index 7e03985ca..a843d41c6 100644 --- a/vilesci/bis/checkverwendung.php +++ b/vilesci/bis/checkverwendung.php @@ -54,17 +54,36 @@ $update=false; $bismeldedatum=date("Y-m-d", mktime(0, 0, 0, 9, 1, date("Y"))); $bismeldedatumvorjahr=date("Y-m-d", mktime(0, 0, 0, 9, 1, date("Y")-1)); -function myaddslashes($var) -{ - return ($var!=''?"'".addslashes($var)."'":'null'); -} +$ba1_arr = array(); +$qry = "SELECT * FROM bis.tbl_beschaeftigungsart1"; +if($result = $db->db_query($qry)) + while($row = $db->db_fetch_object($result)) + $ba1_arr[$row->ba1code]=$row->ba1kurzbz; + +$ba2_arr = array(); +$qry = "SELECT * FROM bis.tbl_beschaeftigungsart2"; +if($result = $db->db_query($qry)) + while($row = $db->db_fetch_object($result)) + $ba2_arr[$row->ba2code]=$row->ba2bez; + +$verwendung_arr = array(); +$qry = "SELECT * FROM bis.tbl_verwendung"; +if($result = $db->db_query($qry)) + while($row = $db->db_fetch_object($result)) + $verwendung_arr[$row->verwendung_code]=$row->verwendungbez; + +$ausmass_arr = array(); +$qry = "SELECT * FROM bis.tbl_beschaeftigungsausmass"; +if($result = $db->db_query($qry)) + while($row = $db->db_fetch_object($result)) + $ausmass_arr[$row->beschausmasscode]=$row->beschausmassbez; ?> - + BIS-Meldung - Überprüfung von Verwendungen - + @@ -85,23 +104,43 @@ $lastss = $stsem_obj->getPrevious(); $lastws = $stsem_obj->getBeforePrevious(); //1 - aktive mitarbeiter und bismelden mit keiner verwendung oder mehr als einer aktuellen verwendung -$qryall='SELECT uid,nachname,vorname, count(bisverwendung_id) - FROM campus.vw_mitarbeiter LEFT OUTER JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid) - WHERE aktiv AND bismelden AND (ende>now() OR ende IS NULL) - GROUP BY uid,nachname,vorname HAVING count(bisverwendung_id)!=1 ORDER by nachname,vorname;'; +$qryall=' + SELECT + uid, nachname, vorname, count(bisverwendung_id) + FROM + campus.vw_mitarbeiter + LEFT OUTER JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid) + WHERE + aktiv + AND bismelden + AND (ende>now() OR ende IS NULL) + GROUP BY + uid, nachname, vorname + HAVING count(bisverwendung_id)!=1 + ORDER by nachname, vorname;'; if($resultall = $db->db_query($qryall)) { $num_rows_all=$db->db_num_rows($resultall); echo "

    Bei $num_rows_all aktiven Mitarbeitern sind die aktuellen Verwendungen nicht plausibel

    "; + echo "Es ist keine oder es sind mehrere aktive Verwendungen vorhanden.
    "; while($rowall=$db->db_fetch_object($resultall)) { $i=0; - $qry="SELECT * FROM bis.tbl_bisverwendung - JOIN public.tbl_benutzer ON(mitarbeiter_uid=uid) - JOIN public.tbl_person USING(person_id) - JOIN public.tbl_mitarbeiter USING(mitarbeiter_uid) - WHERE tbl_benutzer.aktiv=TRUE AND bismelden=TRUE - AND (ende>now() OR ende IS NULL) AND mitarbeiter_uid='".$rowall->uid."';"; + $qry=" + SELECT + * + FROM + bis.tbl_bisverwendung + JOIN public.tbl_benutzer ON(mitarbeiter_uid=uid) + JOIN public.tbl_person USING(person_id) + JOIN public.tbl_mitarbeiter USING(mitarbeiter_uid) + WHERE + tbl_benutzer.aktiv=TRUE + AND bismelden=TRUE + AND (ende>now() OR ende IS NULL) + AND mitarbeiter_uid=".$db->db_add_param($rowall->uid)." + ORDER BY beginn"; + if($result = $db->db_query($qry)) { $num_rows=$db->db_num_rows($result); @@ -111,23 +150,44 @@ if($resultall = $db->db_query($qryall)) { if($i==0) { - echo "
    Aktive(r) Mitarbeiter(in) ".$row->nachname." ".$row->vorname." hat ".$num_rows." aktuelle Verwendungen (möglicherweise korrekt):
    "; + echo " +
    + Aktive(r) Mitarbeiter(in) ".$row->nachname." ".$row->vorname."". + " hat ".$num_rows." aktuelle Verwendungen (möglicherweise korrekt): + +
    "; $i++; } - echo "Verwendung Code ".$row->verwendung_code.", Beschäftigungscode ".$row->ba1code.", ".$row->ba2code.", mit Ausmaß ".$row->beschausmasscode.", ".$row->beginn." - ".$row->ende."
    "; + echo $verwendung_arr[$row->verwendung_code].", ". + $ba1_arr[$row->ba1code].", ". + $ba2_arr[$row->ba2code].", ". + $ausmass_arr[$row->beschausmasscode].", ". + $row->beginn." - ".$row->ende."
    "; } } elseif($num_rows==0) - echo "
    Aktive(r) Mitarbeiter(in): ".$rowall->nachname." ".$rowall->vorname." hat ".$num_rows." aktuelle Verwendungen:
    "; + echo "
    Aktive(r) Mitarbeiter(in): ".$rowall->nachname." ".$rowall->vorname." + hat ".$num_rows." aktuelle Verwendungen:
    "; } } } //2 - aktive fixe mitarbeiter mit keiner aktuellen verwendung -$qryall='SELECT uid,nachname,vorname, count(bisverwendung_id) - FROM campus.vw_mitarbeiter LEFT OUTER JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid) - WHERE aktiv AND fixangestellt AND NOT ende>now() AND NOT ende IS NULL - AND uid NOT IN (SELECT uid FROM campus.vw_mitarbeiter LEFT OUTER JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid) - WHERE aktiv AND fixangestellt AND (ende>now() OR ende IS NULL)) GROUP BY uid,nachname,vorname ORDER by nachname,vorname;'; +$qryall = ' + SELECT + uid, nachname, vorname, count(bisverwendung_id) + FROM + campus.vw_mitarbeiter + LEFT OUTER JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid) + WHERE + aktiv + AND fixangestellt + AND NOT ende>now() AND NOT ende IS NULL + AND uid NOT IN ( + SELECT uid FROM campus.vw_mitarbeiter LEFT OUTER JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid) + WHERE aktiv AND fixangestellt AND (ende>now() OR ende IS NULL) + ) + GROUP BY uid, nachname, vorname + ORDER by nachname, vorname;'; if($resultall = $db->db_query($qryall)) { $num_rows_all=$db->db_num_rows($resultall); @@ -135,8 +195,18 @@ if($resultall = $db->db_query($qryall)) while($rowall=$db->db_fetch_object($resultall)) { $i=0; - $qry="SELECT * FROM bis.tbl_bisverwendung JOIN public.tbl_benutzer ON(mitarbeiter_uid=uid) JOIN public.tbl_person USING(person_id) - WHERE tbl_benutzer.aktiv=TRUE AND mitarbeiter_uid='".$rowall->uid."';"; + $qry=" + SELECT + * + FROM + bis.tbl_bisverwendung + JOIN public.tbl_benutzer ON(mitarbeiter_uid=uid) + JOIN public.tbl_person USING(person_id) + WHERE + tbl_benutzer.aktiv=TRUE + AND mitarbeiter_uid=".$db->db_add_param($rowall->uid)." + ORDER by beginn"; + if($result = $db->db_query($qry)) { $num_rows=$db->db_num_rows($result); @@ -144,21 +214,36 @@ if($resultall = $db->db_query($qryall)) { if($i==0) { - echo "
    Aktive(r) Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname." hat keine aktuellen Verwendungen:
    "; + echo "
    + + Aktive(r) Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname." + hat keine aktuellen Verwendungen: + +
    "; $i++; } - echo "Verwendung Code ".$row->verwendung_code.", Beschäftigungscode ".$row->ba1code.", ".$row->ba2code.", mit Ausmaß ".$row->beschausmasscode.", ".$row->beginn." - ".$row->ende."
    "; + echo $verwendung_arr[$row->verwendung_code].", ". + $ba1_arr[$row->ba1code].", ". + $ba2_arr[$row->ba2code].", ". + $ausmass_arr[$row->beschausmasscode].", ". + $row->beginn." - ".$row->ende."
    "; } } } } //3 - nicht aktive mitarbeiter mitarbeiter mit aktueller verwendung -$qryall='SELECT uid,nachname,vorname FROM campus.vw_mitarbeiter - JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid) - WHERE aktiv=false AND (ende>now() OR ende IS NULL) - GROUP BY uid,nachname,vorname - ORDER by nachname,vorname;'; +$qryall=' + SELECT + uid, nachname, vorname + FROM + campus.vw_mitarbeiter + JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid) + WHERE + aktiv=false + AND (ende>now() OR ende IS NULL) + GROUP BY uid, nachname, vorname + ORDER by nachname, vorname;'; if($resultall = $db->db_query($qryall)) { @@ -167,8 +252,16 @@ if($resultall = $db->db_query($qryall)) while($rowall=$db->db_fetch_object($resultall)) { $i=0; - $qry="SELECT * FROM bis.tbl_bisverwendung - WHERE (ende>now() OR ende IS NULL) AND mitarbeiter_uid='".$rowall->uid."';"; + $qry=" + SELECT + * + FROM + bis.tbl_bisverwendung + WHERE + (ende>now() OR ende IS NULL) + AND mitarbeiter_uid=".$db->db_add_param($rowall->uid)." + ORDER BY beginn"; + if($result = $db->db_query($qry)) { $num_rows=$db->db_num_rows($result); @@ -176,29 +269,57 @@ if($resultall = $db->db_query($qryall)) { if($i==0) { - echo "
    Nicht aktive(r) Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname." hat ".$num_rows." aktuelle Verwendungen:
    "; + echo "
    + + Nicht aktive(r) Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname." + hat ".$num_rows." aktuelle Verwendungen: + +
    "; $i++; } - echo "Verwendung Code ".$row->verwendung_code.", Beschäftigungscode ".$row->ba1code.", ".$row->ba2code.", mit Ausmaß ".$row->beschausmasscode.", ".$row->beginn." - ".$row->ende."
    "; + echo $verwendung_arr[$row->verwendung_code].", ". + $ba1_arr[$row->ba1code].", ". + $ba2_arr[$row->ba2code].", ". + $ausmass_arr[$row->beschausmasscode].", ". + $row->beginn." - ".$row->ende."
    "; } } } } //4 - wenn hauptberuf=j dann sollte verwendung=1,5,6 sein - check -$qryall="SELECT uid,nachname,vorname FROM campus.vw_mitarbeiter - JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid) - WHERE verwendung_code NOT IN ('1','5','6') AND hauptberuflich=true - GROUP BY uid,nachname,vorname - ORDER by nachname,vorname,uid;"; +$qryall=" + SELECT + uid, nachname, vorname + FROM + campus.vw_mitarbeiter + JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid) + WHERE + verwendung_code NOT IN ('1','5','6') + AND hauptberuflich=true + GROUP BY uid, nachname, vorname + ORDER by nachname, vorname, uid;"; + if($resultall = $db->db_query($qryall)) { $num_rows_all=$db->db_num_rows($resultall); - echo "

    Bei $num_rows_all Mitarbeitern sind die Eintragungen 'hauptberuflich' nicht plausibel (hauptberuflich ja, aber Verwendung nicht 1,5,6)

    "; + echo "

    Bei $num_rows_all Mitarbeitern sind die Eintragungen 'hauptberuflich' nicht plausibel

    "; + echo "hauptberuflich=ja, aber Verwendung nicht ". + $verwendung_arr[1].", ".$verwendung_arr[5]." oder ".$verwendung_arr[6]; + while($rowall=$db->db_fetch_object($resultall)) { $i=0; - $qry="SELECT * FROM bis.tbl_bisverwendung - WHERE verwendung_code NOT IN ('1','5','6') AND hauptberuflich=true AND mitarbeiter_uid='".$rowall->uid."';"; + $qry=" + SELECT + * + FROM + bis.tbl_bisverwendung + WHERE + verwendung_code NOT IN ('1','5','6') + AND hauptberuflich=true + AND mitarbeiter_uid=".$db->db_add_param($rowall->uid)." + ORDER BY beginn"; + if($result = $db->db_query($qry)) { $num_rows=$db->db_num_rows($result); @@ -206,42 +327,61 @@ if($resultall = $db->db_query($qryall)) { if($i==0) { - echo "
    Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname.":
    "; + echo "
    Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname.":
    "; $i++; } - echo "Verwendung Code ".$row->verwendung_code.", hauptberuflich ".($row->hauptberuflich=='t'?'ja':'nein').", Beschäftigungscode ".$row->ba1code.", ".$row->ba2code.", mit Ausmaß ".$row->beschausmasscode.", ".$row->beginn." - ".$row->ende."
    "; + echo $verwendung_arr[$row->verwendung_code].", + hauptberuflich ".($row->hauptberuflich=='t'?'ja':'nein').", ". + $ba1_arr[$row->ba1code].", ". + $ba2_arr[$row->ba2code].", ". + $ausmass_arr[$row->beschausmasscode].", ". + $row->beginn." - ".$row->ende."
    "; } } } } //5 - stimmt beschausmasscode mit vertragsstunden überein? -$qryall="SELECT uid,nachname,vorname FROM campus.vw_mitarbeiter - JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid) - WHERE (beschausmasscode='1' AND vertragsstunden<='35') - OR (beschausmasscode='2' AND vertragsstunden>'15') - OR (beschausmasscode='3' AND vertragsstunden<'16') - OR (beschausmasscode='3' AND vertragsstunden>'25') - OR (beschausmasscode='4' AND vertragsstunden<'26') - OR (beschausmasscode='4' AND vertragsstunden>'35') - OR (beschausmasscode='5' AND vertragsstunden>'0') - GROUP BY uid,nachname,vorname - ORDER by nachname,vorname,uid;"; +$qryall=" + SELECT + uid, nachname, vorname + FROM + campus.vw_mitarbeiter + JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid) + WHERE + (beschausmasscode='1' AND vertragsstunden<='35') + OR (beschausmasscode='2' AND vertragsstunden>'15') + OR (beschausmasscode='3' AND vertragsstunden<'16') + OR (beschausmasscode='3' AND vertragsstunden>'25') + OR (beschausmasscode='4' AND vertragsstunden<'26') + OR (beschausmasscode='4' AND vertragsstunden>'35') + OR (beschausmasscode='5' AND vertragsstunden>'0') + GROUP BY uid, nachname, vorname + ORDER by nachname, vorname, uid;"; + if($resultall = $db->db_query($qryall)) { $num_rows_all=$db->db_num_rows($resultall); echo "

    Bei $num_rows_all Mitarbeitern ist das Beschäftigungsausmaß nicht plausibel

    "; + echo "Vertragsstunden passen nicht mit Beschäftigungsausmass überein

    "; while($rowall=$db->db_fetch_object($resultall)) { $i=0; - $qry="SELECT * FROM bis.tbl_bisverwendung - WHERE ((beschausmasscode='1' AND vertragsstunden<'38.5') - OR (beschausmasscode='2' AND vertragsstunden>'15') - OR (beschausmasscode='3' AND vertragsstunden<'16') - OR (beschausmasscode='3' AND vertragsstunden>'25') - OR (beschausmasscode='4' AND vertragsstunden<'26') - OR (beschausmasscode='4' AND vertragsstunden>'35') - OR (beschausmasscode='5' AND vertragsstunden>'0')) - AND mitarbeiter_uid='".$rowall->uid."';"; + $qry=" + SELECT + * + FROM + bis.tbl_bisverwendung + WHERE + ((beschausmasscode='1' AND vertragsstunden<'38.5') + OR (beschausmasscode='2' AND vertragsstunden>'15') + OR (beschausmasscode='3' AND vertragsstunden<'16') + OR (beschausmasscode='3' AND vertragsstunden>'25') + OR (beschausmasscode='4' AND vertragsstunden<'26') + OR (beschausmasscode='4' AND vertragsstunden>'35') + OR (beschausmasscode='5' AND vertragsstunden>'0')) + AND mitarbeiter_uid=".$db->db_add_param($rowall->uid)." + ORDER BY beginn"; + if($result = $db->db_query($qry)) { $num_rows=$db->db_num_rows($result); @@ -252,28 +392,50 @@ if($resultall = $db->db_query($qryall)) echo "
    Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname.":
    "; $i++; } - echo "Beschäftigungsausmaß ".$row->beschausmasscode.", Vertragsstunden ".$row->vertragsstunden.", Verwendung Code ".$row->verwendung_code.", Beschäftigungscode ".$row->ba1code.", ".$row->ba2code.", mit Ausmaß ".$row->beschausmasscode.", ".$row->beginn." - ".$row->ende."
    "; + echo $ausmass_arr[$row->beschausmasscode]. + ", Vertragsstunden ".$row->vertragsstunden. + ", ".$verwendung_arr[$row->verwendung_code]. + ", ".$ba1_arr[$row->ba1code]. + ", ".$ba2_arr[$row->ba2code]. + ", ".$row->beginn." - ".$row->ende."
    "; } } } } //6 - aktive, freie lektoren auf verwendung 1 oder 2 prüfen -$qryall="SELECT uid,nachname,vorname FROM campus.vw_mitarbeiter - JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid) - WHERE aktiv AND lektor AND fixangestellt=false - AND verwendung_code NOT IN ('1','2') AND (ende>now() OR ende IS NULL) - GROUP BY uid,nachname,vorname - ORDER by nachname,vorname,uid;"; +$qryall=" + SELECT + uid, nachname, vorname + FROM + campus.vw_mitarbeiter + JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid) + WHERE + aktiv + AND lektor + AND fixangestellt=false + AND verwendung_code NOT IN ('1','2') + AND (ende>now() OR ende IS NULL) + GROUP BY uid, nachname, vorname + ORDER by nachname, vorname, uid;"; if($resultall = $db->db_query($qryall)) { $num_rows_all=$db->db_num_rows($resultall); - echo "

    Bei $num_rows_all aktiven, freien Lektoren ist die Verwendung nicht plausibel - Verwendung darf nur 'Lehr- unf Forschungspersonal' oder 'Lehr- und Forschungshilfspersonal' sein

    "; + echo "

    Bei $num_rows_all aktiven, freien Lektoren ist die Verwendung nicht plausibel

    "; + echo "Verwendung darf nur '".$verwendung_arr[1]."' oder '".$verwendung_arr[2]."' sein.

    "; + while($rowall=$db->db_fetch_object($resultall)) { $i=0; - $qry="SELECT * FROM bis.tbl_bisverwendung - WHERE verwendung_code NOT IN ('1','2') - AND mitarbeiter_uid='".$rowall->uid."';"; + $qry=" + SELECT + * + FROM + bis.tbl_bisverwendung + WHERE + verwendung_code NOT IN ('1','2') + AND mitarbeiter_uid=".$db->db_add_param($rowall->uid)." + ORDER BY beginn"; + if($result = $db->db_query($qry)) { $num_rows=$db->db_num_rows($result); @@ -284,24 +446,41 @@ if($resultall = $db->db_query($qryall)) echo "
    Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname.":
    "; $i++; } - echo "Verwendung Code ".$row->verwendung_code.", Beschäftigungscode ".$row->ba1code.", ".$row->ba2code.", ".$row->beginn." - ".$row->ende."
    "; + echo $verwendung_arr[$row->verwendung_code].", ". + $ba1_arr[$row->ba1code].", ". + $ba2_arr[$row->ba2code].", ". + $row->beginn." - ".$row->ende."
    "; } } } } //7 - Lehrauftrag aber keine aktuelle Verwendung $i=0; -$qryall="SELECT DISTINCT lehre.tbl_lehreinheitmitarbeiter.mitarbeiter_uid, nachname, vorname - FROM lehre.tbl_lehreinheitmitarbeiter join lehre.tbl_lehreinheit USING (lehreinheit_id) - JOIN - lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) - JOIN campus.vw_mitarbeiter ON (tbl_lehreinheitmitarbeiter.mitarbeiter_uid=uid) +$qryall=" + SELECT + DISTINCT lehre.tbl_lehreinheitmitarbeiter.mitarbeiter_uid, nachname, vorname + FROM + lehre.tbl_lehreinheitmitarbeiter + JOIN lehre.tbl_lehreinheit USING (lehreinheit_id) + JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) + JOIN campus.vw_mitarbeiter ON (tbl_lehreinheitmitarbeiter.mitarbeiter_uid=uid) WHERE - (lehre.tbl_lehreinheit.studiensemester_kurzbz='$lastss' OR lehre.tbl_lehreinheit.studiensemester_kurzbz='$lastws') - AND tbl_lehreinheitmitarbeiter.stundensatz!=0 AND tbl_lehreinheitmitarbeiter.semesterstunden!=0 - AND NOT EXISTS (SELECT * FROM bis.tbl_bisverwendung - WHERE ((beginn<'".$ende[$lastss]."') AND (ende>'".$beginn[$lastws]."') OR ende is null) AND mitarbeiter_uid=tbl_lehreinheitmitarbeiter.mitarbeiter_uid) - ORDER BY nachname,vorname;"; + ( + lehre.tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($lastss)." + OR lehre.tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($lastws)." + ) + AND tbl_lehreinheitmitarbeiter.stundensatz!=0 + AND tbl_lehreinheitmitarbeiter.semesterstunden!=0 + AND NOT EXISTS ( + SELECT * FROM bis.tbl_bisverwendung + WHERE + ( + beginn<".$db->db_add_param($ende[$lastss])." + AND (ende>".$db->db_add_param($beginn[$lastws])." OR ende is null) + ) + AND mitarbeiter_uid=tbl_lehreinheitmitarbeiter.mitarbeiter_uid + ) + ORDER BY nachname,vorname;"; if($resultall = $db->db_query($qryall)) { @@ -311,78 +490,85 @@ if($resultall = $db->db_query($qryall)) { $i++; echo "
    Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname.":
    "; - $qry="SELECT * FROM bis.tbl_bisverwendung WHERE mitarbeiter_uid='".$rowall->mitarbeiter_uid."';"; + $qry=" + SELECT + * + FROM + bis.tbl_bisverwendung + WHERE + mitarbeiter_uid=".$db->db_add_param($rowall->mitarbeiter_uid)." + ORDER BY beginn;"; if($result = $db->db_query($qry)) { while($row=$db->db_fetch_object($result)) { - echo "Verwendung Code ".$row->verwendung_code.", Beschäftigungscode ".$row->ba1code.", ".$row->ba2code.", ".$row->beginn." - ".$row->ende."
    "; + echo $verwendung_arr[$row->verwendung_code].", ". + $ba1_arr[$row->ba1code].", ". + $ba2_arr[$row->ba2code].", ". + $row->beginn." - ".$row->ende."
    "; } } } } //8 - Verwendung Habil. und Entwicklungsteam Habil.=1 $i=0; -$qryall="SELECT DISTINCT mitarbeiter_uid, nachname, vorname - FROM bis.tbl_entwicklungsteam join bis.tbl_bisverwendung USING (mitarbeiter_uid) - JOIN campus.vw_mitarbeiter ON (tbl_entwicklungsteam.mitarbeiter_uid=uid) - WHERE ((besqualcode!=1 AND habilitation) OR (besqualcode=1 AND habilitation=false)) - ORDER BY mitarbeiter_uid;"; +$qryall=" + SELECT + DISTINCT mitarbeiter_uid, nachname, vorname + FROM + bis.tbl_entwicklungsteam + JOIN bis.tbl_bisverwendung USING (mitarbeiter_uid) + JOIN campus.vw_mitarbeiter ON (tbl_entwicklungsteam.mitarbeiter_uid=uid) + WHERE + ((besqualcode!=1 AND habilitation) OR (besqualcode=1 AND habilitation=false)) + ORDER BY mitarbeiter_uid;"; if($resultall = $db->db_query($qryall)) { $num_rows_all=$db->db_num_rows($resultall); echo "

    Bei $num_rows_all Lektoren sind die Angaben über Habilitationen nicht plausibel

    "; + echo "Wenn Besondere Qualifikation beim Entwicklungsteam gleich Habilitation ist dann muss bei der Verwendung auch + eine Habilitation eingetragen sein."; + while($rowall=$db->db_fetch_object($resultall)) { $i++; echo "
    Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname.":
    "; - $qry="SELECT mitarbeiter_uid, nachname, vorname, besqualbez, habilitation, studiengang_kz, verwendung_code, tbl_bisverwendung.beginn as anfang, tbl_bisverwendung.ende as zuende - FROM bis.tbl_entwicklungsteam join bis.tbl_bisverwendung USING (mitarbeiter_uid) - JOIN campus.vw_mitarbeiter ON (tbl_entwicklungsteam.mitarbeiter_uid=uid) - JOIN bis.tbl_besqual USING(besqualcode) - WHERE ((besqualcode!=1 AND habilitation) OR (besqualcode=1 AND habilitation=false)) - AND mitarbeiter_uid='".$rowall->mitarbeiter_uid."';"; + $qry=" + SELECT + mitarbeiter_uid, nachname, vorname, besqualbez, + habilitation, studiengang_kz, verwendung_code, + tbl_bisverwendung.beginn as anfang, tbl_bisverwendung.ende as zuende + FROM + bis.tbl_entwicklungsteam join bis.tbl_bisverwendung USING (mitarbeiter_uid) + JOIN campus.vw_mitarbeiter ON (tbl_entwicklungsteam.mitarbeiter_uid=uid) + JOIN bis.tbl_besqual USING(besqualcode) + WHERE + ((besqualcode!=1 AND habilitation) OR (besqualcode=1 AND habilitation=false)) + AND mitarbeiter_uid=".$db->db_add_param($rowall->mitarbeiter_uid)." + ORDER BY tbl_bisverwendung.beginn"; if($result = $db->db_query($qry)) { while($row=$db->db_fetch_object($result)) { - echo "Verwendung Code ".$row->verwendung_code.", ".$row->anfang." - ".$row->zuende.", Habilitation ".($row->habilitation=='t'?'ja':'nein')." <-> Entwicklungsteam-bes.Qualifikation:(Stg. ".$row->studiengang_kz.") '".$row->besqualbez."'.
    "; + echo $verwendung_arr[$row->verwendung_code].", ". + $row->anfang." - ".$row->zuende.", Habilitation ".($row->habilitation=='t'?'ja':'nein'). + " <-> Entwicklungsteam-bes.Qualifikation:(Stg. ".$row->studiengang_kz.") '".$row->besqualbez."'.
    "; } } } } -//9 - 2 gleiche aktive Verwendungen -$qryall=" - SELECT distinct vorname, nachname, personalnummer, ba1code, ba2code FROM campus.vw_mitarbeiter JOIN ( - SELECT a.mitarbeiter_uid, a.ba1code, a.ba2code FROM bis.tbl_bisverwendung a, bis.tbl_bisverwendung b WHERE - a.bisverwendung_id<>b.bisverwendung_id AND - a.ba1code=b.ba1code AND - a.ba2code=b.ba2code AND - a.mitarbeiter_uid=b.mitarbeiter_uid AND - (a.ende is null OR a.ende>'$bismeldedatumvorjahr') AND - (b.ende is null OR b.ende>'$bismeldedatumvorjahr') AND - a.beschausmasscode=b.beschausmasscode AND - a.verwendung_code=b.verwendung_code - ) c ON(mitarbeiter_uid=uid)"; - -if($resultall = $db->db_query($qryall)) -{ - $num_rows_all=$db->db_num_rows($resultall); - echo "

    Bei $num_rows_all Lektoren sind mehrere gleiche aktive Verwendungen vorhanden

    "; - while($rowall=$db->db_fetch_object($resultall)) - { - $i++; - echo "
    Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname.":
    "; - echo "(ba1code: $rowall->ba1code, ba2code: $rowall->ba2code)"; - } -} -echo '
    '; //9 - inaktive mitarbeiter und bismelden ohne verwendung -$qryall='SELECT uid,nachname,vorname, count(bisverwendung_id) - FROM campus.vw_mitarbeiter LEFT OUTER JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid) +$qryall=' + SELECT + uid, nachname, vorname, count(bisverwendung_id) + FROM + campus.vw_mitarbeiter + LEFT OUTER JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid) WHERE bismelden - GROUP BY uid,nachname,vorname HAVING count(bisverwendung_id)=0 ORDER by nachname,vorname;'; + GROUP BY uid, nachname, vorname + HAVING count(bisverwendung_id)=0 + ORDER by nachname, vorname;'; if($resultall = $db->db_query($qryall)) { $num_rows_all=$db->db_num_rows($resultall); From 7d04f8a9b210355970e10f94a8080e9605f9faa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 17 Nov 2017 09:13:35 +0100 Subject: [PATCH 033/126] Fixed Typo --- system/dbupdate_3.3.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index a36b5c068..cde9c02d1 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -510,7 +510,7 @@ if(!@$db->db_query("SELECT updatevon FROM public.tbl_rt_person LIMIT 1")) // Neue Funktion get_highest_content_version if(!@$db->db_query("SELECT campus.get_highest_content_version(0)")) { - $qry = "CREATE FUNCTION campus.get_highest_content_version(bigint) RETURNS smallint + $qry = 'CREATE FUNCTION campus.get_highest_content_version(bigint) RETURNS smallint LANGUAGE plpgsql AS $_$ DECLARE i_content_id ALIAS FOR $1; @@ -526,7 +526,7 @@ if(!@$db->db_query("SELECT campus.get_highest_content_version(0)")) END; $_$; - ALTER FUNCTION campus.get_highest_content_version(bigint) OWNER TO fhcomplete;"; + ALTER FUNCTION campus.get_highest_content_version(bigint) OWNER TO fhcomplete;'; if(!$db->db_query($qry)) echo 'campus.get_highest_content_version(content_id): '.$db->db_last_error().'
    '; From 60a9afc4fb9b350caf355e9dab405c3c455f4554 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 17 Nov 2017 09:24:15 +0100 Subject: [PATCH 034/126] =?UTF-8?q?Tabelle=20extensions=20zu=20Tabellenpr?= =?UTF-8?q?=C3=BCfung=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- system/dbupdate_3.3.php | 1 + 1 file changed, 1 insertion(+) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index cde9c02d1..55b272bab 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -922,6 +922,7 @@ $tabellen=array( "system.tbl_cronjob" => array("cronjob_id","server_kurzbz","titel","beschreibung","file","last_execute","aktiv","running","jahr","monat","tag","wochentag","stunde","minute","standalone","reihenfolge","updateamum", "updatevon","insertamum","insertvon","variablen"), "system.tbl_benutzerrolle" => array("benutzerberechtigung_id","rolle_kurzbz","berechtigung_kurzbz","uid","funktion_kurzbz","oe_kurzbz","art","studiensemester_kurzbz","start","ende","negativ","updateamum", "updatevon","insertamum","insertvon","kostenstelle_id","anmerkung"), "system.tbl_berechtigung" => array("berechtigung_kurzbz","beschreibung"), + "system.tbl_extensions" => array("extension_id","name","version","description","license","url","core_version","dependencies","enabled"), "system.tbl_phrase" => array("phrase_id","app","phrase","insertamum","insertvon"), "system.tbl_phrasentext" => array("phrasentext_id","phrase_id","sprache","orgeinheit_kurzbz","orgform_kurzbz","text","description","insertamum","insertvon"), "system.tbl_rolle" => array("rolle_kurzbz","beschreibung"), From 9859a498ca88a5bbc77d1c5c1c1d4973556868db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Mon, 20 Nov 2017 15:59:55 +0100 Subject: [PATCH 035/126] Added new Function SearchPerson --- application/models/person/Person_model.php | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php index 2ea9d4d25..770be0e14 100644 --- a/application/models/person/Person_model.php +++ b/application/models/person/Person_model.php @@ -18,7 +18,7 @@ class Person_model extends DB_Model public function getPersonKontaktByZugangscode($zugangscode, $email) { $this->addJoin('public.tbl_kontakt', 'person_id'); - + return $this->loadWhere(array('zugangscode' => $zugangscode, 'kontakt' => $email)); } @@ -135,4 +135,21 @@ class Person_model extends DB_Model return $result; } + + /** + * Searches a Person + * @param $filter Term to search for. + * @return DB-result + */ + public function searchPerson($filter) + { + $this->addSelect('vorname, nachname, gebdatum, person_id'); + $result = $this->loadWhere( + 'lower(nachname) like '.$this->db->escape('%'.$filter.'%')." + OR lower(vorname) like ".$this->db->escape('%'.$filter.'%')." + OR lower(nachname || ' ' || vorname) like ".$this->db->escape('%'.$filter.'%')." + OR lower(vorname || ' ' || nachname) like ".$this->db->escape('%'.$filter.'%')); + + return $result; + } } From e76508307becf39bcac4ee777468bf9af7424a39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Mon, 20 Nov 2017 16:00:22 +0100 Subject: [PATCH 036/126] Added extension Folders to ignore List --- .gitignore | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.gitignore b/.gitignore index cf35d4eea..3eda1161d 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,15 @@ documents/ .project .buildpath application/config/development/ +application/extensions/ +application/controllers/extensions/ +application/config/extensions/ +application/helpers/extensions/ +application/hooks/extensions/ +application/libraries/extensions/ +application/models/extensions/ +application/views/extensions/ +application/widgets/extensions/ tests/codeception/_output/* !/tests/codeception/_output/.placeholder tests/codeception/codeception.yml From 359e3fada605bda86a4e3ab31ccd2a27dae2e215 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Mon, 20 Nov 2017 17:16:17 +0100 Subject: [PATCH 037/126] Added missing constants for Account Generation --- config/cis.config-default.inc.php | 4 ++++ config/vilesci.config-default.inc.php | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/config/cis.config-default.inc.php b/config/cis.config-default.inc.php index e3c4931db..49af7cdd6 100644 --- a/config/cis.config-default.inc.php +++ b/config/cis.config-default.inc.php @@ -104,6 +104,10 @@ define('LDAP2_USER_SEARCH_FILTER','sAMAccountName'); // LDAP MASTER SERVER fuer Passwort Aenderungen define('LDAP_SERVER_MASTER',LDAP_SERVER); +// Default Password fuer neue Accounts +// Hier sollte ein langes geheimes Passwort gesetzt werden! +define('ACCOUNT_ACTIVATION_PASSWORD',''); + // Attribut fuer Zutrittskartennummer im LDAP define("LDAP_CARD_NUMBER","twHitagCardNumber"); // Attribut fuer Zutrittskartennummer2 im LDAP diff --git a/config/vilesci.config-default.inc.php b/config/vilesci.config-default.inc.php index e0f2147e6..8078d4fca 100644 --- a/config/vilesci.config-default.inc.php +++ b/config/vilesci.config-default.inc.php @@ -94,6 +94,11 @@ define('LDAP2_USER_SEARCH_FILTER','sAMAccountName'); // LDAP MASTER SERVER fuer Passwort Aenderungen define('LDAP_SERVER_MASTER',LDAP_SERVER); +// Default Password fuer neue Accounts +// Hier sollte ein langes geheimes Passwort gesetzt werden! +define('ACCOUNT_ACTIVATION_PASSWORD',''); + + // Attribut fuer Zutrittskartennummer im LDAP define("LDAP_CARD_NUMBER","twHitagCardNumber"); // Attribut fuer Zutrittskartennummer2 im LDAP From 4e94776c6a440386552cf9aea0742514df5b76d1 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Mon, 20 Nov 2017 18:27:53 +0100 Subject: [PATCH 038/126] Funktion getAllForBewerbung mit Studiengangsnamen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ursprüngliche Variante der Funktion getAllForBewerbung MIT studiengangsnamen wiederhergestellt um abwärtskompatibel zu bleiben --- include/studiengang.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/studiengang.class.php b/include/studiengang.class.php index 5eece2202..c4e9de968 100644 --- a/include/studiengang.class.php +++ b/include/studiengang.class.php @@ -219,9 +219,9 @@ class studiengang extends basis_db * @param string $order Default: typ, studiengangbezeichnung, tbl_lgartcode.bezeichnung ASC. Spalten, nach denen Sortiert werden soll. * @return boolean */ - public function getAllForBewerbung($order = 'typ, tbl_lgartcode.bezeichnung ASC') + public function getAllForBewerbung($order = 'typ, studiengangbezeichnung, tbl_lgartcode.bezeichnung ASC') { - $qry = 'SELECT DISTINCT studiengang_kz, typ, organisationseinheittyp_kurzbz, standort, lgartcode, tbl_lgartcode.bezeichnung ' + $qry = 'SELECT DISTINCT studiengang_kz, typ, organisationseinheittyp_kurzbz, studiengangbezeichnung, standort, studiengangbezeichnung_englisch, lgartcode, tbl_lgartcode.bezeichnung ' . 'FROM lehre.vw_studienplan ' . 'LEFT JOIN bis.tbl_lgartcode USING (lgartcode) ' . 'WHERE onlinebewerbung IS TRUE ' From 1f0e58d6c26dce5bf82d0142b6f210fcf32c281d Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Mon, 20 Nov 2017 18:28:18 +0100 Subject: [PATCH 039/126] Add funktion cutString Cuts the string to the given limit minus the stringlength of the placeholderSign and adds the placeholderSign at the end of the string --- include/functions.inc.php | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/include/functions.inc.php b/include/functions.inc.php index 036b9d1a3..5fc5e5418 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -1043,4 +1043,33 @@ function generateSpecialCharacterString($inputString, $punctuationMark = false) return $inputString; } + +/** + * Cuts the string to the given limit minus the stringlength of the placeholderSign and adds the placeholderSign at the end of the string + * If $keepFilextension is true, the string is checked for a PATHINFO_EXTENSION and the extension is added to the returned string. + * @param string $string The input string to be cutted + * @param integer $limit The length of the returned string (including the placeholderSigns) + * @param string $placeholderSign Optional. Default null. The string to be added at the end of the cutted string. + * @param bool $keepFilextension. Default false. When set to true the + * @return string The cutted string with the placeholderSign at the end + */ +function cutString($string, $limit, $placeholderSign = '', $keepFilextension = false) +{ + $offset = strlen($placeholderSign); + $extension = ''; + if ($keepFilextension) + { + $extension = '.'.pathinfo($string, PATHINFO_EXTENSION); + $offset = $offset + strlen($extension); + } + + if(strlen($string) > ($limit - $offset)) + { + return substr($string, 0, ($limit - $offset)).$placeholderSign.$extension; + } + else + { + return false; + } +} ?> From 33d1afa8f422f7ca23667d1cbc413590b9a7f350 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Mon, 20 Nov 2017 18:29:47 +0100 Subject: [PATCH 040/126] tbl_akte.ausstellungsnation, tbl_akte.formal_geprueft_amum ADD COLUMN ausstellungsnation and formal_geprueft_amum to public.tbl_akte CREATE FUNCTION campus.get_highest_content_version(bigint) --- system/dbupdate_3.3.php | 43 +++++++++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 9f8aaf0f4..96a191bc7 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -481,8 +481,8 @@ if(!@$db->db_query("SELECT insertvon FROM public.tbl_rt_person LIMIT 1")) if(!$db->db_query($qry)) echo 'public.tbl_rt_person '.$db->db_last_error().'
    '; - else - echo '
    Spalte insertvon in public.tbl_rt_person hinzugefügt'; + else + echo '
    Spalte insertvon in public.tbl_rt_person hinzugefügt'; } // ADD COLUMN updateamum to public.tbl_rt_person @@ -492,8 +492,8 @@ if(!@$db->db_query("SELECT updateamum FROM public.tbl_rt_person LIMIT 1")) if(!$db->db_query($qry)) echo 'public.tbl_rt_person '.$db->db_last_error().'
    '; - else - echo '
    Spalte updateamum in public.tbl_rt_person hinzugefügt'; + else + echo '
    Spalte updateamum in public.tbl_rt_person hinzugefügt'; } // ADD COLUMN updatevon to public.tbl_rt_person @@ -503,14 +503,14 @@ if(!@$db->db_query("SELECT updatevon FROM public.tbl_rt_person LIMIT 1")) if(!$db->db_query($qry)) echo 'public.tbl_rt_person '.$db->db_last_error().'
    '; - else - echo '
    Spalte updatevon in public.tbl_rt_person hinzugefügt'; + else + echo '
    Spalte updatevon in public.tbl_rt_person hinzugefügt'; } // Neue Funktion get_highest_content_version if(!@$db->db_query("SELECT campus.get_highest_content_version(0)")) { - $qry = "CREATE FUNCTION campus.get_highest_content_version(bigint) RETURNS smallint + $qry = 'CREATE FUNCTION campus.get_highest_content_version(bigint) RETURNS smallint LANGUAGE plpgsql AS $_$ DECLARE i_content_id ALIAS FOR $1; @@ -526,7 +526,7 @@ if(!@$db->db_query("SELECT campus.get_highest_content_version(0)")) END; $_$; - ALTER FUNCTION campus.get_highest_content_version(bigint) OWNER TO fhcomplete;"; + ALTER FUNCTION campus.get_highest_content_version(bigint) OWNER TO fhcomplete;'; if(!$db->db_query($qry)) echo 'campus.get_highest_content_version(content_id): '.$db->db_last_error().'
    '; @@ -534,7 +534,34 @@ if(!@$db->db_query("SELECT campus.get_highest_content_version(0)")) echo '
    Funktion get_highest_content_version(content_id) hinzugefügt'; } +// ADD COLUMN ausstellungsnation and formal_geprueft_amum to public.tbl_akte +if(!@$db->db_query("SELECT ausstellungsnation FROM public.tbl_akte LIMIT 1")) +{ + $qry = "ALTER TABLE public.tbl_akte ADD COLUMN ausstellungsnation varchar(3); + ALTER TABLE public.tbl_akte ADD CONSTRAINT fk_tbl_akte_ausstellungsnation FOREIGN KEY (ausstellungsnation) REFERENCES bis.tbl_nation(nation_code) ON DELETE RESTRICT ON UPDATE CASCADE; + ALTER TABLE public.tbl_akte ADD COLUMN formal_geprueft_amum timestamp; + COMMENT ON COLUMN public.tbl_akte.ausstellungsnation IS 'Nation-Code des Landes, in dem das Dokument ausgestellt wurde'; + COMMENT ON COLUMN public.tbl_akte.formal_geprueft_amum IS 'Bestaetigungsdatum, an dem das Dokument inhaltlich auf Formalkriterien (Leserlichkeit, Vollständigkeit, etc) geprueft wurde'; + "; + + if(!$db->db_query($qry)) + echo 'public.tbl_rt_person '.$db->db_last_error().'
    '; + else + echo '
    Spalte updatevon in public.tbl_rt_person hinzugefügt'; +} +// ADD COLUMN ausstellungsdetails (boolean) to public.tbl_dokument +if(!@$db->db_query("SELECT ausstellungsdetails FROM public.tbl_akte LIMIT 1")) +{ + $qry = "ALTER TABLE public.tbl_dokument ADD COLUMN ausstellungsdetails boolean NOT NULL DEFAULT false; + COMMENT ON COLUMN public.tbl_dokument.ausstellungsdetails IS 'Sollen beim Dokument weitere Felder (zB Ausstellungsnation) angezeigt werden?'; + "; + + if(!$db->db_query($qry)) + echo 'public.tbl_rt_person '.$db->db_last_error().'
    '; + else + echo '
    Spalte updatevon in public.tbl_rt_person hinzugefügt'; +} //--------------------------------------------------------------------------------------------------------------------- From 4550b0f355a22de93758d01453fde8f90d64d725 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Mon, 20 Nov 2017 18:40:57 +0100 Subject: [PATCH 041/126] BugFix tbl_akte.ausstellungsdetails --- system/dbupdate_3.3.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index fe9d1515a..bea94d3e1 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -551,16 +551,16 @@ if(!@$db->db_query("SELECT ausstellungsnation FROM public.tbl_akte LIMIT 1")) } // ADD COLUMN ausstellungsdetails (boolean) to public.tbl_dokument -if(!@$db->db_query("SELECT ausstellungsdetails FROM public.tbl_akte LIMIT 1")) +if(!@$db->db_query("SELECT ausstellungsdetails FROM public.tbl_dokument LIMIT 1")) { $qry = "ALTER TABLE public.tbl_dokument ADD COLUMN ausstellungsdetails boolean NOT NULL DEFAULT false; COMMENT ON COLUMN public.tbl_dokument.ausstellungsdetails IS 'Sollen beim Dokument weitere Felder (zB Ausstellungsnation) angezeigt werden?'; "; if(!$db->db_query($qry)) - echo 'public.tbl_rt_person '.$db->db_last_error().'
    '; + echo 'public.tbl_dokument '.$db->db_last_error().'
    '; else - echo '
    Spalte updatevon in public.tbl_rt_person hinzugefügt'; + echo '
    Spalte ausstellungsdetails in public.tbl_dokument hinzugefügt'; } From ddfe8ea65d6b5955a80d353bb798302ed50c1fac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Mon, 20 Nov 2017 18:52:24 +0100 Subject: [PATCH 042/126] Removed strange Code --- content/dokumentenakt.pdf.php | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/content/dokumentenakt.pdf.php b/content/dokumentenakt.pdf.php index a4c5ba4c7..a27b8d562 100644 --- a/content/dokumentenakt.pdf.php +++ b/content/dokumentenakt.pdf.php @@ -1,6 +1,4 @@ db_query($query); - + while($row = $db->db_fetch_object($result)) { $docErrors = array(); @@ -237,7 +235,7 @@ foreach($prestudent_ids as $pid) "filename" => $row->titel, "nachgereicht" => ($row->nachgereicht == 't'?'true':'false'), "anmerkung" => $row->anmerkung); - else + else $dokumente[]['dokument'] = array( "name" => $row->bezeichnung, "filename" => $row->aktbezeichnung, @@ -286,7 +284,7 @@ foreach($prestudent_ids as $pid) { if(!isset($errors[$pid])) $errors[$pid] = array(); - + $errors[$pid] = array_merge($errors[$pid], $docErrors); } } @@ -301,14 +299,14 @@ foreach($prestudent_ids as $pid) $bundesland = ''; $heimatBundesland = ''; $zustellBundesland = ''; - + $nation = new nation($prestudent->geburtsnation); $geburtsnation = $nation->kurztext; $nation->load($prestudent->staatsbuergerschaft); $staatsbuergerschaft = $nation->kurztext; $nation->load($prestudent->zgvnation); $zgvnation = $nation->kurztext; - + $svnr = ($prestudent->svnr == '')?($prestudent->ersatzkennzeichen != ''?'Ersatzkennzeichen: '.$prestudent->ersatzkennzeichen:''):$prestudent->svnr; foreach($adresse->result as $row_adresse) @@ -342,7 +340,7 @@ foreach($prestudent_ids as $pid) else $errors[$pid][] = "Es ist ein Fehler bei der Ermittlung des Bundeslandes der Heimatadresse aufgetreten"; } - else + else $errors[$pid][] = "Heimat-Bundesland kann nicht ermittelt werden, da keine Gemeinde eingetragen ist"; } if($row_adresse->zustelladresse) @@ -394,22 +392,22 @@ foreach($prestudent_ids as $pid) { $telefonnummer = $row->kontakt; } - + if ($row->kontakttyp == 'email') { $mailadresse = $row->kontakt; } } - + } // Studiengang der Bewerbung $studiengang = new studiengang(); $studiengang->load($prestudent->studiengang_kz); - + // Datum Bewerbungabgschickt $prestudentstatus = new prestudent(); $prestudentstatus->getLastStatus($pid, '', 'Interessent'); - + // Spezielle Notizen auslesen und aufbereiten $notiz = new notiz(); $notiz->getNotiz('','','','','','',$pid,'','','','','','aufnahme/spezialisierung'); @@ -490,7 +488,7 @@ if(count($errors) == 0 || $force) echo fread($handle, 8192); } fclose($handle); - + } else { From 0512b39ec3f51182f79e134c710392ff5acb9298 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Mon, 20 Nov 2017 20:06:03 +0100 Subject: [PATCH 043/126] Bugfix Function cutString --- include/functions.inc.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/include/functions.inc.php b/include/functions.inc.php index 5fc5e5418..d63aa8f5f 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -1062,6 +1062,10 @@ function cutString($string, $limit, $placeholderSign = '', $keepFilextension = f $extension = '.'.pathinfo($string, PATHINFO_EXTENSION); $offset = $offset + strlen($extension); } + if(($limit - $offset) < 0) + { + return '$placeholderSign must not be shorter than $limit'; + } if(strlen($string) > ($limit - $offset)) { @@ -1069,7 +1073,7 @@ function cutString($string, $limit, $placeholderSign = '', $keepFilextension = f } else { - return false; + return $string; } } ?> From f203956688e1bdb53e32043ddba5a2293410395e Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Mon, 20 Nov 2017 20:06:58 +0100 Subject: [PATCH 044/126] Added new DB-Fields to class tbl_akte: ausstellungsnation, formal_geprueft_amum tbl_dokument: ausstellungsdetails --- include/akte.class.php | 28 ++++++++++++++++++++++------ include/dokument.class.php | 19 ++++++++++++++----- 2 files changed, 36 insertions(+), 11 deletions(-) diff --git a/include/akte.class.php b/include/akte.class.php index dac68cf38..a369c3dda 100644 --- a/include/akte.class.php +++ b/include/akte.class.php @@ -49,6 +49,8 @@ class akte extends basis_db public $titel_intern; public $anmerkung_intern; public $nachgereicht_am; + public $ausstellungsnation; + public $formal_geprueft_amum; /** * Konstruktor @@ -102,6 +104,8 @@ class akte extends basis_db $this->titel_intern = $row->titel_intern; $this->anmerkung_intern = $row->anmerkung_intern; $this->nachgereicht_am = $row->nachgereicht_am; + $this->ausstellungsnation = $row->ausstellungsnation; + $this->formal_geprueft_amum = $row->formal_geprueft_amum; return true; } else @@ -185,7 +189,7 @@ class akte extends basis_db //Neuen Datensatz anlegen $qry = "BEGIN;INSERT INTO public.tbl_akte (person_id, dokument_kurzbz, inhalt, mimetype, erstelltam, gedruckt, titel, bezeichnung, updateamum, updatevon, insertamum, insertvon, uid, dms_id, nachgereicht, anmerkung, - titel_intern, anmerkung_intern, nachgereicht_am) VALUES (". + titel_intern, anmerkung_intern, nachgereicht_am, ausstellungsnation, formal_geprueft_amum) VALUES (". $this->db_add_param($this->person_id, FHC_INTEGER).', '. $this->db_add_param($this->dokument_kurzbz).', '. $this->db_add_param($this->inhalt).', '. @@ -204,7 +208,9 @@ class akte extends basis_db $this->db_add_param($this->anmerkung).','. $this->db_add_param($this->titel_intern).','. $this->db_add_param($this->anmerkung_intern).','. - $this->db_add_param($this->nachgereicht_am).');'; + $this->db_add_param($this->nachgereicht_am).','. + $this->db_add_param($this->ausstellungsnation).','. + $this->db_add_param($this->formal_geprueft_amum).');'; } else { @@ -226,7 +232,9 @@ class akte extends basis_db " anmerkung=".$this->db_add_param($this->anmerkung).",". " titel_intern=".$this->db_add_param($this->titel_intern).",". " anmerkung_intern=".$this->db_add_param($this->anmerkung_intern).",". - " nachgereicht_am=".$this->db_add_param($this->nachgereicht_am). + " nachgereicht_am=".$this->db_add_param($this->nachgereicht_am).",". + " ausstellungsnation=".$this->db_add_param($this->ausstellungsnation).",". + " formal_geprueft_amum=".$this->db_add_param($this->formal_geprueft_amum). " WHERE akte_id=".$this->db_add_param($this->akte_id, FHC_INTEGER); } @@ -283,7 +291,7 @@ class akte extends basis_db akte_id, person_id, dokument_kurzbz, mimetype, erstelltam, gedruckt, titel_intern, anmerkung_intern, titel, bezeichnung, updateamum, insertamum, updatevon, insertvon, uid, dms_id, anmerkung, nachgereicht, CASE WHEN inhalt is not null THEN true ELSE false END as inhalt_vorhanden, - nachgereicht_am + nachgereicht_am, ausstellungsnation, formal_geprueft_amum FROM public.tbl_akte WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER); if($dokument_kurzbz!=null) $qry.=" AND dokument_kurzbz=".$this->db_add_param($dokument_kurzbz); @@ -324,6 +332,8 @@ class akte extends basis_db $akten->titel_intern = $row->titel_intern; $akten->anmerkung_intern = $row->anmerkung_intern; $akten->nachgereicht_am = $row->nachgereicht_am; + $akten->ausstellungsnation = $row->ausstellungsnation; + $akten->formal_geprueft_amum = $row->formal_geprueft_amum; $this->result[] = $akten; } @@ -348,7 +358,8 @@ class akte extends basis_db $qry = "SELECT akte_id, person_id, dokument_kurzbz, mimetype, erstelltam, gedruckt, titel, bezeichnung, updateamum, insertamum, updatevon, insertvon, uid, - dms_id,nachgereicht,anmerkung,titel_intern,anmerkung_intern, nachgereicht_am + dms_id,nachgereicht,anmerkung,titel_intern,anmerkung_intern, nachgereicht_am, + ausstellungsnation, formal_geprueft_amum FROM public.tbl_akte WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER); $qry.=" AND dokument_kurzbz IN ('Lebenslf','Motivat','LearnAgr')"; @@ -380,6 +391,8 @@ class akte extends basis_db $akten->titel_intern = $row->titel_intern; $akten->anmerkung_intern = $row->anmerkung_intern; $akten->nachgereicht_am = $row->nachgereicht_am; + $akten->ausstellungsnation = $row->ausstellungsnation; + $akten->formal_geprueft_amum = $row->formal_geprueft_amum; $this->result[] = $akten; } @@ -403,7 +416,8 @@ class akte extends basis_db $qry = "SELECT akte_id, person_id, dokument_kurzbz, mimetype, erstelltam, gedruckt, titel, bezeichnung, updateamum, insertamum, updatevon, insertvon, uid, - dms_id,nachgereicht,anmerkung,titel_intern,anmerkung_intern, nachgereicht_am + dms_id,nachgereicht,anmerkung,titel_intern,anmerkung_intern, nachgereicht_am, + ausstellungsnation, formal_geprueft_amum FROM public.tbl_akte WHERE dms_id=".$this->db_add_param($dms_id, FHC_INTEGER)." ORDER BY erstelltam"; @@ -433,6 +447,8 @@ class akte extends basis_db $akten->titel_intern = $row->titel_intern; $akten->anmerkung_intern = $row->anmerkung_intern; $akten->nachgereicht_am = $row->nachgereicht_am; + $akten->ausstellungsnation = $row->ausstellungsnation; + $akten->formal_geprueft_amum = $row->formal_geprueft_amum; $this->result[] = $akten; } diff --git a/include/dokument.class.php b/include/dokument.class.php index 335891e4e..7d8b981c2 100644 --- a/include/dokument.class.php +++ b/include/dokument.class.php @@ -35,6 +35,7 @@ class dokument extends basis_db public $nachreichbar; public $bezeichnung_mehrsprachig; public $dokumentbeschreibung_mehrsprachig; + public $ausstellungsdetails = false; public $prestudent_id; public $mitarbeiter_uid; @@ -232,18 +233,20 @@ class dokument extends basis_db $idx = sprache::$index_arr[$key]; $qry.=" dokumentbeschreibung_mehrsprachig[$idx],"; } - $qry.='bezeichnung) VALUES('. + $qry.='bezeichnung, ausstellungsdetails) VALUES('. $this->db_add_param($this->dokument_kurzbz).','; foreach($this->bezeichnung_mehrsprachig as $key=>$value) $qry.=$this->db_add_param($value).','; foreach($this->dokumentbeschreibung_mehrsprachig as $key=>$value) $qry.=$this->db_add_param($value).','; - $qry.= $this->db_add_param($this->bezeichnung).');'; + $qry.= $this->db_add_param($this->bezeichnung).','; + $qry.= $this->db_add_param($this->ausstellungsdetails, FHC_BOOLEAN).');'; } else { $qry = 'UPDATE public.tbl_dokument SET '. - 'bezeichnung = '.$this->db_add_param($this->bezeichnung).','; + 'bezeichnung = '.$this->db_add_param($this->bezeichnung).', '. + 'ausstellungsdetails = '.$this->db_add_param($this->ausstellungsdetails, FHC_BOOLEAN).','; foreach($this->bezeichnung_mehrsprachig as $key=>$value) { $idx = sprache::$index_arr[$key]; @@ -406,6 +409,7 @@ class dokument extends basis_db $dok->pflicht = $this->db_parse_bool($row->pflicht); $dok->nachreichbar = $this->db_parse_bool($row->nachreichbar); $dok->onlinebewerbung = $this->db_parse_bool($row->onlinebewerbung); + $dok->ausstellungsdetails = $this->db_parse_bool($row->ausstellungsdetails); $this->result[] = $dok; } return true; @@ -444,6 +448,7 @@ class dokument extends basis_db $dok->pflicht = $this->db_parse_bool($row->pflicht); $dok->nachreichbar = $this->db_parse_bool($row->nachreichbar); $dok->onlinebewerbung = $this->db_parse_bool($row->onlinebewerbung); + $dok->ausstellungsdetails = $this->db_parse_bool($row->ausstellungsdetails); $this->result[] = $dok; } @@ -466,7 +471,7 @@ class dokument extends basis_db $sprache = new sprache(); $bezeichnung_mehrsprachig = $sprache->getSprachQuery('bezeichnung_mehrsprachig'); $dokumentbeschreibung_mehrsprachig = $sprache->getSprachQuery('dokumentbeschreibung_mehrsprachig'); - $qry = "SELECT dokument_kurzbz, bezeichnung, $bezeichnung_mehrsprachig, $dokumentbeschreibung_mehrsprachig FROM public.tbl_dokument "; + $qry = "SELECT dokument_kurzbz, bezeichnung, ausstellungsdetails, $bezeichnung_mehrsprachig, $dokumentbeschreibung_mehrsprachig FROM public.tbl_dokument "; if($not_in!='') { @@ -484,6 +489,7 @@ class dokument extends basis_db $dok->bezeichnung = $row->bezeichnung; $dok->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row); $dok->dokumentbeschreibung_mehrsprachig = $sprache->parseSprachResult('dokumentbeschreibung_mehrsprachig', $row); + $dok->ausstellungsdetails = $this->db_parse_bool($row->ausstellungsdetails); $this->result[] = $dok; } @@ -641,6 +647,7 @@ class dokument extends basis_db $this->bezeichnung = $row->bezeichnung; $this->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row); $this->dokumentbeschreibung_mehrsprachig = $sprache->parseSprachResult('dokumentbeschreibung_mehrsprachig', $row); + $this->ausstellungsdetails = $this->db_parse_bool($row->ausstellungsdetails); return true; } } @@ -688,6 +695,7 @@ class dokument extends basis_db $dok->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig', $row); $dok->dokumentbeschreibung_mehrsprachig = $sprache->parseSprachResult('dokumentbeschreibung_mehrsprachig', $row); $dok->beschreibung_mehrsprachig = $sprache->parseSprachResult('beschreibung_mehrsprachig', $row); + $dok->ausstellungsdetails = $this->db_parse_bool($row->ausstellungsdetails); $this->result[] = $dok; } @@ -714,7 +722,7 @@ class dokument extends basis_db $dokumentbeschreibung_mehrsprachig = $sprache->getSprachQuery('dokumentbeschreibung_mehrsprachig'); $beschreibung_mehrsprachig = $sprache->getSprachQuery('beschreibung_mehrsprachig'); - $qry = " SELECT DISTINCT dokument_kurzbz, studiengang_kz, + $qry = " SELECT DISTINCT dokument_kurzbz, studiengang_kz, ausstellungsdetails, $dokumentbeschreibung_mehrsprachig, $beschreibung_mehrsprachig FROM public.tbl_dokumentstudiengang JOIN public.tbl_dokument using (dokument_kurzbz) @@ -732,6 +740,7 @@ class dokument extends basis_db $dok->studiengang_kz = $row->studiengang_kz; $dok->dokumentbeschreibung_mehrsprachig = $sprache->parseSprachResult('dokumentbeschreibung_mehrsprachig', $row); $dok->beschreibung_mehrsprachig = $sprache->parseSprachResult('beschreibung_mehrsprachig', $row); + $dok->ausstellungsdetails = $this->db_parse_bool($row->ausstellungsdetails); $this->result[] = $dok; } From 91dc7f04461620c6bba29acac3644992f3a710ba Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Mon, 20 Nov 2017 20:10:41 +0100 Subject: [PATCH 045/126] GUI-Redesign, Rechte besser implementiert MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rechte werden nun bei allen Aktionen (Speichern, toggeln, löschen) richtig abgefragt - WYSIWYG-Editor für Beschreibungstexte - Beschreibungen werden in den Spalten angezeigt --- vilesci/stammdaten/studiengang_dokumente.php | 512 +++++++++++-------- 1 file changed, 309 insertions(+), 203 deletions(-) diff --git a/vilesci/stammdaten/studiengang_dokumente.php b/vilesci/stammdaten/studiengang_dokumente.php index 3dabfe49b..eaee70f97 100644 --- a/vilesci/stammdaten/studiengang_dokumente.php +++ b/vilesci/stammdaten/studiengang_dokumente.php @@ -19,6 +19,7 @@ * * * Authors: Martin Tatzber + * Manfred Kindl * */ require_once('../../config/vilesci.config.inc.php'); @@ -28,16 +29,16 @@ require_once('../../include/dokument.class.php'); require_once('../../include/benutzerberechtigung.class.php'); require_once('../../include/sprache.class.php'); -$stg_kz = isset($_REQUEST['stg_kz']) ? $_REQUEST['stg_kz'] : '0'; +$stg_kz = isset($_REQUEST['stg_kz']) ? $_REQUEST['stg_kz'] : ''; $dokument_kurzbz = isset($_REQUEST['dokument_kurzbz']) ? $_REQUEST['dokument_kurzbz'] : ''; $onlinebewerbung = isset($_REQUEST['onlinebewerbung']); $pflicht = isset($_POST['pflicht']); $nachreichbar = isset($_POST['nachreichbar']); $sprache = new sprache(); -$sprache->getAll(true); +$sprache->getAll(true, 'index'); -$action=isset($_GET['action'])?$_GET['action']:''; +$action = isset($_GET['action'])?$_GET['action']:''; if(isset($_POST['add'])) $action='add'; if(isset($_POST['saveDoc'])) @@ -47,25 +48,28 @@ $uid = get_uid(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($uid); $db = new basis_db(); -if(!$rechte->isBerechtigt('basis/studiengang', $stg_kz, 'suid')) - die('Sie haben keine Berechtigung für diese Seite'); +if(!$rechte->isBerechtigt('assistenz', null, 's')) + die($rechte->errormsg); -if($action=='add') +if($action == 'add') { + if(!$rechte->isBerechtigt('assistenz', $stg_kz, 'sui')) + die($rechte->errormsg); + if($dokument_kurzbz != '' && $stg_kz != '') { - $dokument=new dokument(); + $dokument = new dokument(); $dokument->dokument_kurzbz = $dokument_kurzbz; $dokument->studiengang_kz = $stg_kz; $dokument->onlinebewerbung = $onlinebewerbung; $dokument->pflicht = $pflicht; $dokument->nachreichbar = $nachreichbar; - $beschreibung_mehrsprachig=array(); + $beschreibung_mehrsprachig = array(); foreach($sprache->result as $row_sprache) { if(isset($_POST['beschreibung_mehrsprachig_'.$row_sprache->sprache])) - $beschreibung_mehrsprachig[$row_sprache->sprache]=$_POST['beschreibung_mehrsprachig_'.$row_sprache->sprache]; + $beschreibung_mehrsprachig[$row_sprache->sprache] = $_POST['beschreibung_mehrsprachig_'.$row_sprache->sprache]; } $dokument->beschreibung_mehrsprachig = $beschreibung_mehrsprachig; @@ -73,11 +77,14 @@ if($action=='add') } } -if($action=='delete') +if($action == 'delete') { + if(!$rechte->isBerechtigt('assistenz', $stg_kz, 'suid')) + die($rechte->errormsg); + if($dokument_kurzbz != '' && $stg_kz != '') { - $dokument=new dokument(); + $dokument = new dokument(); if(!$dokument->deleteDokumentStg($dokument_kurzbz, $stg_kz)) echo 'Fehler beim Löschen: '.$dokument->errormsg; } @@ -85,9 +92,12 @@ if($action=='delete') if($action =='toggleonline') { + if(!$rechte->isBerechtigt('assistenz', $stg_kz, 'su')) + die($rechte->errormsg); + if($dokument_kurzbz != '' && $stg_kz != '') { - $dokument=new dokument(); + $dokument = new dokument(); if($dokument->loadDokumentStudiengang($dokument_kurzbz, $stg_kz)) { $dokument->onlinebewerbung = !$dokument->onlinebewerbung; @@ -99,46 +109,57 @@ if($action =='toggleonline') } } -if($action === 'togglepflicht') { - if($dokument_kurzbz != '' && $stg_kz != '') - { - $dokument=new dokument(); - if($dokument->loadDokumentStudiengang($dokument_kurzbz, $stg_kz)) - { - $dokument->pflicht = !$dokument->pflicht; - if(!$dokument->saveDokumentStudiengang()) - echo $dokument->errormsg; - } - else - echo 'Zuordnung ist nicht vorhanden'; - } -} - -if($action === 'togglenachreichbar') { - if($dokument_kurzbz != '' && $stg_kz != '') - { - $dokument=new dokument(); - if($dokument->loadDokumentStudiengang($dokument_kurzbz, $stg_kz)) - { - $dokument->nachreichbar = !$dokument->nachreichbar; - if(!$dokument->saveDokumentStudiengang()) - echo $dokument->errormsg; - } - else - echo 'Zuordnung ist nicht vorhanden'; - } -} - -if($action=='saveDoc') +if($action === 'togglepflicht') { - $dokBezeichnung=isset($_POST['dokument_bezeichnung'])?$_POST['dokument_bezeichnung']:''; - $dokKurzbz=isset($_POST['dokument_kurzbz'])?$_POST['dokument_kurzbz']:''; + if(!$rechte->isBerechtigt('assistenz', $stg_kz, 'su')) + die($rechte->errormsg); - if($dokBezeichnung!='') + if($dokument_kurzbz != '' && $stg_kz != '') { - $dokument=new dokument(); - $dokument->dokument_kurzbz=$dokKurzbz; - $dokument->bezeichnung=$dokBezeichnung; + $dokument = new dokument(); + if($dokument->loadDokumentStudiengang($dokument_kurzbz, $stg_kz)) + { + $dokument->pflicht = !$dokument->pflicht; + if(!$dokument->saveDokumentStudiengang()) + echo $dokument->errormsg; + } + else + echo 'Zuordnung ist nicht vorhanden'; + } +} + +if($action === 'togglenachreichbar') +{ + if(!$rechte->isBerechtigt('assistenz', $stg_kz, 'su')) + die($rechte->errormsg); + + if($dokument_kurzbz != '' && $stg_kz != '') + { + $dokument = new dokument(); + if($dokument->loadDokumentStudiengang($dokument_kurzbz, $stg_kz)) + { + $dokument->nachreichbar = !$dokument->nachreichbar; + if(!$dokument->saveDokumentStudiengang()) + echo $dokument->errormsg; + } + else + echo 'Zuordnung ist nicht vorhanden'; + } +} + +if($action == 'saveDoc') +{ + if(!$rechte->isBerechtigt('assistenz', $stg_kz, 'sui')) + die($rechte->errormsg); + + $dokBezeichnung = isset($_POST['dokument_bezeichnung'])?$_POST['dokument_bezeichnung']:''; + $dokKurzbz = isset($_POST['dokument_kurzbz'])?$_POST['dokument_kurzbz']:''; + + if($dokBezeichnung != '') + { + $dokument = new dokument(); + $dokument->dokument_kurzbz = $dokKurzbz; + $dokument->bezeichnung = $dokBezeichnung; if($dokument->saveDokument(true)) { @@ -156,22 +177,21 @@ echo ' - - - - - - + + '; + include('../../include/meta/jquery.php'); + include('../../include/meta/jquery-tablesorter.php'); + + echo ' Zuordnung Studiengang - Dokumente '; - -if(isset($_GET['action']) && $_GET['action']=='dokumenttypen') +// Verwaltung der Dokumenttypen +if(isset($_GET['action']) && $_GET['action'] == 'dokumenttypen') { + if(!$rechte->isBerechtigt('admin', null, 'suid')) + die($rechte->errormsg); + echo '

    Dokumenttypen

    '; + echo 'Zurück zu Dokumenten Zuteilung

    '; if(isset($_GET['type'])) { - if($_GET['type']=='delete') + if($_GET['type'] == 'delete') { $dokument = new dokument(); if(!$dokument->deleteDokumenttyp($_GET['dokument_kurzbz'])) @@ -219,26 +264,27 @@ if(isset($_GET['action']) && $_GET['action']=='dokumenttypen') if(isset($_POST['saveDokumenttyp'])) { $dokument = new dokument(); - $dokument->dokument_kurzbz=$_POST['dokument_kurzbz']; + $dokument->dokument_kurzbz = $_POST['dokument_kurzbz']; $dokument->bezeichnung = $_POST['dokument_bezeichnung']; - if(isset($_POST['neu']) && $_POST['neu']=='true') - $neu=true; + $dokument->ausstellungsdetails = isset($_POST['ausstellungsdetails'])?true:false; + if(isset($_POST['neu']) && $_POST['neu'] == 'true') + $neu = true; else - $neu=false; + $neu = false; - $bezeichnung_mehrsprachig=array(); + $bezeichnung_mehrsprachig = array(); foreach($sprache->result as $row_sprache) { if(isset($_POST['bezeichnung_mehrsprachig_'.$row_sprache->sprache])) - $bezeichnung_mehrsprachig[$row_sprache->sprache]=$_POST['bezeichnung_mehrsprachig_'.$row_sprache->sprache]; + $bezeichnung_mehrsprachig[$row_sprache->sprache] = $_POST['bezeichnung_mehrsprachig_'.$row_sprache->sprache]; } $dokument->bezeichnung_mehrsprachig = $bezeichnung_mehrsprachig; - $dokumentbeschreibung_mehrsprachig=array(); + $dokumentbeschreibung_mehrsprachig = array(); foreach($sprache->result as $row_sprache) { if(isset($_POST['dokumentbeschreibung_mehrsprachig_'.$row_sprache->sprache])) - $dokumentbeschreibung_mehrsprachig[$row_sprache->sprache]=$_POST['dokumentbeschreibung_mehrsprachig_'.$row_sprache->sprache]; + $dokumentbeschreibung_mehrsprachig[$row_sprache->sprache] = $_POST['dokumentbeschreibung_mehrsprachig_'.$row_sprache->sprache]; } $dokument->dokumentbeschreibung_mehrsprachig = $dokumentbeschreibung_mehrsprachig; @@ -246,17 +292,69 @@ if(isset($_GET['action']) && $_GET['action']=='dokumenttypen') echo $dokument->errormsg; } + $dokument = new dokument(); + if(isset($_GET['type']) && $_GET['type'] == 'edit') + { + $dokument->loadDokumenttyp($_GET['dokument_kurzbz']); + } + + echo'
    + + + + + + + + + + + + + '; + foreach($sprache->result as $s) + { + echo ''; + echo ''; + } + echo ' + + + + + +
    Kurzbezeichnung + dokument_kurzbz != ''?'disabled':'').' value="'.$dokument->dokument_kurzbz.'"/> + + +
    Bezeichnung Intern + +
    Ausstellungsdetails + ausstellungsdetails == true?'checked':'').'> +  Sollen beim Dokument weitere Felder (zB Ausstellungsnation) angezeigt werden? +
    Bezeichnung '.$s->bezeichnung_arr[$s->sprache].''; + echo ''; + echo '
    Beschreibung '.$s->bezeichnung_arr[$s->sprache].''; + echo '

    +

    '; + $dokument = new dokument(); $dokument->getAllDokumente(); - + echo ' - - + + '; + foreach ($sprache->result as $sprache_row) + { + echo ''; + echo ''; + } + echo' '; foreach($dokument->result as $row) @@ -273,75 +371,27 @@ if(isset($_GET['action']) && $_GET['action']=='dokumenttypen') echo ' - - '; - } - - $dokument_kurzbz=''; - $dokument_bezeichnung=''; - - if(isset($_GET['type']) && $_GET['type']=='edit') - { - $dokument = new dokument(); - if($dokument->loadDokumenttyp($_GET['dokument_kurzbz'])) + + '; + foreach ($sprache->result as $sprache_row) { - $dokument_kurzbz = $dokument->dokument_kurzbz; - $dokument_bezeichnung = $dokument->bezeichnung; + echo ''; + echo ''; } + echo''; } - - echo ' - -
    KurzbzBezeichnung
    Bezeichnung InternAusstellungsdetailsBezeichnung '.$sprache_row->bezeichnung_arr[$sprache_row->sprache].'Beschreibung '.$sprache_row->bezeichnung_arr[$sprache_row->sprache].'
    '.$row->dokument_kurzbz.''.$row->bezeichnung.'
    '.cutString($row->bezeichnung, 50, ' [...]').''.($row->ausstellungsdetails == true?'true':'').''.cutString($row->bezeichnung_mehrsprachig[$sprache_row->sprache], 50, ' [...]').''.cutString($db->convert_html_chars($row->dokumentbeschreibung_mehrsprachig[$sprache_row->sprache]), 20, ' [...]').'
    -
    - - - - - - - - - - - - - '; - foreach($sprache->result as $s) - { - echo ' - - - - '; - foreach($sprache->result as $s) - { - echo ''; - } - - echo ' - - - - - -
    Kurzbezeichnung - - -
    Bezeichnung - -
    Bezeichnung Mehrsprachig
    '.$s->sprache.''; - echo ''; - } - echo ' -
    Dokumentbeschreibung Mehrsprachig
    '.$s->sprache.''; - echo '
    -












    '; + echo ''; + + echo'






    '; } else { - $studiengang=new studiengang(); + $studiengang = new studiengang(); $studiengang->getAll('typ, kurzbz'); + $types = new studiengang(); + $types->getAllTypes(); + $typ = ''; + $kuerzel = ''; echo '

    Zuteilung Studiengang - Dokumente

    @@ -349,101 +399,157 @@ else
    -
    - Dokumenttypen verwalten -
    + '; + if($rechte->isBerechtigt('admin', null, 'suid')) + { + echo ' + Dokumenttypen verwalten + '; + } + echo'
    '; - if($stg_kz!='') + if($stg_kz != '') { echo ' - - - - - - - + '; + $spaltenzaehler = 0; + foreach ($sprache->result as $sprache_row) + { + $spaltenzaehler = $spaltenzaehler+2; + echo ''; + echo ''; + } + if($rechte->isBerechtigt('assistenz', $stg_kz, 'su')) + { + echo' + + + '; + } + echo''; - $dokStg=new dokument(); + + $dokStg = new dokument(); $dokStg->getDokumente($stg_kz); - $zugewieseneDokumente=array(); + $dok_stg = new dokument(); + + $zugewieseneDokumente = array(); + $beschreibung = ''; + foreach($dokStg->result as $dok) { - $zugewieseneDokumente[]=$dok->dokument_kurzbz; - $checked_onlinebewerbung = $dok->onlinebewerbung ? 'true' : 'false'; - $checked_pflicht = $dok->pflicht ? 'true' : 'false'; - $checked_nachreichbar = $dok->nachreichbar ? 'true' : 'false'; - echo ' - - - - - - - '; + $dok_stg->loadDokumentStudiengang($dok->dokument_kurzbz, $stg_kz); + + $zugewieseneDokumente[] = $dok->dokument_kurzbz; + $checked_onlinebewerbung = $dok->onlinebewerbung ? 'true' : 'false'; + $checked_pflicht = $dok->pflicht ? 'true' : 'false'; + $checked_nachreichbar = $dok->nachreichbar ? 'true' : 'false'; + echo ''; + foreach ($sprache->result as $sprache_row) + { + $beschreibung = ''; + echo ''; + if ($dok->dokumentbeschreibung_mehrsprachig[$sprache_row->sprache] != '') + $beschreibung = 'Allgemein: '.cutString($dok->dokumentbeschreibung_mehrsprachig[$sprache_row->sprache], 50, ' [...]').'
    '; + if ($dok_stg->beschreibung_mehrsprachig[$sprache_row->sprache] != '') + $beschreibung .= ''.$kuerzel.': '.cutString($dok_stg->beschreibung_mehrsprachig[$sprache_row->sprache], 50, ' [...]'); + + echo ''; + } + if($rechte->isBerechtigt('assistenz', $stg_kz, 'su')) + { + echo' + + + '; + } + echo''; } - $dok = new dokument(); - if($action=='edit') + $dok_stg = new dokument(); + $dokument = new dokument(); + if($action == 'edit') { - if(!$dok->loadDokumentStudiengang($dokument_kurzbz, $stg_kz)) - die('Failed to load:'.$dok->errormsg); + if(!$dok_stg->loadDokumentStudiengang($dokument_kurzbz, $stg_kz)) + die('Failed to load:'.$dok_stg->errormsg); + + if(!$dokument->loadDokumenttyp($dokument_kurzbz)) + die('Failed to load:'.$dokument->errormsg); } - echo ' - - + echo ''; + + if($rechte->isBerechtigt('assistenz', $stg_kz, 'su')) + { + echo ' - + + + + + + '; } - echo ''; - echo '
    DokumentnameOnline-BewerbungPflichtNachreichbar
    Bezeichnung '.$sprache_row->bezeichnung_arr[$sprache_row->sprache].'Beschreibung '.$sprache_row->bezeichnung_arr[$sprache_row->sprache].'Online-BewerbungPflichtNachreichbar
    '.$dok->bezeichnung.' - - -
    '.$dok->bezeichnung_mehrsprachig[$sprache_row->sprache].''.$beschreibung.''; + if($rechte->isBerechtigt('assistenz', $stg_kz, 'su')) + echo ''; + if($rechte->isBerechtigt('assistenz', $stg_kz, 'suid')) + echo ' +
    '; + echo ''; + foreach($sprache->result as $s) + { + echo ''; + echo ''; + } + echo '
    Studiengangsspezifische Beschreibung '.$s->bezeichnung_arr[$s->sprache].''; + echo '

    Allgemeine Beschreibung '.$s->bezeichnung_arr[$s->sprache].'

    '.$dokument->dokumentbeschreibung_mehrsprachig[$s->sprache].'
    '; + echo '
    + onlinebewerbung?'checked="checked"':'').'> + pflicht?'checked="checked"':'').'> + + nachreichbar?'checked="checked"':'').'> +
    '; - foreach($sprache->result as $s) - { - echo ''; - } - echo '
    Beschreibung '.$s->sprache.''; - echo '
    '; - echo ' - - onlinebewerbung?'checked="checked"':'').'> - - pflicht?'checked="checked"':'').'> - - - nachreichbar?'checked="checked"':'').'> - - - - - - - '; + echo' '; } else echo ''; From ee3998f62ed25ce07fe5cbc9bb98f69fbb025320 Mon Sep 17 00:00:00 2001 From: Paolo Date: Wed, 22 Nov 2017 12:08:54 +0100 Subject: [PATCH 046/126] - Changed system/dbupdate_3.3.php to create table system.tbl_filters and what its needed - Added model system/Filters_model to manage system.tbl_filters - Removed method execQuery from model system/UDF_model - Added property executedQueryMetaData to DB_Model - Added property executedQueryListFields to DB_Model - Added method getExecutedQueryListFields to DB_Model - Added method getExecutedQueryMetaData to DB_Model - Added method execReadOnlyQuery to DB_Model to execute read only queries from outside a model - Changed DB_Model method _toPhp to store infos about an executed query into properties executedQueryMetaData and executedQueryListFields - Updated library UDFLib to use execReadOnlyQuery - Added widget FilterWidget to render and manage a filter into VileSci - Added views widgets/filter/selectFields, widgets/filter/selectFilters and widgets/filter/tableDataset used by FilterWidget --- application/controllers/system/Test.php | 38 +++ application/core/DB_Model.php | 58 ++++- application/libraries/UDFLib.php | 2 +- application/models/system/Filters_model.php | 14 ++ application/models/system/UDF_model.php | 95 +++----- .../views/widgets/filter/selectFields.php | 20 ++ .../views/widgets/filter/selectFilters.php | 20 ++ .../views/widgets/filter/tableDataset.php | 9 + application/widgets/FilterWidget.php | 61 +++++ system/dbupdate_3.3.php | 220 ++++++++++++++++++ 10 files changed, 468 insertions(+), 69 deletions(-) create mode 100644 application/controllers/system/Test.php create mode 100644 application/models/system/Filters_model.php create mode 100644 application/views/widgets/filter/selectFields.php create mode 100644 application/views/widgets/filter/selectFilters.php create mode 100644 application/views/widgets/filter/tableDataset.php create mode 100644 application/widgets/FilterWidget.php diff --git a/application/controllers/system/Test.php b/application/controllers/system/Test.php new file mode 100644 index 000000000..f22898a34 --- /dev/null +++ b/application/controllers/system/Test.php @@ -0,0 +1,38 @@ +load->library('WidgetLib'); + } + + /** + * + */ + public function index() + { + echo $this->widgetlib->widget( + 'FilterWidget', + array( + 'app' => 'OpenProject', + 'datasetName' => 'Arbeitspakete', + 'query' => ' + SELECT p.person_id AS PersonId, + p.nachname AS Nachname, + p.vorname AS Vorname, + k.kontakt AS Email + FROM public.tbl_person p INNER JOIN public.tbl_kontakt k USING(person_id) + WHERE p.aktiv = TRUE + AND p.person_id = k.person_id + AND k.kontakttyp = \'email\' + AND p.person_id < 1000 + ' + ) + ); + } +} diff --git a/application/core/DB_Model.php b/application/core/DB_Model.php index ab5ab2768..e6bd31114 100644 --- a/application/core/DB_Model.php +++ b/application/core/DB_Model.php @@ -23,6 +23,9 @@ class DB_Model extends FHC_Model protected $hasSequence; // False if this table has a composite primary key that is not using a sequence // True if this table has a primary key that uses a sequence + private $executedQueryMetaData; + private $executedQueryListFields; + /** * Constructor */ @@ -670,6 +673,44 @@ class DB_Model extends FHC_Model return $this->fieldExists(UDFLib::COLUMN_NAME); } + /** + * Get the list of the fields after having executed a query + */ + public function getExecutedQueryListFields() + { + return $this->executedQueryListFields; + } + + /** + * Get meda data info about the retrived fields after having executed a query + */ + public function getExecutedQueryMetaData() + { + return $this->executedQueryMetaData; + } + + /** + * Like execQuery, but it allows only to perform queries to read data + */ + public function execReadOnlyQuery($query, $parametersArray = null) + { + // + if (!stripos($query, 'INSERT') + && !stripos($query, 'UPDATE') + && !stripos($query, 'DELETE') + && !stripos($query, 'CREATE') + && !stripos($query, 'ALTER') + && !stripos($query, 'GRANT') + && !stripos($query, 'DROP')) + { + return $this->execQuery($query, $parametersArray); + } + else + { + return error('You are allowed to run only query for reading data'); + } + } + // ------------------------------------------------------------------------------------------ // Protected methods @@ -809,20 +850,23 @@ class DB_Model extends FHC_Model if (is_object($result)) { $toBeConverterdArray = array(); // Fields to be converted - $metaDataArray = $result->field_data(); // Fields information - for ($i = 0; $i < count($metaDataArray); $i++) // Looking for booleans and arrays + + $this->executedQueryMetaData = $result->field_data(); // Fields information + $this->executedQueryListFields = $result->list_fields(); // List of the retrived fields + + for ($i = 0; $i < count($this->executedQueryMetaData); $i++) // Looking for booleans and arrays { // If array type, boolean type OR a UDF - if (strpos($metaDataArray[$i]->type, DB_Model::PGSQL_ARRAY_TYPE) !== false - || $metaDataArray[$i]->type == DB_Model::PGSQL_BOOLEAN_TYPE - || $this->udflib->isUDFColumn($metaDataArray[$i]->name, $metaDataArray[$i]->type)) + if (strpos($this->executedQueryMetaData[$i]->type, DB_Model::PGSQL_ARRAY_TYPE) !== false + || $this->executedQueryMetaData[$i]->type == DB_Model::PGSQL_BOOLEAN_TYPE + || $this->udflib->isUDFColumn($this->executedQueryMetaData[$i]->name, $this->executedQueryMetaData[$i]->type)) { // Name and type of the field to be converted $toBeConverted = new stdClass(); // Set the type of the field to be converted - $toBeConverted->type = $metaDataArray[$i]->type; + $toBeConverted->type = $this->executedQueryMetaData[$i]->type; // Set the name of the field to be converted - $toBeConverted->name = $metaDataArray[$i]->name; + $toBeConverted->name = $this->executedQueryMetaData[$i]->name; // Add the field to be converted to $toBeConverterdArray array_push($toBeConverterdArray, $toBeConverted); } diff --git a/application/libraries/UDFLib.php b/application/libraries/UDFLib.php index 1e16c11ac..2d453f068 100644 --- a/application/libraries/UDFLib.php +++ b/application/libraries/UDFLib.php @@ -625,7 +625,7 @@ class UDFLib elseif (isset($jsonSchema->{UDFLib::LIST_VALUES}->sql)) { // UDFModel is loaded in method _loadUDF that is called before the current method - $queryResult = $this->_ci->UDFModel->execQuery($jsonSchema->{UDFLib::LIST_VALUES}->sql); + $queryResult = $this->_ci->UDFModel->execReadOnlyQuery($jsonSchema->{UDFLib::LIST_VALUES}->sql); if (hasData($queryResult)) { $parameters = $queryResult->retval; diff --git a/application/models/system/Filters_model.php b/application/models/system/Filters_model.php new file mode 100644 index 000000000..546e2a5fd --- /dev/null +++ b/application/models/system/Filters_model.php @@ -0,0 +1,14 @@ +dbTable = 'system.tbl_filters'; + $this->pk = 'filter_id'; + } +} diff --git a/application/models/system/UDF_model.php b/application/models/system/UDF_model.php index e9bef54f6..ae9a91a69 100644 --- a/application/models/system/UDF_model.php +++ b/application/models/system/UDF_model.php @@ -6,10 +6,10 @@ class UDF_model extends DB_Model const STRING_NULL = 'null'; const STRING_TRUE = 'true'; const STRING_FALSE = 'false'; - + const UDF_DROPDOWN_TYPE = 'dropdown'; const UDF_MULTIPLEDROPDOWN_TYPE = 'multipledropdown'; - + /** * Constructor */ @@ -20,41 +20,14 @@ class UDF_model extends DB_Model $this->pk = array('schema', 'table'); $this->hasSequence = false; } - - /** - * Override DB_Model method execQuery to allow only to perform queries to read data - */ - public function execQuery($query, $parametersArray = null) - { - // - if ( - ( - substr($query, 0, 6) == 'SELECT' - || substr($query, 0, 4) == 'WITH' - ) - && - ( - !stripos($query, 'INSERT') - && !stripos($query, 'UPDATE') - && !stripos($query, 'DELETE') - ) - ) - { - return parent::execQuery($query, $parametersArray); - } - else - { - return error('You are allowed to run only query for reading data'); - } - } - + /** * Returns all the UDF for this table */ public function getUDFsDefinitions($schemaAndTable) { $st = $this->getSchemaAndTable($schemaAndTable); - + $this->addSelect(UDFLib::COLUMN_JSON_DESCRIPTION); $udfResults = $this->loadWhere( array( @@ -62,13 +35,13 @@ class UDF_model extends DB_Model 'table' => $st->table ) ); - + return $udfResults; } // ------------------------------------------------------------------------------------ // These methods work only with the this version of FAS, not with the future versions - + /** * Methods to save data from FAS */ @@ -77,53 +50,53 @@ class UDF_model extends DB_Model $result = error('No way man!'); $resultPerson = success('person'); $resultPrestudent = success('prestudent'); - + $person_id = $udfs['person_id']; unset($udfs['person_id']); - + $prestudent_id = $udfs['prestudent_id']; unset($udfs['prestudent_id']); - + $jsons = array(); - - // + + // if (isset($person_id)) { // Load model Person_model $this->load->model('person/Person_model', 'PersonModel'); - + $result = $this->load(array('public', 'tbl_person')); if (isSuccess($result) && count($result->retval) == 1) { $jsons = json_decode($result->retval[0]->jsons); } - + $udfs = $this->_fillMissingTextUDF($udfs, $jsons); $udfs = $this->_fillMissingChkboxUDF($udfs, $jsons); $udfs = $this->_fillMissingDropdownUDF($udfs, $jsons); - + $resultPerson = $this->PersonModel->update($person_id, $udfs); } - - // + + // if (isset($prestudent_id)) { // Load model Prestudent_model $this->load->model('crm/Prestudent_model', 'PrestudentModel'); - + $result = $this->load(array('public', 'tbl_prestudent')); if (isSuccess($result) && count($result->retval) == 1) { $jsons = json_decode($result->retval[0]->jsons); } - + $udfs = $this->_fillMissingTextUDF($udfs, $jsons); $udfs = $this->_fillMissingChkboxUDF($udfs, $jsons); $udfs = $this->_fillMissingDropdownUDF($udfs, $jsons); - + $resultPrestudent = $this->PrestudentModel->update($prestudent_id, $udfs); } - + if (isSuccess($resultPerson) && isSuccess($resultPrestudent)) { $result = success(array($resultPerson->retval, $resultPrestudent->retval)); @@ -136,17 +109,17 @@ class UDF_model extends DB_Model { $result = $resultPrestudent; } - + return $result; } - + /** - * + * */ private function _fillMissingChkboxUDF($udfs, $jsons) { $_fillMissingChkboxUDF = $udfs; - + foreach($jsons as $udfDescription) { if ($udfDescription->{UDFLib::TYPE} == UDFLib::CHKBOX_TYPE) @@ -168,17 +141,17 @@ class UDF_model extends DB_Model } } } - + return $_fillMissingChkboxUDF; } - + /** - * + * */ private function _fillMissingDropdownUDF($udfs, $jsons) { $_fillMissingDropdownUDF = $udfs; - + foreach($jsons as $udfDescription) { if ($udfDescription->{UDFLib::TYPE} == UDF_model::UDF_DROPDOWN_TYPE @@ -194,17 +167,17 @@ class UDF_model extends DB_Model } } } - + return $_fillMissingDropdownUDF; } - + /** - * + * */ private function _fillMissingTextUDF($udfs, $jsons) { $_fillMissingTextUDF = $udfs; - + foreach($jsons as $udfDescription) { if ($udfDescription->{UDFLib::TYPE} == 'textarea' @@ -220,7 +193,7 @@ class UDF_model extends DB_Model } } } - + return $_fillMissingTextUDF; } -} \ No newline at end of file +} diff --git a/application/views/widgets/filter/selectFields.php b/application/views/widgets/filter/selectFields.php new file mode 100644 index 000000000..a4f11dbfb --- /dev/null +++ b/application/views/widgets/filter/selectFields.php @@ -0,0 +1,20 @@ +
    + $value) + { + echo ''; + } + ?> +
    +
    + Add: + +
    diff --git a/application/views/widgets/filter/selectFilters.php b/application/views/widgets/filter/selectFilters.php new file mode 100644 index 000000000..72f963b57 --- /dev/null +++ b/application/views/widgets/filter/selectFilters.php @@ -0,0 +1,20 @@ +
    + $value) + { + echo $value->name.' - '.$value->type.'
    '; + } + ?> +
    +
    + Add filter: + +
    diff --git a/application/views/widgets/filter/tableDataset.php b/application/views/widgets/filter/tableDataset.php new file mode 100644 index 000000000..6927a0923 --- /dev/null +++ b/application/views/widgets/filter/tableDataset.php @@ -0,0 +1,9 @@ +
    + retval; + foreach ($result as $key => $value) + { + var_dump($value); + } + ?> +
    diff --git a/application/widgets/FilterWidget.php b/application/widgets/FilterWidget.php new file mode 100644 index 000000000..721fd7c55 --- /dev/null +++ b/application/widgets/FilterWidget.php @@ -0,0 +1,61 @@ +load->model('system/Filters_model', 'FiltersModel'); + + $this->app = $widgetData['app']; + $this->datasetName = $widgetData['datasetName']; + + $dataset = $this->FiltersModel->execReadOnlyQuery($widgetData['query']); + + $this->loadViewSelectFields($this->FiltersModel->getExecutedQueryListFields()); + + $this->loadViewSelectFilters($this->FiltersModel->getExecutedQueryMetaData()); + + $this->loadViewTableDataset($dataset); + } + + /** + * + */ + private function loadViewSelectFields($listFields) + { + $this->view('widgets/filter/selectFields', array('listFields' => $listFields)); + } + + /** + * + */ + private function loadViewSelectFilters($metaData) + { + $this->view('widgets/filter/selectFilters', array('metaData' => $metaData)); + } + + /** + * + */ + private function loadViewTableDataset($result) + { + $this->view('widgets/filter/tableDataset', array('dataset' => $result)); + } +} diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 55b272bab..771a3f5e7 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -674,6 +674,225 @@ if ($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berech //--------------------------------------------------------------------------------------------------------------------- +//--------------------------------------------------------------------------------------------------------------------- +// Start filters + +// SEQUENCE tbl_filters_id_seq +if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'tbl_filters_id_seq'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = ' + CREATE SEQUENCE system.tbl_filters_id_seq + START WITH 1 + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + '; + if(!$db->db_query($qry)) + echo 'system.tbl_filters_id_seq '.$db->db_last_error().'
    '; + else + echo '
    Created sequence: system.tbl_filters_id_seq'; + + // GRANT SELECT, UPDATE ON SEQUENCE system.tbl_filters_id_seq TO vilesci; + $qry = 'GRANT SELECT, UPDATE ON SEQUENCE system.tbl_filters_id_seq TO vilesci;'; + if (!$db->db_query($qry)) + echo 'system.tbl_filters_id_seq '.$db->db_last_error().'
    '; + else + echo '
    Granted privileges to vilesci on system.tbl_filters_id_seq'; + + // GRANT SELECT, UPDATE ON SEQUENCE system.tbl_filters_id_seq TO fhcomplete; + $qry = 'GRANT SELECT, UPDATE ON SEQUENCE system.tbl_filters_id_seq TO fhcomplete;'; + if (!$db->db_query($qry)) + echo 'system.tbl_filters_id_seq '.$db->db_last_error().'
    '; + else + echo '
    Granted privileges to vilesci on system.tbl_filters_id_seq'; + } +} + +// TABLE system.tbl_filters +if (!@$db->db_query("SELECT 0 FROM system.tbl_filters WHERE 0 = 1")) +{ + $qry = ' + CREATE TABLE system.tbl_filters ( + filter_id integer NOT NULL DEFAULT nextval(\'system.tbl_filters_id_seq\'::regclass), + app character varying(32) NOT NULL, + dataset_name character varying(128) NOT NULL, + filter_kurzbz character varying(64) NOT NULL, + person_id integer, + description character varying(128)[] NOT NULL, + sort integer, + default_filter boolean DEFAULT FALSE, + filter jsonb NOT NULL, + oe_kurzbz character varying(16) + );'; + if (!$db->db_query($qry)) + echo 'system.tbl_filters '.$db->db_last_error().'
    '; + else + echo '
    Created table system.tbl_filters'; + + // GRANT SELECT ON TABLE system.tbl_filters TO web; + $qry = 'GRANT SELECT ON TABLE system.tbl_filters TO web;'; + if (!$db->db_query($qry)) + echo 'system.tbl_filters '.$db->db_last_error().'
    '; + else + echo '
    Granted privileges to web on system.tbl_filters'; + + // GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE system.tbl_filters TO vilesci; + $qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE system.tbl_filters TO vilesci;'; + if (!$db->db_query($qry)) + echo 'system.tbl_filters '.$db->db_last_error().'
    '; + else + echo '
    Granted privileges to vilesci on system.tbl_filters'; + + // COMMENT ON TABLE system.tbl_filters + $qry = 'COMMENT ON TABLE system.tbl_filters IS \'Table to manage filters\';'; + if (!$db->db_query($qry)) + echo 'Adding comment to system.tbl_filters: '.$db->db_last_error().'
    '; + else + echo '
    Added comment to system.tbl_filters'; + + // COMMENT ON TABLE system.tbl_filters.app + $qry = 'COMMENT ON COLUMN system.tbl_filters.app IS \'Application which this filter belongs to\';'; + if (!$db->db_query($qry)) + echo 'Adding comment to system.tbl_filters.app: '.$db->db_last_error().'
    '; + else + echo '
    Added comment to system.tbl_filters.app'; + + // COMMENT ON TABLE system.tbl_filters.dataset_name + $qry = 'COMMENT ON COLUMN system.tbl_filters.dataset_name IS \'Name that identifies the data set to be filtered\';'; + if (!$db->db_query($qry)) + echo 'Adding comment to system.tbl_filters.dataset_name: '.$db->db_last_error().'
    '; + else + echo '
    Added comment to system.tbl_filters.dataset_name'; + + // COMMENT ON TABLE system.tbl_filters.filter_kurzbz + $qry = 'COMMENT ON COLUMN system.tbl_filters.filter_kurzbz IS \'Short description of the filter, unique for this application and this data set\';'; + if (!$db->db_query($qry)) + echo 'Adding comment to system.tbl_filters.filter_kurzbz: '.$db->db_last_error().'
    '; + else + echo '
    Added comment to system.tbl_filters.filter_kurzbz'; + + // COMMENT ON TABLE system.tbl_filters.person_id + $qry = 'COMMENT ON COLUMN system.tbl_filters.person_id IS \'Person identifier which this filter belongs to. If null it is global\';'; + if (!$db->db_query($qry)) + echo 'Adding comment to system.tbl_filters.person_id: '.$db->db_last_error().'
    '; + else + echo '
    Added comment to system.tbl_filters.person_id'; + + // COMMENT ON TABLE system.tbl_filters.description + $qry = 'COMMENT ON COLUMN system.tbl_filters.description IS \'Long description for this filter\';'; + if (!$db->db_query($qry)) + echo 'Adding comment to system.tbl_filters.description: '.$db->db_last_error().'
    '; + else + echo '
    Added comment to system.tbl_filters.description'; + + // COMMENT ON TABLE system.tbl_filters.sort + $qry = 'COMMENT ON COLUMN system.tbl_filters.sort IS \'Indicates the order in which the filters appear in a list\';'; + if (!$db->db_query($qry)) + echo 'Adding comment to system.tbl_filters.sort: '.$db->db_last_error().'
    '; + else + echo '
    Added comment to system.tbl_filters.sort'; + + // COMMENT ON TABLE system.tbl_filters.default_filter + $qry = 'COMMENT ON COLUMN system.tbl_filters.default_filter IS \'If it is the default filter for that data set\';'; + if (!$db->db_query($qry)) + echo 'Adding comment to system.tbl_filters.default_filter: '.$db->db_last_error().'
    '; + else + echo '
    Added comment to system.tbl_filters.default_filter'; + + // COMMENT ON TABLE system.tbl_filters.filter + $qry = 'COMMENT ON COLUMN system.tbl_filters.filter IS \'Cointains json that define the filter\';'; + if (!$db->db_query($qry)) + echo 'Adding comment to system.tbl_filters.filter: '.$db->db_last_error().'
    '; + else + echo '
    Added comment to system.tbl_filters.filter'; + + // COMMENT ON TABLE system.tbl_filters.oe_kurzbz + $qry = 'COMMENT ON COLUMN system.tbl_filters.oe_kurzbz IS \'Organisation unit which this filter belongs to. If null it is for all the organisation units\';'; + if (!$db->db_query($qry)) + echo 'Adding comment to system.tbl_filters.oe_kurzbz: '.$db->db_last_error().'
    '; + else + echo '
    Added comment to system.tbl_filters.oe_kurzbz'; + + // ALTER SEQUENCE system.tbl_filters_id_seq OWNED BY system.tbl_filters.filter_id; + $qry = 'ALTER SEQUENCE system.tbl_filters_id_seq OWNED BY system.tbl_filters.filter_id;'; + if (!$db->db_query($qry)) + echo 'system.tbl_filters_id_seq '.$db->db_last_error().'
    '; + else + echo '
    Altered sequence system.tbl_filters_id_seq'; +} + +// UNIQUE INDEX uidx_filters_app_dataset_name_filter_kurzbz +if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'uidx_filters_app_dataset_name_filter_kurzbz'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = 'CREATE UNIQUE INDEX uidx_filters_app_dataset_name_filter_kurzbz ON system.tbl_filters USING btree (app, dataset_name, filter_kurzbz);'; + if (!$db->db_query($qry)) + echo 'uidx_filters_app_dataset_name_filter_kurzbz '.$db->db_last_error().'
    '; + else + echo '
    Created unique uidx_filters_app_dataset_name_filter_kurzbz'; + } +} + +// Add permission for filters +if ($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berechtigung_kurzbz = 'system/filters';")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO system.tbl_berechtigung (berechtigung_kurzbz, beschreibung) VALUES('system/filters', 'To manage core filters');"; + if (!$db->db_query($qry)) + echo 'system.tbl_berechtigung '.$db->db_last_error().'
    '; + else + echo ' system.tbl_berechtigung: Added permission for filters
    '; + } +} + +// FOREIGN KEY tbl_filters_app_fkey +if ($result = $db->db_query("SELECT conname FROM pg_constraint WHERE conname = 'tbl_filters_app_fkey'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = 'ALTER TABLE system.tbl_filters ADD CONSTRAINT tbl_filters_app_fkey FOREIGN KEY (app) REFERENCES system.tbl_app(app) ON UPDATE CASCADE ON DELETE RESTRICT;'; + if (!$db->db_query($qry)) + echo 'tbl_filters_app_fkey '.$db->db_last_error().'
    '; + else + echo '
    Created foreign key tbl_filters_app_fkey'; + } +} + +// FOREIGN KEY tbl_filters_person_id_fkey +if ($result = $db->db_query("SELECT conname FROM pg_constraint WHERE conname = 'tbl_filters_person_id_fkey'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = 'ALTER TABLE system.tbl_filters ADD CONSTRAINT tbl_filters_person_id_fkey FOREIGN KEY (person_id) REFERENCES public.tbl_person(person_id) ON UPDATE CASCADE ON DELETE RESTRICT;'; + if (!$db->db_query($qry)) + echo 'tbl_filters_person_id_fkey '.$db->db_last_error().'
    '; + else + echo '
    Created foreign key tbl_filters_person_id_fkey'; + } +} + +// FOREIGN KEY tbl_filters_oe_kurzbz_fkey +if ($result = $db->db_query("SELECT conname FROM pg_constraint WHERE conname = 'tbl_filters_oe_kurzbz_fkey'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = 'ALTER TABLE system.tbl_filters ADD CONSTRAINT tbl_filters_oe_kurzbz_fkey FOREIGN KEY (oe_kurzbz) REFERENCES public.tbl_organisationseinheit(oe_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;'; + if (!$db->db_query($qry)) + echo 'tbl_filters_oe_kurzbz_fkey '.$db->db_last_error().'
    '; + else + echo '
    Created foreign key tbl_filters_oe_kurzbz_fkey'; + } +} + +// End filters +//--------------------------------------------------------------------------------------------------------------------- + + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

    Pruefe Tabellen und Attribute!

    '; @@ -923,6 +1142,7 @@ $tabellen=array( "system.tbl_benutzerrolle" => array("benutzerberechtigung_id","rolle_kurzbz","berechtigung_kurzbz","uid","funktion_kurzbz","oe_kurzbz","art","studiensemester_kurzbz","start","ende","negativ","updateamum", "updatevon","insertamum","insertvon","kostenstelle_id","anmerkung"), "system.tbl_berechtigung" => array("berechtigung_kurzbz","beschreibung"), "system.tbl_extensions" => array("extension_id","name","version","description","license","url","core_version","dependencies","enabled"), + "system.tbl_filters" => array("filter_id","app","dataset_name","filter_kurzbz","person_id","description","sort","default_filter","filter","oe_kurzbz"), "system.tbl_phrase" => array("phrase_id","app","phrase","insertamum","insertvon"), "system.tbl_phrasentext" => array("phrasentext_id","phrase_id","sprache","orgeinheit_kurzbz","orgform_kurzbz","text","description","insertamum","insertvon"), "system.tbl_rolle" => array("rolle_kurzbz","beschreibung"), From c105363fd034290c0502d3007d17e924f8f899d3 Mon Sep 17 00:00:00 2001 From: Paolo Date: Wed, 22 Nov 2017 15:33:44 +0100 Subject: [PATCH 047/126] First preview completed --- application/controllers/system/Test.php | 9 +-- application/views/widgets/filter/filter.php | 15 +++++ .../views/widgets/filter/selectFilters.php | 41 +++++++++++++- .../views/widgets/filter/tableDataset.php | 55 ++++++++++++++++--- application/widgets/FilterWidget.php | 21 +++++-- 5 files changed, 124 insertions(+), 17 deletions(-) create mode 100644 application/views/widgets/filter/filter.php diff --git a/application/controllers/system/Test.php b/application/controllers/system/Test.php index f22898a34..67e82c7d3 100644 --- a/application/controllers/system/Test.php +++ b/application/controllers/system/Test.php @@ -22,10 +22,11 @@ class Test extends VileSci_Controller 'app' => 'OpenProject', 'datasetName' => 'Arbeitspakete', 'query' => ' - SELECT p.person_id AS PersonId, - p.nachname AS Nachname, - p.vorname AS Vorname, - k.kontakt AS Email + SELECT p.person_id AS "PersonId", + p.nachname AS "Nachname", + p.vorname AS "Vorname", + k.kontakt AS "Email", + p.aktiv AS "Aktiv" FROM public.tbl_person p INNER JOIN public.tbl_kontakt k USING(person_id) WHERE p.aktiv = TRUE AND p.person_id = k.person_id diff --git a/application/views/widgets/filter/filter.php b/application/views/widgets/filter/filter.php new file mode 100644 index 000000000..542708900 --- /dev/null +++ b/application/views/widgets/filter/filter.php @@ -0,0 +1,15 @@ +
    + view('widgets/filter/selectFields', array('listFields' => $listFields)); ?> +
    + +
    + +
    + view('widgets/filter/selectFilters', array('metaData' => $metaData)); ?> +
    + +
    + +
    + view('widgets/filter/tableDataset', array('dataset' => $dataset)); ?> +
    diff --git a/application/views/widgets/filter/selectFilters.php b/application/views/widgets/filter/selectFilters.php index 72f963b57..ff3995727 100644 --- a/application/views/widgets/filter/selectFilters.php +++ b/application/views/widgets/filter/selectFilters.php @@ -2,7 +2,46 @@ $value) { - echo $value->name.' - '.$value->type.'
    '; + echo '
    '; + echo $value->name; + + if ($value->type == 'int4') + { + ?> + + + + + type == 'varchar') + { + ?> + + + + type == 'bool') + { + ?> + + + '; } ?>
    diff --git a/application/views/widgets/filter/tableDataset.php b/application/views/widgets/filter/tableDataset.php index 6927a0923..83ca7b95f 100644 --- a/application/views/widgets/filter/tableDataset.php +++ b/application/views/widgets/filter/tableDataset.php @@ -1,9 +1,50 @@ + + + + + + + + + + + +
    - retval; - foreach ($result as $key => $value) - { - var_dump($value); - } - ?> + + + + + + + + + + + + retval; + foreach ($result as $key => $value) + { + ?> + + + + + + + + + +
    PersonIdNachnameVornameEmailAktiv
    PersonId; ?>Nachname; ?>Vorname; ?>Email; ?>Aktiv === true ? 'True' : 'False'; ?>
    diff --git a/application/widgets/FilterWidget.php b/application/widgets/FilterWidget.php index 721fd7c55..a7715aa57 100644 --- a/application/widgets/FilterWidget.php +++ b/application/widgets/FilterWidget.php @@ -28,11 +28,22 @@ class FilterWidget extends Widget $dataset = $this->FiltersModel->execReadOnlyQuery($widgetData['query']); - $this->loadViewSelectFields($this->FiltersModel->getExecutedQueryListFields()); + $listFields = $this->FiltersModel->getExecutedQueryListFields(); - $this->loadViewSelectFilters($this->FiltersModel->getExecutedQueryMetaData()); + $metaData = $this->FiltersModel->getExecutedQueryMetaData(); - $this->loadViewTableDataset($dataset); + $this->loadViewFilters($listFields, $metaData, $dataset); + } + + /** + * + */ + private function loadViewFilters($listFields, $metaData, $dataset) + { + $this->view( + 'widgets/filter/filter', + array('listFields' => $listFields, 'metaData' => $metaData, 'dataset' => $dataset) + ); } /** @@ -54,8 +65,8 @@ class FilterWidget extends Widget /** * */ - private function loadViewTableDataset($result) + private function loadViewTableDataset($dataset) { - $this->view('widgets/filter/tableDataset', array('dataset' => $result)); + $this->view('widgets/filter/tableDataset', array('dataset' => $dataset)); } } From 1638bfdff2a1b51241c97fede33c4476c7d85a18 Mon Sep 17 00:00:00 2001 From: oesi Date: Fri, 24 Nov 2017 14:22:24 +0100 Subject: [PATCH 048/126] Mitarbeiter mit negativer Personalnummer werden nicht mehr im Verteiler tw_lkt aufgenommen --- system/mlists/mlists_generate.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/system/mlists/mlists_generate.php b/system/mlists/mlists_generate.php index b1e024ac9..55454c322 100644 --- a/system/mlists/mlists_generate.php +++ b/system/mlists/mlists_generate.php @@ -134,7 +134,8 @@ $error_msg=''; FROM public.tbl_mitarbeiter JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid) WHERE lektor - AND aktiv"; + AND aktiv + AND personalnummer >=0"; //MitarbeiterInnen mit gueltiger Funktion "ass" (assistenz) $verteilerArray['tw_sek']['bezeichnung'] = 'Alle Sekretariate'; $verteilerArray['tw_sek']['beschreibung'] = 'Alle Sekretariate an der FH Technikum Wien'; From 73ae230cf03109fa3753975e8ff3bc455621c315 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 24 Nov 2017 14:31:43 +0100 Subject: [PATCH 049/126] =?UTF-8?q?Added=20"Notenspiegel=5Ferweitert"=20ex?= =?UTF-8?q?cel=20export=20for=20color=20highlighting=20of=20negative=20mar?= =?UTF-8?q?ks=20and=20Nachpr=C3=BCfungen.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/fas.xul.php | 7 + content/fasoverlay.js.php | 26 + content/statistik/notenspiegel_erweitert.php | 639 +++++++++++++++++++ include/note.class.php | 66 +- include/pruefungstermin.class.php | 21 +- locale/de-AT/fas.dtd | 4 + locale/de-SFU/fas.dtd | 4 + system/dbupdate_3.3.php | 69 +- 8 files changed, 803 insertions(+), 33 deletions(-) create mode 100644 content/statistik/notenspiegel_erweitert.php diff --git a/content/fas.xul.php b/content/fas.xul.php index 282a6580a..fd1eb09e9 100644 --- a/content/fas.xul.php +++ b/content/fas.xul.php @@ -109,6 +109,7 @@ foreach($addon_obj->result as $addon) + @@ -357,6 +358,12 @@ foreach($addon_obj->result as $addon) label = "&menu-statistic-notenspiegel-excel.label;" command = "menu-statistic-notenspiegel-excel:command" accesskey = "&menu-statistic-notenspiegel-excel.accesskey;"/> + content/statistik/notenspiegel.php?studiengang_kz='+studiengang_kz+'&semester='+semester+'&typ='+typ+'&orgform='+orgform,'Notenspiegel'); } +// **** +// * Liefert eine HTML Liste mit Uebersicht ueber die eingetragenen Noten +// * Studiengang und optional Semester muss gewaehlt sein. +// **** +function StatistikPrintNotenspiegelErweitert(typ) +{ + tree = document.getElementById('tree-verband'); + + if(tree.currentIndex==-1) + { + alert('Bitte zuerst einen Studiengang auswaehlen'); + return; + } + + //Studiengang und Semester holen + var col; + col = tree.columns ? tree.columns["stg_kz"] : "stg_kz"; + var studiengang_kz=tree.view.getCellText(tree.currentIndex,col); + col = tree.columns ? tree.columns["sem"] : "sem"; + var semester=tree.view.getCellText(tree.currentIndex,col); + col = tree.columns ? tree.columns["tree-verband-col-orgform"] : "tree-verband-col-orgform"; + var orgform=tree.view.getCellText(tree.currentIndex,col); + + window.open('content/statistik/notenspiegel_erweitert.php?studiengang_kz='+studiengang_kz+'&semester='+semester+'&typ='+typ+'&orgform='+orgform,'Notenspiegel'); +} + // **** // * Liefert eine statistik ueber die Anzahl der Interessenten/Bewerber Studenten // **** diff --git a/content/statistik/notenspiegel_erweitert.php b/content/statistik/notenspiegel_erweitert.php new file mode 100644 index 000000000..700148b74 --- /dev/null +++ b/content/statistik/notenspiegel_erweitert.php @@ -0,0 +1,639 @@ +, + * Andreas Oesterreicher , + * Rudolf Hangl and + * Alexei Karpenko + */ +/** + * Erstellt einen Notenspiegel + * + * Parameter: studiengang_kz ... Studiengang der angezeigt werden soll + * semester ... Semester das angezeigt werden soll + * orgform ... Filter für Organisationsform (VZ | BB | FST | etc) + * typ ... Output format (xls | html) + * + * Listet alle Noten der Studierenden des Studiengangs/Semester im eingestellten Studiensemester + * und berechnet den Notendurchschnitt und gewichteten Notendurchschnitt. + * + * Gewichteter Notendurchschnitt = (Note der LV) * (ECTS der LV) / (Summe aller ECTS) + */ +require_once('../../config/vilesci.config.inc.php'); +require_once('../../include/functions.inc.php'); +require_once('../../include/studiengang.class.php'); +require_once('../../include/person.class.php'); +require_once('../../include/benutzer.class.php'); +require_once('../../include/student.class.php'); +require_once('../../include/prestudent.class.php'); +require_once('../../include/note.class.php'); +require_once('../../include/lehrveranstaltung.class.php'); +require_once('../../include/pruefungstermin.class.php'); +require_once('../../include/benutzerberechtigung.class.php'); +require_once('../../include/Excel/excel.php'); + +$db = new basis_db(); +$user = get_uid(); +loadVariables($user); + +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($user); + +if (!isset($_GET['studiengang_kz'])) + die('Falsche Parameteruebergabe'); +else + $studiengang_kz = $_GET['studiengang_kz']; + +if (!$rechte->isBerechtigt('student/noten', $studiengang_kz, 's')) + die('Sie haben keine Berechtigung fuer diese Seite'); + +$semester = isset($_GET['semester']) ? $_GET['semester'] : ''; +$typ = isset($_GET['typ']) ? $_GET['typ'] : ''; + +if ($semester == '') + die('Bitte ein Semester auswaehlen'); + +$orgform = isset($_GET['orgform']) ? $_GET['orgform'] : ''; + +$stg = new studiengang(); +$stg_arr = array(); +$stg->getAll(false); +foreach ($stg->result as $studiengang) + $stg_arr[$studiengang->studiengang_kz] = $studiengang->kuerzel; + +$stg = new studiengang(); +$stg->load($studiengang_kz); + +$student = new student(); +$result_student = $student->getStudents($studiengang_kz, $semester, null, null, null, $semester_aktuell); +$uids = ''; +foreach ($result_student as $row) +{ + if ($uids != '') + $uids .= ','; + $uids .= $db->db_add_param($row->uid); +} +if ($uids == '') + die('Es befinden sich keine Studierende in diesem Semester'); + +$qry = "SELECT + lehrveranstaltung_id, bezeichnung, studiengang_kz, semester, ects + FROM + lehre.tbl_lehrveranstaltung + WHERE + lehrveranstaltung_id IN + ( + SELECT + distinct lehrveranstaltung_id + FROM + campus.vw_student_lehrveranstaltung, public.tbl_studentlehrverband + WHERE + tbl_studentlehrverband.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER)." AND + tbl_studentlehrverband.semester=".$db->db_add_param($semester, FHC_INTEGER)." AND + vw_student_lehrveranstaltung.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." AND + uid=student_uid AND + vw_student_lehrveranstaltung.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz + ) + AND studiengang_kz<>0 + UNION + SELECT + lehrveranstaltung_id, bezeichnung, studiengang_kz, semester, ects + FROM + lehre.tbl_lehrveranstaltung JOIN lehre.tbl_zeugnisnote USING(lehrveranstaltung_id) + WHERE + tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_INTEGER)." AND + tbl_zeugnisnote.student_uid in($uids) AND + tbl_zeugnisnote.studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." + ORDER BY bezeichnung"; + +if (!$result_lva = $db->db_query($qry)) + die('Fehler beim Ermitteln der Lehrveranstaltungen'); + +$noten = new note(); +$noten->getActive(); +$noten_arr = $noten_bezeichnungen = $noten_farben = $noten_positiv = array(); + +$pruefungstermin = new pruefungstermin(); + +$termine = $pruefungstermin->getAllPruefungstypen(false, true); + +$terminbez = 'Termin'; +$kommPruef = 'kommPruef'; +$zusKommPruef = 'zusKommPruef'; + +//null Werte und undefiniert rausfiltern +$termine = array_filter($termine, function ($termin) +{ + return !(is_null($termin->beschreibung) || $termin->pruefungstyp_kurzbz == 'undefiniert'); +}); + +$termineWithSort = array_filter($termine, function ($termin) +{ + return is_numeric($termin->sort); +}); + +$nulltermine = array_filter($termine, function ($termin) +{ + return is_null($termin->sort); +}); + +//keine Werte in sort Spalte - es wird versucht, Reihenfolge aufgrund Strings zu bestimmen +//zuerst Termine 1 - n, dann kommissionelle und zusätzliche kommissionelle +$max = 0; +foreach ($nulltermine as $termin) +{ + if (preg_match('/^'.$terminbez.'\d+$/', $termin->pruefungstyp_kurzbz)) + { + if (preg_match_all('/\d+/', $termin->pruefungstyp_kurzbz, $numbers)) + { + $number = intval(end($numbers[0])); + $termin->sort = $number; + if ($number > $max) + $max = $number; + } + } +} + +foreach ($nulltermine as $termin) +{ + if ($termin->pruefungstyp_kurzbz == $kommPruef || $termin->pruefungstyp_kurzbz == $zusKommPruef) + { + $termin->sort = ++$max; + } +} + +usort($nulltermine, function ($termina, $terminb) +{ + return is_null($termina->sort) ? 1 : (is_null($terminb->sort) ? -1 : $termina->sort - $terminb->sort); +}); + +$termine = array_merge($termineWithSort, $nulltermine); + +//Farben für Prüfungsantritte (1. Termin, 2., kommissionelle...) +$colors = array('ffff00', 'fa9200', 'ff1500', '800000', '9400D3', '1500ff', '305041', '00fff2', '00ff2b'); +$colorsForPositiv = array('ffffff', 'ffdfb3', 'ffb9b3', 'ff9494', 'ddb3ff', '7366ff', '80b39b', 'b3fffb', 'b3ffbf'); + +$counter = 0; +foreach ($termine as $termin) +{ + $terminkurzbz = $termin->pruefungstyp_kurzbz; + $pruefungsart_farben[$terminkurzbz] = $colors[$counter]; + $pruefungsart_farben[$terminkurzbz.'Pos'] = $colorsForPositiv[$counter]; + $counter++; +} + +foreach ($noten->result as $row) +{ + $noten_arr[$row->note] = $row->anmerkung; + $noten_wert[$row->note] = $row->notenwert; + $noten_bezeichnungen[$row->note] = $row->bezeichnung; + $noten_farben[$row->note] = $row->farbe; + $noten_positiv[$row->note] = $row->positiv; +} + +if ($typ == 'xls') +{ + // Creating a workbook + $workbook = new Spreadsheet_Excel_Writer(); + $workbook->setVersion(8); + // sending HTTP headers + $workbook->send("Notenliste_".$semester_aktuell."_".$stg->kuerzel.($semester != '' ? '_'.$semester : '').".xls"); + + // Creating a worksheet + $worksheet =& $workbook->addWorksheet("Notenliste"); + $worksheet->setInputEncoding('utf-8'); + + //Formate Definieren + $format_bold =& $workbook->addFormat(); + $format_bold->setBold(); + $format_bold->setBorder(1); + + $format_bold_wrap =& $workbook->addFormat(); + $format_bold_wrap->setBold(); + $format_bold_wrap->setBorder(1); + $format_bold_wrap->setTextWrap(); + + $format_rotate =& $workbook->addFormat(); + $format_rotate->setTextRotation(270); + $format_rotate->setAlign('center'); + + $format_bold_center =& $workbook->addFormat(); + $format_bold_center->setBold(); + $format_bold_center->setAlign('center'); + $format_bold_center->setBorder(1); + + $format_bold_noborder =& $workbook->addFormat(); + $format_bold_noborder->setBold(); + + $format_number =& $workbook->addFormat(); + $format_number->setNumFormat('0.00'); + $format_number->setBorder(1); + + //Farben ueberschreiben + foreach ($noten_farben as $note => $farbe) + { + if ($farbe != '') + { + $workbook->setCustomColor( + $note + 10, + hexdec(substr($farbe, 0, 2)), + hexdec(substr($farbe, 2, 2)), + hexdec(substr($farbe, 4, 2)) + ); + } + else + { + $workbook->setCustomColor($note + 10, 255, 255, 255); + } + + $format_colored[$note] =& $workbook->addFormat(); + $format_colored[$note]->setFgColor($note + 10); + $format_colored[$note]->setBorder(1); + $format_colored[$note]->setAlign('center'); + } + + $counter = 1; + + foreach ($pruefungsart_farben as $art => $farbe) + { + //eigene Farben für Indizes 40 + definieren + $colornumber = 40 + $counter; + $workbook->setCustomColor( + $colornumber, + hexdec(substr($farbe, 0, 2)), + hexdec(substr($farbe, 2, 2)), + hexdec(substr($farbe, 4, 2)) + ); + $format_colored[$art] =& $workbook->addFormat(); + $format_colored[$art]->setFgColor($colornumber); + $format_colored[$art]->setBorder(1); + $format_colored[$art]->setAlign('center'); + $counter++; + } + + //30 = Grau = Nicht teilgenommen + $workbook->setCustomColor(30, 90, 90, 90); + + $format_colored_nichtzugeteilt =& $workbook->addFormat(); + $format_colored_nichtzugeteilt->setFgColor(30); + $format_colored_nichtzugeteilt->setBorder(1); + $format_colored_nichtzugeteilt->setAlign('center'); + + $format_colored_nichteingetragen =& $workbook->addFormat(); + $format_colored_nichteingetragen->setFgColor(19); + $format_colored_nichteingetragen->setBorder(1); + $format_colored_nichteingetragen->setAlign('center'); + + $spalte = 0; + $zeile = 1; + + $worksheet->write($zeile, $spalte, 'Nachname', $format_bold); + $maxlength[$spalte] = 10; + $worksheet->write($zeile, ++$spalte, 'Vorname', $format_bold); + $maxlength[$spalte] = 10; + $worksheet->write($zeile, ++$spalte, 'Personenkennzeichen', $format_bold); + $maxlength[$spalte] = 30; + $maxheaderheight = 20; + + while ($row_lva = $db->db_fetch_object($result_lva)) + { + $value = $stg_arr[$row_lva->studiengang_kz].$row_lva->semester.' '.$row_lva->bezeichnung.' ('.$row_lva->ects.' ECTS)'; + $worksheet->write($zeile, ++$spalte, $value, $format_rotate); + $maxlength[$spalte] = 3; + + if (mb_strlen($value) > $maxheaderheight) + $maxheaderheight = mb_strlen($value); + } + $anzahl_lvspalten = $spalte - 2; + + $worksheet->write($zeile, ++$spalte, 'Notendurchschnitt', $format_bold); + $maxlength[$spalte] = 15; + $worksheet->write($zeile, ++$spalte, "Gewichteter\nNotendurchschnitt", $format_bold_wrap); + $maxlength[$spalte] = 15; + + $anzahl_lv = array(); + $summe_lv = array(); + $summegewichtet = 0; + $anzahlgewichtet = 0; + foreach ($result_student as $row_student) + { + if ($orgform != '') + { + //Wenn der Student nicht die passende orgform hat (VZ,BB,FST, etc) + //dann nicht anzeigen + $prestudent = new prestudent(); + $prestudent->getLastStatus($row_student->prestudent_id); + + if ($prestudent->orgform_kurzbz != $orgform) + continue; + } + $zeile++; + $spalte = 0; + + $worksheet->write($zeile, $spalte, $row_student->nachname, $format_bold); + if ($maxlength[$spalte] < strlen($row_student->nachname)) + $maxlength[$spalte] = strlen($row_student->nachname); + $worksheet->write($zeile, ++$spalte, $row_student->vorname, $format_bold); + if ($maxlength[$spalte] < strlen($row_student->vorname)) + $maxlength[$spalte] = strlen($row_student->vorname); + $worksheet->write($zeile, ++$spalte, $row_student->matrikelnr, $format_bold); + + //Alle Zeugnisnoten des Studierenden holen + $noten = array(); + $qry = "SELECT * FROM lehre.tbl_zeugnisnote WHERE student_uid=".$db->db_add_param($row_student->uid)." AND studiensemester_kurzbz=".$db->db_add_param($semester_aktuell); + if ($result = $db->db_query($qry)) + while ($row = $db->db_fetch_object($result)) + $noten[$row->lehrveranstaltung_id] = $row->note; + + //Zu jeder Lehrveranstaltungsnote Prüfungstyp (Anzahl der Antritte) holen + $pruefungstypen = array(); + $qry = "SELECT tbl_lehrveranstaltung.lehrveranstaltung_id, pruefungstyp_kurzbz, sort, datum + FROM + lehre.tbl_pruefung + JOIN + lehre.tbl_lehreinheit using(lehreinheit_id) + JOIN + lehre.tbl_lehrveranstaltung using(lehrveranstaltung_id) + WHERE + student_uid=".$db->db_add_param($row_student->uid)." AND studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." + ORDER BY lehrveranstaltung_id, sort, datum"; + if ($result = $db->db_query($qry)) + { + while ($row = $db->db_fetch_object($result)) + { + $pruefungstypen[$row->lehrveranstaltung_id] = $row->pruefungstyp_kurzbz; + } + } + + //Alle LVs holen zu denen der Studierende zugeteilt ist + $zugeteilte_lvs = array(); + $qry = "SELECT distinct lehrveranstaltung_id + FROM + campus.vw_student_lehrveranstaltung + WHERE + uid=".$db->db_add_param($row_student->uid)." AND + studiensemester_kurzbz=".$db->db_add_param($semester_aktuell); + + if ($result = $db->db_query($qry)) + while ($row = $db->db_fetch_object($result)) + $zugeteilte_lvs[] = $row->lehrveranstaltung_id; + + $anzahl = 0; + $summe = 0; + $rowcount = 0; + $summeects = 0; + $gewichtetenote = 0; + + while ($rowcount < $db->db_num_rows($result_lva)) + { + $row_lva = $db->db_fetch_object($result_lva, $rowcount); + $rowcount++; + //wenn es eine Note gibt + if (isset($noten[$row_lva->lehrveranstaltung_id])) + { + $note = $noten[$row_lva->lehrveranstaltung_id]; + $format = 0; + + //wenn für die LV der Studierende eine Nachprüfung hat (z.B. 2 Termin, kommissionelle...) + if (isset($pruefungstypen[$row_lva->lehrveranstaltung_id])) + { + $pruefungstyp = $pruefungstypen[$row_lva->lehrveranstaltung_id]; + if (isset($format_colored[$pruefungstyp])) + { + //wenn es eine Farbe für die Art der Nachprüfung gibt, diese verwenden (positiv oder negativ) + $format = ($noten_positiv[$note]) ? $format_colored[$pruefungstyp."Pos"] : $format_colored[$pruefungstyp]; + } + } + //keine Nachprüfung aber negativ - 1. Antritt Farbe wenn es eine Notenanmerkung gibt + else if (!$noten_positiv[$note] && $noten_arr[$note] != '' && isset($noten_arr[$note])) + { + reset($pruefungsart_farben); + $format = $format_colored[key($pruefungsart_farben)]; + } + else if (isset($format_colored[$note])) + $format = $format_colored[$note]; + + $worksheet->write($zeile, ++$spalte, $noten_arr[$note], $format); + + if ($noten_wert[$noten[$row_lva->lehrveranstaltung_id]] != '') + { + if (!isset($summe_lv[$row_lva->lehrveranstaltung_id])) + { + $summe_lv[$row_lva->lehrveranstaltung_id] = 0; + $anzahl_lv[$row_lva->lehrveranstaltung_id] = 0; + } + $summe_lv[$row_lva->lehrveranstaltung_id] += $noten_wert[$noten[$row_lva->lehrveranstaltung_id]]; + $anzahl_lv[$row_lva->lehrveranstaltung_id]++; + $summe += $noten_wert[$noten[$row_lva->lehrveranstaltung_id]]; + if (is_numeric($row_lva->ects)) + { + $gewichtetenote += $noten_wert[$noten[$row_lva->lehrveranstaltung_id]] * $row_lva->ects; + $summeects += $row_lva->ects; + } + $anzahl++; + } + } + else + { + //Keine Note fuer diese LV vorhanden + if (in_array($row_lva->lehrveranstaltung_id, $zugeteilte_lvs)) + { + $worksheet->write($zeile, ++$spalte, '', $format_colored_nichteingetragen); + } + else + { + $worksheet->write($zeile, ++$spalte, '', $format_colored_nichtzugeteilt); + } + } + } + + if ($anzahl != 0) + $schnitt = $summe / $anzahl; + else + $schnitt = 0; + + if ($summeects != 0) + $gewichtetenote /= $summeects; + + $worksheet->write($zeile, ++$spalte, sprintf("%.2f", $schnitt), $format_number); + $worksheet->write($zeile, ++$spalte, sprintf("%.2f", $gewichtetenote), $format_number); + if ($gewichtetenote != 0) + { + $summegewichtet += $gewichtetenote; + $anzahlgewichtet++; + } + } + $zeile++; + $spalte = 2; + $worksheet->write($zeile, $spalte, 'Notendurchschnitt', $format_bold); + + $summe_schnitt = 0; + $anzahl_schnitt = 0; + $rowcount = 0; + while ($rowcount < $db->db_num_rows($result_lva)) + { + $row_lva = $db->db_fetch_object($result_lva, $rowcount); + $rowcount++; + if (isset($summe_lv[$row_lva->lehrveranstaltung_id])) + { + if ($anzahl_lv[$row_lva->lehrveranstaltung_id] != 0) + $schnitt = $summe_lv[$row_lva->lehrveranstaltung_id] / $anzahl_lv[$row_lva->lehrveranstaltung_id]; + else + $schnitt = 0; + } + else + $schnitt = 0; + if ($schnitt != 0) + { + $summe_schnitt += $schnitt; + $anzahl_schnitt++; + } + $worksheet->write($zeile, ++$spalte, sprintf("%.2f", $schnitt), $format_number); + } + + if ($anzahl_schnitt != 0) + $schnitt = $summe_schnitt / $anzahl_schnitt; + else + $schnitt = 0; + $worksheet->write($zeile, ++$spalte, sprintf("%.2f", $schnitt), $format_number); + if ($anzahlgewichtet != 0) + $summegewichtet = $summegewichtet / $anzahlgewichtet; + $worksheet->write($zeile, ++$spalte, sprintf("%.2f", $summegewichtet), $format_number); + + $zeile += 5; + $legendzeile = $zeile; + $startcolumn = 2; + + //Farblegende + $bezeichnungen = array(); + foreach ($termine as $termin) + $bezeichnungen[$termin->pruefungstyp_kurzbz] = $termin->beschreibung; + + $worksheet->setMerge($legendzeile, $startcolumn, $legendzeile, $startcolumn + 4); + $worksheet->write($legendzeile, $startcolumn, "Farblegende Prüfungsantritte", $format_bold_center); + $worksheet->write($legendzeile, $startcolumn + 4, "", $format_bold_center); + $legendzeile++; + $worksheet->write($legendzeile, $startcolumn, "Termin", $format_bold_center); + $worksheet->setMerge($legendzeile, $startcolumn + 1, $legendzeile, $startcolumn + 2); + $worksheet->write($legendzeile, $startcolumn + 1, "positiv", $format_bold_center); + $worksheet->setMerge($legendzeile, $startcolumn + 3, $legendzeile, $startcolumn + 4); + $worksheet->write($legendzeile, $startcolumn + 3, "negativ", $format_bold_center); + $worksheet->write($legendzeile, $startcolumn + 4, "", $format_bold_center); + $legendzeile++; + foreach ($bezeichnungen as $name => $bezeichnung) + { + if (strstr($bezeichnung, PHP_EOL)) + $worksheet->setRow($legendzeile, 25); + $worksheet->write($legendzeile, $startcolumn, $bezeichnung, $format_bold); + $worksheet->setMerge($legendzeile, $startcolumn + 1, $legendzeile, $startcolumn + 2); + $worksheet->write($legendzeile, $startcolumn + 1, "", $format_colored[$name.'Pos']); + $worksheet->setMerge($legendzeile, $startcolumn + 3, $legendzeile, $startcolumn + 4); + $worksheet->write($legendzeile, $startcolumn + 3, "", $format_colored[$name]); + $worksheet->write($legendzeile, $startcolumn + 4, "", $format_colored[$name]); + $legendzeile++; + } + $worksheet->write($legendzeile, $startcolumn, "nicht eingetragen", $format_bold); + $worksheet->setMerge($legendzeile, $startcolumn + 1, $legendzeile, $startcolumn + 4); + $worksheet->write($legendzeile, $startcolumn + 1, "", $format_colored_nichteingetragen); + $worksheet->write($legendzeile, $startcolumn + 4, "", $format_colored_nichteingetragen); + $legendzeile++; + $worksheet->write($legendzeile, $startcolumn, "nicht zugeteilt", $format_bold); + $worksheet->setMerge($legendzeile, $startcolumn + 1, $legendzeile, $startcolumn + 4); + $worksheet->write($legendzeile, $startcolumn + 1, "", $format_colored_nichtzugeteilt); + $worksheet->write($legendzeile, $startcolumn + 4, "", $format_colored_nichtzugeteilt); + + $startcolumn = $currentcolumn = 9; + + //Notenlegende + //optimale Länge in kleinsten Einheiten - Notenspalten + $optimalLengthBeschr = 6; + $groesse = $toMerge = 0; + $beschrColumnMerges = array(0, 0); + $index = 0; + + foreach ($beschrColumnMerges as $toMerge) + { + $groesse = 0; + while ($groesse < $optimalLengthBeschr) + { + if ($currentcolumn < 3 + $anzahl_lvspalten) + { + $groesse++; + } + else if ($currentcolumn < 3 + $anzahl_lvspalten + 2) + { + $groesse += 4; + } + else + { + $groesse += 2; + } + $currentcolumn++; + $beschrColumnMerges[$index]++; + } + $currentcolumn++; + $index++; + } + + $allmerges = array($beschrColumnMerges[0], 1, $beschrColumnMerges[1], 1); + $headingmerge = array_sum($allmerges) - 1; + $positivmerge = $allmerges[0] + $allmerges[1] - 1; + $negativmerge = $allmerges[1] + $allmerges[2] - 1; + + $worksheet->setMerge($zeile, $startcolumn, $zeile, $startcolumn + $headingmerge); + $worksheet->write($zeile, $startcolumn, "Notenlegende", $format_bold_center); + $worksheet->write($zeile++, $startcolumn + $headingmerge, "", $format_bold_center); + $worksheet->setMerge($zeile, $startcolumn, $zeile, $startcolumn + $positivmerge); + $worksheet->write($zeile, $startcolumn, "positiv", $format_bold_center); + $worksheet->setMerge($zeile, $startcolumn + $positivmerge + 1, $zeile, $startcolumn + $headingmerge); + $worksheet->write($zeile, $startcolumn + $headingmerge, "", $format_bold_center); + $worksheet->write($zeile++, $startcolumn + $positivmerge + 1, "negativ", $format_bold_center); + $tempzeile = $zeile; + foreach ($noten_arr as $note => $anmerkung) + { + if (is_null($noten_bezeichnungen[$note]) || $noten_bezeichnungen[$note] == "" || is_null($anmerkung) || $anmerkung == "") + continue; + if ($noten_positiv[$note]) + { + $worksheet->setMerge($zeile, $startcolumn, $zeile, $startcolumn + $positivmerge - 1); + $worksheet->write($zeile, $startcolumn, $noten_bezeichnungen[$note], $format_bold); + $worksheet->write($zeile++, $startcolumn + $positivmerge, $anmerkung, $format_bold_center); + } + else + { + $worksheet->setMerge($tempzeile, $startcolumn + $positivmerge + 1, $tempzeile, $startcolumn + $headingmerge - 1); + $worksheet->write($tempzeile, $startcolumn + $positivmerge + 1, $noten_bezeichnungen[$note], $format_bold); + $worksheet->write($tempzeile++, $startcolumn + $headingmerge, $anmerkung, $format_bold_center); + } + } + + //Die Breite der Spalten setzen + foreach ($maxlength as $i => $breite) + $worksheet->setColumn($i, $i, $breite + 2); + + $worksheet->write(0, 0, $semester_aktuell." ".$stg->kuerzel.($semester != '' ? ' '.$semester.'. Semester' : '').' Stand: '.date('d.m.Y'), $format_bold_center); + //Zellen der 1. Zeile verbinden + $worksheet->setMerge(0, 0, 0, $spalte); + + //Hoehe der 2. Zeile anpassen damit die LVs alle sichtbar sind + $worksheet->setRow(1, $maxheaderheight * 5); + + //Ausdruck auf 1 Seite anpassen + $worksheet->fitToPages(1, 1); + $workbook->close(); +} + diff --git a/include/note.class.php b/include/note.class.php index 6c119cae9..9994c0b38 100644 --- a/include/note.class.php +++ b/include/note.class.php @@ -36,9 +36,9 @@ class note extends basis_db public $bezeichnung; // varchar(32) public $anmerkung; // varchar(256) public $farbe; // varchar(6) - public $positiv=true; // boolean - public $notenwert; // boolean - public $aktiv; // boolean + public $positiv=true; // boolean + public $notenwert; // boolean + public $aktiv; // boolean public $lehre; // boolean /** @@ -75,10 +75,10 @@ class note extends basis_db $this->note = $row->note; $this->bezeichnung = $row->bezeichnung; $this->anmerkung = $row->anmerkung; - $this->farbe = $row->farbe; + $this->farbe = $row->farbe; $this->notenwert = $row->notenwert; - $this->positiv = $this->db_parse_bool($row->positiv); - $this->lehre = $this->db_parse_bool($row->lehre); + $this->positiv = $this->db_parse_bool($row->positiv); + $this->lehre = $this->db_parse_bool($row->lehre); $this->aktiv = $this->db_parse_bool($row->aktiv); return true; } @@ -130,10 +130,10 @@ class note extends basis_db $this->db_add_param($this->note).', '. $this->db_add_param($this->bezeichnung).', '. $this->db_add_param($this->anmerkung).', '. - $this->db_add_param($this->positiv, FHC_BOOLEAN).','. - $this->db_add_param($this->notenwert).','. - $this->db_add_parma($this->aktiv, FHC_BOOLEAN).','. - $this->db_add_param($htis->lehre, FHC_BOOLEAN).');'; + $this->db_add_param($this->positiv, FHC_BOOLEAN).','. + $this->db_add_param($this->notenwert).','. + $this->db_add_parma($this->aktiv, FHC_BOOLEAN).','. + $this->db_add_param($this->lehre, FHC_BOOLEAN).');'; } else { @@ -141,9 +141,9 @@ class note extends basis_db 'note='.$this->db_add_param($this->note).', '. 'bezeichnung='.$this->db_add_param($this->bezeichnung).', '. 'anmerkung='.$this->db_add_param($this->anmerkung).', '. - 'positiv='.$this->db_add_param($this->positiv, FHC_BOOLEAN).', '. - 'notenwert='.$this->db_add_param($this->notenwert).', '. - 'aktiv='.$this->db_add_param($this->aktiv, FHC_BOOLEAN).', '. + 'positiv='.$this->db_add_param($this->positiv, FHC_BOOLEAN).', '. + 'notenwert='.$this->db_add_param($this->notenwert).', '. + 'aktiv='.$this->db_add_param($this->aktiv, FHC_BOOLEAN).', '. 'lehre='.$this->db_add_param($this->lehre, FHC_BOOLEAN).' '. 'WHERE note='.$this->db_add_param($this->note).';'; } @@ -177,9 +177,43 @@ class note extends basis_db $n->bezeichnung = $row->bezeichnung; $n->anmerkung = $row->anmerkung; $n->farbe = $row->farbe; - $n->positiv = $this->db_parse_bool($row->positiv); - $n->notenwert = $row->notenwert; - $n->aktiv = $this->db_parse_bool($row->aktiv); + $n->positiv = $this->db_parse_bool($row->positiv); + $n->notenwert = $row->notenwert; + $n->aktiv = $this->db_parse_bool($row->aktiv); + $n->lehre = $this->db_parse_bool($row->lehre); + + $this->result[] = $n; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Laedt alle aktive Noten + * @return true wenn ok, false wenn Fehler + */ + public function getActive() + { + $qry = "SELECT * FROM lehre.tbl_note WHERE aktiv = TRUE ORDER BY note"; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $n = new note(); + + $n->note = $row->note; + $n->bezeichnung = $row->bezeichnung; + $n->anmerkung = $row->anmerkung; + $n->farbe = $row->farbe; + $n->positiv = $this->db_parse_bool($row->positiv); + $n->notenwert = $row->notenwert; + $n->aktiv = $this->db_parse_bool($row->aktiv); $n->lehre = $this->db_parse_bool($row->lehre); $this->result[] = $n; diff --git a/include/pruefungstermin.class.php b/include/pruefungstermin.class.php index c3ff1badb..74222cceb 100644 --- a/include/pruefungstermin.class.php +++ b/include/pruefungstermin.class.php @@ -104,19 +104,22 @@ class pruefungstermin extends basis_db{ } } - - /** - * Lädt alle Prüfungstypen aus der Datenbank - * @return Array/Boolean Ein Array mit den Daten, wenn ok; ansonsten false - */ - public function getAllPruefungstypen($abschluss = null) + + /** + * Lädt alle Prüfungstypen aus der Datenbank + * @param null $abschluss gibt an, ob Abschlussprüfungen ausgegeben werden sollen. default: Abschlussprüfungen und andere Prüfungen + * @return array /Boolean Ein Array mit den Daten, wenn ok; ansonsten false + */ + public function getAllPruefungstypen($abschluss = null, $sort = false) { $qry = 'SELECT * FROM lehre.tbl_pruefungstyp'; - if(!is_null($abschluss)) + if(is_bool($abschluss)) { - $qry .= ' WHERE abschluss='.$this->db_add_param($abschluss); + $qry .= ' WHERE abschluss='.$this->db_add_param($abschluss, FHC_BOOLEAN); } + if($sort) + $qry .= ' ORDER BY (sort IS NULL), sort, pruefungstyp_kurzbz'; $qry .=';'; if($this->db_query($qry)) @@ -128,6 +131,7 @@ class pruefungstermin extends basis_db{ $obj->pruefungstyp_kurzbz = $row->pruefungstyp_kurzbz; $obj->beschreibung = $row->beschreibung; $obj->abschluss = $row->abschluss; + $obj->sort = $row->sort; array_push($result, $obj); } } @@ -137,7 +141,6 @@ class pruefungstermin extends basis_db{ return false; } return $result; - } /** diff --git a/locale/de-AT/fas.dtd b/locale/de-AT/fas.dtd index 03b9966f4..11c8dd171 100644 --- a/locale/de-AT/fas.dtd +++ b/locale/de-AT/fas.dtd @@ -106,6 +106,10 @@ + + + + diff --git a/locale/de-SFU/fas.dtd b/locale/de-SFU/fas.dtd index df67cfe7f..3742f1a4b 100644 --- a/locale/de-SFU/fas.dtd +++ b/locale/de-SFU/fas.dtd @@ -102,6 +102,10 @@ + + + + diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index bea94d3e1..f905ab35e 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -358,8 +358,8 @@ if(!$result = @$db->db_query("SELECT mailversand FROM campus.tbl_coodle LIMIT 1; if(!$db->db_query($qry)) echo 'campus.tbl_coodle: '.$db->db_last_error().'
    '; - else - echo '
    campus.tbl_coodle: Spalten mailversand, teilnehmer_anonym und termine_anonym hinzugefuegt!
    '; + else + echo '
    campus.tbl_coodle: Spalten mailversand, teilnehmer_anonym und termine_anonym hinzugefuegt!
    '; } // Spalte onlinebewerbung_studienplan in lehre.tbl_studienplan @@ -369,8 +369,61 @@ if(!$result = @$db->db_query("SELECT onlinebewerbung_studienplan FROM lehre.tbl_ if(!$db->db_query($qry)) echo 'lehre.tbl_studienplan: '.$db->db_last_error().'
    '; + else + echo '
    lehre.tbl_studienplan: Spalte onlinebewerbung_studienplan hinzugefuegt!
    '; +} + +// Spalte sort in lehre.tbl_pruefungstyp (gibt Reihenfolge der Prüfungsantritte an) +if(!$result = @$db->db_query("SELECT sort FROM lehre.tbl_pruefungstyp LIMIT 1;")) +{ + $qry = "ALTER TABLE lehre.tbl_pruefungstyp ADD COLUMN sort smallint;"; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_pruefungstyp: '.$db->db_last_error().'
    '; + else + echo '
    lehre.tbl_pruefungstyp: Spalte sort hinzugefuegt!
    '; +} + +// zusätzliche kommissionelle Prüfung (4.Termin) als Zeile hinzufügen +if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_pruefungstyp WHERE pruefungstyp_kurzbz= 'zusKommPruef';")) +{ + if($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO lehre.tbl_pruefungstyp(pruefungstyp_kurzbz, beschreibung, abschluss) VALUES ('zusKommPruef', 'zusätzliche kommissionelle Prüfung', FALSE);"; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_pruefungstyp: '.$db->db_last_error().'
    '; else - echo '
    lehre.tbl_studienplan: Spalte onlinebewerbung_studienplan hinzugefuegt!
    '; + echo '
    lehre.tbl_pruefungstyp: Zeile zusKommPruef hinzugefuegt!
    '; + } +} + +// Note "entschuldigt" hinzufügen +if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'en' AND bezeichnung = 'entschuldigt' OR bezeichnung = 'Entschuldigt';")) +{ + if($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO lehre.tbl_note(note, bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre) VALUES(17, 'entschuldigt', 'en', NULL, TRUE, NULL, TRUE, TRUE);"; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_note: '.$db->db_last_error().'
    '; + else + echo '
    lehre.tbl_note: Zeile entschuldigt hinzugefuegt!
    '; + } +} + +// Note "unentschuldigt" hinzufügen +if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'ue' AND bezeichnung = 'unentschuldigt' OR bezeichnung = 'Unentschuldigt';")) +{ + if($db->db_num_rows($result) == 0) + { + $qry = "INSERT INTO lehre.tbl_note(note, bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre) VALUES(18, 'unentschuldigt', 'ue', NULL, FALSE, NULL, TRUE, TRUE);"; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_note: '.$db->db_last_error().'
    '; + else + echo '
    lehre.tbl_note: Zeile unentschuldigt hinzugefuegt!
    '; + } } // Column design_uid, betrieb_uid and operativ_uid to tbl_service @@ -385,8 +438,8 @@ if(!$result = @$db->db_query("SELECT design_uid FROM public.tbl_service LIMIT 1; if(!$db->db_query($qry)) echo 'public.tbl_service: '.$db->db_last_error().'
    '; - else - echo '
    public.tbl_service: Spalten design_uid,betrieb_uid,operativ_uid hinzugefuegt!
    '; + else + echo '
    public.tbl_service: Spalten design_uid,betrieb_uid,operativ_uid hinzugefuegt!
    '; } // FOREIGN KEY tbl_phrasentext_sprache_fkey: system.tbl_phrasentext.sprache references public.tbl_sprache.sprache @@ -527,7 +580,7 @@ if(!@$db->db_query("SELECT campus.get_highest_content_version(0)")) $_$; ALTER FUNCTION campus.get_highest_content_version(bigint) OWNER TO fhcomplete;'; - + if(!$db->db_query($qry)) echo 'campus.get_highest_content_version(content_id): '.$db->db_last_error().'
    '; else @@ -543,7 +596,7 @@ if(!@$db->db_query("SELECT ausstellungsnation FROM public.tbl_akte LIMIT 1")) COMMENT ON COLUMN public.tbl_akte.ausstellungsnation IS 'Nation-Code des Landes, in dem das Dokument ausgestellt wurde'; COMMENT ON COLUMN public.tbl_akte.formal_geprueft_amum IS 'Bestaetigungsdatum, an dem das Dokument inhaltlich auf Formalkriterien (Leserlichkeit, Vollständigkeit, etc) geprueft wurde'; "; - + if(!$db->db_query($qry)) echo 'public.tbl_rt_person '.$db->db_last_error().'
    '; else @@ -556,7 +609,7 @@ if(!@$db->db_query("SELECT ausstellungsdetails FROM public.tbl_dokument LIMIT 1" $qry = "ALTER TABLE public.tbl_dokument ADD COLUMN ausstellungsdetails boolean NOT NULL DEFAULT false; COMMENT ON COLUMN public.tbl_dokument.ausstellungsdetails IS 'Sollen beim Dokument weitere Felder (zB Ausstellungsnation) angezeigt werden?'; "; - + if(!$db->db_query($qry)) echo 'public.tbl_dokument '.$db->db_last_error().'
    '; else From ef418e70f844796118ebc886d313f3eda1873173 Mon Sep 17 00:00:00 2001 From: oesi Date: Fri, 24 Nov 2017 14:59:22 +0100 Subject: [PATCH 050/126] =?UTF-8?q?Filterfunktion=20f=C3=BCr=20Vilesci=20S?= =?UTF-8?q?tatistiken=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vilesci/statistik/statistik_sql.php | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/vilesci/statistik/statistik_sql.php b/vilesci/statistik/statistik_sql.php index 99883bfb9..3f148d638 100644 --- a/vilesci/statistik/statistik_sql.php +++ b/vilesci/statistik/statistik_sql.php @@ -37,7 +37,7 @@ if (!isset($outputformat)) { $outputformat='html'; } - + if($statistik->berechtigung_kurzbz != '') { $uid = get_uid(); @@ -102,15 +102,14 @@ foreach($_REQUEST as $name=>$value) - - - - - - From 1b2cc47efd6b9decbb2ecd0a04ae022907b621eb Mon Sep 17 00:00:00 2001 From: oesi Date: Fri, 24 Nov 2017 16:04:51 +0100 Subject: [PATCH 051/126] =?UTF-8?q?Inkonsistenz=20beim=20Trennzeichen=20f?= =?UTF-8?q?=C3=BCr=20EMailversand=20behoben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/functions.inc.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/include/functions.inc.php b/include/functions.inc.php index d63aa8f5f..cf6e2bad3 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -320,7 +320,10 @@ function loadVariables($user) if (!isset($emailadressentrennzeichen)) { global $emailadressentrennzeichen; - $emailadressentrennzeichen=','; + if(defined('DEFAULT_EMAILADRESSENTRENNZEICHEN')) + $emailadressentrennzeichen = DEFAULT_EMAILADRESSENTRENNZEICHEN; + else + $emailadressentrennzeichen=','; } if(!isset($alle_unr_mitladen)) @@ -1066,7 +1069,7 @@ function cutString($string, $limit, $placeholderSign = '', $keepFilextension = f { return '$placeholderSign must not be shorter than $limit'; } - + if(strlen($string) > ($limit - $offset)) { return substr($string, 0, ($limit - $offset)).$placeholderSign.$extension; From d3d4e01afc7c90654c2d8a27610f0602a370a9da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 24 Nov 2017 17:11:18 +0100 Subject: [PATCH 052/126] isBerechtigt is now a Public Method of PermissionLib --- application/libraries/PermissionLib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/libraries/PermissionLib.php b/application/libraries/PermissionLib.php index 075203c96..3000aceea 100644 --- a/application/libraries/PermissionLib.php +++ b/application/libraries/PermissionLib.php @@ -75,7 +75,7 @@ class PermissionLib if (isset($this->acl[$sourceName])) { // Checks permission - $isEntitled = $this->_isBerechtigt($this->acl[$sourceName], $permissionType); + $isEntitled = $this->isBerechtigt($this->acl[$sourceName], $permissionType); } } else @@ -104,7 +104,7 @@ class PermissionLib /** * Checks user's (API caller) rights */ - private function _isBerechtigt($berechtigung_kurzbz, $art = null, $oe_kurzbz = null, $kostenstelle_id = null) + public function isBerechtigt($berechtigung_kurzbz, $art = null, $oe_kurzbz = null, $kostenstelle_id = null) { $isBerechtigt = false; From 5b54217733cc4cb18ce82aa496979af8d94c7bcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 24 Nov 2017 18:45:51 +0100 Subject: [PATCH 053/126] Added new Logging System for Persons Added a Wrapper to call CI functions from outside Codeigniter --- application/config/fhcomplete.php | 1 + application/libraries/CallerLib.php | 57 ++++++++--------- application/libraries/PersonLogLib.php | 47 ++++++++++++++ application/models/system/PersonLog_model.php | 61 +++++++++++++++++++ ci_loader.php | 11 ++++ include/functions.inc.php | 6 ++ index.ci.php | 7 +-- system/dbupdate_3.3.php | 59 ++++++++++++++++-- 8 files changed, 213 insertions(+), 36 deletions(-) create mode 100644 application/libraries/PersonLogLib.php create mode 100644 application/models/system/PersonLog_model.php create mode 100644 ci_loader.php diff --git a/application/config/fhcomplete.php b/application/config/fhcomplete.php index b1fd96f0f..0802ed411 100644 --- a/application/config/fhcomplete.php +++ b/application/config/fhcomplete.php @@ -209,6 +209,7 @@ $config['fhc_acl'] = array 'system.tbl_webservicetyp' => 'basis/webservicetyp', 'system.tbl_udf' => 'system/udf', 'system.tbl_extensions' => 'system/extensions', + 'system.tbl_log' => 'basis/log', 'testtool.tbl_ablauf' => 'basis/ablauf', 'testtool.tbl_antwort' => 'basis/antwort', 'testtool.tbl_frage' => 'basis/frage', diff --git a/application/libraries/CallerLib.php b/application/libraries/CallerLib.php index 856f0855a..d2387a723 100644 --- a/application/libraries/CallerLib.php +++ b/application/libraries/CallerLib.php @@ -14,16 +14,17 @@ class CallerLib const LIB_FILE_EXTENSION = '.php'; const LIBS_PATH = 'libraries'; const MODEL_PREFIX = '_model'; - + // Black list of resources that are no allowed to be used private static $RESOURCES_BLACK_LIST = array( 'CallerLib', // disabled self loading 'LogLib', // hardly usefull and virtually dangerous 'MigrationLib', // virtually dangerous, DB manipulation 'FilesystemLib', // virtually dangerous, direct access to file system - 'PermissionLib' // usefull? + 'PermissionLib', // usefull? + 'PersonLogLib' ); - + /** * Object initialization */ @@ -31,14 +32,14 @@ class CallerLib { // Gets CI instance $this->ci =& get_instance(); - + // Loads helper message to manage returning messages $this->ci->load->helper('Message'); - + // Loads permission library $this->ci->load->library('PermissionLib'); } - + /** * Wrapper method for _call */ @@ -46,7 +47,7 @@ class CallerLib { return $this->_call($callParameters, $permissionType); } - + /** * Wrapper method for _call */ @@ -54,7 +55,7 @@ class CallerLib { return $this->_call($callParameters, $permissionType); } - + /** * Everything starts here... */ @@ -63,7 +64,7 @@ class CallerLib $result = null; $parameters = $this->_getParameters($callParameters); $validation = $this->_validateCall($parameters); - + // If the validation was passed if (isSuccess($validation)) { @@ -119,7 +120,7 @@ class CallerLib { $result = error('Neither a lib nor model: '.$parameters->resourcePath.$parameters->resourceName); } - + // If the resource was found and loaded if (!is_null($loaded)) { @@ -134,10 +135,10 @@ class CallerLib { $result = $validation; } - + return $result; } - + /** * Gets the parameters from the http call * Search for parameters and @@ -181,7 +182,7 @@ class CallerLib return $parameters; } - + /** * Validate the given parameters */ @@ -224,7 +225,7 @@ class CallerLib { $loaded = null; $result = null; - + try { $loaded = $this->ci->load->model($resourcePath.$resourceName); @@ -234,15 +235,15 @@ class CallerLib // Errors while loading the model $result = error('Errors while loading the model: '.$e->getMessage()); } - + if (!is_null($loaded)) { $result = success($loaded); } - + return $result; } - + /** * Search for a valid permission for this library that should be present with this format: * '..' => '' @@ -251,14 +252,14 @@ class CallerLib { $result = null; $permissionPath = ''; - + if ($resourcePath != '') { $permissionPath = $resourcePath; } - + $permissionPath .= $resourceName.'.'.$function; - + if ($this->ci->permissionlib->isEntitled($permissionPath, $permissionType) === false) { $result = error(FHC_NORIGHT, FHC_NORIGHT); @@ -267,10 +268,10 @@ class CallerLib { $result = success('Has permission'); } - + return $result; } - + /** * Loads a library using the given path and name * @@ -286,7 +287,7 @@ class CallerLib private function _loadLibrary($resourcePath, $resourceName) { $loaded = null; - + try { // Gets all the configured resources paths @@ -328,15 +329,15 @@ class CallerLib // Errors while loading the library $result = error('Errors while loading the library: '.$e->getMessage()); } - + if (!is_null($loaded)) { $result = success($loaded); } - + return $result; } - + /** * Calls a method of a class with the given parameters and returns its result * @@ -347,7 +348,7 @@ class CallerLib private function _callThis($resourceName, $function, $parameters) { $result = null; - + try { // Get informations about the function @@ -402,7 +403,7 @@ class CallerLib { $result = error($e->getMessage()); } - + return $result; } } diff --git a/application/libraries/PersonLogLib.php b/application/libraries/PersonLogLib.php new file mode 100644 index 000000000..5eb8013f2 --- /dev/null +++ b/application/libraries/PersonLogLib.php @@ -0,0 +1,47 @@ +ci =& get_instance(); + $this->ci->load->model('system/PersonLog_model', 'PersonLogModel'); + } + + /** + * Writes a Log for a Person + * @param int $person_id ID of the Person. + * @param string $logtype_kurzbz Type of Log. + * @param array $logdata Array of the JSON Data to save. + * @param string $app Application that log belongs to. + * @param string $oe_kurzbz Organisation Unit the Log belongs to. + * @param string $user User who created the log. + * @return boolean true if success + */ + public function log($person_id, $logtype_kurzbz, $logdata, $app = 'core', $oe_kurzbz = null, $user = null) + { + $data = array( + 'person_id' => $person_id, + 'zeitpunkt' => date('Y-m-d H:i:s'), + 'app' => $app, + 'oe_kurzbz' => $oe_kurzbz, + 'logtype_kurzbz' => $logtype_kurzbz, + 'logdata' => json_encode($logdata), + 'insertvon' => $user + ); + + $result = $this->ci->PersonLogModel->insert($data); + if (isSuccess($result)) + return true; + else + show_error($result->retval); + } +} diff --git a/application/models/system/PersonLog_model.php b/application/models/system/PersonLog_model.php new file mode 100644 index 000000000..2d7ff15cc --- /dev/null +++ b/application/models/system/PersonLog_model.php @@ -0,0 +1,61 @@ +load->database(); + + $this->dbTable = 'system.tbl_log'; + } + + /** + * Inserts a Log for a Person + * @param array $data Data of Log Entry to save. + * @return success object if true + */ + public function insert($data) + { + $result = $this->db->insert($this->dbTable, $data); + if ($result) + return success($this->db->insert_id()); + else + return error(); + } + + /** + * Loads the last Log Entry of a Person + * @param int $person_id ID of the Person. + * @param string $app Name of the App. + * @param string $oe_kurzbz Organisations Unit. + * @return object $result + */ + public function getLastLog($person_id, $app = null, $oe_kurzbz = null) + { + // Check Permissions + $this->load->library('PermissionLib'); + if(!$this->permissionlib->isEntitled('system.tbl_log',PermissionLib::SELECT_RIGHT)) + show_error('Permission denied - You need Access to system.tbl_log'); + + $this->db->order_by('zeitpunkt', 'DESC'); + $this->db->order_by('log_id', 'DESC'); + $this->db->limit(1); + if (!is_null($app)) + $this->db->where('app='.$this->db->escape($app)); + if (!is_null($oe_kurzbz)) + $this->db->where('oe_kurzbz='.$this->db->escape($oe_kurzbz)); + + $result = $this->db->get_where($this->dbTable, "person_id=".$this->db->escape($person_id)); + + return success($result->result()); + } +} diff --git a/ci_loader.php b/ci_loader.php new file mode 100644 index 000000000..7466739a9 --- /dev/null +++ b/ci_loader.php @@ -0,0 +1,11 @@ +load->library('xxx'); + */ +ob_start(); +require_once('index.ci.php'); +ob_get_clean(); +return $CI; diff --git a/include/functions.inc.php b/include/functions.inc.php index cf6e2bad3..ed3175b5a 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -1079,4 +1079,10 @@ function cutString($string, $limit, $placeholderSign = '', $keepFilextension = f return $string; } } + +function PersonLog($ci, $person_id, $logtype_kurzbz, $logdata, $app, $oe_kurzbz = null, $user=null) +{ + $ci->load->library('PersonLogLib'); + $ci->personloglib->log($person_id, $logtype_kurzbz, $logdata, $app, $oe_kurzbz, $user); +} ?> diff --git a/index.ci.php b/index.ci.php index f6905f940..043acb111 100644 --- a/index.ci.php +++ b/index.ci.php @@ -54,7 +54,7 @@ * NOTE: If you change these, also change the error_reporting() code below * */ - + define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development'); /* @@ -102,7 +102,7 @@ switch (ENVIRONMENT) * as this file. * */ - $system_path = 'vendor/codeigniter/framework/system'; + $system_path = dirname(__FILE__).'/vendor/codeigniter/framework/system'; /* *--------------------------------------------------------------- @@ -118,7 +118,7 @@ switch (ENVIRONMENT) * NO TRAILING SLASH! * */ - $application_folder = 'application'; + $application_folder = dirname(__FILE__).'/application'; /* *--------------------------------------------------------------- @@ -308,4 +308,3 @@ include_once 'vendor/autoload.php'; // Now the bootstrap file require_once BASEPATH.'core/CodeIgniter.php'; - diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index f905ab35e..9a2fc7744 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -578,7 +578,7 @@ if(!@$db->db_query("SELECT campus.get_highest_content_version(0)")) RETURN rec.version; END; $_$; - + ALTER FUNCTION campus.get_highest_content_version(bigint) OWNER TO fhcomplete;'; if(!$db->db_query($qry)) @@ -753,6 +753,55 @@ if ($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berech // End extensions //--------------------------------------------------------------------------------------------------------------------- +if (!$result = @$db->db_query("SELECT 1 FROM system.tbl_log LIMIT 1")) +{ + $qry = "CREATE TABLE system.tbl_log + ( + log_id bigint NOT NULL, + person_id integer, + zeitpunkt timestamp NOT NULL DEFAULT now(), + app varchar(32) NOT NULL, + oe_kurzbz varchar(32), + logtype_kurzbz varchar(32) NOT NULL, + logdata jsonb NOT NULL, + insertvon varchar(32) + ); + ALTER TABLE system.tbl_log ADD CONSTRAINT pk_log PRIMARY KEY (log_id); + + CREATE SEQUENCE system.tbl_log_log_id_seq + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1; + ALTER TABLE system.tbl_log ALTER COLUMN log_id SET DEFAULT nextval('system.tbl_log_log_id_seq'); + + GRANT SELECT, INSERT ON system.tbl_log TO vilesci; + GRANT SELECT, INSERT ON system.tbl_log TO web; + GRANT SELECT, UPDATE ON system.tbl_log_log_id_seq TO vilesci; + GRANT SELECT, UPDATE ON system.tbl_log_log_id_seq TO web; + + CREATE TABLE system.tbl_logtype + ( + logtype_kurzbz varchar(32), + data_schema jsonb NOT NULL + ); + ALTER TABLE system.tbl_logtype ADD CONSTRAINT pk_logtype PRIMARY KEY (logtype_kurzbz); + GRANT SELECT ON system.tbl_logtype TO vilesci; + GRANT SELECT ON system.tbl_logtype TO web; + + ALTER TABLE system.tbl_log ADD CONSTRAINT fk_log_person_id FOREIGN KEY (person_id) REFERENCES public.tbl_person(person_id) ON UPDATE CASCADE ON DELETE RESTRICT; + ALTER TABLE system.tbl_log ADD CONSTRAINT fk_log_app FOREIGN KEY (app) REFERENCES system.tbl_app(app) ON UPDATE CASCADE ON DELETE RESTRICT; + ALTER TABLE system.tbl_log ADD CONSTRAINT fk_log_oe_kurzbz FOREIGN KEY (oe_kurzbz) REFERENCES public.tbl_organisationseinheit(oe_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT; + ALTER TABLE system.tbl_log ADD CONSTRAINT fk_log_logtype_kurzbz FOREIGN KEY (logtype_kurzbz) REFERENCES system.tbl_logtype(logtype_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT; + + INSERT INTO system.tbl_logtype VALUES ('Action', '{\"type\": \"object\", \"title\": \"Action\", \"required\": [\"name\", \"success\", \"message\"], \"properties\": {\"name\": {\"type\": \"string\"}, \"message\": {\"type\": \"string\"}, \"success\": {\"type\": \"string\"}}}'); + INSERT INTO system.tbl_logtype VALUES ('Processstate', '{\"type\": \"object\", \"title\": \"Processstate\", \"required\": [\"name\"], \"properties\": {\"name\": {\"type\": \"string\"}}}'); + "; + if (!$db->db_query($qry)) + echo 'system.tbl_log '.$db->db_last_error().'
    '; + else + echo ' system.tbl_log hinzugefügt
    '; +} // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

    Pruefe Tabellen und Attribute!

    '; @@ -881,7 +930,7 @@ $tabellen=array( "lehre.tbl_projektbetreuer" => array("person_id","projektarbeit_id","betreuerart_kurzbz","note","faktor","name","punkte","stunden","stundensatz","updateamum","updatevon","insertamum","insertvon","ext_id","vertrag_id"), "lehre.tbl_projekttyp" => array("projekttyp_kurzbz","bezeichnung"), "lehre.tbl_pruefung" => array("pruefung_id","lehreinheit_id","student_uid","mitarbeiter_uid","note","pruefungstyp_kurzbz","datum","anmerkung","insertamum","insertvon","updateamum","updatevon","ext_id","pruefungsanmeldung_id","vertrag_id", "punkte"), - "lehre.tbl_pruefungstyp" => array("pruefungstyp_kurzbz","beschreibung","abschluss"), + "lehre.tbl_pruefungstyp" => array("pruefungstyp_kurzbz","beschreibung","abschluss","sort"), "lehre.tbl_studienordnung" => array("studienordnung_id","studiengang_kz","version","gueltigvon","gueltigbis","bezeichnung","ects","studiengangbezeichnung","studiengangbezeichnung_englisch","studiengangkurzbzlang","akadgrad_id","insertamum","insertvon","updateamum","updatevon","ext_id", "status_kurzbz", "standort_id"), "lehre.tbl_studienordnungstatus" => array("status_kurzbz","bezeichnung","reihenfolge"), "lehre.tbl_studienordnung_semester" => array("studienordnung_semester_id","studienordnung_id","studiensemester_kurzbz","semester"), @@ -902,7 +951,7 @@ $tabellen=array( "lehre.tbl_zeugnisnote" => array("lehrveranstaltung_id","student_uid","studiensemester_kurzbz","note","uebernahmedatum","benotungsdatum","bemerkung","updateamum","updatevon","insertamum","insertvon","ext_id","punkte"), "public.ci_apikey" => array("apikey_id","key","level","ignore_limits","date_created"), "public.tbl_adresse" => array("adresse_id","person_id","name","strasse","plz","ort","gemeinde","nation","typ","heimatadresse","zustelladresse","firma_id","updateamum","updatevon","insertamum","insertvon","ext_id","rechnungsadresse","anmerkung"), - "public.tbl_akte" => array("akte_id","person_id","dokument_kurzbz","uid","inhalt","mimetype","erstelltam","gedruckt","titel","bezeichnung","updateamum","updatevon","insertamum","insertvon","ext_id","dms_id","nachgereicht","anmerkung","titel_intern","anmerkung_intern","nachgereicht_am"), + "public.tbl_akte" => array("akte_id","person_id","dokument_kurzbz","uid","inhalt","mimetype","erstelltam","gedruckt","titel","bezeichnung","updateamum","updatevon","insertamum","insertvon","ext_id","dms_id","nachgereicht","anmerkung","titel_intern","anmerkung_intern","nachgereicht_am","ausstellungsnation","formal_geprueft_amum"), "public.tbl_ampel" => array("ampel_id","kurzbz","beschreibung","benutzer_select","deadline","vorlaufzeit","verfallszeit","insertamum","insertvon","updateamum","updatevon","email","verpflichtend","buttontext"), "public.tbl_ampel_benutzer_bestaetigt" => array("ampel_benutzer_bestaetigt_id","ampel_id","uid","insertamum","insertvon"), "public.tbl_aufmerksamdurch" => array("aufmerksamdurch_kurzbz","beschreibung","ext_id","bezeichnung", "aktiv"), @@ -915,7 +964,7 @@ $tabellen=array( "public.tbl_benutzergruppe" => array("uid","gruppe_kurzbz","studiensemester_kurzbz","updateamum","updatevon","insertamum","insertvon","ext_id"), "public.tbl_bewerbungstermine" => array("bewerbungstermin_id","studiengang_kz","studiensemester_kurzbz","beginn","ende","nachfrist","nachfrist_ende","anmerkung", "insertamum", "insertvon", "updateamum", "updatevon","studienplan_id"), "public.tbl_buchungstyp" => array("buchungstyp_kurzbz","beschreibung","standardbetrag","standardtext","aktiv","credit_points"), - "public.tbl_dokument" => array("dokument_kurzbz","bezeichnung","ext_id","bezeichnung_mehrsprachig","dokumentbeschreibung_mehrsprachig"), + "public.tbl_dokument" => array("dokument_kurzbz","bezeichnung","ext_id","bezeichnung_mehrsprachig","dokumentbeschreibung_mehrsprachig","ausstellungsdetails"), "public.tbl_dokumentprestudent" => array("dokument_kurzbz","prestudent_id","mitarbeiter_uid","datum","updateamum","updatevon","insertamum","insertvon","ext_id"), "public.tbl_dokumentstudiengang" => array("dokument_kurzbz","studiengang_kz","ext_id", "onlinebewerbung", "pflicht","beschreibung_mehrsprachig","nachreichbar"), "public.tbl_erhalter" => array("erhalter_kz","kurzbz","bezeichnung","dvr","logo","zvr"), @@ -1003,6 +1052,8 @@ $tabellen=array( "system.tbl_benutzerrolle" => array("benutzerberechtigung_id","rolle_kurzbz","berechtigung_kurzbz","uid","funktion_kurzbz","oe_kurzbz","art","studiensemester_kurzbz","start","ende","negativ","updateamum", "updatevon","insertamum","insertvon","kostenstelle_id","anmerkung"), "system.tbl_berechtigung" => array("berechtigung_kurzbz","beschreibung"), "system.tbl_extensions" => array("extension_id","name","version","description","license","url","core_version","dependencies","enabled"), + "system.tbl_log" => array("log_id","person_id","zeitpunkt","app","oe_kurzbz","logtype_kurzbz","logdata","insertvon"), + "system.tbl_logtype" => array("logtype_kurzbz", "data_schema"), "system.tbl_phrase" => array("phrase_id","app","phrase","insertamum","insertvon"), "system.tbl_phrasentext" => array("phrasentext_id","phrase_id","sprache","orgeinheit_kurzbz","orgform_kurzbz","text","description","insertamum","insertvon"), "system.tbl_rolle" => array("rolle_kurzbz","beschreibung"), From a4a9bcda4685e32ad4667322cd2c39cb6107bedc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 24 Nov 2017 18:56:41 +0100 Subject: [PATCH 054/126] Added errormessage when extension permission is missing on installation --- application/libraries/ExtensionsLib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/libraries/ExtensionsLib.php b/application/libraries/ExtensionsLib.php index 4fa0778e9..0008ba087 100644 --- a/application/libraries/ExtensionsLib.php +++ b/application/libraries/ExtensionsLib.php @@ -313,7 +313,7 @@ class ExtensionsLib if (isError($result)) { $this->_errorOccurred = true; - $this->_printFailure('data base error'); + $this->_printFailure('data base error: '.$result->retval); } else { From 6c62196acb8ac846d39a900662f6542d68dc98f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 28 Nov 2017 14:08:29 +0100 Subject: [PATCH 055/126] Added Library for document conversion and merging Added function for loading documents of Akte --- application/libraries/DmsLib.php | 105 +++++++++++---- application/libraries/DocumentLib.php | 182 ++++++++++++++++++++++++++ 2 files changed, 261 insertions(+), 26 deletions(-) create mode 100644 application/libraries/DocumentLib.php diff --git a/application/libraries/DmsLib.php b/application/libraries/DmsLib.php index 7ee160f85..f592eaa0e 100644 --- a/application/libraries/DmsLib.php +++ b/application/libraries/DmsLib.php @@ -12,18 +12,21 @@ class DmsLib public function __construct() { $this->ci =& get_instance(); - + $this->ci->load->model('crm/Akte_model', 'AkteModel'); $this->ci->load->model('content/Dms_model', 'DmsModel'); $this->ci->load->model('content/DmsVersion_model', 'DmsVersionModel'); $this->ci->load->model('content/DmsFS_model', 'DmsFSModel'); - + // Loads helper message to manage returning messages $this->ci->load->helper('message'); } /** - * read + * Read a DMS Document from the Filesystem + * @param int $dms_id ID of the Document. + * @param int $version The version of the Document (latest if null). + * @return object success or error */ public function read($dms_id, $version = null) { @@ -44,7 +47,7 @@ class DmsLib $result = $this->ci->DmsModel->loadWhere(array('dms_id' => $dms_id, 'version' => $version)); } } - + if (hasData($result)) { $resultFS = $this->ci->DmsFSModel->read($result->retval[0]->filename); @@ -57,20 +60,26 @@ class DmsLib $result = $resultFS; } } - + return $result; } - + /** - * getAktenAcceptedDms + * Get all accepted Documents of a Person + * + * @param int $person_id ID of the person. + * @param string $dokument_kurzbz Type of document. + * @param bool $no_file If null then loads also the content. + * @return object success or error */ public function getAktenAcceptedDms($person_id, $dokument_kurzbz = null, $no_file = null) { $result = $this->ci->AkteModel->getAktenAcceptedDms($person_id, $dokument_kurzbz); - + if (hasData($result) && $no_file == null) { - for ($i = 0; $i < count($result->retval); $i++) + $cnt = count($result->retval); + for ($i = 0; $i < $cnt; $i++) { $resultFS = $this->ci->DmsFSModel->read($result->retval[$i]->filename); if (isSuccess($resultFS)) @@ -83,12 +92,14 @@ class DmsLib } } } - + return $result; } /** - * save + * Saves a Document + * @param object $dms DMS Object ot be saved. + * @return object */ public function save($dms) { @@ -142,30 +153,34 @@ class DmsLib return $result; } - + /** - * delete + * Deletes a Akte of a Person + * @param int $person_id ID of the person. + * @param int $dms_id Id of the Document. + * @return object */ public function delete($person_id, $dms_id) { $result = null; - + // If the parameters are valid if (is_numeric($person_id) && is_numeric($dms_id)) { // Start DB transaction $this->ci->db->trans_start(false); - + // Get akte_id from table tbl_akte $result = $this->ci->AkteModel->loadWhere(array('person_id' => $person_id, 'dms_id' => $dms_id)); if (isSuccess($result)) { // Delete all entries in tbl_akte - for ($i = 0; $i < count($result->retval); $i++) + $cnt = count($result->retval); + for ($i = 0; $i < $cnt; $i++) { $this->ci->AkteModel->delete($result->retval[$i]->akte_id); } - + // Get all filenames related to this dms $resultFileNames = $this->ci->DmsVersionModel->loadWhere(array('dms_id' => $dms_id)); if (isSuccess($resultFileNames)) @@ -179,10 +194,10 @@ class DmsLib } } } - + // Transaction complete! $this->ci->db->trans_complete(); - + // Check if everything went ok during the transaction if ($this->ci->db->trans_status() === false || isError($result)) { @@ -194,12 +209,13 @@ class DmsLib $this->ci->db->trans_commit(); $result = success('Dms successfully removed from DB'); } - + // If everything is ok if (isSuccess($result)) { + $cnt = count($resultFileNames->retval); // Remove all files related to this person and dms - for ($i = 0; $i < count($resultFileNames->retval); $i++) + for ($i = 0; $i < $cnt; $i++) { $this->ci->DmsFSModel->remove($resultFileNames->retval[$i]->filename); } @@ -209,17 +225,52 @@ class DmsLib { $result = error('Invalid parameters'); } - + return $result; } - + /** - * _saveFileOnInsert + * Loads the Content of an akte + * @param int $akte_id Id of the akte. + * @return object with document content or error + */ + public function getAkteContent($akte_id) + { + $akte = $this->ci->AkteModel->load($akte_id); + if (hasData($akte)) + { + if ($akte->retval[0]->inhalt != '') + { + return success(base64_decode($akte->retval[0]->inhalt)); + } + elseif ($akte->retval[0]->dms_id != '') + { + $dmscontent = $this->read($akte->retval[0]->dms_id); + if (isSuccess($dmscontent)) + { + return success(base64_decode($dmscontent->retval[0]->file_content)); + } + } + else + { + return error('No Content available'); + } + } + else + { + return error($akte->retval); + } + } + + /** + * Saves the Content of a DMS in the Filesystem + * @param object $dms DMS object to be saved. + * @return object */ private function _saveFileOnInsert($dms) { $filename = uniqid().'.'.pathinfo($dms['name'], PATHINFO_EXTENSION); - + $result = $this->ci->DmsFSModel->write($filename, $dms['file_content']); if (isSuccess($result)) { @@ -230,7 +281,9 @@ class DmsLib } /** - * _saveFileOnUpdate + * Updates the File in the Filesystem + * @param object $dms DMS object to update. + * @return object */ private function _saveFileOnUpdate($dms) { diff --git a/application/libraries/DocumentLib.php b/application/libraries/DocumentLib.php new file mode 100644 index 000000000..ba76eca6c --- /dev/null +++ b/application/libraries/DocumentLib.php @@ -0,0 +1,182 @@ +ci =& get_instance(); + + exec('unoconv --version', $ret_arr); + if(isset($ret_arr[0])) + $this->unoconv_version = explode(' ', $ret_arr[0])[1]; + else + show_error('Unoconv not found - Please install Unoconv'); + } + + /** + * Converts a File to PDF + * @param string $filename Full path to the file. + * @return success or error object + */ + public function convertToPDF($filename) + { + if (!file_exists($filename)) + return error('Unable to Convert to PDF. File not found:'.$filename); + + $mimetype = mime_content_type($filename); + $outFile = sys_get_temp_dir().'/FHC_'.uniqid().'.pdf'; + + switch ($mimetype) + { + case 'image/jpeg': + case 'image/jpg': + case 'image/pjpeg': + $this->_jpegtopdf($filename, $outFile); + return success($outFile); + case 'application/vnd.oasis.opendocument.spreadsheet': + case 'application/msword': + case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': + case 'application/haansoftdocx': + case 'application/vnd.ms-word': + case 'application/vnd.oasis.opendocument.text': + case 'text/plain': + $this->convert($filename, $outFile, 'pdf'); + return success($outFile); + case 'application/pdf': + return success($filename); + default: + return error('Unknown Mimetype:'.$mimetype); + } + } + + /** + * Combines multiple single PDFs to one PDF + * + * @param array $files Array of Files to merge (full path to file). + * @param string $outFile Path to the Output File. + * @return success or error object + */ + public function mergePDF($files, $outFile) + { + $cmd = "gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$outFile "; + $finfo = finfo_open(FILEINFO_MIME_TYPE); + + // add all pdf files to the command + foreach ($files as $f) + { + $cmd .= $f." "; + if (!file_exists($f)) + { + return error("File not found: '$f'"); + } + if (finfo_file($finfo, $f) != "application/pdf") + { + return error("Wrong format(".finfo_file($finfo, $f)."): '$f'"); + } + } + + finfo_close($finfo); + + exec($cmd, $out, $ret); + if ($ret != 0) + { + return error('PDF-zusammenfuegung ist derzeit nicht möglich. Bitte informieren Sie den Administrator'); + } + return success(true); + } + + /** + * Converts a Document to another format with unoconv + * + * @param string $inFile File that should be convertet. + * @param string $outFile Name of the Output File. + * @param string $format Outputformat (PDF, DOC, ...). + * @return success or error Object + */ + public function convert($inFile, $outFile, $format) + { + if ($this->unoconv_version == '0.6') + $command = 'unoconv -f %1$s %3$s > %2$s'; + else + $command = 'unoconv -f %s --output %s %s 2>&1'; + $command = sprintf($command, $format, $outFile, $inFile); + + exec($command, $out, $ret); + + if ($ret != 0) + { + return error('Dokumentenkonvertierung ist derzeit nicht möglich. Bitte informieren Sie den Administrator'); + } + + return success(true); + } + + /** + * Converts a JPG to PDF + * + * @param string $filename Path to JPG. + * @param string $outfile Path to Output (pdf) File. + * @return success or error object + */ + private function _jpegtopdf($filename, $outfile) + { + if (!file_exists($filename)) + return error('File does not exists'); + + $size = getimagesize($filename); + + $margin_left_right = 18; + $margin_bottom = 18; + + /* + * längere Seite ermitteln + * Hochformat wenn die Seiten gleich lang sind oder das Bild schmäler ist als die Seitenbreite + */ + if ($size[0] > $size[1] && $size[0] > 595) + { + $page_height = 595; + $page_width = 842; + //Wenn Bild kleiner oder gleich Seitenbreite, dann margin erhoehen + if ($size[0] <= $page_width) + { + $margin_left_right = ($page_width - $size[0]) / 2; + $margin_bottom = ($page_height - $size[1]); + } + } + else + { + $page_height = 842; + $page_width = 595; + //Wenn Bild kleiner oder gleich Seitenbreite, dann margin erhoehen + if ($size[0] <= $page_width) + { + $margin_left_right = ($page_width - $size[0]) / 2; + $margin_bottom = ($page_height - $size[1]); + } + } + + // -r300 = 300 ppi + $cmd = 'gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -r100 '; + $cmd .= '-o '.$outfile.' viewjpeg.ps -c "('.$filename.') '; + $cmd .= '<< /PageSize ['.$page_width.' '.$page_height.'] '; + $cmd .= '/.HWMargins ['.$margin_left_right.' '.$margin_bottom.' '.$margin_left_right.' 18] '; + $cmd .= '/countspaces { [ exch { dup 32 ne { pop } if } forall ] length } bind def >> '; + $cmd .= 'setpagedevice viewJPEG"'; + + exec($cmd, $out, $ret); + if ($ret != 0) + { + $this->errormsg = 'jpegToPdf ist derzeit nicht möglich. Bitte informieren Sie den Administrator'; + return false; + } + return true; + } +} From 3f3479abaabe59d55a9834477c7e927529304436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 28 Nov 2017 16:43:51 +0100 Subject: [PATCH 056/126] Fixed Problem when adding Grades --- system/dbupdate_3.3.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 9a2fc7744..c1b448219 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -403,7 +403,7 @@ if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'en' { if($db->db_num_rows($result) == 0) { - $qry = "INSERT INTO lehre.tbl_note(note, bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre) VALUES(17, 'entschuldigt', 'en', NULL, TRUE, NULL, TRUE, TRUE);"; + $qry = "INSERT INTO lehre.tbl_note(bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre) VALUES('entschuldigt', 'en', NULL, TRUE, NULL, TRUE, TRUE);"; if(!$db->db_query($qry)) echo 'lehre.tbl_note: '.$db->db_last_error().'
    '; @@ -417,7 +417,7 @@ if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'ue' { if($db->db_num_rows($result) == 0) { - $qry = "INSERT INTO lehre.tbl_note(note, bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre) VALUES(18, 'unentschuldigt', 'ue', NULL, FALSE, NULL, TRUE, TRUE);"; + $qry = "INSERT INTO lehre.tbl_note(bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre) VALUES('unentschuldigt', 'ue', NULL, FALSE, NULL, TRUE, TRUE);"; if(!$db->db_query($qry)) echo 'lehre.tbl_note: '.$db->db_last_error().'
    '; @@ -1069,15 +1069,14 @@ $tabellen=array( "wawi.tbl_betriebsmittelstatus" => array("betriebsmittelstatus_kurzbz","beschreibung"), "wawi.tbl_betriebsmitteltyp" => array("betriebsmitteltyp","beschreibung","anzahl","kaution","typ_code","mastershapename"), "wawi.tbl_budget" => array("geschaeftsjahr_kurzbz","kostenstelle_id","budget"), - "wawi.tbl_zahlungstyp" => array("zahlungstyp_kurzbz","bezeichnung","reihenfolge"), - "wawi.tbl_konto" => array("konto_id","kontonr","beschreibung","kurzbz","aktiv","person_id","insertamum","insertvon","updateamum","updatevon","ext_id","person_id","hilfe"), + "wawi.tbl_zahlungstyp" => array("zahlungstyp_kurzbz","bezeichnung"), + "wawi.tbl_konto" => array("konto_id","kontonr","beschreibung","kurzbz","aktiv","person_id","insertamum","insertvon","updateamum","updatevon","ext_id","person_id"), "wawi.tbl_konto_kostenstelle" => array("konto_id","kostenstelle_id","insertamum","insertvon"), "wawi.tbl_kostenstelle" => array("kostenstelle_id","oe_kurzbz","bezeichnung","kurzbz","aktiv","insertamum","insertvon","updateamum","updatevon","ext_id","kostenstelle_nr","deaktiviertvon","deaktiviertamum"), "wawi.tbl_bestellungtag" => array("tag","bestellung_id","insertamum","insertvon"), "wawi.tbl_bestelldetailtag" => array("tag","bestelldetail_id","insertamum","insertvon"), "wawi.tbl_projekt_bestellung" => array("projekt_kurzbz","bestellung_id","anteil"), "wawi.tbl_bestellung" => array("bestellung_id","besteller_uid","kostenstelle_id","konto_id","firma_id","lieferadresse","rechnungsadresse","freigegeben","bestell_nr","titel","bemerkung","liefertermin","updateamum","updatevon","insertamum","insertvon","ext_id","zahlungstyp_kurzbz","zuordnung_uid","zuordnung_raum","zuordnung","auftragsbestaetigung","auslagenersatz","iban","wird_geleast","nicht_bestellen","empfehlung_leasing"), - "wawi.tbl_bestellung_angebot" => array("angebot_id","bestellung_id","dms_id"), "wawi.tbl_bestelldetail" => array("bestelldetail_id","bestellung_id","position","menge","verpackungseinheit","beschreibung","artikelnummer","preisprove","mwst","erhalten","sort","text","updateamum","updatevon","insertamum","insertvon"), "wawi.tbl_bestellung_bestellstatus" => array("bestellung_bestellstatus_id","bestellung_id","bestellstatus_kurzbz","uid","oe_kurzbz","datum","insertamum","insertvon","updateamum","updatevon"), "wawi.tbl_bestellstatus" => array("bestellstatus_kurzbz","beschreibung"), From 13ddee4748f7cc5efffabd033b14d93204c6a951 Mon Sep 17 00:00:00 2001 From: Gerald Raab Date: Wed, 29 Nov 2017 16:10:52 +0100 Subject: [PATCH 057/126] Darstellung Services optimiert, wenn ext_id vorhanden wird ein link zum Moodle-Kurs dargestellt --- cis/private/info/service_uebersicht.php | 74 ++++++++++++++--------- include/service.class.php | 8 ++- locale/de-AT/services.php | 4 +- vilesci/stammdaten/service_uebersicht.php | 30 ++++----- 4 files changed, 69 insertions(+), 47 deletions(-) mode change 100644 => 100755 cis/private/info/service_uebersicht.php mode change 100644 => 100755 include/service.class.php mode change 100644 => 100755 locale/de-AT/services.php mode change 100644 => 100755 vilesci/stammdaten/service_uebersicht.php diff --git a/cis/private/info/service_uebersicht.php b/cis/private/info/service_uebersicht.php old mode 100644 new mode 100755 index 5d5d5a01b..60a751927 --- a/cis/private/info/service_uebersicht.php +++ b/cis/private/info/service_uebersicht.php @@ -26,12 +26,12 @@ require_once('../../../include/phrasen.class.php'); require_once('../../../include/person.class.php'); $user = get_uid(); -$sprache = getSprache(); +$sprache = getSprache(); $p=new phrasen($sprache); //$rechte = new benutzerberechtigung(); //$rechte->getBerechtigungen($user); - + //if(!$rechte->isBerechtigt('basis/service')) // die('Sie haben keine Berechtigung fuer diese Seite'); @@ -42,7 +42,7 @@ echo ' '.$p->t("services/service").' - + @@ -50,20 +50,36 @@ echo ' - +'; + +// Load Addons to get Moodle_Path +$addon_obj = new addon(); +if ($addon_obj->loadAddons()) +{ + if (count($addon_obj->result) > 0) + { + foreach ($addon_obj->result as $row) + { + if (file_exists('../../../addons/'.$row->kurzbz.'/config.inc.php')) + include_once('../../../addons/'.$row->kurzbz.'/config.inc.php'); + } + } +} + +echo ' @@ -108,4 +113,5 @@ if($jqueryV1 && $jqueryCurrent) + From 34329edb74dd6d6dcadb848778f5ecb35f793e2c Mon Sep 17 00:00:00 2001 From: Paolo Date: Wed, 29 Nov 2017 18:26:43 +0100 Subject: [PATCH 060/126] - Better code style - Clened views structure - Use session to store the filter state --- application/views/widgets/filter/filter.php | 58 ++- .../views/widgets/filter/selectFields.php | 9 +- .../views/widgets/filter/selectFilters.php | 90 ++-- .../views/widgets/filter/tableDataset.php | 59 ++- application/widgets/FilterWidget.php | 452 +++++++++++++++++- 5 files changed, 556 insertions(+), 112 deletions(-) diff --git a/application/views/widgets/filter/filter.php b/application/views/widgets/filter/filter.php index 542708900..2be9bd405 100644 --- a/application/views/widgets/filter/filter.php +++ b/application/views/widgets/filter/filter.php @@ -1,15 +1,51 @@ -
    - view('widgets/filter/selectFields', array('listFields' => $listFields)); ?> -
    +load->view( + 'templates/header', + array('title' => 'Filters', 'tablesort' => true, 'tableid' => 'tableDataset', 'widgets' => 'zebra') + ); +?> + + +
    +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    +
    + +load->view('templates/footer'); +?> diff --git a/application/views/widgets/filter/selectFields.php b/application/views/widgets/filter/selectFields.php index a4f11dbfb..5129b9829 100644 --- a/application/views/widgets/filter/selectFields.php +++ b/application/views/widgets/filter/selectFields.php @@ -1,14 +1,17 @@
    $value) + $selectedFields = FilterWidget::getSelectedFields(); + + foreach ($selectedFields as $key => $value) { - echo ''; + echo ''; } ?> +
    Add: - $value) diff --git a/application/views/widgets/filter/selectFilters.php b/application/views/widgets/filter/selectFilters.php index ff3995727..bea5d7f00 100644 --- a/application/views/widgets/filter/selectFilters.php +++ b/application/views/widgets/filter/selectFilters.php @@ -1,59 +1,47 @@
    + +
    + + + name; ?> + + + + + + + + +
    + + +
    +
    + + Add filter: + + + - - - - - - - - + type == 'varchar') - { - ?> - - - - type == 'bool') - { - ?> - - - '; } ?> -
    -
    - Add filter: - + +
    diff --git a/application/views/widgets/filter/tableDataset.php b/application/views/widgets/filter/tableDataset.php index 83ca7b95f..402041ff8 100644 --- a/application/views/widgets/filter/tableDataset.php +++ b/application/views/widgets/filter/tableDataset.php @@ -1,48 +1,43 @@ - +retval; - - - - - - - - - + $selectedFields = FilterWidget::getSelectedFields(); +?>
    - +
    - - - - - + $value) + { + if (array_key_exists($value, $result[0])) + { + ?> + + retval; foreach ($result as $key => $value) { + echo ""; + + foreach ($selectedFields as $key2 => $value2) + { + if (array_key_exists($value2, $value)) + { ?> - - - - - - - + "; } ?> diff --git a/application/widgets/FilterWidget.php b/application/widgets/FilterWidget.php index a7715aa57..bf8efbf27 100644 --- a/application/widgets/FilterWidget.php +++ b/application/widgets/FilterWidget.php @@ -5,7 +5,33 @@ */ class FilterWidget extends Widget { + const APP_PARAMETER = 'app'; + const QUERY_PARAMETER = 'query'; + const DATASET_NAME_PARAMETER = 'datasetName'; + + const DATASET_PARAMETER = 'dataset'; + const METADATA_PARAMETER = 'metaData'; + const LIST_FIELDS_PARAMETER = 'listFields'; + + const WIDGET_URL_FILTER = 'widgets/filter/filter'; + const WIDGET_URL_SELECT_FIELDS = 'widgets/filter/selectFields'; + const WIDGET_URL_TABLE_DATASET = 'widgets/filter/tableDataset'; + const WIDGET_URL_SELECT_FILTERS = 'widgets/filter/selectFilters'; + + const SESSION_NAME = 'FILTER'; + + const SELECTED_FIELDS = 'selectedFields'; + const SELECTED_FILTERS = 'selectedFilters'; + const ACTIVE_FILTERS = 'activeFilters'; + + const CMD_ADD_FILTER = 'addFilter'; + const CMD_REMOVE_FILTER = 'rmFilter'; + const CMD_ADD_FIELD = 'addField'; + const CMD_REMOVE_FIELD = 'rmField'; + const CMD_APPLY_FILTERS = 'applyFilters'; + private $app; + private $query; private $datasetName; /** @@ -13,7 +39,14 @@ class FilterWidget extends Widget */ public function __construct($name, $args = array()) { - parent::__construct($name, $args); + parent::__construct($name, $args); // + + $this->_initFilterWidget($args); // + + $this->_initSession(); // + + // + $this->load->model('system/Filters_model', 'FiltersModel'); } /** @@ -21,52 +54,441 @@ class FilterWidget extends Widget */ public function display($widgetData) { - $this->load->model('system/Filters_model', 'FiltersModel'); + // + $this->_setSessionFilterData(); - $this->app = $widgetData['app']; - $this->datasetName = $widgetData['datasetName']; - - $dataset = $this->FiltersModel->execReadOnlyQuery($widgetData['query']); + // + $dataset = $this->FiltersModel->execReadOnlyQuery($this->_generateQuery()); + // $listFields = $this->FiltersModel->getExecutedQueryListFields(); + // $metaData = $this->FiltersModel->getExecutedQueryMetaData(); + // $this->loadViewFilters($listFields, $metaData, $dataset); } /** * */ - private function loadViewFilters($listFields, $metaData, $dataset) + public static function getSelectedFields() { + return self::_getFromSession(self::SELECTED_FIELDS); + } + + /** + * + */ + public static function getSelectedFilters() + { + return self::_getFromSession(self::SELECTED_FILTERS); + } + + /** + * + */ + public static function loadViewTableDataset($dataset) + { + self::_loadView(self::WIDGET_URL_TABLE_DATASET, array(self::DATASET_PARAMETER => $dataset)); + } + + /** + * + */ + public static function loadViewSelectFilters($metaData) + { + self::_loadView(self::WIDGET_URL_SELECT_FILTERS, array(self::METADATA_PARAMETER => $metaData)); + } + + /** + * + */ + public static function loadViewSelectFields($listFields) + { + self::_loadView(self::WIDGET_URL_SELECT_FIELDS, array(self::LIST_FIELDS_PARAMETER => $listFields)); + } + + /** + * + */ + public static function getFilterMetaData($filter, $metaData) + { + $md = null; + + for ($metaDataCounter = 0; $metaDataCounter < count($metaData); $metaDataCounter++) + { + if ($metaData[$metaDataCounter]->name == $filter) + { + $md = $metaData[$metaDataCounter]; + break; + } + } + + return $md; + } + + /** + * + */ + public static function renderFilterType($filterMetaData) + { + $html = ''; + $value = self::_getActiveFilterValue($filterMetaData->name); + + if ($filterMetaData->type == 'int4') + { + $html = ' + + + + + + + '; + } + elseif ($filterMetaData->type == 'varchar') + { + $html = ' + + + + + + + '; + } + elseif ($filterMetaData->type == 'bool') + { + $html = ' + + + + + + + '; + } + + return sprintf($html, $filterMetaData->name.'-operation', $filterMetaData->name, $value); + } + + /** + * + */ + protected function loadViewFilters($listFields, $metaData, $dataset) + { + // Loads views $this->view( - 'widgets/filter/filter', - array('listFields' => $listFields, 'metaData' => $metaData, 'dataset' => $dataset) + self::WIDGET_URL_FILTER, + array( + self::DATASET_PARAMETER => $dataset, + self::METADATA_PARAMETER => $metaData, + self::LIST_FIELDS_PARAMETER => $listFields + ) ); } /** * */ - private function loadViewSelectFields($listFields) + private static function _getFromSession($key) { - $this->view('widgets/filter/selectFields', array('listFields' => $listFields)); + $_getFromSession = null; + $ci =& get_instance(); + $filterSessionArray = $ci->session->userdata(self::SESSION_NAME); + + if (isset($filterSessionArray[$key])) + { + $_getFromSession = $filterSessionArray[$key]; + } + + return $_getFromSession; } /** * */ - private function loadViewSelectFilters($metaData) + private static function _getActiveFilterValue($filterName) { - $this->view('widgets/filter/selectFilters', array('metaData' => $metaData)); + $getActiveFilterValue = ''; + + $activeFields = self::_getFromSession(self::ACTIVE_FILTERS); + + if (isset($activeFields[$filterName])) + { + $getActiveFilterValue = $activeFields[$filterName]; + } + + return $getActiveFilterValue; } /** * */ - private function loadViewTableDataset($dataset) + private static function _loadView($viewName, $parameters) { - $this->view('widgets/filter/tableDataset', array('dataset' => $dataset)); + $ci =& get_instance(); + $ci->load->view($viewName, $parameters); + } + + /** + * + */ + private function _initSession() + { + $filterSessionArray = array(); + + if (isset($_SESSION[self::SESSION_NAME])) + { + $filterSessionArray = $_SESSION[self::SESSION_NAME]; + } + + if (!isset($filterSessionArray[self::SELECTED_FIELDS])) + { + $filterSessionArray[self::SELECTED_FIELDS] = array(); + } + + if (!isset($filterSessionArray[self::SELECTED_FILTERS])) + { + $filterSessionArray[self::SELECTED_FILTERS] = array(); + } + + if (!isset($filterSessionArray[self::ACTIVE_FILTERS])) + { + $filterSessionArray[self::ACTIVE_FILTERS] = array(); + } + + $this->session->set_userdata(self::SESSION_NAME, $filterSessionArray); + } + + /** + * + */ + private function _initFilterWidget($args) + { + if (is_array($args) && count($args) > 0) + { + if (isset($args[self::APP_PARAMETER])) + { + $this->app = $args[self::APP_PARAMETER]; + } + else + { + show_error('The "'.self::APP_PARAMETER.'" parameter must be specified'); + } + + if (isset($args[self::DATASET_NAME_PARAMETER])) + { + $this->datasetName = $args[self::DATASET_NAME_PARAMETER]; + } + else + { + show_error('The "'.self::DATASET_NAME_PARAMETER.'" parameter must be specified'); + } + + if (isset($args[self::QUERY_PARAMETER])) + { + $this->query = $args[self::QUERY_PARAMETER]; + } + else + { + show_error('The "'.self::QUERY_PARAMETER.'" parameter must be specified'); + } + } + else + { + show_error('Second parameter must be an associative array'); + } + } + + /** + * + */ + private function _getSelectedFieldsFromPost() + { + // Selected fields + $selectedFields = array(); + + $filterSessionArray = $this->session->userdata(self::SESSION_NAME); + if (isset($filterSessionArray[self::SELECTED_FIELDS])) + { + $selectedFields = $filterSessionArray[self::SELECTED_FIELDS]; + } + + if (is_array($_POST)) + { + if (array_key_exists(self::CMD_ADD_FIELD, $_POST) && trim($_POST[self::CMD_ADD_FIELD]) != '') + { + if (!in_array($_POST[self::CMD_ADD_FIELD], $selectedFields)) + { + $selectedFields[] = $_POST[self::CMD_ADD_FIELD]; + } + } + + if (array_key_exists(self::CMD_REMOVE_FIELD, $_POST) && trim($_POST[self::CMD_REMOVE_FIELD]) != '') + { + $tmpArray = array(); + foreach ($selectedFields as $key => $value) + { + if ($_POST[self::CMD_REMOVE_FIELD] != $value) + { + $tmpArray[] = $value; + } + } + + $selectedFields = $tmpArray; + } + } + + return $selectedFields; + } + + /** + * + */ + private function _getSelectedFiltersFromPost() + { + // Selected filters + $selectedFilters = array(); + $activeFilters = array(); + + $filterSessionArray = $this->session->userdata(self::SESSION_NAME); + + if (isset($filterSessionArray[self::SELECTED_FILTERS])) + { + $selectedFilters = $filterSessionArray[self::SELECTED_FILTERS]; + } + + if (isset($filterSessionArray[self::ACTIVE_FILTERS])) + { + $activeFilters = $filterSessionArray[self::ACTIVE_FILTERS]; + } + + if (is_array($_POST)) + { + if (array_key_exists(self::CMD_ADD_FILTER, $_POST) && trim($_POST[self::CMD_ADD_FILTER]) != '') + { + if (!in_array($_POST[self::CMD_ADD_FILTER], $selectedFilters)) + { + $selectedFilters[] = $_POST[self::CMD_ADD_FILTER]; + } + } + + if (array_key_exists(self::CMD_REMOVE_FILTER, $_POST) && trim($_POST[self::CMD_REMOVE_FILTER]) != '') + { + $tmpArray = array(); + foreach ($selectedFilters as $key => $value) + { + if ($_POST[self::CMD_REMOVE_FILTER] != $value) + { + $tmpArray[] = $value; + } + } + + $selectedFilters = $tmpArray; + + if (isset($activeFilters[$_POST[self::CMD_REMOVE_FILTER]])) + { + + } + } + } + + return $selectedFilters; + } + + /** + * + */ + private function _getActiveFiltersFromPost() + { + // Selected fields + $activeFilters = array(); + $selectedFilters = array(); + + $filterSessionArray = $this->session->userdata(self::SESSION_NAME); + + if (isset($filterSessionArray[self::ACTIVE_FILTERS])) + { + $activeFilters = $filterSessionArray[self::ACTIVE_FILTERS]; + } + + if (isset($filterSessionArray[self::SELECTED_FILTERS])) + { + $selectedFilters = $filterSessionArray[self::SELECTED_FILTERS]; + } + + if (is_array($_POST)) + { + for ($selectedFiltersCounter = 0; $selectedFiltersCounter < count($selectedFilters); $selectedFiltersCounter++) + { + $selectedFilter = $selectedFilters[$selectedFiltersCounter]; + + if (isset($_POST[$selectedFilter])) + { + $activeFilters[$selectedFilter] = $_POST[$selectedFilter]; + } + } + } + + return $activeFilters; + } + + /** + * + */ + private function _setSessionFilterData() + { + $filterSessionArray = array( + self::SELECTED_FIELDS => $this->_getSelectedFieldsFromPost(), + self::SELECTED_FILTERS => $this->_getSelectedFiltersFromPost(), + self::ACTIVE_FILTERS => $this->_getActiveFiltersFromPost(), + ); + + $this->session->set_userdata(self::SESSION_NAME, $filterSessionArray); + } + + /** + * + */ + private function _generateQuery() + { + $query = $this->query; + // Filters dataset + if (is_array($_POST) + && array_key_exists(self::CMD_APPLY_FILTERS, $_POST) + && $_POST[self::CMD_APPLY_FILTERS] == 'true') + { + if (is_array($_POST) && array_key_exists(self::SELECTED_FILTERS, $_POST)) + { + $selectedFilters = $_POST[self::SELECTED_FILTERS]; + } + + for ($filtersCounter = 0; $filtersCounter < count($selectedFilters); $filtersCounter++) + { + $selectedFilter = $selectedFilters[$filtersCounter]; + + if (isset($_POST[$selectedFilter])) + { + } + } + + $query = 'SELECT * FROM ('.$this->query.') tableFilters WHERE "Vorname" ILIKE \'%Oliver%\''; + } + + return $query; } } From ec00c93d04fd0389fe87a7fbceae36727f4584ce Mon Sep 17 00:00:00 2001 From: Paolo Date: Fri, 1 Dec 2017 15:15:16 +0100 Subject: [PATCH 061/126] Better check if a table contains data before using the tablesorter --- application/views/templates/header.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/application/views/templates/header.php b/application/views/templates/header.php index 0cb3a9fad..47befaac7 100644 --- a/application/views/templates/header.php +++ b/application/views/templates/header.php @@ -69,9 +69,9 @@ if($jqueryV1 && $jqueryCurrent) '; } } - + if ($work=='del') { if(!$veranstaltung=$Jahresplan->deleteVeranstaltung($veranstaltung_id)) - { + { $error=$p->t("global/fehlerBeimLoeschenDesEintrags").$Jahresplan->errormsg; } else @@ -137,34 +137,34 @@ if (window.opener && !window.opener.closed) { if (confirm("'.$p->t("eventkalender/sollDieHauptseiteNeuAufgebautWerden").'?")) { window.opener.location.reload(); - } + } this.close(); } --> - - '; + + '; } } } // ------------------------------------------------------------------------------------------ -// Kategorie - Daten lesen fuer Kategorieselect +// Kategorie - Daten lesen fuer Kategorieselect // Veranstaltungskategorien ohne Selektionsbedingung // ------------------------------------------------------------------------------------------ $Jahresplan->InitVeranstaltungskategorie(); - // Nur Berechtigte duerfen auch noch nicht freigegebene Sehen + // Nur Berechtigte duerfen auch noch nicht freigegebene Sehen $Jahresplan->show_only_public_kategorie=($is_mitarbeiter?false:true); if (!$veranstaltungskategorie=$Jahresplan->loadVeranstaltungskategorie()) die($Jahresplan->errormsg); - + // ------------------------------------------------------------------------------------------ // Daten lesen fuer Anzeige der // Veranstaltungen mit Selektionsbedingung // ------------------------------------------------------------------------------------------ if (!empty($veranstaltung_id)) { - $Jahresplan->InitVeranstaltung(); - // Nur Berechtigte duerfen auch noch nicht freigegebene Sehen + $Jahresplan->InitVeranstaltung(); + // Nur Berechtigte duerfen auch noch nicht freigegebene Sehen $Jahresplan->show_only_public_kategorie=($is_mitarbeiter?false:true); $Jahresplan->freigabe=($is_wartungsberechtigt?false:true); @@ -175,7 +175,7 @@ if ($veranstaltungen=$Jahresplan->loadVeranstaltung()) { $veranstaltungen=jahresplan_funk_veranstaltung_extend($veranstaltungen); - while (list($key, $value) = each($veranstaltungen)) + while (list($key, $value) = each($veranstaltungen)) { $veranstaltung[$key]=$value; } @@ -187,16 +187,16 @@ die($Jahresplan->errormsg); } // Plausib - if (!is_array($veranstaltung) || count($veranstaltung)<1 || !isset($veranstaltung["veranstaltung_id"])) + if (!is_array($veranstaltung) || count($veranstaltung)<1 || !isset($veranstaltung["veranstaltung_id"])) { $work='new'; - } + } } else // Reload ohne Datenverarbeitung , die Aufrufparameter in die Datentabelle uebertragen fuer Value der Inputfelder { $veranstaltung=$_REQUEST; } -?> +?> @@ -208,11 +208,11 @@ - + + -" method="post" enctype="multipart/form-data">
    PersonIdNachnameVornameEmailAktiv
    PersonId; ?>Nachname; ?>Vorname; ?>Email; ?>Aktiv === true ? 'True' : 'False'; ?>
    {$value2}; ?>
    - + - + - + @@ -482,18 +482,30 @@  t("eventkalender/ganztaegigeVeranstaltung")?>   type="checkbox" value="1" onclick="if (this.checked!=false) {window.document.selVeranstaltung.Zeit1.options.selectedIndex=0;window.document.selVeranstaltung.Zeit2.options.selectedIndex=(window.document.selVeranstaltung.Zeit2.options.length - 1); }; var time_stamp=TimestampDatumZeit(window.document.selVeranstaltung.Datum1.value,window.document.selVeranstaltung.Zeit1.value); if (time_stamp) {window.document.selVeranstaltung.start.value=time_stamp; }; time_stamp=TimestampDatumZeit(window.document.selVeranstaltung.Datum2.value,window.document.selVeranstaltung.Zeit2.value); if (time_stamp) {window.document.selVeranstaltung.ende.value=time_stamp; };" name="tmpGanztag" > - - + + - - - + + + - - + + - + + + + + + + + "; + } + else + { + echo ' + + + '; + } + echo '
    @@ -408,9 +408,9 @@ " class="cursor_hand" onclick="self.location.href='';" >t("eventkalender/neuanlage")?> Neuanlage
    + + +
    + + +
    @@ -521,7 +533,7 @@
    @@ -548,12 +560,12 @@ '.$error.'

    '; - + $veranstaltung_id=(isset($veranstaltung['veranstaltung_id'])?$veranstaltung['veranstaltung_id']:$veranstaltung_id); if (!empty($veranstaltung_id)) { echo '
    '.jahresplan_veranstaltung_detail_user($veranstaltung,$is_wartungsberechtigt); - echo ''.$p->t("eventkalender/reservierungenInEinemNeuenFensterAnzeigen").'.'; + echo ''.$p->t("eventkalender/reservierungenInEinemNeuenFensterAnzeigen").'.'; echo ''; } else @@ -562,4 +574,4 @@ } ?> - + From e2908cc1d7c1cdf5640231dc78ca1b10e1ee77ef Mon Sep 17 00:00:00 2001 From: Paolo Date: Fri, 1 Dec 2017 16:57:18 +0100 Subject: [PATCH 064/126] - Sets correctly the selected filter operation - Use enter to set a filter - Replaced submit buttons with buttons --- application/views/widgets/filter/filter.php | 9 ++++- .../views/widgets/filter/selectFields.php | 2 +- .../views/widgets/filter/selectFilters.php | 2 +- application/widgets/FilterWidget.php | 38 ++++++++++++++----- 4 files changed, 37 insertions(+), 14 deletions(-) diff --git a/application/views/widgets/filter/filter.php b/application/views/widgets/filter/filter.php index 23d3981d7..271b5a224 100644 --- a/application/views/widgets/filter/filter.php +++ b/application/views/widgets/filter/filter.php @@ -14,6 +14,7 @@ $(".remove-field").each(function() { $(this).click(function() { $("#rmField").val($(this).attr('fieldToRemove')); + $("#filterForm").submit(); }); }); @@ -24,6 +25,7 @@ $(".remove-filter").each(function() { $(this).click(function() { $("#rmFilter").val($(this).attr('filterToRemove')); + $("#filterForm").submit(); }); }); @@ -31,8 +33,11 @@ $("#filterForm").submit(); }); - $(".select-filter-operation-value").keyup(function() { - $("#filterForm").submit(); + $(".select-filter-operation-value").keydown(function(event) { + if (event.which == 13) + { + $("#filterForm").submit(); + } }); }); diff --git a/application/views/widgets/filter/selectFields.php b/application/views/widgets/filter/selectFields.php index 94ee75267..8bc988125 100644 --- a/application/views/widgets/filter/selectFields.php +++ b/application/views/widgets/filter/selectFields.php @@ -6,7 +6,7 @@ { $selectedField = $selectedFields[$selectedFieldsCounter]; ?> - + diff --git a/application/views/widgets/filter/selectFilters.php b/application/views/widgets/filter/selectFilters.php index 4f9d65340..9a4aa0ffd 100644 --- a/application/views/widgets/filter/selectFilters.php +++ b/application/views/widgets/filter/selectFilters.php @@ -17,7 +17,7 @@ - + diff --git a/application/widgets/FilterWidget.php b/application/widgets/FilterWidget.php index b5e5bb766..0c456365e 100644 --- a/application/widgets/FilterWidget.php +++ b/application/widgets/FilterWidget.php @@ -146,17 +146,18 @@ class FilterWidget extends Widget public static function renderFilterType($filterMetaData) { $html = ''; - $value = self::_getActiveFilterValue($filterMetaData->name); + $activeFilterValue = self::_getActiveFilterValue($filterMetaData->name); + $activeFilterOperationValue = self::_getActiveFilterOperationValue($filterMetaData->name); if ($filterMetaData->type == 'int4') { $html = ' @@ -169,8 +170,8 @@ class FilterWidget extends Widget $html = ' @@ -183,8 +184,8 @@ class FilterWidget extends Widget $html = ' @@ -193,7 +194,7 @@ class FilterWidget extends Widget '; } - return sprintf($html, $filterMetaData->name.'-operation', $filterMetaData->name, $value); + return sprintf($html, $filterMetaData->name.'-operation', $filterMetaData->name, $activeFilterValue); } /** @@ -246,6 +247,23 @@ class FilterWidget extends Widget return $getActiveFilterValue; } + /** + * + */ + private static function _getActiveFilterOperationValue($filterName) + { + $getActiveFilterOperationValue = ''; + + $activeFieldsOperation = self::_getFromSession(self::ACTIVE_FILTERS_OPERATION); + + if (isset($activeFieldsOperation[$filterName])) + { + $getActiveFilterOperationValue = $activeFieldsOperation[$filterName]; + } + + return $getActiveFilterOperationValue; + } + /** * */ From 749aa4525a299222c6d45ef76a36ec0312dfb263 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 4 Dec 2017 10:03:34 +0100 Subject: [PATCH 065/126] beautified links (links are only on words) CSV Export, Import... --- cis/private/tools/zeitaufzeichnung.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 609e3f9f5..8b145092e 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -720,13 +720,13 @@ if($projekt->getProjekteMitarbeiter($user, true)) echo " + + - + + + + @@ -27,29 +45,43 @@ ?> + + {$selectedField}, $result); ?> + + load->model('system/Filters_model', 'FiltersModel'); + + self::$FilterWidgetInstance = $this; } /** @@ -107,12 +118,25 @@ class FilterWidget extends Widget return self::_getFromSession(self::SELECTED_FILTERS); } + /** + * + */ + public static function getAdditionalColumns() + { + return self::_getFromSession(self::ADDITIONAL_COLUMNS); + } + /** * */ public static function loadViewTableDataset($dataset) { - self::_loadView(self::WIDGET_URL_TABLE_DATASET, array(self::DATASET_PARAMETER => $dataset)); + self::_loadView( + self::WIDGET_URL_TABLE_DATASET, + array( + self::DATASET_PARAMETER => $dataset + ) + ); } /** @@ -207,6 +231,39 @@ class FilterWidget extends Widget return sprintf($html, $filterMetaData->name.'-operation', $filterMetaData->name, $activeFilterValue); } + /** + * + */ + public static function formatRaw($fieldName, $fieldValue, $datasetRaw) + { + $tmpDatasetRaw = clone $datasetRaw; + + if (is_bool($fieldValue)) + { + $tmpDatasetRaw->{$fieldName} = $fieldValue === true ? 'true' : 'false'; + } + + $formatRaw = self::$FilterWidgetInstance->getFormatRaw(); + + if ($formatRaw != null) + { + $tmpDatasetRaw = $formatRaw($fieldName, $fieldValue, $tmpDatasetRaw); + } + + return $tmpDatasetRaw; + } + + /** + * + */ + public static function getCheckboxes() + { + return self::$FilterWidgetInstance->_getCheckboxes(); + } + + //------------------------------------------------------------------------------------------------------------------ + // Protected + /** * */ @@ -223,6 +280,25 @@ class FilterWidget extends Widget ); } + /** + * + */ + protected function getFormatRaw() + { + return $this->formatRaw; + } + + /** + * + */ + protected function _getCheckboxes() + { + return $this->checkboxes; + } + + //------------------------------------------------------------------------------------------------------------------ + // Private + /** * */ @@ -315,6 +391,11 @@ class FilterWidget extends Widget $filterSessionArray[self::ACTIVE_FILTERS_OPERATION] = array(); } + if (!isset($filterSessionArray[self::ADDITIONAL_COLUMNS])) + { + $filterSessionArray[self::ADDITIONAL_COLUMNS] = array(); + } + $this->session->set_userdata(self::SESSION_NAME, $filterSessionArray); } @@ -323,48 +404,80 @@ class FilterWidget extends Widget */ private function _initFilterWidget($args) { - if (is_array($args) && count($args) > 0) + $this->app = null; + $this->query = null; + $this->datasetName = null; + $this->filterKurzbz = null; + $this->filterId = null; + $this->additionalColumns = null; + $this->formatRaw = null; + $this->checkboxes = null; + + if (!is_array($args) || (is_array($args) && count($args) == 0)) { - if (isset($args[self::APP_PARAMETER])) - { - $this->app = $args[self::APP_PARAMETER]; - } - else - { - show_error('The "'.self::APP_PARAMETER.'" parameter must be specified'); - } - - if (isset($args[self::DATASET_NAME_PARAMETER])) - { - $this->datasetName = $args[self::DATASET_NAME_PARAMETER]; - } - else - { - show_error('The "'.self::DATASET_NAME_PARAMETER.'" parameter must be specified'); - } - - if (isset($args[self::QUERY_PARAMETER])) - { - $this->query = $args[self::QUERY_PARAMETER]; - } - else - { - show_error('The "'.self::QUERY_PARAMETER.'" parameter must be specified'); - } - - if (isset($args[self::FILTER_KURZBZ])) - { - $this->filterKurzbz = $args[self::FILTER_KURZBZ]; - } - - if (isset($args[self::FILTER_ID])) - { - $this->filterId = $args[self::FILTER_ID]; - } + show_error('Second parameter must be a not empty associative array'); } else { - show_error('Second parameter must be an associative array'); + if (( + !isset($args[self::APP_PARAMETER]) + && !isset($args[self::DATASET_NAME_PARAMETER]) + && !isset($args[self::FILTER_KURZBZ]) + ) + && !isset($args[self::FILTER_ID])) + { + show_error('At least one parameters must be specified 1'); + } + else + { + if (!isset($args[self::QUERY_PARAMETER]) && !isset($args[self::DB_RESULT])) + { + show_error('At least one parameters must be specified 2'); + } + else + { + if (isset($args[self::APP_PARAMETER]) + && isset($args[self::DATASET_NAME_PARAMETER]) + && isset($args[self::FILTER_KURZBZ])) + { + $this->app = $args[self::APP_PARAMETER]; + $this->datasetName = $args[self::DATASET_NAME_PARAMETER]; + $this->filterKurzbz = $args[self::FILTER_KURZBZ]; + } + else + { + $this->filterId = $args[self::FILTER_ID]; + } + + if (isset($args[self::QUERY_PARAMETER])) + { + $this->query = $args[self::QUERY_PARAMETER]; + } + elseif (isset($args[self::DB_RESULT])) + { + $this->query = $args[self::DB_RESULT]; + } + } + } + + if (isset($args[self::ADDITIONAL_COLUMNS]) + && is_array($args[self::ADDITIONAL_COLUMNS]) + && count($args[self::ADDITIONAL_COLUMNS]) > 0) + { + $this->additionalColumns = $args[self::ADDITIONAL_COLUMNS]; + } + + if (isset($args[self::FORMAT_RAW]) && is_callable($args[self::FORMAT_RAW])) + { + $this->formatRaw = $args[self::FORMAT_RAW]; + } + + if (isset($args[self::CHECKBOXES]) + && is_array($args[self::CHECKBOXES]) + && count($args[self::CHECKBOXES]) > 0) + { + $this->checkboxes = $args[self::CHECKBOXES]; + } } } @@ -388,15 +501,29 @@ class FilterWidget extends Widget // $this->FiltersModel->addLimit(1); - // - $filter = $this->FiltersModel->loadWhere( - array( + $whereParameters = null; + + if ($this->filterId == null) + { + $whereParameters = array( 'app' => $this->app, 'dataset_name' => $this->datasetName, + 'filter_kurzbz' => $this->filterKurzbz, 'uid' => getAuthUID(), 'default_filter' => true - ) - ); + ); + } + else + { + $whereParameters = array( + 'filter_id' => $this->filter_id, + 'uid' => getAuthUID(), + 'default_filter' => true + ); + } + + // + $filter = $this->FiltersModel->loadWhere($whereParameters); $jsonEncodedFilter = null; @@ -585,7 +712,8 @@ class FilterWidget extends Widget { $filterSessionArray = array( self::SELECTED_FIELDS => $this->_getSelectedFieldsFromPost(), - self::SELECTED_FILTERS => $this->_getSelectedFiltersFromPost() + self::SELECTED_FILTERS => $this->_getSelectedFiltersFromPost(), + self::ADDITIONAL_COLUMNS => $this->additionalColumns ); $filterSessionArray[self::ACTIVE_FILTERS] = array(); @@ -626,49 +754,52 @@ class FilterWidget extends Widget foreach ($activeFilters as $field => $activeFilterValue) { - if ($first) + if (trim($activeFilterValue) != '') { - $first = false; - } - else - { - $where .= ' AND '; - } - - if (isset($activeFiltersOperation[$field])) - { - $where .= '"'.$field.'"'; - $condition = ''; - - switch ($activeFiltersOperation[$field]) + if ($first) { - case self::OP_EQUAL: - $condition = ' = '.$activeFilterValue; - break; - case self::OP_NOT_EQUAL: - $condition = ' != '.$activeFilterValue; - break; - case self::OP_GREATER_THAN: - $condition = ' > '.$activeFilterValue; - break; - case self::OP_LESS_THAN: - $condition = ' < '.$activeFilterValue; - break; - case self::OP_CONTAINS: - $condition = ' ILIKE \'%'.$activeFilterValue.'%\''; - break; - case self::OP_NOT_CONTAINS: - $condition = ' NOT ILIKE \'%'.$activeFilterValue.'%\''; - break; - case self::OP_IS_TRUE: - $condition = ' IS TRUE'; - break; - case self::OP_IS_FALSE: - $condition = ' IS FALSE'; - break; + $first = false; + } + else + { + $where .= ' AND '; } - $where .= $condition; + if (isset($activeFiltersOperation[$field])) + { + $where .= '"'.$field.'"'; + $condition = ''; + + switch ($activeFiltersOperation[$field]) + { + case self::OP_EQUAL: + $condition = ' = '.$activeFilterValue; + break; + case self::OP_NOT_EQUAL: + $condition = ' != '.$activeFilterValue; + break; + case self::OP_GREATER_THAN: + $condition = ' > '.$activeFilterValue; + break; + case self::OP_LESS_THAN: + $condition = ' < '.$activeFilterValue; + break; + case self::OP_CONTAINS: + $condition = ' ILIKE \'%'.$activeFilterValue.'%\''; + break; + case self::OP_NOT_CONTAINS: + $condition = ' NOT ILIKE \'%'.$activeFilterValue.'%\''; + break; + case self::OP_IS_TRUE: + $condition = ' IS TRUE'; + break; + case self::OP_IS_FALSE: + $condition = ' IS FALSE'; + break; + } + + $where .= $condition; + } } } From 5d7477c4941526cf39714c8783af704acce0fff0 Mon Sep 17 00:00:00 2001 From: oesi Date: Tue, 5 Dec 2017 17:01:11 +0100 Subject: [PATCH 070/126] =?UTF-8?q?=C3=96ffnen=20von=20gesperrten=20Vertei?= =?UTF-8?q?ler=20=C3=BCberarbeitet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/open_grp.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cis/private/open_grp.php b/cis/private/open_grp.php index 9b9bd2038..db526c396 100644 --- a/cis/private/open_grp.php +++ b/cis/private/open_grp.php @@ -104,8 +104,8 @@ if(isset($_REQUEST['token']) && isset($_REQUEST['grp'])) /* Generate an random String */ $mail_id=mail_id_generator(); - /* call the shellpart at polyxena */ - $command = "ssh -p 22022 root@polyxena sudo /root/bin/mlistin.sh " . $_REQUEST['grp'] . " " . $mail_id . " 2>&1"; + /* Command to unlock Mailgroup */ + $command = "ssh -i /etc/apache2/id_mail_provisioning mailadmins@bifrost2 ".$_REQUEST['grp'] . " " . $mail_id; exec($command); /* ffe, 20051020 - do a little logging */ From a7582c88683e016a9831d72f517e433d6ecf0444 Mon Sep 17 00:00:00 2001 From: Paolo Date: Tue, 5 Dec 2017 17:39:31 +0100 Subject: [PATCH 071/126] - Method execReadOnlyQuery of DB_Model has a less strict check about the query statement - Added a first management of the type date --- .../controllers/system/TestFilterWidget.php | 8 +-- application/core/DB_Model.php | 28 +++++----- application/widgets/FilterWidget.php | 51 +++++++++++++++---- 3 files changed, 62 insertions(+), 25 deletions(-) diff --git a/application/controllers/system/TestFilterWidget.php b/application/controllers/system/TestFilterWidget.php index e269e4cf9..1984ddb15 100644 --- a/application/controllers/system/TestFilterWidget.php +++ b/application/controllers/system/TestFilterWidget.php @@ -27,13 +27,15 @@ class TestFilterWidget extends VileSci_Controller p.nachname AS "Nachname", p.vorname AS "Vorname", k.kontakt AS "Email", - p.aktiv AS "Aktiv" + p.aktiv AS "Aktiv", + k.updateamum AS "Update date" FROM public.tbl_person p INNER JOIN public.tbl_kontakt k USING(person_id) WHERE p.aktiv = TRUE AND p.person_id = k.person_id AND k.kontakttyp = \'email\' AND p.person_id < 1000 ', + 'hideFilters' => true, 'checkboxes' => array('PersonId'), 'additionalColumns' => array('Delete', 'Edit'), 'formatRaw' => function($fieldName, $fieldValue, $datasetRaw) { @@ -42,11 +44,11 @@ class TestFilterWidget extends VileSci_Controller { $datasetRaw->{$fieldName} = ''.$fieldValue.''; } - if ($fieldName == 'Delete') + elseif ($fieldName == 'Delete') { $datasetRaw->{$fieldName} = 'Delete'; } - if ($fieldName == 'Edit') + elseif ($fieldName == 'Edit') { $datasetRaw->{$fieldName} = 'Edit'; } diff --git a/application/core/DB_Model.php b/application/core/DB_Model.php index e6bd31114..3dc5e85ac 100644 --- a/application/core/DB_Model.php +++ b/application/core/DB_Model.php @@ -694,21 +694,25 @@ class DB_Model extends FHC_Model */ public function execReadOnlyQuery($query, $parametersArray = null) { + $result = error('You are allowed to run only query for reading data'); // + $cleanedQuery = trim(preg_replace('/\t|\n|\r|;/', '', $query)); // + // - if (!stripos($query, 'INSERT') - && !stripos($query, 'UPDATE') - && !stripos($query, 'DELETE') - && !stripos($query, 'CREATE') - && !stripos($query, 'ALTER') - && !stripos($query, 'GRANT') - && !stripos($query, 'DROP')) + if (stripos($cleanedQuery, 'SELECT') == 0 + && (stripos($cleanedQuery, 'INSERT') > 0 || stripos($cleanedQuery, 'INSERT') == false) + && (stripos($cleanedQuery, 'UPDATE') > 0 || stripos($cleanedQuery, 'UPDATE') == false) + && (stripos($cleanedQuery, 'CREATE') > 0 || stripos($cleanedQuery, 'CREATE') == false) + && (stripos($cleanedQuery, 'DELETE') > 0 || stripos($cleanedQuery, 'DELETE') == false) + && (stripos($cleanedQuery, 'ALTER') > 0 || stripos($cleanedQuery, 'ALTER') == false) + && (stripos($cleanedQuery, 'GRANT') > 0 || stripos($cleanedQuery, 'GRANT') == false) + && (stripos($cleanedQuery, 'DROP') > 0 || stripos($cleanedQuery, 'DROP') == false)) { - return $this->execQuery($query, $parametersArray); - } - else - { - return error('You are allowed to run only query for reading data'); + $queryToExec = str_replace(';', '', $query); // + + $result = $this->execQuery($queryToExec, $parametersArray); } + + return $result; } // ------------------------------------------------------------------------------------------ diff --git a/application/widgets/FilterWidget.php b/application/widgets/FilterWidget.php index f8c2881c2..3a5e93247 100644 --- a/application/widgets/FilterWidget.php +++ b/application/widgets/FilterWidget.php @@ -47,6 +47,8 @@ class FilterWidget extends Widget const OP_CONTAINS = 'contains'; const OP_NOT_CONTAINS = 'ncontains'; + const DEFAULT_DATE_FORMAT = 'd.m.Y H:i:s'; + private $app; private $query; private $datasetName; @@ -56,6 +58,8 @@ class FilterWidget extends Widget private $formatRaw; private $checkboxes; + private $metaData; + private static $FilterWidgetInstance; /** @@ -96,10 +100,10 @@ class FilterWidget extends Widget $listFields = $this->FiltersModel->getExecutedQueryListFields(); // - $metaData = $this->FiltersModel->getExecutedQueryMetaData(); + $this->metaData = $this->FiltersModel->getExecutedQueryMetaData(); // - $this->loadViewFilters($listFields, $metaData, $dataset); + $this->loadViewFilters($listFields, $this->metaData, $dataset); } /** @@ -227,6 +231,23 @@ class FilterWidget extends Widget '; } + elseif ($filterMetaData->type == 'timestamp') + { + $html = ' + + + + + + + + '; + } return sprintf($html, $filterMetaData->name.'-operation', $filterMetaData->name, $activeFilterValue); } @@ -236,18 +257,28 @@ class FilterWidget extends Widget */ public static function formatRaw($fieldName, $fieldValue, $datasetRaw) { - $tmpDatasetRaw = clone $datasetRaw; + $tmpDatasetRaw = null; - if (is_bool($fieldValue)) + if (is_object($datasetRaw)) { - $tmpDatasetRaw->{$fieldName} = $fieldValue === true ? 'true' : 'false'; - } + $tmpDatasetRaw = clone $datasetRaw; + $tmpMetaData = self::getFilterMetaData($fieldName, self::$FilterWidgetInstance->metaData); - $formatRaw = self::$FilterWidgetInstance->getFormatRaw(); + if (is_bool($fieldValue)) + { + $tmpDatasetRaw->{$fieldName} = $fieldValue === true ? 'true' : 'false'; + } + elseif ($tmpMetaData != null && $tmpMetaData->type == 'timestamp') + { + $tmpDatasetRaw->{$fieldName} = date(self::DEFAULT_DATE_FORMAT, strtotime($fieldValue)); + } - if ($formatRaw != null) - { - $tmpDatasetRaw = $formatRaw($fieldName, $fieldValue, $tmpDatasetRaw); + $formatRaw = self::$FilterWidgetInstance->getFormatRaw(); + + if ($formatRaw != null) + { + $tmpDatasetRaw = $formatRaw($fieldName, $fieldValue, $tmpDatasetRaw); + } } return $tmpDatasetRaw; From 543e4a8fedce5025264d578d488c4502530229a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 6 Dec 2017 08:03:33 +0100 Subject: [PATCH 072/126] =?UTF-8?q?TicketIDs=20k=C3=B6nnen=20im=20Jahrespl?= =?UTF-8?q?an=20mit=20#1234=20verlinkt=20werden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jahresplan/jahresplan_funktionen.inc.php | 17 +++++++++++++++++ config/cis.config-default.inc.php | 3 +++ 2 files changed, 20 insertions(+) diff --git a/cis/private/jahresplan/jahresplan_funktionen.inc.php b/cis/private/jahresplan/jahresplan_funktionen.inc.php index 72277f22b..a2b8699c4 100644 --- a/cis/private/jahresplan/jahresplan_funktionen.inc.php +++ b/cis/private/jahresplan/jahresplan_funktionen.inc.php @@ -1100,6 +1100,7 @@ function jahresplan_date_to_timestamp($string="") function printlinks($text) { + // Volle Links $pattern = '~[a-z]+://\S+~'; if($num_found = preg_match_all($pattern, $text, $out)) @@ -1109,5 +1110,21 @@ function printlinks($text) echo ''.$link.'
    '; } } + + if(defined('JAHRESPLAN_TICKET_LINK')) + { + // TicketsIds mit #1234 + $pattern = '~\#[0-9]+~'; + + if($num_found = preg_match_all($pattern, $text, $out)) + { + foreach($out[0] as $ticketnr) + { + $id = mb_substr($ticketnr,1); + $link = JAHRESPLAN_TICKET_LINK.$id; + echo ''.$link.'
    '; + } + } + } } ?> diff --git a/config/cis.config-default.inc.php b/config/cis.config-default.inc.php index 49af7cdd6..063518284 100644 --- a/config/cis.config-default.inc.php +++ b/config/cis.config-default.inc.php @@ -232,4 +232,7 @@ define('CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN', serialize(array("Studiengebuehr"))) //Gibt an bei welcher Länge die LV-Bezeichnungen im Menü abgeschnitten werden. Default: 21 define('CIS_LVMENUE_CUTLENGTH', 21); + +// Gibt an, auf welche Seite TicketIds ala #1234 im Jahresplan verlinkt werden zB zur Verlinkung in Bugtracker +define('JAHRESPLAN_TICKET_LINK','https://bug.technikum-wien.at/otrs/index.pl?Action=AgentTicketZoom;TicketID='); ?> From ec58b3eea157f5a975486299fd29e122c20bb5af Mon Sep 17 00:00:00 2001 From: Paolo Date: Mon, 11 Dec 2017 15:12:51 +0100 Subject: [PATCH 073/126] Added full date filter support --- .../controllers/system/TestFilterWidget.php | 4 +- application/widgets/FilterWidget.php | 138 ++++++++++++++---- 2 files changed, 110 insertions(+), 32 deletions(-) diff --git a/application/controllers/system/TestFilterWidget.php b/application/controllers/system/TestFilterWidget.php index 1984ddb15..45c5d36bf 100644 --- a/application/controllers/system/TestFilterWidget.php +++ b/application/controllers/system/TestFilterWidget.php @@ -28,14 +28,14 @@ class TestFilterWidget extends VileSci_Controller p.vorname AS "Vorname", k.kontakt AS "Email", p.aktiv AS "Aktiv", - k.updateamum AS "Update date" + k.updateamum AS "UpdateDate" FROM public.tbl_person p INNER JOIN public.tbl_kontakt k USING(person_id) WHERE p.aktiv = TRUE AND p.person_id = k.person_id AND k.kontakttyp = \'email\' AND p.person_id < 1000 ', - 'hideFilters' => true, + 'hideHeader' => false, 'checkboxes' => array('PersonId'), 'additionalColumns' => array('Delete', 'Edit'), 'formatRaw' => function($fieldName, $fieldValue, $datasetRaw) { diff --git a/application/widgets/FilterWidget.php b/application/widgets/FilterWidget.php index 3a5e93247..56b83304b 100644 --- a/application/widgets/FilterWidget.php +++ b/application/widgets/FilterWidget.php @@ -14,6 +14,7 @@ class FilterWidget extends Widget const ADDITIONAL_COLUMNS = 'additionalColumns'; const FORMAT_RAW = 'formatRaw'; const CHECKBOXES = 'checkboxes'; + const HIDE_HEADER = 'hideHeader'; const DATASET_PARAMETER = 'dataset'; const METADATA_PARAMETER = 'metaData'; @@ -29,8 +30,10 @@ class FilterWidget extends Widget const SELECTED_FIELDS = 'selectedFields'; const SELECTED_FILTERS = 'selectedFilters'; const ACTIVE_FILTERS = 'activeFilters'; + const ACTIVE_FILTERS_OPTION = 'activeFiltersOption'; const ACTIVE_FILTERS_OPERATION = 'activeFiltersOperation'; + const ACTIVE_FILTER_OPTION_POSTFIX = '-option'; const ACTIVE_FILTER_OPERATION_POSTFIX = '-operation'; const CMD_ADD_FILTER = 'addFilter'; @@ -41,13 +44,16 @@ class FilterWidget extends Widget const OP_EQUAL = 'equal'; const OP_NOT_EQUAL = 'nequal'; const OP_GREATER_THAN = 'gt'; - const OP_LESS_THAN = 'ld'; + const OP_LESS_THAN = 'lt'; const OP_IS_TRUE = 'true'; const OP_IS_FALSE = 'false'; const OP_CONTAINS = 'contains'; const OP_NOT_CONTAINS = 'ncontains'; - const DEFAULT_DATE_FORMAT = 'd.m.Y H:i:s'; + const OPT_DAYS = 'days'; + const OPT_MONTHS = 'months'; + + const DEFAULT_DATE_FORMAT = 'Y.m.d H:i:s'; private $app; private $query; @@ -58,7 +64,9 @@ class FilterWidget extends Widget private $formatRaw; private $checkboxes; + private $dataset; private $metaData; + private $listFields; private static $FilterWidgetInstance; @@ -94,16 +102,16 @@ class FilterWidget extends Widget $this->FiltersModel->resetQuery(); // - $dataset = @$this->FiltersModel->execReadOnlyQuery($this->_generateQuery()); + $this->dataset = @$this->FiltersModel->execReadOnlyQuery($this->_generateQuery()); // - $listFields = $this->FiltersModel->getExecutedQueryListFields(); + $this->listFields = $this->FiltersModel->getExecutedQueryListFields(); // $this->metaData = $this->FiltersModel->getExecutedQueryMetaData(); // - $this->loadViewFilters($listFields, $this->metaData, $dataset); + $this->loadViewFilters(); } /** @@ -133,30 +141,31 @@ class FilterWidget extends Widget /** * */ - public static function loadViewTableDataset($dataset) + public static function loadViewSelectFields() { - self::_loadView( - self::WIDGET_URL_TABLE_DATASET, - array( - self::DATASET_PARAMETER => $dataset - ) - ); + if (self::$FilterWidgetInstance->hideHeader != true) + { + self::_loadView(self::WIDGET_URL_SELECT_FIELDS, array(self::LIST_FIELDS_PARAMETER => self::$FilterWidgetInstance->listFields)); + } } /** * */ - public static function loadViewSelectFilters($metaData) + public static function loadViewSelectFilters() { - self::_loadView(self::WIDGET_URL_SELECT_FILTERS, array(self::METADATA_PARAMETER => $metaData)); + if (self::$FilterWidgetInstance->hideHeader != true) + { + self::_loadView(self::WIDGET_URL_SELECT_FILTERS, array(self::METADATA_PARAMETER => self::$FilterWidgetInstance->metaData)); + } } /** * */ - public static function loadViewSelectFields($listFields) + public static function loadViewTableDataset() { - self::_loadView(self::WIDGET_URL_SELECT_FIELDS, array(self::LIST_FIELDS_PARAMETER => $listFields)); + self::_loadView(self::WIDGET_URL_TABLE_DATASET, array(self::DATASET_PARAMETER => self::$FilterWidgetInstance->dataset)); } /** @@ -186,6 +195,7 @@ class FilterWidget extends Widget $html = ''; $activeFilterValue = self::_getActiveFilterValue($filterMetaData->name); $activeFilterOperationValue = self::_getActiveFilterOperationValue($filterMetaData->name); + $activeFilterOptionValue = self::_getActiveFilterOptionValue($filterMetaData->name); if ($filterMetaData->type == 'int4') { @@ -242,14 +252,14 @@ class FilterWidget extends Widget - + + '; } - return sprintf($html, $filterMetaData->name.'-operation', $filterMetaData->name, $activeFilterValue); + return sprintf($html, $filterMetaData->name.'-operation', $filterMetaData->name, $activeFilterValue, $filterMetaData->name.'-option'); } /** @@ -298,15 +308,14 @@ class FilterWidget extends Widget /** * */ - protected function loadViewFilters($listFields, $metaData, $dataset) + protected function loadViewFilters() { // Loads views - $this->view( - self::WIDGET_URL_FILTER, + $this->view(self::WIDGET_URL_FILTER, array( - self::DATASET_PARAMETER => $dataset, - self::METADATA_PARAMETER => $metaData, - self::LIST_FIELDS_PARAMETER => $listFields + self::DATASET_PARAMETER => $this->dataset, + self::METADATA_PARAMETER => $this->metaData, + self::LIST_FIELDS_PARAMETER => $this->listFields ) ); } @@ -381,6 +390,23 @@ class FilterWidget extends Widget return $getActiveFilterOperationValue; } + /** + * + */ + private static function _getActiveFilterOptionValue($filterName) + { + $getActiveFilterOptionValue = ''; + + $activeFieldsOption = self::_getFromSession(self::ACTIVE_FILTERS_OPTION); + + if (isset($activeFieldsOption[$filterName])) + { + $getActiveFilterOptionValue = $activeFieldsOption[$filterName]; + } + + return $getActiveFilterOptionValue; + } + /** * */ @@ -422,6 +448,11 @@ class FilterWidget extends Widget $filterSessionArray[self::ACTIVE_FILTERS_OPERATION] = array(); } + if (!isset($filterSessionArray[self::ACTIVE_FILTERS_OPTION])) + { + $filterSessionArray[self::ACTIVE_FILTERS_OPTION] = array(); + } + if (!isset($filterSessionArray[self::ADDITIONAL_COLUMNS])) { $filterSessionArray[self::ADDITIONAL_COLUMNS] = array(); @@ -443,6 +474,7 @@ class FilterWidget extends Widget $this->additionalColumns = null; $this->formatRaw = null; $this->checkboxes = null; + $this->hideHeader = false; if (!is_array($args) || (is_array($args) && count($args) == 0)) { @@ -509,6 +541,11 @@ class FilterWidget extends Widget { $this->checkboxes = $args[self::CHECKBOXES]; } + + if (isset($args[self::HIDE_HEADER]) && is_bool($args[self::HIDE_HEADER])) + { + $this->hideHeader = $args[self::HIDE_HEADER]; + } } } @@ -573,6 +610,7 @@ class FilterWidget extends Widget $selectedFilters = array(); $activeFilters = array(); $activeFiltersOperation = array(); + $activeFiltersOption = array(); if (isset($jsonEncodedFilter->columns)) { @@ -598,6 +636,10 @@ class FilterWidget extends Widget $selectedFilters[] = $filters[$filtersCounter]->name; $activeFilters[$filters[$filtersCounter]->name] = $filters[$filtersCounter]->condition; $activeFiltersOperation[$filters[$filtersCounter]->name] = $filters[$filtersCounter]->operation; + if (isset($filters[$filtersCounter]->option)) + { + $activeFiltersOption[$filters[$filtersCounter]->name] = $filters[$filtersCounter]->option; + } } } } @@ -606,7 +648,8 @@ class FilterWidget extends Widget self::SELECTED_FIELDS => $selectedFields, self::SELECTED_FILTERS => $selectedFilters, self::ACTIVE_FILTERS => $activeFilters, - self::ACTIVE_FILTERS_OPERATION => $activeFiltersOperation + self::ACTIVE_FILTERS_OPERATION => $activeFiltersOperation, + self::ACTIVE_FILTERS_OPTION => $activeFiltersOption ); $this->session->set_userdata(self::SESSION_NAME, $filterSessionArray); @@ -682,7 +725,7 @@ class FilterWidget extends Widget /** * */ - private function _setActiveFiltersFromPost(&$activeFilters, &$activeFiltersOperation) + private function _setActiveFiltersFromPost(&$activeFilters, &$activeFiltersOperation, &$activeFiltersOption) { $selectedFilters = array(); $filterSessionArray = $this->session->userdata(self::SESSION_NAME); @@ -697,6 +740,11 @@ class FilterWidget extends Widget $activeFiltersOperation = $filterSessionArray[self::ACTIVE_FILTERS_OPERATION]; } + if (isset($filterSessionArray[self::ACTIVE_FILTERS_OPTION])) + { + $activeFiltersOption = $filterSessionArray[self::ACTIVE_FILTERS_OPTION]; + } + if (isset($filterSessionArray[self::SELECTED_FILTERS])) { $selectedFilters = $filterSessionArray[self::SELECTED_FILTERS]; @@ -715,6 +763,11 @@ class FilterWidget extends Widget { unset($activeFiltersOperation[$_POST[self::CMD_REMOVE_FILTER]]); } + + if (isset($activeFiltersOption[$_POST[self::CMD_REMOVE_FILTER]])) + { + unset($activeFiltersOption[$_POST[self::CMD_REMOVE_FILTER]]); + } } else { @@ -731,6 +784,11 @@ class FilterWidget extends Widget { $activeFiltersOperation[$selectedFilter] = $_POST[$selectedFilter.self::ACTIVE_FILTER_OPERATION_POSTFIX]; } + + if (isset($_POST[$selectedFilter.self::ACTIVE_FILTER_OPTION_POSTFIX])) + { + $activeFiltersOption[$selectedFilter] = $_POST[$selectedFilter.self::ACTIVE_FILTER_OPTION_POSTFIX]; + } } } } @@ -749,10 +807,12 @@ class FilterWidget extends Widget $filterSessionArray[self::ACTIVE_FILTERS] = array(); $filterSessionArray[self::ACTIVE_FILTERS_OPERATION] = array(); + $filterSessionArray[self::ACTIVE_FILTERS_OPTION] = array(); $this->_setActiveFiltersFromPost( $filterSessionArray[self::ACTIVE_FILTERS], - $filterSessionArray[self::ACTIVE_FILTERS_OPERATION] + $filterSessionArray[self::ACTIVE_FILTERS_OPERATION], + $filterSessionArray[self::ACTIVE_FILTERS_OPTION] ); $this->session->set_userdata(self::SESSION_NAME, $filterSessionArray); @@ -765,6 +825,10 @@ class FilterWidget extends Widget { $query = $this->query; + $activeFilters = array(); + $activeFiltersOperation = array(); + $activeFiltersOption = array(); + $filterSessionArray = $this->session->userdata(self::SESSION_NAME); if (isset($filterSessionArray[self::ACTIVE_FILTERS])) @@ -777,6 +841,11 @@ class FilterWidget extends Widget $activeFiltersOperation = $filterSessionArray[self::ACTIVE_FILTERS_OPERATION]; } + if (isset($filterSessionArray[self::ACTIVE_FILTERS_OPTION])) + { + $activeFiltersOption = $filterSessionArray[self::ACTIVE_FILTERS_OPTION]; + } + // if (count($activeFilters) > 0) { @@ -813,7 +882,16 @@ class FilterWidget extends Widget $condition = ' > '.$activeFilterValue; break; case self::OP_LESS_THAN: - $condition = ' < '.$activeFilterValue; + if (isset($activeFiltersOption[$field]) + && ($activeFiltersOption[$field] == self::OPT_DAYS + || $activeFiltersOption[$field] == self::OPT_MONTHS)) + { + $condition = ' < (NOW() - \''.$activeFilterValue.' '.$activeFiltersOption[$field].'\'::interval)'; + } + else + { + $condition = ' < '.$activeFilterValue; + } break; case self::OP_CONTAINS: $condition = ' ILIKE \'%'.$activeFilterValue.'%\''; From 47cd9d41375e56bcccd24013734f426886c3498d Mon Sep 17 00:00:00 2001 From: Paolo Date: Mon, 11 Dec 2017 15:44:03 +0100 Subject: [PATCH 074/126] By default the FilterWidget shows all the columns --- application/widgets/FilterWidget.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/application/widgets/FilterWidget.php b/application/widgets/FilterWidget.php index 56b83304b..a67004d4d 100644 --- a/application/widgets/FilterWidget.php +++ b/application/widgets/FilterWidget.php @@ -107,6 +107,18 @@ class FilterWidget extends Widget // $this->listFields = $this->FiltersModel->getExecutedQueryListFields(); + $filterSessionArray = $this->session->userdata(self::SESSION_NAME); + if (isset($filterSessionArray[self::SELECTED_FIELDS])) + { + $selectedFields = $filterSessionArray[self::SELECTED_FIELDS]; + } + + if (count($selectedFields) == 0) + { + $filterSessionArray[self::SELECTED_FIELDS] = $this->listFields; + $this->session->set_userdata(self::SESSION_NAME, $filterSessionArray); + } + // $this->metaData = $this->FiltersModel->getExecutedQueryMetaData(); From e94076b45120affd301cca72aea582c08eaf43ca Mon Sep 17 00:00:00 2001 From: oesi Date: Mon, 11 Dec 2017 16:54:25 +0100 Subject: [PATCH 075/126] UTF8 Control Characters werden bei der XML Generierung ersetzt da diese sonst Probleme machen --- include/dokument_export.class.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/dokument_export.class.php b/include/dokument_export.class.php index 624866ad0..e6628ceaa 100644 --- a/include/dokument_export.class.php +++ b/include/dokument_export.class.php @@ -411,7 +411,11 @@ class dokument_export } } else + { + // Remove UTF8 Control Characters (breaking XML) + $value = preg_replace('/[\x00-\x1F\x7F]/u', '', $value); $_xml_data->addChild("$key",htmlspecialchars("$value")); + } } return $_xml_data->asXML(); } From 9bb368302fd9ac7074cf671d3ecfaa5f33f341f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Mon, 11 Dec 2017 17:34:39 +0100 Subject: [PATCH 076/126] Fehler behoben beim Anlegen von StudienplanLehrveranstaltungszuordnungen wodurch booleans nicht korrekt gespeichert wurden --- include/studienplan.class.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/studienplan.class.php b/include/studienplan.class.php index d7833837a..1988edddd 100644 --- a/include/studienplan.class.php +++ b/include/studienplan.class.php @@ -538,9 +538,9 @@ class studienplan extends basis_db $this->db_add_param($this->studienplan_lehrveranstaltung_id_parent, FHC_INTEGER) . ', ' . $this->db_add_param($this->pflicht, FHC_BOOLEAN) . ', ' . $this->db_add_param($this->koordinator) . ', ' . - $this->db_add_param($this->curriculum) . ', ' . - $this->db_add_param($this->export) . ', ' . - $this->db_add_param($this->genehmigung) . ', ' . + $this->db_add_param($this->curriculum, FHC_BOOLEAN) . ', ' . + $this->db_add_param($this->export, FHC_BOOLEAN) . ', ' . + $this->db_add_param($this->genehmigung, FHC_BOOLEAN) . ', ' . 'now(), ' . $this->db_add_param($this->insertvon) . ');'; } From dbf643cb8d2de40b8742da141dc7c9ec355716ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Mon, 11 Dec 2017 17:43:25 +0100 Subject: [PATCH 077/126] Fixed export Bug with PHP5.4 --- include/dokument_export.class.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/include/dokument_export.class.php b/include/dokument_export.class.php index e6628ceaa..3b5b76b21 100644 --- a/include/dokument_export.class.php +++ b/include/dokument_export.class.php @@ -48,7 +48,13 @@ class dokument_export exec('unoconv --version',$ret_arr); if(isset($ret_arr[0])) - $this->unoconv_version = explode(' ',$ret_arr[0])[1]; + { + $hlp = explode(' ',$ret_arr[0]); + if(isset($hlp[1])) + $this->unoconv_version = $hlp[1]; + else + die('Could not get Unoconv Version'); + } else die('Unoconv not found'); From 0bb1d62c468409cc59166c13a5d94c0c8b0defd4 Mon Sep 17 00:00:00 2001 From: oesi Date: Wed, 13 Dec 2017 09:27:31 +0100 Subject: [PATCH 078/126] Fehlermeldung behoben beim Erstellen der Fotoliste als Nicht-Admin --- cis/private/lehre/fotoliste.pdf.php | 98 +++++++++++++++-------------- 1 file changed, 51 insertions(+), 47 deletions(-) diff --git a/cis/private/lehre/fotoliste.pdf.php b/cis/private/lehre/fotoliste.pdf.php index 475df926e..3390b27d1 100644 --- a/cis/private/lehre/fotoliste.pdf.php +++ b/cis/private/lehre/fotoliste.pdf.php @@ -17,12 +17,12 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * Authors: Cristina Hainberger - * + * * Description: This file creates a studentlist with students' profile fotos * by a given studiengangs- and lehrveranstaltungs ID (and eventually a given lehreinheit ID). * If fotos are locked by student, a dummy picture is inserted instead of the students foto. * EXCEPTION: if user has admins or assitents rights, ALL students' fotos are iserted (even locked ones) - * + * */ require_once('../../../config/cis.config.inc.php'); @@ -60,7 +60,7 @@ $lv->load($lvid); $berechtigung = new benutzerberechtigung(); $berechtigung->getBerechtigungen($user); - + if (!$berechtigung->isBerechtigt('admin') && !$berechtigung->isBerechtigt('assistenz') && !$berechtigung->isBerechtigt('lehre', $lv->oe_kurzbz, 's') && !check_lektor_lehrveranstaltung($user, $lvid, $studiensemester)) die('Sie muessen LektorIn der LV sein oder das Recht "ADMIN", "ASSISTENZ" oder "LEHRE" haben, um diese Seite aufrufen zu koennen'); @@ -85,11 +85,11 @@ $qry = "SELECT DISTINCT ON gruppe, gruppe_kurzbz, stg_typ - FROM + FROM campus.vw_lehreinheit - WHERE + WHERE lehrveranstaltung_id=" . $db->db_add_param($lvid, FHC_INTEGER) . " - AND + AND studiensemester_kurzbz=" . $db->db_add_param($studiensemester); if ($lehreinheit != '') $qry .= " AND lehreinheit_id=" . $db->db_add_param($lehreinheit, FHC_INTEGER); @@ -111,8 +111,8 @@ if ($result = $db->db_query($qry)) { if ($row->gruppe_kurzbz == '') $gruppen_string = trim($row->kuerzel . '-' . $row->semester); else - $gruppen_string = $row->gruppe_kurzbz; - + $gruppen_string = $row->gruppe_kurzbz; + $gruppen_string_arr[] = $gruppen_string; } } @@ -122,10 +122,10 @@ $studiengruppe = implode(", ", array_unique($gruppen_string_arr)); //get studiengangstyp-bezeichnung $qry = "SELECT - bezeichnung - FROM - public.tbl_studiengangstyp - WHERE + bezeichnung + FROM + public.tbl_studiengangstyp + WHERE typ =" . $db->db_add_param($stg_typ); if ($result = $db->db_query($qry)) { @@ -148,43 +148,43 @@ $data = array( //**************************** students data ******************************* //load students-data $qry = 'SELECT DISTINCT ON - (nachname, vorname, person_id) - vorname, - nachname, + (nachname, vorname, person_id) + vorname, + nachname, matrikelnr, - tbl_studentlehrverband.semester, - tbl_studentlehrverband.verband, + tbl_studentlehrverband.semester, + tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe, - (SELECT - status_kurzbz - FROM - public.tbl_prestudentstatus - WHERE - prestudent_id=tbl_student.prestudent_id - ORDER BY + (SELECT + status_kurzbz + FROM + public.tbl_prestudentstatus + WHERE + prestudent_id=tbl_student.prestudent_id + ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status, tbl_studiengang.kurzbz, tbl_studiengang.typ, - tbl_bisio.bisio_id, - tbl_bisio.von, - tbl_bisio.bis, + tbl_bisio.bisio_id, + tbl_bisio.von, + tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student, - tbl_zeugnisnote.note, - tbl_mitarbeiter.mitarbeiter_uid, - tbl_person.matr_nr, - tbl_person.geschlecht, - tbl_person.foto, + tbl_zeugnisnote.note, + tbl_mitarbeiter.mitarbeiter_uid, + tbl_person.matr_nr, + tbl_person.geschlecht, + tbl_person.foto, tbl_person.foto_sperre FROM - campus.vw_student_lehrveranstaltung + campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid) - JOIN public.tbl_person USING(person_id) + JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student ON(uid=student_uid) LEFT JOIN public.tbl_studiengang ON(tbl_studiengang.studiengang_kz=tbl_student.studiengang_kz) LEFT JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid) LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz) - LEFT JOIN lehre.tbl_zeugnisnote ON(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id - AND tbl_zeugnisnote.student_uid=tbl_student.student_uid + LEFT JOIN lehre.tbl_zeugnisnote ON(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id + AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz) LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid) WHERE @@ -214,7 +214,7 @@ if ($result = $db->db_query($qry)) { while ($row = $db->db_fetch_object($result)) { if ($row->status != 'Abbrecher' && $row->status != 'Unterbrecher') { $anzahl_studierende++; - + if ($row->status == 'Incoming') //Incoming $zusatz = '(i)'; else @@ -231,9 +231,9 @@ if ($result = $db->db_query($qry)) { if ($row->stg_kz_student == $a_o_kz) //Außerordentliche Studierende $zusatz .= '(a.o.)'; - + //allow admin and assistenz to see ALL fotos (even if locked by user) - if ($show_all_fotos) + if ($show_all_fotos) $row->foto_sperre = 'f'; //create foto (if not locked by student OR if fotolist is created by admin or assistenz) @@ -241,7 +241,7 @@ if ($result = $db->db_query($qry)) { $foto_src = $row->foto; $foto_url = sys_get_temp_dir() . '/foto' . trim($row->matrikelnr) . '.jpg'; $foto_url_arr[] = $foto_url; - + //create writeable file if (!$foto = fopen($foto_url, 'w')) die("Das Bild konnte nicht erstellt werden"); @@ -250,15 +250,19 @@ if ($result = $db->db_query($qry)) { { die("Das Bild konnte nicht erstellt werden"); } - + //add foto to document $doc->addImage($foto_url, trim($row->matrikelnr) . '.jpg', 'image/jpg'); } elseif ($row->foto == '') - { + { $foto_url = ''; - } - + } + else + { + $foto_url = ''; + } + //create studiengruppe $student_studiengruppe = strtoupper($row->typ.$row->kurzbz.'-'.$row->semester); @@ -268,7 +272,7 @@ if ($result = $db->db_query($qry)) { 'nachname' => mb_strtoupper($row->nachname, 'UTF-8'), 'personenkennzeichen' => trim($row->matrikelnr), 'geschlecht' => $row->geschlecht, - 'foto_gesperrt' => $row->foto_sperre, // f/t + 'foto_gesperrt' => $row->foto_sperre, // f/t 'foto_url' => $foto_url, 'studiengruppe' => $student_studiengruppe, 'verband' => trim($row->verband), @@ -289,7 +293,7 @@ $doc->addDataArray($data, 'fotoliste'); //set doc name $doc->setFilename('Fotoliste_'.$stg_bezeichnung.'_'.$studiensemester.'_'.$lv_bezeichnung); -//create doc in format required +//create doc in format required if (!$doc->create($output)) die($doc->errormsg); @@ -301,4 +305,4 @@ $doc->close(); //unlink fotos from tmp-folder foreach ($foto_url_arr as $foto_url) - unlink($foto_url); \ No newline at end of file + unlink($foto_url); From aeae34f4e097f9e5a6f470035e705cfe8ec16c5a Mon Sep 17 00:00:00 2001 From: Paolo Date: Wed, 13 Dec 2017 13:51:38 +0100 Subject: [PATCH 079/126] - Added parameter hideSave to hide save button and fields - Correctly saves personal filters --- .../controllers/system/TestFilterWidget.php | 1 + application/views/widgets/filter/filter.php | 11 ++ .../views/widgets/filter/saveFilter.php | 7 + application/widgets/FilterWidget.php | 123 +++++++++++++++++- 4 files changed, 141 insertions(+), 1 deletion(-) create mode 100644 application/views/widgets/filter/saveFilter.php diff --git a/application/controllers/system/TestFilterWidget.php b/application/controllers/system/TestFilterWidget.php index 45c5d36bf..9cdd54095 100644 --- a/application/controllers/system/TestFilterWidget.php +++ b/application/controllers/system/TestFilterWidget.php @@ -36,6 +36,7 @@ class TestFilterWidget extends VileSci_Controller AND p.person_id < 1000 ', 'hideHeader' => false, + 'hideSave' => false, 'checkboxes' => array('PersonId'), 'additionalColumns' => array('Delete', 'Edit'), 'formatRaw' => function($fieldName, $fieldValue, $datasetRaw) { diff --git a/application/views/widgets/filter/filter.php b/application/views/widgets/filter/filter.php index 271b5a224..1219e84f3 100644 --- a/application/views/widgets/filter/filter.php +++ b/application/views/widgets/filter/filter.php @@ -40,6 +40,11 @@ } }); + $("#saveCustomFilterButton").click(function() { + $("#saveCustomFilter").val(true); + $("#filterForm").submit(); + }); + }); @@ -56,6 +61,12 @@
    +
    + +
    + +
    +
    diff --git a/application/views/widgets/filter/saveFilter.php b/application/views/widgets/filter/saveFilter.php new file mode 100644 index 000000000..e9e0217e6 --- /dev/null +++ b/application/views/widgets/filter/saveFilter.php @@ -0,0 +1,7 @@ +
    + Filter short description: +
    +
    + + +
    diff --git a/application/widgets/FilterWidget.php b/application/widgets/FilterWidget.php index a67004d4d..3d297bf4f 100644 --- a/application/widgets/FilterWidget.php +++ b/application/widgets/FilterWidget.php @@ -15,6 +15,7 @@ class FilterWidget extends Widget const FORMAT_RAW = 'formatRaw'; const CHECKBOXES = 'checkboxes'; const HIDE_HEADER = 'hideHeader'; + const HIDE_SAVE = 'hideSave'; const DATASET_PARAMETER = 'dataset'; const METADATA_PARAMETER = 'metaData'; @@ -24,6 +25,7 @@ class FilterWidget extends Widget const WIDGET_URL_SELECT_FIELDS = 'widgets/filter/selectFields'; const WIDGET_URL_TABLE_DATASET = 'widgets/filter/tableDataset'; const WIDGET_URL_SELECT_FILTERS = 'widgets/filter/selectFilters'; + const WIDGET_URL_SAVE_FILTER = 'widgets/filter/saveFilter'; const SESSION_NAME = 'FILTER'; @@ -83,6 +85,7 @@ class FilterWidget extends Widget // $this->load->model('system/Filters_model', 'FiltersModel'); + $this->load->model('person/Benutzer_model', 'BenutzerModel'); self::$FilterWidgetInstance = $this; } @@ -98,6 +101,9 @@ class FilterWidget extends Widget // $this->_setSessionFilterData(); + // + $this->_saveFilter(); + // $this->FiltersModel->resetQuery(); @@ -172,6 +178,17 @@ class FilterWidget extends Widget } } + /** + * + */ + public static function loadViewSaveFilter() + { + if (self::$FilterWidgetInstance->hideSave != true) + { + self::_loadView(self::WIDGET_URL_SAVE_FILTER); + } + } + /** * */ @@ -422,7 +439,7 @@ class FilterWidget extends Widget /** * */ - private static function _loadView($viewName, $parameters) + private static function _loadView($viewName, $parameters = null) { $ci =& get_instance(); $ci->load->view($viewName, $parameters); @@ -487,6 +504,7 @@ class FilterWidget extends Widget $this->formatRaw = null; $this->checkboxes = null; $this->hideHeader = false; + $this->hideSave = false; if (!is_array($args) || (is_array($args) && count($args) == 0)) { @@ -558,6 +576,11 @@ class FilterWidget extends Widget { $this->hideHeader = $args[self::HIDE_HEADER]; } + + if (isset($args[self::HIDE_SAVE]) && is_bool($args[self::HIDE_SAVE])) + { + $this->hideSave = $args[self::HIDE_SAVE]; + } } } @@ -668,6 +691,104 @@ class FilterWidget extends Widget } } + /** + * + */ + private function _saveFilter() + { + if (isset($_POST['saveCustomFilter']) && $_POST['saveCustomFilter'] == 'true') + { + $objToBeSaved = new stdClass(); + + $filterSessionArray = $this->session->userdata(self::SESSION_NAME); + + if (isset($filterSessionArray[self::SELECTED_FIELDS])) + { + $selectedFields = $filterSessionArray[self::SELECTED_FIELDS]; + $objToBeSaved->columns = array(); + + for ($selectedFieldsCounter = 0; $selectedFieldsCounter < count($selectedFields); $selectedFieldsCounter++) + { + $objToBeSaved->columns[$selectedFieldsCounter] = new stdClass(); + $objToBeSaved->columns[$selectedFieldsCounter]->name = $selectedFields[$selectedFieldsCounter]; + } + } + + if (isset($filterSessionArray[self::SELECTED_FILTERS])) + { + $selectedFilters = $filterSessionArray[self::SELECTED_FILTERS]; + $objToBeSaved->filters = array(); + + for ($selectedFiltersCounter = 0; $selectedFiltersCounter < count($selectedFilters); $selectedFiltersCounter++) + { + $objToBeSaved->filters[$selectedFiltersCounter] = new stdClass(); + $objToBeSaved->filters[$selectedFiltersCounter]->name = $selectedFilters[$selectedFiltersCounter]; + + if (isset($filterSessionArray[self::ACTIVE_FILTERS]) + && isset($filterSessionArray[self::ACTIVE_FILTERS][$selectedFilters[$selectedFiltersCounter]])) + { + $objToBeSaved->filters[$selectedFiltersCounter]->condition = $filterSessionArray[self::ACTIVE_FILTERS][$selectedFilters[$selectedFiltersCounter]]; + } + + if (isset($filterSessionArray[self::ACTIVE_FILTERS_OPERATION]) + && isset($filterSessionArray[self::ACTIVE_FILTERS_OPERATION][$selectedFilters[$selectedFiltersCounter]])) + { + $objToBeSaved->filters[$selectedFiltersCounter]->operation = $filterSessionArray[self::ACTIVE_FILTERS_OPERATION][$selectedFilters[$selectedFiltersCounter]]; + } + + if (isset($filterSessionArray[self::ACTIVE_FILTERS_OPTION]) + && isset($filterSessionArray[self::ACTIVE_FILTERS_OPTION][$selectedFilters[$selectedFiltersCounter]])) + { + $objToBeSaved->filters[$selectedFiltersCounter]->option = $filterSessionArray[self::ACTIVE_FILTERS_OPTION][$selectedFilters[$selectedFiltersCounter]]; + } + } + } + + $result = $this->FiltersModel->loadWhere(array( + 'app' => $this->app, + 'dataset_name' => $this->datasetName, + 'filter_kurzbz' => $_POST['customFilterKurzbz'] + )); + + if (hasData($result)) + { + $this->FiltersModel->update( + array( + 'app' => $this->app, + 'dataset_name' => $this->datasetName, + 'filter_kurzbz' => $_POST['customFilterKurzbz'] + ), + array( + 'description' => '{}', + 'sort' => null, + 'default_filter' => false, + 'filter' => json_encode($objToBeSaved), + 'oe_kurzbz' => null + ) + ); + } + else + { + $result = $this->BenutzerModel->load(getAuthUID()); + + if (hasData($result)) + { + $this->FiltersModel->insert(array( + 'app' => $this->app, + 'dataset_name' => $this->datasetName, + 'filter_kurzbz' => $_POST['customFilterKurzbz'], + 'person_id' => $result->retval[0]->person_id, + 'description' => '{}', + 'sort' => null, + 'default_filter' => false, + 'filter' => json_encode($objToBeSaved), + 'oe_kurzbz' => null + )); + } + } + } + } + /** * */ From 588561b7162cefd71d44676367d774b7ce5dd4dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 13 Dec 2017 17:53:22 +0100 Subject: [PATCH 080/126] Problem behoben wodurch bei langlaufenden Cronjobs diese mehrmals gestartet wurden --- include/cronjob.class.php | 5 +++++ vilesci/cronjobs/cronjob.php | 20 ++++++++++++-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/include/cronjob.class.php b/include/cronjob.class.php index 7848e07dd..e892e55a0 100644 --- a/include/cronjob.class.php +++ b/include/cronjob.class.php @@ -364,6 +364,11 @@ class cronjob extends basis_db public function execute() { $return = true; + if($this->running) + { + $this->errormsg = 'Job kann nicht ausgefuehrt werden, da er bereits laeuft'; + return false; + } if($this->standalone && $this->isJobRunning()) { $this->errormsg = 'Job kann nicht ausgefuehrt werden, da noch ein anderer Job laeuft'; diff --git a/vilesci/cronjobs/cronjob.php b/vilesci/cronjobs/cronjob.php index ccfeda4ce..a952bc965 100644 --- a/vilesci/cronjobs/cronjob.php +++ b/vilesci/cronjobs/cronjob.php @@ -40,15 +40,19 @@ foreach ($cj->result as $cronjob) $timestamp = $cronjob->getNextExecutionTime(); if($timestamp && time()>=$timestamp) { - //Starten des Jobs - if($cronjob->execute()) + if(!$cronjob->running) { - echo "\n".date('d.m.Y H:i:s').' '.$cronjob->titel.'('.$cronjob->cronjob_id.') executed
    '."\n"; - echo implode($cronjob->output,"\n"); - } - else - { - echo "\n".date('d.m.Y H:i:s').' '.$cronjob->titel.'('.$cronjob->cronjob_id.') failed
    '."\n"; + echo "\n".date('d.m.Y H:i:s').' '.$cronjob->titel.'('.$cronjob->cronjob_id.') execute...
    '."\n"; + //Starten des Jobs + if($cronjob->execute()) + { + echo "\n".date('d.m.Y H:i:s').' '.$cronjob->titel.'('.$cronjob->cronjob_id.') executed
    '."\n"; + echo implode($cronjob->output,"\n"); + } + else + { + echo "\n".date('d.m.Y H:i:s').' '.$cronjob->titel.'('.$cronjob->cronjob_id.') failed:'.$cronjob->errormsg.'
    '."\n"; + } } } } From 482a90b305fe3bef3aa9ac27fb6a64ff596e1067 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 14 Dec 2017 16:32:05 +0100 Subject: [PATCH 081/126] modified colors (now violet comes before dark red), fixed bug with non-continuous lines in excel versions --- content/statistik/notenspiegel_erweitert.php | 50 ++++++++++++++------ 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/content/statistik/notenspiegel_erweitert.php b/content/statistik/notenspiegel_erweitert.php index 700148b74..5975a89ea 100644 --- a/content/statistik/notenspiegel_erweitert.php +++ b/content/statistik/notenspiegel_erweitert.php @@ -184,8 +184,8 @@ usort($nulltermine, function ($termina, $terminb) $termine = array_merge($termineWithSort, $nulltermine); //Farben für Prüfungsantritte (1. Termin, 2., kommissionelle...) -$colors = array('ffff00', 'fa9200', 'ff1500', '800000', '9400D3', '1500ff', '305041', '00fff2', '00ff2b'); -$colorsForPositiv = array('ffffff', 'ffdfb3', 'ffb9b3', 'ff9494', 'ddb3ff', '7366ff', '80b39b', 'b3fffb', 'b3ffbf'); +$colors = array('ffff00', 'fa9200', 'ff1500', '9400D3', '0000FF', '800000', '305041', '00fff2', '00ff2b'); +$colorsForPositiv = array('ffffff', 'ffdfb3', 'ffb9b3', 'ddb3ff', '7366ff', 'ff9494', '80b39b', 'b3fffb', 'b3ffbf'); $counter = 0; foreach ($termine as $termin) @@ -230,6 +230,7 @@ if ($typ == 'xls') $format_rotate =& $workbook->addFormat(); $format_rotate->setTextRotation(270); $format_rotate->setAlign('center'); + $format_rotate->setBorder(1); $format_bold_center =& $workbook->addFormat(); $format_bold_center->setBold(); @@ -306,7 +307,7 @@ if ($typ == 'xls') $worksheet->write($zeile, ++$spalte, 'Vorname', $format_bold); $maxlength[$spalte] = 10; $worksheet->write($zeile, ++$spalte, 'Personenkennzeichen', $format_bold); - $maxlength[$spalte] = 30; + $maxlength[$spalte] = 32; $maxheaderheight = 20; while ($row_lva = $db->db_fetch_object($result_lva)) @@ -419,12 +420,12 @@ if ($typ == 'xls') } } //keine Nachprüfung aber negativ - 1. Antritt Farbe wenn es eine Notenanmerkung gibt - else if (!$noten_positiv[$note] && $noten_arr[$note] != '' && isset($noten_arr[$note])) + elseif (!$noten_positiv[$note] && $noten_arr[$note] != '' && isset($noten_arr[$note])) { reset($pruefungsart_farben); $format = $format_colored[key($pruefungsart_farben)]; } - else if (isset($format_colored[$note])) + elseif (isset($format_colored[$note])) $format = $format_colored[$note]; $worksheet->write($zeile, ++$spalte, $noten_arr[$note], $format); @@ -523,13 +524,18 @@ if ($typ == 'xls') foreach ($termine as $termin) $bezeichnungen[$termin->pruefungstyp_kurzbz] = $termin->beschreibung; - $worksheet->setMerge($legendzeile, $startcolumn, $legendzeile, $startcolumn + 4); + $totalmergefarb = 4; + $worksheet->write($legendzeile, $startcolumn, "Farblegende Prüfungsantritte", $format_bold_center); - $worksheet->write($legendzeile, $startcolumn + 4, "", $format_bold_center); + $worksheet->setMerge($legendzeile, $startcolumn, $legendzeile, $startcolumn + $totalmergefarb); + //In manchen Excelversionen wird border nicht dargestellt -> alle verbundenen zellen nachformatieren + for($i = 1; $i <= $totalmergefarb; $i++) + $worksheet->write($legendzeile, $startcolumn + $i, "", $format_bold_center); $legendzeile++; $worksheet->write($legendzeile, $startcolumn, "Termin", $format_bold_center); $worksheet->setMerge($legendzeile, $startcolumn + 1, $legendzeile, $startcolumn + 2); $worksheet->write($legendzeile, $startcolumn + 1, "positiv", $format_bold_center); + $worksheet->write($legendzeile, $startcolumn + 2, "", $format_bold_center); $worksheet->setMerge($legendzeile, $startcolumn + 3, $legendzeile, $startcolumn + 4); $worksheet->write($legendzeile, $startcolumn + 3, "negativ", $format_bold_center); $worksheet->write($legendzeile, $startcolumn + 4, "", $format_bold_center); @@ -541,6 +547,7 @@ if ($typ == 'xls') $worksheet->write($legendzeile, $startcolumn, $bezeichnung, $format_bold); $worksheet->setMerge($legendzeile, $startcolumn + 1, $legendzeile, $startcolumn + 2); $worksheet->write($legendzeile, $startcolumn + 1, "", $format_colored[$name.'Pos']); + $worksheet->write($legendzeile, $startcolumn + 2, "", $format_colored[$name.'Pos']); $worksheet->setMerge($legendzeile, $startcolumn + 3, $legendzeile, $startcolumn + 4); $worksheet->write($legendzeile, $startcolumn + 3, "", $format_colored[$name]); $worksheet->write($legendzeile, $startcolumn + 4, "", $format_colored[$name]); @@ -548,13 +555,13 @@ if ($typ == 'xls') } $worksheet->write($legendzeile, $startcolumn, "nicht eingetragen", $format_bold); $worksheet->setMerge($legendzeile, $startcolumn + 1, $legendzeile, $startcolumn + 4); - $worksheet->write($legendzeile, $startcolumn + 1, "", $format_colored_nichteingetragen); - $worksheet->write($legendzeile, $startcolumn + 4, "", $format_colored_nichteingetragen); + for($i = 1; $i <= $totalmergefarb; $i++) + $worksheet->write($legendzeile, $startcolumn + $i, "", $format_colored_nichteingetragen); $legendzeile++; $worksheet->write($legendzeile, $startcolumn, "nicht zugeteilt", $format_bold); $worksheet->setMerge($legendzeile, $startcolumn + 1, $legendzeile, $startcolumn + 4); - $worksheet->write($legendzeile, $startcolumn + 1, "", $format_colored_nichtzugeteilt); - $worksheet->write($legendzeile, $startcolumn + 4, "", $format_colored_nichtzugeteilt); + for($i = 1; $i <= $totalmergefarb; $i++) + $worksheet->write($legendzeile, $startcolumn + $i, "", $format_colored_nichtzugeteilt); $startcolumn = $currentcolumn = 9; @@ -574,7 +581,7 @@ if ($typ == 'xls') { $groesse++; } - else if ($currentcolumn < 3 + $anzahl_lvspalten + 2) + elseif ($currentcolumn < 3 + $anzahl_lvspalten + 2) { $groesse += 4; } @@ -589,6 +596,7 @@ if ($typ == 'xls') $index++; } + // all merges for 4 columns of Notenlegende $allmerges = array($beschrColumnMerges[0], 1, $beschrColumnMerges[1], 1); $headingmerge = array_sum($allmerges) - 1; $positivmerge = $allmerges[0] + $allmerges[1] - 1; @@ -596,12 +604,18 @@ if ($typ == 'xls') $worksheet->setMerge($zeile, $startcolumn, $zeile, $startcolumn + $headingmerge); $worksheet->write($zeile, $startcolumn, "Notenlegende", $format_bold_center); + for($i = 1; $i < $headingmerge; $i++) + $worksheet->write($zeile, $startcolumn + $i, "", $format_bold_center); $worksheet->write($zeile++, $startcolumn + $headingmerge, "", $format_bold_center); $worksheet->setMerge($zeile, $startcolumn, $zeile, $startcolumn + $positivmerge); $worksheet->write($zeile, $startcolumn, "positiv", $format_bold_center); + for($i = 1; $i <= $positivmerge; $i++) + $worksheet->write($zeile, $startcolumn + $i, "", $format_bold_center); $worksheet->setMerge($zeile, $startcolumn + $positivmerge + 1, $zeile, $startcolumn + $headingmerge); - $worksheet->write($zeile, $startcolumn + $headingmerge, "", $format_bold_center); - $worksheet->write($zeile++, $startcolumn + $positivmerge + 1, "negativ", $format_bold_center); + $worksheet->write($zeile, $startcolumn + $positivmerge + 1, "negativ", $format_bold_center); + for($i = 1; $i <= $negativmerge; $i++) + $worksheet->write($zeile, $startcolumn + $positivmerge + $i + 1, "", $format_bold_center); + $worksheet->write($zeile++, $startcolumn + $headingmerge, "", $format_bold_center); $tempzeile = $zeile; foreach ($noten_arr as $note => $anmerkung) { @@ -611,12 +625,16 @@ if ($typ == 'xls') { $worksheet->setMerge($zeile, $startcolumn, $zeile, $startcolumn + $positivmerge - 1); $worksheet->write($zeile, $startcolumn, $noten_bezeichnungen[$note], $format_bold); + for($i = 1; $i <= $positivmerge; $i++) + $worksheet->write($zeile, $startcolumn + $i, "", $format_bold_center); $worksheet->write($zeile++, $startcolumn + $positivmerge, $anmerkung, $format_bold_center); } else { $worksheet->setMerge($tempzeile, $startcolumn + $positivmerge + 1, $tempzeile, $startcolumn + $headingmerge - 1); $worksheet->write($tempzeile, $startcolumn + $positivmerge + 1, $noten_bezeichnungen[$note], $format_bold); + for($i = 1; $i <= $negativmerge; $i++) + $worksheet->write($tempzeile, $startcolumn + $positivmerge + $i + 1, "", $format_bold_center); $worksheet->write($tempzeile++, $startcolumn + $headingmerge, $anmerkung, $format_bold_center); } } @@ -629,6 +647,10 @@ if ($typ == 'xls') //Zellen der 1. Zeile verbinden $worksheet->setMerge(0, 0, 0, $spalte); + //Alle verbundenen Zellen formatieren - in best. Excelversionen border sonst falsch + for($i = 1; $i <= $spalte; $i++) + $worksheet->write(0, $i, "", $format_bold_center); + //Hoehe der 2. Zeile anpassen damit die LVs alle sichtbar sind $worksheet->setRow(1, $maxheaderheight * 5); From 73fcebeb70755479ea669ec468b32e3c24130d9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Thu, 14 Dec 2017 19:03:54 +0100 Subject: [PATCH 082/126] =?UTF-8?q?Oeffnen=20der=20Mailverteiler=20pr?= =?UTF-8?q?=C3=BCft=20jetzt=20auch=20den=20Returnwert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/private/open_grp.php | 136 ++++++++++++++++++--------------- locale/de-AT/mailverteiler.php | 3 +- locale/en-US/mailverteiler.php | 1 + 3 files changed, 76 insertions(+), 64 deletions(-) diff --git a/cis/private/open_grp.php b/cis/private/open_grp.php index db526c396..2973ac7cd 100644 --- a/cis/private/open_grp.php +++ b/cis/private/open_grp.php @@ -16,8 +16,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * Authors: Christian Paminger , - * Andreas Oesterreicher and - * Karl Burkhart . + * Andreas Oesterreicher and + * Karl Burkhart . */ require_once('../../config/cis.config.inc.php'); require_once('../../include/functions.inc.php'); @@ -29,20 +29,20 @@ $sprache = getSprache(); $p = new phrasen($sprache); $uid = get_uid(); $db = new basis_db(); -if(!isset($_REQUEST['grp'])) +if (!isset($_REQUEST['grp'])) die('Falsche Parameter'); - -if(mb_strlen($_REQUEST['grp'])>32) + +if (mb_strlen($_REQUEST['grp'])>32) die('Grp ungueltig'); - + //Pruefen ob es eine gueltige Gruppe ist $gruppe = new gruppe(); -if(!$gruppe->exists($_REQUEST['grp'])) +if (!$gruppe->exists($_REQUEST['grp'])) { //Wenn es keine Gruppe in der DB ist, kann es //noch ein Studierendenverteiler sein //bif_std - if(!preg_match('/^\D\D\D_std$/', $_REQUEST['grp'])) + if (!preg_match('/^\D\D\D_std$/', $_REQUEST['grp'])) { die('Ungueltige Gruppe'); } @@ -52,38 +52,35 @@ function mail_id_generator() mt_srand((double)microtime()*1000000); /* Laenge des Passwortes dem Zufall ueberlassen */ - $length = 6; //mt_rand(6, 6); + $length = 6; $fix_similar = ''; $valid_charset = ""; - /* Stelle ein Charset zusammen */ - if (!$valid_charset) - { - // deactivated, regarding an case sensitive issue - //$valid_charset .= 'ABCDEFGHIJKLMNOPQRSTUVXYZ'; - $valid_charset .= 'abcdefghijklmnopqrstuvxyz'; - $valid_charset .= '0123456789'; - //$valid_charset .= '!@_-'; - } - - $charset_length = mb_strlen($valid_charset); - - if ($charset_length == 0) return false; - - /* Initialisieren - Auswahl von chars bis definierte Anzahl erreicht */ - $mail_id = ""; - while(strlen($mail_id) < $length) - { - /* Waehle einen zufaelligen char aus */ - $char = $valid_charset[mt_rand(0, ($charset_length-1))]; - - /* Abgleich von gleich aussehenden chars */ - if (($fix_similar && !strpos('O01lI5S', $char)) || !$fix_similar) $mail_id .= $char; + /* Stelle ein Charset zusammen */ + if (!$valid_charset) + { + $valid_charset .= 'abcdefghijklmnopqrstuvxyz'; + $valid_charset .= '0123456789'; } - return $mail_id; + + $charset_length = mb_strlen($valid_charset); + + if ($charset_length == 0) return false; + + /* Initialisieren - Auswahl von chars bis definierte Anzahl erreicht */ + $mail_id = ''; + while (strlen($mail_id) < $length) + { + /* Waehle einen zufaelligen char aus */ + $char = $valid_charset[mt_rand(0, ($charset_length-1))]; + + /* Abgleich von gleich aussehenden chars */ + if (($fix_similar && !strpos('O01lI5S', $char)) || !$fix_similar) $mail_id .= $char; + } + return $mail_id; } -echo ' +echo ' @@ -92,48 +89,61 @@ echo ' '; -if(isset($_REQUEST['token']) && isset($_REQUEST['grp'])) +if (isset($_REQUEST['token']) && isset($_REQUEST['grp'])) { echo '
    - ".$p->t("zeitaufzeichnung/neu")." | + ".$p->t("zeitaufzeichnung/neu")." | - CSV Import | + CSV Import | - CSV Export"; + CSV Export"; if($anzprojekte > 0) - echo " | Projektexport"; + echo " | Projektexport"; echo "
    Select
    + + {$selectedFilter})) - { - echo $result->{$selectedFilter} === true ? 'true' : 'false'; - } - else - { - echo $result->{$selectedFilter}; - } + echo $formattedResult->{$selectedField}; ?> + {$additionalColumn}; + ?> +
    - - - - '; - + + + + '; + /* Generate an random String */ - $mail_id=mail_id_generator(); + $mail_id = mail_id_generator(); /* Command to unlock Mailgroup */ $command = "ssh -i /etc/apache2/id_mail_provisioning mailadmins@bifrost2 ".$_REQUEST['grp'] . " " . $mail_id; - exec($command); - /* ffe, 20051020 - do a little logging */ - $message= date("F j G:i:s") . " mailgroup: [" . $_REQUEST['grp'] . "] (using " . $mail_id . ") requested by [" . $uid . "]\n"; + $output = array(); + exec($command, $output, $retval); - $filet = fopen(LOG_PATH.'.htmlistopen.log', "a"); - fwrite($filet, $message, mb_strlen($message)); - fclose($filet); + if ($retval === 0) + { + // Add Log Message + $message= date("F j G:i:s") . " mailgroup: [" . $_REQUEST['grp'] . "] (using " . $mail_id . ") requested by [" . $uid . "]\n"; - // for the users - echo " - - - - - - - -
    '.$p->t('mailverteiler/mailverteiler').''.$p->t('mailverteiler/status').'
    '.$p->t('mailverteiler/mailverteiler').''.$p->t('mailverteiler/status').'
    ".$db->convert_html_chars($_REQUEST['desc'])."".$p->t('mailverteiler/geoeffnet')." (Code: ".$mail_id.")
    -

    ".$p->t('mailverteiler/klickenZumSchicken')."

    + $filet = fopen(LOG_PATH.'.htmlistopen.log', "a"); + fwrite($filet, $message, mb_strlen($message)); + fclose($filet); -

    ".$p->t('mailverteiler/infoBenutzung',array($_REQUEST['grp'].$mail_id."@".DOMAIN))."

    -
    - "; + echo " +
    ".$db->convert_html_chars($_REQUEST['desc'])."".$p->t('mailverteiler/geoeffnet')." (Code: ".$mail_id.")
    +

    ".$p->t('mailverteiler/klickenZumSchicken')."

    + +

    ".$p->t('mailverteiler/infoBenutzung',array($_REQUEST['grp'].$mail_id."@".DOMAIN))."

    +
    + '.$p->t('mailverteiler/oeffnenFehlgeschlagen').' +
    '; } else { - if($_REQUEST['grp']=="") + if ($_REQUEST['grp'] == '') { exit(); } @@ -142,7 +152,7 @@ else echo $p->t('mailverteiler/bestaetigeOeffnen',array($_REQUEST['grp']))." : convert_html_chars($_REQUEST['desc'])."&token=1\">".$p->t('mailverteiler/bestaetige').""; } } - + echo ' '; ?> diff --git a/locale/de-AT/mailverteiler.php b/locale/de-AT/mailverteiler.php index e45e6cb85..73ebfc052 100644 --- a/locale/de-AT/mailverteiler.php +++ b/locale/de-AT/mailverteiler.php @@ -19,9 +19,10 @@ $this->phrasen['mailverteiler/mailverteiler']='Mailverteiler'; $this->phrasen['mailverteiler/oeffnenEinesVerteilers']='Öffnen eines Mailverteilers'; $this->phrasen['mailverteiler/status']='Status'; $this->phrasen['mailverteiler/geoeffnet']='Geöffnet'; -$this->phrasen['mailverteiler/klickenZumSchicken']='Um ein Mail an den Verteiler zu senden klicken Sie bitte auf den obigen Link. Ihr Mailprogramm öffnet automatisch eine Vorlage für ein neues Mail, welche bereits die korrekte Adresse enthält.'; +$this->phrasen['mailverteiler/klickenZumSchicken']='Um ein Mail an den Verteiler zu senden klicken Sie bitte auf den angezeigten Link. Ihr Mailprogramm öffnet automatisch eine Vorlage für ein neues Mail, welche bereits die korrekte Adresse enthält.'; $this->phrasen['mailverteiler/infoBenutzung']='Das Senden ist für den Zeitraum von 2 Stunden bzw. für die einmalige Benutzung unter der Adresse %1$s möglich.'; $this->phrasen['mailverteiler/bestaetigeOeffnen']='Bitte bestätigen Sie das Öffnen des Verteilers %1$s'; $this->phrasen['mailverteiler/bestaetige']='Bestätige'; $this->phrasen['mailverteiler/personenImVerteiler']='Personen im Mailverteiler'; +$this->phrasen['mailverteiler/oeffnenFehlgeschlagen']='Beim Freischalten des Verteilers ist ein Fehler aufgetreten.
    Bitte Informieren Sie den Administrator'; ?> diff --git a/locale/en-US/mailverteiler.php b/locale/en-US/mailverteiler.php index 7c625116a..502846583 100644 --- a/locale/en-US/mailverteiler.php +++ b/locale/en-US/mailverteiler.php @@ -24,4 +24,5 @@ $this->phrasen['mailverteiler/infoBenutzung']='You can use the Mailinglist durin $this->phrasen['mailverteiler/bestaetigeOeffnen']='Please confirm to unlock the Mailing list %1$s'; $this->phrasen['mailverteiler/bestaetige']='Confirm'; $this->phrasen['mailverteiler/personenImVerteiler']='People in this mailing list'; +$this->phrasen['mailverteiler/oeffnenFehlgeschlagen']='Failed to open mailing list. Please inform your administrator.'; ?> From fb1a55c47c1040c582304fb64f838a4bc5da802d Mon Sep 17 00:00:00 2001 From: oesi Date: Fri, 15 Dec 2017 10:47:26 +0100 Subject: [PATCH 083/126] Rundung der SWS angepasst --- vilesci/bis/personalmeldung.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vilesci/bis/personalmeldung.php b/vilesci/bis/personalmeldung.php index ae1a65741..5ca6e8b52 100644 --- a/vilesci/bis/personalmeldung.php +++ b/vilesci/bis/personalmeldung.php @@ -345,7 +345,7 @@ if($result = $db->db_query($qry)) $person_content.=" ".sprintf("%04s",$row_fkt['stgkz'])." - ".number_format($row_fkt['sws']).""; + ".number_format($row_fkt['sws'],2).""; if($row_fkt['hauptberuflich']=='t') { $person_content.=" From 024035e890f7a480e54c308f4af8cb627039583b Mon Sep 17 00:00:00 2001 From: Paolo Date: Fri, 15 Dec 2017 17:06:11 +0100 Subject: [PATCH 084/126] - Added directory application/controllers/system/infocenter/ - Moved controller TestFilterWidget to system/infocenter/ - Renamed controller TestFilterWidget to InfoCenter - Added directory application/views/system/infocenter/ - Added views system/infocenter/infocenter.php and system/infocenter/infocenterFilters.php - Added new header views/templates/FHC-Footer - Added new header views/templates/FHC-Header - FHC-Header still using old JQuery and missing others includes --- .../controllers/system/TestFilterWidget.php | 62 ----------- .../system/infocenter/InfoCenter.php | 95 ++++++++++++++++ .../views/system/infocenter/infocenter.php | 35 ++++++ .../system/infocenter/infocenterFilters.php | 30 +++++ application/views/templates/FHC-Footer.php | 3 + application/views/templates/FHC-Header.php | 103 ++++++++++++++++++ 6 files changed, 266 insertions(+), 62 deletions(-) delete mode 100644 application/controllers/system/TestFilterWidget.php create mode 100644 application/controllers/system/infocenter/InfoCenter.php create mode 100644 application/views/system/infocenter/infocenter.php create mode 100644 application/views/system/infocenter/infocenterFilters.php create mode 100644 application/views/templates/FHC-Footer.php create mode 100644 application/views/templates/FHC-Header.php diff --git a/application/controllers/system/TestFilterWidget.php b/application/controllers/system/TestFilterWidget.php deleted file mode 100644 index 9cdd54095..000000000 --- a/application/controllers/system/TestFilterWidget.php +++ /dev/null @@ -1,62 +0,0 @@ -load->library('WidgetLib'); - } - - /** - * - */ - public function sql() - { - echo $this->widgetlib->widget( - 'FilterWidget', - array( - 'app' => 'core', - 'datasetName' => 'kontakts', - 'filterKurzbz' => 'This filter filters', - 'query' => ' - SELECT p.person_id AS "PersonId", - p.nachname AS "Nachname", - p.vorname AS "Vorname", - k.kontakt AS "Email", - p.aktiv AS "Aktiv", - k.updateamum AS "UpdateDate" - FROM public.tbl_person p INNER JOIN public.tbl_kontakt k USING(person_id) - WHERE p.aktiv = TRUE - AND p.person_id = k.person_id - AND k.kontakttyp = \'email\' - AND p.person_id < 1000 - ', - 'hideHeader' => false, - 'hideSave' => false, - 'checkboxes' => array('PersonId'), - 'additionalColumns' => array('Delete', 'Edit'), - 'formatRaw' => function($fieldName, $fieldValue, $datasetRaw) { - - if ($fieldName == 'PersonId') - { - $datasetRaw->{$fieldName} = ''.$fieldValue.''; - } - elseif ($fieldName == 'Delete') - { - $datasetRaw->{$fieldName} = 'Delete'; - } - elseif ($fieldName == 'Edit') - { - $datasetRaw->{$fieldName} = 'Edit'; - } - - return $datasetRaw; - } - ) - ); - } -} diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php new file mode 100644 index 000000000..d75ab4d9e --- /dev/null +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -0,0 +1,95 @@ +load->library('WidgetLib'); + } + + /** + * + */ + public function index() + { + $listFiltersSent = array( + 'Sent 1' => 100, + 'Sent 2' => 200, + 'Sent 3' => 300 + ); + + $listFiltersNotSent = array( + 'Not Sent 1' => 400, + 'Not Sent 2' => 500, + 'Not Sent 3' => 600 + ); + + $this->load->view( + 'system/infocenter/infocenter.php', + array( + 'listFiltersSent' => $listFiltersSent, + 'listFiltersNotSent' => $listFiltersNotSent + ) + ); + } + + /** + * + */ + public function filter($filterId = null) + { + $filterWidgetArray = array( + 'query' => ' + SELECT p.person_id AS "PersonId", + p.nachname AS "Nachname", + p.vorname AS "Vorname", + k.kontakt AS "Email", + p.aktiv AS "Aktiv", + k.updateamum AS "UpdateDate" + FROM public.tbl_person p INNER JOIN public.tbl_kontakt k USING(person_id) + WHERE p.aktiv = TRUE + AND p.person_id = k.person_id + AND k.kontakttyp = \'email\' + AND p.person_id < 1000 + ', + 'hideHeader' => false, + 'hideSave' => false, + 'checkboxes' => array('PersonId'), + 'additionalColumns' => array('Delete', 'Edit'), + 'formatRaw' => function($fieldName, $fieldValue, $datasetRaw) { + + if ($fieldName == 'PersonId') + { + $datasetRaw->{$fieldName} = ''.$fieldValue.''; + } + elseif ($fieldName == 'Delete') + { + $datasetRaw->{$fieldName} = 'Delete'; + } + elseif ($fieldName == 'Edit') + { + $datasetRaw->{$fieldName} = 'Edit'; + } + + return $datasetRaw; + } + ); + + if ($filterId == null) + { + $filterWidgetArray['app'] = 'core'; + $filterWidgetArray['datasetName'] = 'kontakts'; + $filterWidgetArray['filterKurzbz'] = 'This filter filters'; + } + else + { + $filterWidgetArray['filterId'] = $filterId; + } + + echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray); + } +} diff --git a/application/views/system/infocenter/infocenter.php b/application/views/system/infocenter/infocenter.php new file mode 100644 index 000000000..984005baa --- /dev/null +++ b/application/views/system/infocenter/infocenter.php @@ -0,0 +1,35 @@ +load->view('templates/FHC-Header', array('title' => 'Info Center', 'jquery3' => true)); ?> + + + + + + + + + load->view( + 'system/infocenter/infocenterFilters.php', + array( + 'listFiltersSent' => $listFiltersSent, + 'listFiltersNotSent' => $listFiltersNotSent + ) + ); + ?> + + + + + + + + +load->view('templates/FHC-Footer'); ?> diff --git a/application/views/system/infocenter/infocenterFilters.php b/application/views/system/infocenter/infocenterFilters.php new file mode 100644 index 000000000..e5d124aad --- /dev/null +++ b/application/views/system/infocenter/infocenterFilters.php @@ -0,0 +1,30 @@ + $filterId) + { + $toPrint = ''; + + echo sprintf($toPrint, base_url('index.ci.php/system/infocenter/InfoCenter/filter'), $filterId, $name).PHP_EOL; + } + } + +// HTML + // body + // span +?> +
    + +
    + Abgeschickt: +
    + + + +
    + Nicht abgeschickt: +
    + + + +
    diff --git a/application/views/templates/FHC-Footer.php b/application/views/templates/FHC-Footer.php new file mode 100644 index 000000000..9be2faef3 --- /dev/null +++ b/application/views/templates/FHC-Footer.php @@ -0,0 +1,3 @@ + + + diff --git a/application/views/templates/FHC-Header.php b/application/views/templates/FHC-Header.php new file mode 100644 index 000000000..bde117a48 --- /dev/null +++ b/application/views/templates/FHC-Header.php @@ -0,0 +1,103 @@ +'; + + if (isset($CSSs)) + { + $tmpCSSs = is_array($CSSs) ? $CSSs : array($CSSs); + + for ($tmpCSSsCounter = 0; $tmpCSSsCounter < count($tmpCSSs); $tmpCSSsCounter++) + { + $toPrint = sprintf($cssLink, base_url($tmpCSSs[$tmpCSSsCounter])).PHP_EOL; + + if ($tmpCSSsCounter > 0) $toPrint = "\t\t".$toPrint; + + echo $toPrint; + } + } +} + +/** + * Generates tags for the javascripts you want to include, the parameter could by a string or an array of strings + */ +function _generateJSsInclude($JSs) +{ + $jsInclude = ''; + + if (isset($JSs)) + { + $tmpJSs = is_array($JSs) ? $JSs : array($JSs); + + for ($tmpJSsCounter = 0; $tmpJSsCounter < count($tmpJSs); $tmpJSsCounter++) + { + $toPrint = sprintf($jsInclude, base_url($tmpJSs[$tmpJSsCounter])).PHP_EOL; + + if ($tmpJSsCounter > 0) $toPrint = "\t\t".$toPrint; + + echo $toPrint; + } + } +} + +?> + + + + + <?php _printTitle($title); ?> + + + + + + + + + + From fa3daa7a577f751ec24fbf2fad45ae372af59ce6 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 18 Dec 2017 14:01:42 +0100 Subject: [PATCH 085/126] Created infocenter details page showing Person Stammdaten, Dokumente, Prestudent ZGVs, Logs and Notizen. --- .../system/infocenter/InfocenterDetails.php | 456 ++++++++++++++++++ application/libraries/DmsLib.php | 4 + application/libraries/PersonLogLib.php | 16 + application/models/person/Notiz_model.php | 37 ++ application/models/system/PersonLog_model.php | 26 + .../system/infocenter/infocenterDetails.php | 269 +++++++++++ application/widgets/Nation_widget.php | 22 + application/widgets/Statusgrund_widget.php | 22 + application/widgets/Zgv_widget.php | 22 + application/widgets/Zgvmaster_widget.php | 22 + 10 files changed, 896 insertions(+) create mode 100644 application/controllers/system/infocenter/InfocenterDetails.php create mode 100644 application/views/system/infocenter/infocenterDetails.php create mode 100644 application/widgets/Nation_widget.php create mode 100644 application/widgets/Statusgrund_widget.php create mode 100644 application/widgets/Zgv_widget.php create mode 100644 application/widgets/Zgvmaster_widget.php diff --git a/application/controllers/system/infocenter/InfocenterDetails.php b/application/controllers/system/infocenter/InfocenterDetails.php new file mode 100644 index 000000000..f65efea77 --- /dev/null +++ b/application/controllers/system/infocenter/InfocenterDetails.php @@ -0,0 +1,456 @@ +load->model('person/person_model', 'PersonModel'); + $this->load->model('person/kontakt_model', 'KontaktModel'); + $this->load->model('person/adresse_model', 'AdresseModel'); + $this->load->model('person/notiz_model', 'NotizModel'); + $this->load->model('person/notizzuordnung_model', 'NotizzuordnungModel'); + $this->load->model('crm/prestudent_model', 'PrestudentModel'); + $this->load->model('crm/prestudentstatus_model', 'PrestudentstatusModel'); + $this->load->model('crm/akte_model', 'AkteModel'); + $this->load->model('crm/statusgrund_model', 'StatusgrundModel'); + $this->load->model('codex/nation_model', 'NationModel'); + $this->load->model('codex/zgv_model', 'ZgvModel'); + $this->load->model('codex/zgvmaster_model', 'ZgvmasterModel'); + $this->load->model('organisation/studiengang_model', 'StudiengangModel'); + + $this->load->library('DmsLib'); + $this->load->library('WidgetLib'); + $this->load->library('PersonLogLib'); + + $this->load->helper('fhcauth'); + $this->load->helper('url'); + + $this->app = 'aufnahme'; + $this->uid = getAuthUID(); + if(!$this->uid) + show_error('user authentification failed'); + } + + public function index() + { + //TODO error page + } + + private function __loadPersonData($person_id) + { + $person = $this->PersonModel->load($person_id); + + if ($person->error) + { + show_error($person->retval); + } + + $staatsbuergerschaft = $this->NationModel->load($person->retval[0]->staatsbuergerschaft); + if ($staatsbuergerschaft->error) + { + show_error($staatsbuergerschaft->retval); + } + + $geburtsnation = $this->NationModel->load($person->retval[0]->geburtsnation); + if ($geburtsnation->error) + { + show_error($geburtsnation->retval); + } + + $this->KontaktModel->addDistinct(); + $this->KontaktModel->addSelect('kontakttyp, kontakt'); + $kontakte = $this->KontaktModel->loadWhere(array('person_id' => $person_id)); + + if ($kontakte->error) + { + show_error($kontakte->retval); + } + + $adresse = $this->AdresseModel->loadWhere(array('person_id' => $person_id)); + + if ($adresse->error) + { + show_error($adresse->retval); + } + + $dokumente = $this->AkteModel->loadWhere(array('person_id' => $person_id)); + + if ($dokumente->error) + { + show_error($dokumente->retval); + } + + $logs = $this->personloglib->getLogs($person_id, $this->app); + + foreach($logs as $log) + $log->logdata = json_decode($log->logdata); + + $this->NotizzuordnungModel->addSelect('notiz_id'); + $notizzuordnung = $this->NotizzuordnungModel->loadWhere(array('person_id' => $person_id)); + + if ($notizzuordnung->error) + { + show_error($notizzuordnung->retval); + } + + $notizen = array(); + + foreach ($notizzuordnung->retval as $notiz_id) + { + $notiz = $this->NotizModel->load($notiz_id->notiz_id); + $notizen[] = $notiz->retval[0]; + } + + $data = array ( + 'person' => $person->retval[0], + 'staatsbuergerschaft' => $staatsbuergerschaft->retval[0], + 'geburtsnation' => $geburtsnation->retval[0], + 'kontakte' => $kontakte->retval, + 'adresse' => isset($adresse->retval[0]) ? $adresse->retval[0] : null, + 'dokumente' => $dokumente->retval, + 'logs' => $logs, + 'notizen' => $notizen + ); + + return $data; + } + + private function __loadPrestudentData($person_id) + { + $zgvpruefungen = []; + + $prestudenten = $this->PrestudentModel->loadWhere(array('person_id' => $person_id)); + + if ($prestudenten->error) + { + show_error($prestudenten->retval); + } + + foreach ($prestudenten->retval as $prestudent) + { + $zgvpruefung = new stdClass(); + $zgvpruefung->prestudent_id = $prestudent->prestudent_id; + + //Prestudentstatus + $lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent->prestudent_id); + + if ($lastStatus->error) + { + show_error($lastStatus->retval); + } + + $zgvpruefung->prestudentstatus = $lastStatus->retval[0]; + + // Studiengang + $this->StudiengangModel->addSelect('kurzbzlang, bezeichnung, typ');//TODO need bezeichnung? + $studiengang = $this->StudiengangModel->load($prestudent->studiengang_kz); + + if ($studiengang->error) + { + show_error($studiengang->retval); + } + + $zgvpruefung->studiengang = $studiengang->retval[0]->kurzbzlang; + $zgvpruefung->studiengangtyp = $studiengang->retval[0]->typ; + + // Zgv + if (isset($prestudent->zgv_code)) + { + $this->ZgvModel->addSelect('zgv_code, zgv_bez'); + $zgv = $this->ZgvModel->load($prestudent->zgv_code); + + if ($zgv->error) + { + show_error($zgv->retval); + } + + $zgvpruefung->zgv_code = $zgv->retval[0]->zgv_code; + $zgvpruefung->zgv_bez = $zgv->retval[0]->zgv_bez; + } + else + { + $zgvpruefung->zgv_code = null; + $zgvpruefung->zgv_bez = null; + } + $zgvpruefung->zgvort = $prestudent->zgvort; + $zgvpruefung->zgvdatum = $prestudent->zgvdatum; + + // Zgv Nation + if (isset($prestudent->zgvnation)) + { + $this->NationModel->addSelect('nation_code, kurztext'); + $zgvnation = $this->NationModel->load($prestudent->zgvnation); + + if ($zgvnation->error) + { + show_error($zgvnation->retval); + } + + $zgvpruefung->zgvnation_code = $zgvnation->retval[0]->nation_code; + $zgvpruefung->zgvnation_bez = $zgvnation->retval[0]->kurztext; + } + else + { + $zgvnation = null; + $zgvpruefung->zgvnation_code = null; + $zgvpruefung->zgvnation_bez = null; + } + + // Zgv Master + if (isset($prestudent->zgvmas_code)) + { + $this->ZgvmasterModel->addSelect('zgvmas_code, zgvmas_bez'); + $zgvmas = $this->ZgvmasterModel->load($prestudent->zgvmas_code); + + if ($zgvmas->error) + { + show_error($zgvmas->retval); + } + $zgvpruefung->zgvmas_code = $zgvmas->retval[0]->zgvmas_code; + $zgvpruefung->zgvmas_bez = $zgvmas->retval[0]->zgvmas_bez; + } + else + { + $zgvpruefung->zgvmas_code = null; + $zgvpruefung->zgvmas_bez = null; + } + $zgvpruefung->zgvmaort = $prestudent->zgvmaort; + $zgvpruefung->zgvmadatum = $prestudent->zgvmadatum; + + // Zgv Master Nation + if (isset($prestudent->zgvmanation)) + { + $this->NationModel->addSelect('nation_code, kurztext'); + $zgvmanation = $this->NationModel->load($prestudent->zgvmanation); + + if ($zgvmanation->error) + { + show_error($zgvmanation->retval); + } + + $zgvpruefung->zgvmanation_code = $zgvmanation->retval[0]->nation_code; + $zgvpruefung->zgvmanation_bez = $zgvmanation->retval[0]->kurztext; + } + else + { + $zgvmanation = null; + $zgvpruefung->zgvmanation_code = null; + $zgvpruefung->zgvmanation_bez = null; + } + + $zgvpruefungen[] = $zgvpruefung; + } + + //TODO replace with widget + $statusgruende = $this->StatusgrundModel->load()->retval; + + $data = array ( + 'zgvpruefungen' => $zgvpruefungen, + 'statusgruende' => $statusgruende + ); + + return $data; + } + + public function showDetails($person_id) + { + $persondata = $this->__loadPersonData($person_id); + $prestudentdata = $this->__loadPrestudentData($person_id); + $this->load->view('system/infocenter/infocenterDetails.php', array_merge($persondata, $prestudentdata)); + } + + public function saveFormalGeprueft() + { + $akte_id = $this->input->get('akte_id'); + $formalgeprueft = $this->input->get('formal_geprueft'); + $person_id = $this->input->get('person_id'); + + $akte = $this->AkteModel->load($akte_id); + + if ($akte->error) + { + show_error($akte->retval); + } + + $timestamp = (isset($formalgeprueft) && $formalgeprueft === 'true')? date('Y-m-d H:i:s') : null; + $this->AkteModel->update($akte_id, array('formal_geprueft_amum' => $timestamp)); + + //write person log + $this->personloglib->log($person_id, 'Action', array('name' => 'Dokument formal geprüft', 'message' => 'Dokument'.$akte->titel.' formal geprüft, gesetzt auf '.(is_null($timestamp) ? 'NULL' : $timestamp), 'success' => 'true'), $this->app, null, $this->uid); + + redirect('/system/infocenter/InfocenterDetails/showDetails/'.$person_id); + } + + public function saveZgvPruefung($prestudent_id) + { + // prestudentdata + $studiensemester = $this->input->post('studiensemester') === 'null' ? null : $this->input->post('studiensemester'); + $ausbildungssemester = $this->input->post('ausbildungssemester'); + + // zgvdata + $zgv_code = $this->input->post('zgv') === 'null' ? null : $this->input->post('zgv'); + $zgvort = $this->input->post('zgvort'); + $zgvdatum = $this->input->post('zgvdatum'); + $zgvdatum = empty($zgvdatum) ? null : date_format(date_create($zgvdatum), 'Y-m-d'); + $zgvnation_code = $this->input->post('zgvnation') === 'null' ? null : $this->input->post('zgvnation'); + + //zgvmasterdata + $zgvmas_code = $this->input->post('zgvmas') === 'null' ? null : $this->input->post('zgvmas'); + $zgvmaort = $this->input->post('zgvmaort'); + $zgvmadatum = $this->input->post('zgvmadatum'); + $zgvmadatum = empty($zgvmadatum) ? null : date_format(date_create($zgvmadatum), 'Y-m-d'); + $zgvmanation_code = $this->input->post('zgvmanation') === 'null' ? null : $this->input->post('zgvmanation'); + + $lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id); + + if ($lastStatus->error) + { + show_error($lastStatus->retval); + } + + $result = $this->PrestudentstatusModel->update(array('prestudent_id' => $prestudent_id, 'studiensemester_kurzbz' => $lastStatus->retval[0]->studiensemester_kurzbz, 'ausbildungssemester' => $lastStatus->retval[0]->ausbildungssemester), array('studiensemester_kurzbz' => $studiensemester, 'ausbildungssemester' => $ausbildungssemester)); + + if ($result->error) + { + show_error($result->retval); + } + + $result = $this->PrestudentModel->update($prestudent_id, array('zgv_code' => $zgv_code, 'zgvort' => $zgvort, 'zgvdatum' => $zgvdatum, 'zgvnation' => $zgvnation_code, + 'zgvmas_code' => $zgvmas_code, 'zgvmaort' => $zgvmaort, 'zgvmadatum' => $zgvmadatum, 'zgvmanation' => $zgvmanation_code)); + + if ($result->error) + { + show_error($result->retval); + } + + $logdata = $this->__getPersonAndStudiengangFromPrestudent($prestudent_id); + + $this->personloglib->log($logdata['person_id'], 'Action', array('name' => 'Zgv gespeichert', 'message' => 'Zgv für Studiengang '.$logdata['studiengang_kurzbz'].' wurde gespeichert ', 'success' => 'true'), $this->app, null, $this->uid); + + $this->__redirectToStart($prestudent_id); + } + + public function saveAbsage($prestudent_id) + { + $statusgrund = $this->input->post('statusgrund'); + + $lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id); + + if ($lastStatus->error) + { + show_error($lastStatus->retval); + } + + $result = $this->PrestudentstatusModel->insert(array('prestudent_id' => $prestudent_id, 'studiensemester_kurzbz' => $lastStatus->retval[0]->studiensemester_kurzbz, 'ausbildungssemester' => $lastStatus->retval[0]->ausbildungssemester, 'datum' => date('Y-m-d'), 'orgform_kurzbz' => $lastStatus->retval[0]->orgform_kurzbz, 'studienplan_id' => $lastStatus->retval[0]->studienplan_id, 'status_kurzbz' => 'Abgewiesener', 'statusgrund_id' => $statusgrund, 'insertvon' => $this->uid, 'insertamum' => date('Y-m-d H:i:s'))); + + if ($result->error) + { + show_error($result->retval); + } + + $logdata = $this->__getPersonAndStudiengangFromPrestudent($prestudent_id); + + $this->personloglib->log($logdata['person_id'], 'Processstate', array('name' => 'Interessent abgewiesen', 'message' => 'Interessent wurde für Studiengang '.$logdata['studiengang_kurzbz'].' abgewiesen', 'success' => 'true'), $this->app, null, $this->uid); + + $this->__redirectToStart($prestudent_id); + } + + public function saveFreigabe($prestudent_id) + { + $lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id); + + if (count($lastStatus->retval) > 0) + { + $lastStatus = $lastStatus->retval[0]; + + $result = $this->PrestudentstatusModel->update(array('prestudent_id' => $prestudent_id, 'status_kurzbz' => $lastStatus->status_kurzbz, 'studiensemester_kurzbz' => $lastStatus->studiensemester_kurzbz, 'ausbildungssemester' => $lastStatus->ausbildungssemester), + array('bestaetigtvon' => $this->uid, 'bestaetigtam' => date('Y-m-d'), 'updatevon' => $this->uid, 'updateamum' => date('Y-m-d H:i:s'))); + + if ($result->error) + { + show_error($result->retval); + } + } + + $logdata = $this->__getPersonAndStudiengangFromPrestudent($prestudent_id); + + $this->personloglib->log($logdata['person_id'], 'Processstate', array('name' => 'Interessent freigegeben', 'message' => 'Interessent wurde für Studiengang '.$logdata['studiengang_kurzbz'].' freigegeben', 'success' => 'true'), $this->app, null, $this->uid); + + $this->__redirectToStart($prestudent_id); + } + + public function saveNotiz($person_id) + { + $titel = $this->input->post('notiztitel'); + $text = $this->input->post('notiz'); + $erledigt = false; + + $this->NotizModel->addNotizForPerson($person_id, $titel, $text, $erledigt, $this->uid); + + $this->personloglib->log($person_id, 'Action', array('name' => 'Notiz hinzugefügt', 'message' => 'Notiz mit Titel '.$titel.' wurde hinzugefügt', 'success' => 'true'), $this->app, null, $this->uid); + + redirect('/system/infocenter/InfocenterDetails/showDetails/'.$person_id); + } + + public function outputAkteContent($akte_id) + { + $akte = $this->AkteModel->load($akte_id); + + if ($akte->error) + { + show_error($akte->retval); + } + + $aktecontent = $this->dmslib->getAkteContent($akte_id); + + if($aktecontent->error) + { + show_error($aktecontent->retval); + } + + header("Content-type: ".$akte->retval[0]->mimetype); + header('Content-Disposition: attachment; filename="'.$akte->retval[0]->titel.'"'); + echo $aktecontent->retval; + } + + private function __redirectToStart($prestudent_id) + { + $this->PrestudentModel->addSelect('person_id'); + $person_id = $this->PrestudentModel->load($prestudent_id)->retval[0]->person_id; + redirect('/system/infocenter/InfocenterDetails/showDetails/'.$person_id); + } + + private function __getPersonAndStudiengangFromPrestudent($prestudent_id) + { + $this->PrestudentModel->addSelect('person_id, studiengang_kz'); + $prestudent = $this->PrestudentModel->load($prestudent_id); + + if ($prestudent->error) + { + show_error($prestudent->retval); + } + + $person_id = $prestudent->retval[0]->person_id; + + $this->StudiengangModel->addSelect('kurzbzlang');//TODO need bezeichnung? + $studiengang = $this->StudiengangModel->load($prestudent->retval[0]->studiengang_kz); + + if ($studiengang->error) + { + show_error($studiengang->retval); + } + + $studiengang_kurzbz = $studiengang->retval[0]->kurzbzlang; + + return array('person_id' => $person_id, 'studiengang_kurzbz' => $studiengang_kurzbz); + } + +} \ No newline at end of file diff --git a/application/libraries/DmsLib.php b/application/libraries/DmsLib.php index f592eaa0e..7b5eeb62e 100644 --- a/application/libraries/DmsLib.php +++ b/application/libraries/DmsLib.php @@ -250,6 +250,10 @@ class DmsLib { return success(base64_decode($dmscontent->retval[0]->file_content)); } + else + { + return error($dmscontent->retval); + } } else { diff --git a/application/libraries/PersonLogLib.php b/application/libraries/PersonLogLib.php index 5eb8013f2..34bde6145 100644 --- a/application/libraries/PersonLogLib.php +++ b/application/libraries/PersonLogLib.php @@ -44,4 +44,20 @@ class PersonLogLib else show_error($result->retval); } + + /** + * Gets Logs for a Person, filtered by Parameters + * @param int $person_id ID of the Person. + * @param string $app Name of the App. + * @param string $oe_kurzbz Organisations Unit. + * @return object $result + */ + public function getLogs($person_id, $app = null, $oe_kurzbz = null) + { + $result = $this->ci->PersonLogModel->filterLog($person_id, $app, $oe_kurzbz); + if (isSuccess($result)) + return $result->retval; + else + show_error($result->retval); + } } diff --git a/application/models/person/Notiz_model.php b/application/models/person/Notiz_model.php index fc41c9e40..37581def1 100644 --- a/application/models/person/Notiz_model.php +++ b/application/models/person/Notiz_model.php @@ -94,5 +94,42 @@ class Notiz_model extends DB_Model return $result; } + + /** + * Add a Notiz for a given person + */ + public function addNotizForPerson($person_id, $titel, $text, $erledigt, $verfasser_uid) + { + // Loads model Notizzuordnung_model + $this->load->model('person/Notizzuordnung_model', 'NotizzuordnungModel'); + + // Start DB transaction + $this->db->trans_start(false); + + $result = $this->insert(array('titel' => $titel, 'text' => $text, 'erledigt' => $erledigt, 'verfasser_uid' => $verfasser_uid, + "insertvon" => $verfasser_uid)); + $notiz_id = $result->retval; + if (isSuccess($result)) + { + $result = $this->NotizzuordnungModel->insert(array('notiz_id' => $notiz_id, 'person_id' => $person_id)); + } + + // Transaction complete! + $this->db->trans_complete(); + + // Check if everything went ok during the transaction + if ($this->db->trans_status() === false || isError($result)) + { + $this->db->trans_rollback(); + $result = error($result->msg, EXIT_ERROR); + } + else + { + $this->db->trans_commit(); + $result = success($notiz_id); + } + + return $result; + } // ------------------------------------------------------------------------------------------------------ } \ No newline at end of file diff --git a/application/models/system/PersonLog_model.php b/application/models/system/PersonLog_model.php index 2d7ff15cc..4725815f3 100644 --- a/application/models/system/PersonLog_model.php +++ b/application/models/system/PersonLog_model.php @@ -58,4 +58,30 @@ class PersonLog_model extends CI_Model return success($result->result()); } + + /** + * Load logs for a person, filtered by parameters + * @param int $person_id ID of the Person. + * @param string $app Name of the App. + * @param string $oe_kurzbz Organisations Unit. + * @return object $result + */ + public function filterLog($person_id, $app = null, $oe_kurzbz = null) + { + // Check Permissions + $this->load->library('PermissionLib'); + if(!$this->permissionlib->isEntitled('system.tbl_log',PermissionLib::SELECT_RIGHT)) + show_error('Permission denied - You need Access to system.tbl_log'); + + $this->db->order_by('zeitpunkt', 'DESC'); + $this->db->order_by('log_id', 'DESC'); + if (!is_null($app)) + $this->db->where('app='.$this->db->escape($app)); + if (!is_null($oe_kurzbz)) + $this->db->where('oe_kurzbz='.$this->db->escape($oe_kurzbz)); + + $result = $this->db->get_where($this->dbTable, "person_id=".$this->db->escape($person_id)); + + return success($result->result()); + } } diff --git a/application/views/system/infocenter/infocenterDetails.php b/application/views/system/infocenter/infocenterDetails.php new file mode 100644 index 000000000..b663094c7 --- /dev/null +++ b/application/views/system/infocenter/infocenterDetails.php @@ -0,0 +1,269 @@ +load->view('templates/header', array('title' => 'InfocenterDetails', 'datepicker' => true, 'datepickerclass' => 'dateinput'/*, 'tablesort' => true, 'tableid' => 't1'*/)); +?> + +

    Infocenter - Person Details

    + +
    + Stammdaten + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Vorname: vorname ?>
    Nachname: nachname ?>
    Geburtsdatum: gebdatum), 'd.m.Y') ?>
    Sozialversicherungsnr: svnr ?>
    Staatsbürgerschaft: kurztext ?>
    Geschlecht: geschlecht ?>
    Geburtsnation: kurztext ?>
    Geburtsort: gebort ?>
    Kontaktdaten
    kontakttyp).': '; + if ($kontakt->kontakttyp == 'email'): + ?> + + kontakt; + if ($kontakt->kontakttyp == 'email'): + ?> + + +
    + Adresse: strasse.", ".$adresse->plz." ".$adresse->ort : "" ?> +
    +
    +
    + Dokumentenprüfung + + + + + + + + + formal_geprueft_amum)) ? "checked" : ""; + ?> + + + + + + + + +
    NameTypUploaddatumformal geprüft
    titel ?> + dokument_kurzbz ?>erstelltam), 'd.m.Y') ?> + + onclick="onFormalGeprueftChange(this.checked, akte_id ?>, person_id ?>)"/> + formal_geprueft_amum; + ?> +
    +
    + +
    +
    + ZGV Prüfung - Studiengang studiengang ?> + + + + + + + + + + + + + + studiengangtyp === 'm') :?> + + + + + + + + + + + + + + + + +
    + + prestudentstatus->status_kurzbz?> + + + prestudentstatus->bestaetigtam) ? "ja" : "nein" ?> + + + widgetlib->widget( + 'Studiensemester_widget', + array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->prestudentstatus->studiensemester_kurzbz), + array('name' => 'studiensemester', 'id' => 'studiensemester') + ); ?> + + + prestudentstatus->ausbildungssemester ?> +
    + + widgetlib->widget( + 'Zgv_widget', + array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgv_code), + array('name' => 'zgv', 'id' => 'zgv') + ); ?> + + + + + + zgvdatum), 'd.m.Y') ?>" + name="zgvdatum"> + + + widgetlib->widget( + 'Nation_widget', + array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvnation_code), + array('name' => 'zgvnation', 'id' => 'zgvnation') + ); ?> +
    + + widgetlib->widget( + 'Zgvmaster_widget', + array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmas_code), + array('name' => 'zgvmas', 'id' => 'zgvmas') + ); ?> + + + + + + zgvmadatum), 'd.m.Y') ?>" + name="zgvmadatum"> + + + widgetlib->widget( + 'Nation_widget', + array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmanation_code), + array('name' => 'zgvmanation', 'id' => 'zgvmanation') + ); ?> +
    + +
    +
    +
    + + widgetlib->widget( + 'Statusgrund_widget', + array(), + array('name' => 'absage', 'id' => 'absage') + ); */ + //Prestudenten cannot be abgewiesen or freigegeben if already done + if(!isset($zgvpruefung->prestudentstatus->bestaetigtam) && $zgvpruefung->prestudentstatus->status_kurzbz != 'Abgewiesener') : + ?> +
    + + + +
    + + + + + + + + + + + + + + + + + + + + +
    DatumAktivitätUser
    zeitpunkt), 'd.m.Y H:i:s') ?>logdata->name ?>insertvon ?>
    + + + + + + + + + + + + + + + + + +
    DatumNotizUser
    insertamum), 'd.m.Y H:i:s') ?>titel ?>verfasser_uid ?>
    +
    + +
    + Titel: +
    + Text: + +
    + + + diff --git a/application/widgets/Nation_widget.php b/application/widgets/Nation_widget.php new file mode 100644 index 000000000..2c20b8691 --- /dev/null +++ b/application/widgets/Nation_widget.php @@ -0,0 +1,22 @@ +load->model('codex/nation_model', 'NationModel'); + $this->NationModel->addOrder('nation_code'); + + $this->addSelectToModel($this->NationModel, 'nation_code', 'kurztext'); + + $this->setElementsArray( + $this->NationModel->load(), + true, + 'Select a nation...', + 'No nation found' + ); + + $this->loadDropDownView($widgetData); + } +} \ No newline at end of file diff --git a/application/widgets/Statusgrund_widget.php b/application/widgets/Statusgrund_widget.php new file mode 100644 index 000000000..d0f9d2f58 --- /dev/null +++ b/application/widgets/Statusgrund_widget.php @@ -0,0 +1,22 @@ +load->model('crm/statusgrund_model', 'StatusgrundModel'); + $this->StatusgrundModel->addOrder('statusgrund_id'); + + $this->addSelectToModel($this->StatusgrundModel, 'statusgrund_id', 'bezeichnung_mehrsprachig[1]'); + + $this->setElementsArray( + $this->StatusgrundModel->load(), + true, + 'Select a Statusgrund...', + 'No Statusgrund found' + ); + + $this->loadDropDownView($widgetData); + } +} \ No newline at end of file diff --git a/application/widgets/Zgv_widget.php b/application/widgets/Zgv_widget.php new file mode 100644 index 000000000..8858d3206 --- /dev/null +++ b/application/widgets/Zgv_widget.php @@ -0,0 +1,22 @@ +load->model('codex/zgv_model', 'ZgvModel'); + $this->ZgvModel->addOrder('zgv_bez'); + + $this->addSelectToModel($this->ZgvModel, 'zgv_code', 'zgv_bez'); + + $this->setElementsArray( + $this->ZgvModel->load(), + true, + 'Select a zgv...', + 'No zgv found' + ); + + $this->loadDropDownView($widgetData); + } +} \ No newline at end of file diff --git a/application/widgets/Zgvmaster_widget.php b/application/widgets/Zgvmaster_widget.php new file mode 100644 index 000000000..8ac331109 --- /dev/null +++ b/application/widgets/Zgvmaster_widget.php @@ -0,0 +1,22 @@ +load->model('codex/zgvmaster_model', 'ZgvmasterModel'); + $this->ZgvmasterModel->addOrder('zgvmas_bez'); + + $this->addSelectToModel($this->ZgvmasterModel, 'zgvmas_code', 'zgvmas_bez'); + + $this->setElementsArray( + $this->ZgvmasterModel->load(), + true, + 'Select a zgv...', + 'No zgv found' + ); + + $this->loadDropDownView($widgetData); + } +} \ No newline at end of file From 6aeb96818fed163ab86070e0ed0b15c626d758d7 Mon Sep 17 00:00:00 2001 From: Paolo Date: Tue, 19 Dec 2017 10:53:02 +0100 Subject: [PATCH 086/126] - Added new includes to FHC-Header.php - Now FilterWidget is not rendering an entire page but only a div - Added view infocenterData to show the filter itself - FilterWidget now is using the new FHC-Header --- .../system/infocenter/InfoCenter.php | 56 ------------------- .../views/system/infocenter/infocenter.php | 20 ++----- .../system/infocenter/infocenterData.php | 50 +++++++++++++++++ .../system/infocenter/infocenterFilters.php | 4 +- application/views/templates/FHC-Header.php | 6 ++ application/views/widgets/filter/filter.php | 23 ++++---- application/widgets/FilterWidget.php | 19 +++++-- 7 files changed, 90 insertions(+), 88 deletions(-) create mode 100644 application/views/system/infocenter/infocenterData.php diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index d75ab4d9e..17e7dcc03 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -36,60 +36,4 @@ class InfoCenter extends VileSci_Controller ) ); } - - /** - * - */ - public function filter($filterId = null) - { - $filterWidgetArray = array( - 'query' => ' - SELECT p.person_id AS "PersonId", - p.nachname AS "Nachname", - p.vorname AS "Vorname", - k.kontakt AS "Email", - p.aktiv AS "Aktiv", - k.updateamum AS "UpdateDate" - FROM public.tbl_person p INNER JOIN public.tbl_kontakt k USING(person_id) - WHERE p.aktiv = TRUE - AND p.person_id = k.person_id - AND k.kontakttyp = \'email\' - AND p.person_id < 1000 - ', - 'hideHeader' => false, - 'hideSave' => false, - 'checkboxes' => array('PersonId'), - 'additionalColumns' => array('Delete', 'Edit'), - 'formatRaw' => function($fieldName, $fieldValue, $datasetRaw) { - - if ($fieldName == 'PersonId') - { - $datasetRaw->{$fieldName} = ''.$fieldValue.''; - } - elseif ($fieldName == 'Delete') - { - $datasetRaw->{$fieldName} = 'Delete'; - } - elseif ($fieldName == 'Edit') - { - $datasetRaw->{$fieldName} = 'Edit'; - } - - return $datasetRaw; - } - ); - - if ($filterId == null) - { - $filterWidgetArray['app'] = 'core'; - $filterWidgetArray['datasetName'] = 'kontakts'; - $filterWidgetArray['filterKurzbz'] = 'This filter filters'; - } - else - { - $filterWidgetArray['filterId'] = $filterId; - } - - echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray); - } } diff --git a/application/views/system/infocenter/infocenter.php b/application/views/system/infocenter/infocenter.php index 984005baa..f5969b7dd 100644 --- a/application/views/system/infocenter/infocenter.php +++ b/application/views/system/infocenter/infocenter.php @@ -1,14 +1,6 @@ -load->view('templates/FHC-Header', array('title' => 'Info Center', 'jquery3' => true)); ?> - - - - +load->view('templates/FHC-Header', array('title' => 'Info Center', 'jquery3' => true, 'tablesorter' => true)); +?> @@ -25,9 +17,9 @@ - + load->view('system/infocenter/infocenterData.php'); + ?> diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php new file mode 100644 index 000000000..0c7b6bdba --- /dev/null +++ b/application/views/system/infocenter/infocenterData.php @@ -0,0 +1,50 @@ + ' + SELECT p.person_id AS "PersonId", + p.nachname AS "Nachname", + p.vorname AS "Vorname", + k.kontakt AS "Email", + p.aktiv AS "Aktiv", + k.updateamum AS "UpdateDate" + FROM public.tbl_person p INNER JOIN public.tbl_kontakt k USING(person_id) + WHERE p.aktiv = TRUE + AND p.person_id = k.person_id + AND k.kontakttyp = \'email\' + AND p.person_id < 1000 + ', + 'hideHeader' => true, + 'hideSave' => true, + 'additionalColumns' => array('Details'), + 'formatRaw' => function($fieldName, $fieldValue, $datasetRaw) { + + $link = 'Details'; + + if ($fieldName == 'Details') + { + $datasetRaw->{$fieldName} = sprintf( + $link, + base_url('index.ci.php/system/infocenter/infocenterDetails/showDetails/'), + $datasetRaw->PersonId + ); + } + + return $datasetRaw; + } + ); + + $filterId = isset($_GET['filterId']) ? $_GET['filterId'] : null; + + if (isset($filterId) && is_numeric($filterId)) + { + $filterWidgetArray['filterId'] = $filterId; + } + else + { + $filterWidgetArray['app'] = 'core'; + $filterWidgetArray['datasetName'] = 'kontakts'; + $filterWidgetArray['filterKurzbz'] = 'This filter filters'; + } + + echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray); +?> diff --git a/application/views/system/infocenter/infocenterFilters.php b/application/views/system/infocenter/infocenterFilters.php index e5d124aad..f15b24fbb 100644 --- a/application/views/system/infocenter/infocenterFilters.php +++ b/application/views/system/infocenter/infocenterFilters.php @@ -3,9 +3,9 @@ { foreach ($listFilters as $name => $filterId) { - $toPrint = ''; + $toPrint = ''; - echo sprintf($toPrint, base_url('index.ci.php/system/infocenter/InfoCenter/filter'), $filterId, $name).PHP_EOL; + echo sprintf($toPrint, base_url('index.ci.php/system/infocenter/InfoCenter?filterId'), $filterId, $name).PHP_EOL; } } diff --git a/application/views/templates/FHC-Header.php b/application/views/templates/FHC-Header.php index bde117a48..4b4dcc511 100644 --- a/application/views/templates/FHC-Header.php +++ b/application/views/templates/FHC-Header.php @@ -9,6 +9,7 @@ $customJSs = isset($customJSs) ? $customJSs : null; // By default set the parameters to false $jquery3 = isset($jquery3) ? $jquery3 : false; +$tablesorter = isset($tablesorter) ? $tablesorter : false; /** * Print the given title of the page @@ -89,11 +90,16 @@ function _generateJSsInclude($JSs) // Eventually required CSS _generateCSSsInclude($customCSSs); // Eventually required CSS + // Table sorter CSS + if ($tablesorter === true) _generateCSSsInclude('skin/tablesort.css'); + // -------------------------------------------------------------------------------------------------------- // Javascripts // JQuery V3 if ($jquery3 === true) _generateJSsInclude('vendor/components/jquery/jquery.min.js'); + // Table sorter JS + if ($tablesorter === true) _generateJSsInclude('vendor/christianbach/tablesorter/jquery.tablesorter.min.js'); // Eventually required JS _generateJSsInclude($customJSs); diff --git a/application/views/widgets/filter/filter.php b/application/views/widgets/filter/filter.php index 1219e84f3..a5723f4aa 100644 --- a/application/views/widgets/filter/filter.php +++ b/application/views/widgets/filter/filter.php @@ -1,12 +1,16 @@ -load->view( - 'templates/header', - array('title' => 'Filters', 'tablesort' => true, 'tableid' => 'tableDataset', 'widgets' => 'zebra') - ); -?> - +
    @@ -71,7 +75,4 @@
    - -load->view('templates/footer'); -?> +
    diff --git a/application/widgets/FilterWidget.php b/application/widgets/FilterWidget.php index 3d297bf4f..988032c0a 100644 --- a/application/widgets/FilterWidget.php +++ b/application/widgets/FilterWidget.php @@ -593,7 +593,7 @@ class FilterWidget extends Widget $this->FiltersModel->resetQuery(); // - $this->FiltersModel->addJoin('public.tbl_benutzer', 'person_id'); + $this->FiltersModel->addJoin('public.tbl_benutzer', 'person_id', 'LEFT'); // $this->FiltersModel->addSelect('system.tbl_filters.*'); @@ -619,9 +619,7 @@ class FilterWidget extends Widget else { $whereParameters = array( - 'filter_id' => $this->filter_id, - 'uid' => getAuthUID(), - 'default_filter' => true + 'filter_id' => $this->filterId ); } @@ -635,7 +633,6 @@ class FilterWidget extends Widget if (isset($filter->retval[0]->filter) && trim($filter->retval[0]->filter) != '') { $jsonEncodedFilter = json_decode($filter->retval[0]->filter); - } } @@ -687,6 +684,18 @@ class FilterWidget extends Widget self::ACTIVE_FILTERS_OPTION => $activeFiltersOption ); + $this->session->set_userdata(self::SESSION_NAME, $filterSessionArray); + } + else + { + $filterSessionArray = array( + self::SELECTED_FIELDS => array(), + self::SELECTED_FILTERS => array(), + self::ACTIVE_FILTERS => array(), + self::ACTIVE_FILTERS_OPERATION => array(), + self::ACTIVE_FILTERS_OPTION => array() + ); + $this->session->set_userdata(self::SESSION_NAME, $filterSessionArray); } } From 1bb1bdf68b52fd4e19b15784963a40def6275d03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 19 Dec 2017 16:09:52 +0100 Subject: [PATCH 087/126] Added Updateinfo Fotoliste --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b28531f8..05c155569 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ - **[CORE]** Berechtigungsprüfung wurde angepasst damit deaktivierte Benutzer keine Berechtigungen mehr haben - **[FAS]** Mitarbeiterexport exportiert jetzt nur noch die markierten Personen - **[CORE]** Has many as possible javascripts and css present in the repository were removed. Their lack is overcome by the packages in the composer. In the meanwhile also the versions were updated +- **[CIS]** Die Fotoliste wird jetzt mit unoconv erstellt. Die bestehende Vorlage für den Dokumentenexport muss hier angepasst werden ### Updateinfo - **[CORE]** Infoscreen wurde umbenannt (informationsbildschirm.php) From 4c6da4f981ad9b19719e4c3951b14c3bed9bcc32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 20 Dec 2017 09:43:32 +0100 Subject: [PATCH 088/126] Doppelte Funktion CutString entfernt --- vilesci/personen/personendetails.php | 38 ++++++++++------------------ 1 file changed, 13 insertions(+), 25 deletions(-) diff --git a/vilesci/personen/personendetails.php b/vilesci/personen/personendetails.php index 172bf7051..784b49229 100644 --- a/vilesci/personen/personendetails.php +++ b/vilesci/personen/personendetails.php @@ -20,7 +20,7 @@ * Rudolf Hangl < rudolf.hangl@technikum-wien.at > * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > */ -require_once('../../config/vilesci.config.inc.php'); +require_once('../../config/vilesci.config.inc.php'); require_once('../../include/functions.inc.php'); require_once('../../include/benutzerberechtigung.class.php'); require_once('../../include/studiengang.class.php'); @@ -38,7 +38,7 @@ $user = get_uid(); if (!$db = new basis_db()) die('Es konnte keine Verbindung zum Server aufgebaut werden.'); - + $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); @@ -58,21 +58,21 @@ echo ' '; -if(!$rechte->isBerechtigt('admin') && +if(!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('preinteressent') && !$rechte->isBerechtigt('assistenz')) die('Sie haben keine Berechtigung fuer diese Seite'); if(isset($_GET['id']) && is_numeric($_GET['id'])) $id = $_GET['id']; -else +else die('der Parameter id mit der Person_id muss uebergeben werden'); $person = new person(); if(!$person->load($id)) die('Person wurde nicht gefunden'); - + //PERSON echo '

    Person

    '; echo ''; @@ -117,7 +117,7 @@ $nation->getAll(); $nation_arr['']=''; foreach($nation->nation as $row) $nation_arr[$row->code]=$row->kurztext; - + $adresstyp_arr = array(''=>'','h'=>'Hauptwohnsitz','n'=>'Nebenwohnsitz','f'=>'Firma'); // *** ADRESSEN *** @@ -144,18 +144,6 @@ foreach ($adresse_obj->result as $row) echo ""; } echo '
    ".$firma->name."
    '; -//PREINTERESSENT -function CutString($strVal, $limit) -{ - if(strlen($strVal) > $limit+3) - { - return substr($strVal, 0, $limit) . "..."; - } - else - { - return $strVal; - } -} $preinteressent = new preinteressent(); $preinteressent->getPreinteressenten($person->person_id); @@ -188,7 +176,7 @@ if(count($preinteressent->result)>0) echo ''; $preinteressent1 = new preinteressent(); $preinteressent1->loadZuordnungen($row->preinteressent_id); - + $stgs=''; foreach ($preinteressent1->result as $row_zuordnung) { @@ -210,12 +198,12 @@ if(count($preinteressent->result)>0) $plz = $adresse->result[0]->plz; $ort = $adresse->result[0]->ort; } - else + else { $plz=''; $ort=''; } - + echo $plz.' '.$ort.' '.$firma->name." ($firma->firmentyp_kurzbz)"; } echo ''; @@ -283,7 +271,7 @@ if(count($prestudent->result)>0) { $uid='ACHTUNG: Es gibt mehrere Studenteneinträge die auf diesen Prestudenten zeigen!'; } - else + else { if($row_std = $db->db_fetch_object($result)) { @@ -295,7 +283,7 @@ if(count($prestudent->result)>0) echo "$uid"; echo "$gruppe"; $prestudent1 = new prestudent(); - $prestudent1->getLastStatus($row->prestudent_id); + $prestudent1->getLastStatus($row->prestudent_id); echo "$prestudent1->status_kurzbz ".($prestudent1->ausbildungssemester!=''?"($prestudent1->ausbildungssemester. Semester)":'').""; echo ''; } @@ -307,7 +295,7 @@ if($result = $db->db_query($qry)) { if($db->db_num_rows($result)>0) { - echo '

    Mitarbeiter

    '; + echo '

    Mitarbeiter

    '; echo ' @@ -333,4 +321,4 @@ if($result = $db->db_query($qry)) } echo ''; echo ''; -?> \ No newline at end of file +?> From f9d106113f5b59ee97c93a01ab17e0a17e1020c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 20 Dec 2017 09:43:47 +0100 Subject: [PATCH 089/126] Fehler beim Laden der Dokumente behoben --- include/dokument.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/dokument.class.php b/include/dokument.class.php index 7d8b981c2..6cc313583 100644 --- a/include/dokument.class.php +++ b/include/dokument.class.php @@ -670,7 +670,7 @@ class dokument extends basis_db $bezeichnung_mehrsprachig = $sprache->getSprachQuery('bezeichnung_mehrsprachig'); $dokumentbeschreibung_mehrsprachig = $sprache->getSprachQuery('dokumentbeschreibung_mehrsprachig'); $beschreibung_mehrsprachig = $sprache->getSprachQuery('beschreibung_mehrsprachig'); - $qry = "SELECT distinct on (dokument_kurzbz) dokument_kurzbz, bezeichnung, pflicht, nachreichbar, + $qry = "SELECT distinct on (dokument_kurzbz) dokument_kurzbz, bezeichnung, pflicht, nachreichbar, ausstellungsdetails, $bezeichnung_mehrsprachig, $dokumentbeschreibung_mehrsprachig, $beschreibung_mehrsprachig FROM public.tbl_dokumentstudiengang JOIN public.tbl_prestudent using (studiengang_kz) @@ -722,7 +722,7 @@ class dokument extends basis_db $dokumentbeschreibung_mehrsprachig = $sprache->getSprachQuery('dokumentbeschreibung_mehrsprachig'); $beschreibung_mehrsprachig = $sprache->getSprachQuery('beschreibung_mehrsprachig'); - $qry = " SELECT DISTINCT dokument_kurzbz, studiengang_kz, ausstellungsdetails, + $qry = " SELECT DISTINCT dokument_kurzbz, studiengang_kz, ausstellungsdetails, $dokumentbeschreibung_mehrsprachig, $beschreibung_mehrsprachig FROM public.tbl_dokumentstudiengang JOIN public.tbl_dokument using (dokument_kurzbz) From 765ef66bb3a424eb3b4dce9b80a23c1a752eb3e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 20 Dec 2017 09:58:34 +0100 Subject: [PATCH 090/126] Fehler beim Anlegen der Noten entschuldigt und unentschuldigt gehoben --- system/dbupdate_3.3.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 22e988540..450c5f7bb 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -399,11 +399,11 @@ if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_pruefungstyp WHERE pruefung } // Note "entschuldigt" hinzufügen -if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'en' AND bezeichnung = 'entschuldigt' OR bezeichnung = 'Entschuldigt';")) +if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'en' AND (bezeichnung = 'entschuldigt' OR bezeichnung = 'Entschuldigt');")) { if($db->db_num_rows($result) == 0) { - $qry = "INSERT INTO lehre.tbl_note(bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre) VALUES('entschuldigt', 'en', NULL, TRUE, NULL, TRUE, TRUE);"; + $qry = "INSERT INTO lehre.tbl_note(note, bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre) VALUES((SELECT max(note)+1 FROM lehre.tbl_note),'entschuldigt', 'en', NULL, TRUE, NULL, TRUE, TRUE);"; if(!$db->db_query($qry)) echo 'lehre.tbl_note: '.$db->db_last_error().'
    '; @@ -413,11 +413,11 @@ if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'en' } // Note "unentschuldigt" hinzufügen -if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'ue' AND bezeichnung = 'unentschuldigt' OR bezeichnung = 'Unentschuldigt';")) +if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_note WHERE anmerkung = 'ue' AND (bezeichnung = 'unentschuldigt' OR bezeichnung = 'Unentschuldigt');")) { if($db->db_num_rows($result) == 0) { - $qry = "INSERT INTO lehre.tbl_note(bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre) VALUES('unentschuldigt', 'ue', NULL, FALSE, NULL, TRUE, TRUE);"; + $qry = "INSERT INTO lehre.tbl_note(note, bezeichnung, anmerkung, farbe, positiv, notenwert, aktiv, lehre) VALUES((SELECT max(note)+1 FROM lehre.tbl_note),'unentschuldigt', 'ue', NULL, FALSE, NULL, TRUE, TRUE);"; if(!$db->db_query($qry)) echo 'lehre.tbl_note: '.$db->db_last_error().'
    '; From 94f91dd5c225aaa3b41bd7659637128bac38debf Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Wed, 20 Dec 2017 10:27:24 +0100 Subject: [PATCH 091/126] Phrasenkorrektur Incoming-Plattform --- cis/public/incoming/incoming.php | 16 ++++++++-------- cis/public/incoming/registration.php | 4 ++-- locale/de-AT/incoming.php | 2 ++ locale/en-US/incoming.php | 2 ++ 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/cis/public/incoming/incoming.php b/cis/public/incoming/incoming.php index 2238d775a..fa7748433 100644 --- a/cis/public/incoming/incoming.php +++ b/cis/public/incoming/incoming.php @@ -1535,17 +1535,17 @@ echo'
    - + - + - + - + @@ -1868,13 +1868,13 @@ else if ($method == "profil") - + - + @@ -1923,14 +1923,14 @@ echo' '.$p->t('global/frau').' '; - echo ' + echo ' - + diff --git a/cis/public/incoming/registration.php b/cis/public/incoming/registration.php index 4943e439b..71ff33a69 100644 --- a/cis/public/incoming/registration.php +++ b/cis/public/incoming/registration.php @@ -83,11 +83,11 @@ echo ' - + - + diff --git a/locale/de-AT/incoming.php b/locale/de-AT/incoming.php index c2a83a3b2..5a9479770 100644 --- a/locale/de-AT/incoming.php +++ b/locale/de-AT/incoming.php @@ -1,4 +1,6 @@ phrasen['incoming/vorname']='Vorname'; +$this->phrasen['incoming/nachname']='Nachname'; $this->phrasen['incoming/persönlichedateneditieren']='Persönliche Daten'; $this->phrasen['incoming/lehrveranstaltungenauswählen']='Lehrveranstaltungen auswählen'; $this->phrasen['incoming/learningagreementerstellen']='Learning Agreement erstellen'; diff --git a/locale/en-US/incoming.php b/locale/en-US/incoming.php index 411b962df..a9f944573 100644 --- a/locale/en-US/incoming.php +++ b/locale/en-US/incoming.php @@ -1,4 +1,6 @@ phrasen['incoming/vorname']='Name'; +$this->phrasen['incoming/nachname']='Surname (Family Name)'; $this->phrasen['incoming/persönlichedateneditieren']='Profile'; $this->phrasen['incoming/lehrveranstaltungenauswählen']='Course Registration'; $this->phrasen['incoming/learningagreementerstellen']='Create Learning Agreement (print)'; From 89c638a54e4202fcd887cf234337150bf95d3d5d Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Wed, 20 Dec 2017 10:31:15 +0100 Subject: [PATCH 092/126] CIS-PersonenSuche nur aktive Benutzer Die CIS-Personensuche liefert nur mehr aktive BenutzerInnen --- cis/private/tools/suche.php | 44 ++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/cis/private/tools/suche.php b/cis/private/tools/suche.php index e4950f00b..dbc8aea6a 100644 --- a/cis/private/tools/suche.php +++ b/cis/private/tools/suche.php @@ -261,26 +261,30 @@ function searchOE($searchItems) $kontakt->loadFirmaKontakttyp($mitarbeiter->standort_id,'telefon'); $bisverwendung = new bisverwendung(); $bisverwendung->getLastAktVerwendung($bf->uid); - echo ''; - echo ''; - echo ''; - echo ''; - - echo ''; - echo ''; - //if($row->alias!='' && !in_array($row->studiengang_kz, $noalias)) ??? Was macht $noalias? - if($person->alias!='') - $mail = $person->alias.'@'.DOMAIN; - else - $mail = $person->uid.'@'.DOMAIN; - echo ''; - //if(!defined('CIS_SUCHE_LVPLAN_ANZEIGEN') || CIS_SUCHE_LVPLAN_ANZEIGEN) - //echo ''; - echo ''; - echo "\n"; + $benutzer = new benutzer($bf->uid); + if ($benutzer->bnaktiv) + { + echo ''; + echo ''; + echo ''; + echo ''; + + echo ''; + echo ''; + //if($row->alias!='' && !in_array($row->studiengang_kz, $noalias)) ??? Was macht $noalias? + if($person->alias!='') + $mail = $person->alias.'@'.DOMAIN; + else + $mail = $person->uid.'@'.DOMAIN; + echo ''; + //if(!defined('CIS_SUCHE_LVPLAN_ANZEIGEN') || CIS_SUCHE_LVPLAN_ANZEIGEN) + //echo ''; + echo ''; + echo "\n"; + } } echo "\n"; echo '
    '.$p->t('incoming/masterstudiengang').' Department Coordinator International Coordinator
    '.$p->t('global/vorname').' '.$p->t('incoming/vorname').' '.$p->t('global/vorname').' '.$p->t('incoming/vorname').'
    '.$p->t('global/nachname').' '.$p->t('incoming/nachname').' '.$p->t('global/nachname').' '.$p->t('incoming/nachname').'
    '.$p->t('global/vorname').''.$p->t('incoming/vorname').' '.$p->t('incoming/abgelegtin').'
    '.$p->t('global/nachname').''.$p->t('incoming/nachname').' '.$p->t('incoming/abgelegtinort').' '.$p->t('global/vorname').''.$p->t('incoming/vorname').'
    '.$p->t('global/nachname').''.$p->t('incoming/nachname').'
    '.$p->t('global/vorname').'*'.$p->t('incoming/vorname').'*
    '.$p->t('global/nachname').'*'.$p->t('incoming/nachname').'*
    '.$person->vorname.'',$person->nachname,''.$bf->bezeichnung; - if($bisverwendung->beschausmasscode=='5') - echo ' (karenziert)'; - echo '',($mitarbeiter->telefonklappe!=''?$kontakt->kontakt.'-'.$mitarbeiter->telefonklappe:'-'),'',($mitarbeiter->ort_kurzbz!=''?$mitarbeiter->ort_kurzbz:'-'),'',$mail,''.$p->t('lvplan/lvPlan').'
    '.$person->vorname.'',$person->nachname,''.$bf->bezeichnung; + if($bisverwendung->beschausmasscode=='5') + echo ' (karenziert)'; + echo '',($mitarbeiter->telefonklappe!=''?$kontakt->kontakt.'-'.$mitarbeiter->telefonklappe:'-'),'',($mitarbeiter->ort_kurzbz!=''?$mitarbeiter->ort_kurzbz:'-'),'',$mail,''.$p->t('lvplan/lvPlan').'

    '; From 237f63b187742a1afe5e1ef2102178440fd64738 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Wed, 20 Dec 2017 10:33:11 +0100 Subject: [PATCH 093/126] Neue Funktion getStudiengaengeDokument MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Liefert die Studiengänge bei denen das übergebene Dokument benötigt wird - Studiengang.class: DISTINCT bei Funktion getAllForOnlinebewerbung entfernt --- include/dokument.class.php | 45 +++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/include/dokument.class.php b/include/dokument.class.php index 7d8b981c2..04c6e2189 100644 --- a/include/dokument.class.php +++ b/include/dokument.class.php @@ -661,8 +661,8 @@ class dokument extends basis_db /** * Liefert alle Dokumente die eine Person abzugeben hat. * Ist notwendig, um bei einer Bewerbung mit mehreren Studiengängen zu wissen, was der Student im Gesamten abzugeben hat - * @param $person_id - * @param onlinebewerbung + * @param integer $person_id + * @param boolean $onlinebewerbung Default false. Wenn true, werden nur Dokumente zurueckgegeben, bei denen das Attribut "Onlinebewerbung" true ist */ public function getAllDokumenteForPerson($person_id, $onlinebewerbung= false) { @@ -670,7 +670,7 @@ class dokument extends basis_db $bezeichnung_mehrsprachig = $sprache->getSprachQuery('bezeichnung_mehrsprachig'); $dokumentbeschreibung_mehrsprachig = $sprache->getSprachQuery('dokumentbeschreibung_mehrsprachig'); $beschreibung_mehrsprachig = $sprache->getSprachQuery('beschreibung_mehrsprachig'); - $qry = "SELECT distinct on (dokument_kurzbz) dokument_kurzbz, bezeichnung, pflicht, nachreichbar, + $qry = "SELECT distinct on (dokument_kurzbz) dokument_kurzbz, bezeichnung, pflicht, nachreichbar, ausstellungsdetails, $bezeichnung_mehrsprachig, $dokumentbeschreibung_mehrsprachig, $beschreibung_mehrsprachig FROM public.tbl_dokumentstudiengang JOIN public.tbl_prestudent using (studiengang_kz) @@ -810,4 +810,43 @@ class dokument extends basis_db } } } + + /** + * Liefert die Studiengänge bei denen das übergebene Dokument benötigt wird + * @param string $dokument_kurzbz Kurzbz des Dokuments + * @param integer $person_id Optional. Die Dokumente werden zusätzlich auf die Studiengänge eingeschränkt für die sich eine Person beworben hat. + * @return object Objekt mit den Studiengängen oder false. + */ + public function getStudiengaengeDokument($dokument_kurzbz, $person_id = null) + { + $qry = " SELECT DISTINCT studiengang_kz,typ||kurzbz AS kuerzel, bezeichnung, english FROM public.tbl_dokumentstudiengang + JOIN public.tbl_prestudent USING (studiengang_kz) + JOIN public.tbl_prestudentstatus USING (prestudent_id) + JOIN public.tbl_studiengang USING (studiengang_kz) + WHERE dokument_kurzbz = ".$this->db_add_param($dokument_kurzbz)." + AND person_id =".$this->db_add_param($person_id, FHC_INTEGER)." + AND tbl_prestudentstatus.status_kurzbz = 'Interessent' + + ORDER BY kuerzel"; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $stg_obj = new basis_db(); + $stg_obj->kuerzel = $row->kuerzel; + $stg_obj->bezeichnung = $row->bezeichnung; + $stg_obj->studiengang_kz = $row->studiengang_kz; + + $this->result[] = $stg_obj; + } + return $stg_obj; + } + else + { + $this->errormsg="Fehler bei der Abfrage aufgetreten"; + return false; + } + + } } From b3fc9c4a1ca824f310e49fbb4cfa167870c4aaff Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Wed, 20 Dec 2017 10:35:46 +0100 Subject: [PATCH 094/126] DISTINCT bei Funktion getAllForOnlinebewerbung entfernt --- include/studiengang.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/studiengang.class.php b/include/studiengang.class.php index c4e9de968..3a6861443 100644 --- a/include/studiengang.class.php +++ b/include/studiengang.class.php @@ -251,7 +251,7 @@ class studiengang extends basis_db */ public function getAllForOnlinebewerbung($order = 'tbl_studiengang.typ, tbl_lgartcode.bezeichnung ASC, tbl_studiengang.bezeichnung') { - $qry = "SELECT DISTINCT + $qry = "SELECT tbl_studiengang.studiengang_kz, tbl_studiengang.typ, tbl_studiengangstyp.bezeichnung AS typ_bezeichnung, @@ -269,7 +269,7 @@ class studiengang extends basis_db WHERE tbl_studiengang.onlinebewerbung IS TRUE AND tbl_studiengang.aktiv IS TRUE"; - $qry .= ' ORDER BY '.$order; + $qry .= " ORDER BY ".$order; if(!$result = $this->db_query($qry)) { From c7914a678d4947ffd7ef9fd4a8d76ceb4ce03199 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Wed, 20 Dec 2017 10:36:19 +0100 Subject: [PATCH 095/126] BugFix Usability --- vilesci/stammdaten/studiengang_dokumente.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/vilesci/stammdaten/studiengang_dokumente.php b/vilesci/stammdaten/studiengang_dokumente.php index eaee70f97..4250de8fa 100644 --- a/vilesci/stammdaten/studiengang_dokumente.php +++ b/vilesci/stammdaten/studiengang_dokumente.php @@ -303,9 +303,10 @@ if(isset($_GET['action']) && $_GET['action'] == 'dokumenttypen') Kurzbezeichnung - dokument_kurzbz != ''?'disabled':'').' value="'.$dokument->dokument_kurzbz.'"/> - - + dokument_kurzbz != ''?'disabled':'').' value="'.$dokument->dokument_kurzbz.'"/>'; + if ($dokument->dokument_kurzbz != '') + echo ''; + echo ' From 0763b116492dfd087c41c39815e39f89374761c8 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Wed, 20 Dec 2017 11:51:24 +0100 Subject: [PATCH 096/126] Funktion cutString bereinigt Alle Skripte mit eigener Funktion "cutString" verwenden nun diese Funktion aus functions.inc.php --- .../lehre/benotungstool/copy_uebung.php | 23 +-- cis/private/menu.php | 138 ------------------ cms/menu/menu_addon_freifaecher.inc.php | 14 +- .../menu_addon_lehrveranstaltungen.inc.php | 14 +- ...on_lehrveranstaltungen_studienplan.inc.php | 16 +- cms/menu/menu_addon_meinelehrfaecher.inc.php | 20 +-- cms/menu/menu_addon_meinelv.inc.php | 20 +-- include/functions.inc.php | 7 +- rdf/lehrauftrag.xml.php | 12 +- .../personen/preinteressent_uebersicht.php | 13 +- 10 files changed, 22 insertions(+), 255 deletions(-) delete mode 100644 cis/private/menu.php diff --git a/cis/private/lehre/benotungstool/copy_uebung.php b/cis/private/lehre/benotungstool/copy_uebung.php index a566d764a..855b106ed 100644 --- a/cis/private/lehre/benotungstool/copy_uebung.php +++ b/cis/private/lehre/benotungstool/copy_uebung.php @@ -455,21 +455,6 @@ if(isset($_GET['kopieren'])) return ($var!=''?"'".addslashes($var)."'":'null'); } - // *********************************************************************************************** - // String auf Laenge abschneiden - // *********************************************************************************************** - function CutString($strVal, $limit) - { - if(strlen($strVal) > $limit+3) - { - return substr($strVal, 0, $limit) . "..."; - } - else - { - return $strVal; - } - } - ?> @@ -587,7 +572,7 @@ if(isset($_GET['kopieren'])) { if (empty($lehrveranstaltung_id)) $lehrveranstaltung_id=$row->lehrveranstaltung_id; - $content.=''; + $content.=''; } } else @@ -634,7 +619,7 @@ if(isset($_GET['kopieren'])) { $lektoren.= ($lektoren?',':'').' '.$ma->mitarbeiter_uid; } - $lektoren=CutString($lektoren, 30); + $lektoren=CutString($lektoren, 30, '...'); $content.=''; } } @@ -786,7 +771,7 @@ if(isset($_GET['kopieren'])) { if (empty($lehrveranstaltung_id_target)) $lehrveranstaltung_id_target=$row->lehrveranstaltung_id; - $content.=''; + $content.=''; } } else @@ -835,7 +820,7 @@ if(isset($_GET['kopieren'])) { $lektoren.= ($lektoren?',':'').' '.$ma->mitarbeiter_uid; } - $lektoren=CutString($lektoren, 30); + $lektoren=CutString($lektoren, 30, '...'); $content.=''; } } diff --git a/cis/private/menu.php b/cis/private/menu.php deleted file mode 100644 index ce265c28c..000000000 --- a/cis/private/menu.php +++ /dev/null @@ -1,138 +0,0 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl < rudolf.hangl@technikum-wien.at > - * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > - * - */ -require_once('../../config/cis.config.inc.php'); -require_once('../../include/globals.inc.php'); -require_once('../../include/functions.inc.php'); -require_once('../../include/benutzerberechtigung.class.php'); -require_once('../../include/funktion.class.php'); -require_once('../../include/studiensemester.class.php'); -require_once('../../include/studiengang.class.php'); -require_once('../../include/lehrveranstaltung.class.php'); -require_once('../../include/mitarbeiter.class.php'); -require_once('../../include/student.class.php'); -require_once('../../include/datum.class.php'); - -if (!$db = new basis_db()) - die('Es konnte keine Verbindung zum Server aufgebaut werden.'); - -if (!$user=get_uid()) - die('Sie sind nicht angemeldet. Es wurde keine Benutzer UID gefunden ! Zurück'); - -$cutlength=10; -$rechte=new benutzerberechtigung(); -$rechte->getBerechtigungen($user); - -$fkt=new funktion(); -$fkt->getAll($user); - -$stg_obj = new studiengang(); - -if($stg_obj->getAll('kurzbzlang', false)) -{ - $stg = array(); - foreach($stg_obj->result as $row) - $stg[$row->studiengang_kz] = $row->kurzbzlang; -} -else - die('Fehler beim Auslesen der Studiengaenge'); - - -if(check_lektor($user)) - $is_lector=true; -else - $is_lector=false; - -if(check_student($user)) - $is_student=true; -else - $is_student=false; - - function CutString($strVal, $limit) - { - if(strlen($strVal) > $limit+3) - { - return substr($strVal, 0, $limit) . "..."; - } - else - { - return $strVal; - } - } - -$aktiv=false; -$qry = "SELECT aktiv FROM campus.vw_benutzer WHERE uid='$user'"; -if($result = $db->db_query($qry)) -{ - if($row = $db->db_fetch_object($result)) - { - $aktiv = ($row->aktiv=='t'?true:false); - } -} -?> - - - - - - - - - - - - - - diff --git a/cms/menu/menu_addon_freifaecher.inc.php b/cms/menu/menu_addon_freifaecher.inc.php index 1e34b05a3..8c0e87f86 100644 --- a/cms/menu/menu_addon_freifaecher.inc.php +++ b/cms/menu/menu_addon_freifaecher.inc.php @@ -48,7 +48,7 @@ class menu_addon_freifaecher extends menu_addon $this->items[] = array('title'=>$row->bezeichnung_arr[$sprache], 'target'=>'content', 'link'=>'private/lehre/lesson.php?lvid='.$row->lehrveranstaltung_id.'&studiensemester_kurzbz='.$stsem, - 'name'=>'aktiv?' style="" ':' style=""').'>'.(!$row->aktiv?' ':' ').' '.$this->CutString($row->bezeichnung_arr[$sprache], 21).'' + 'name'=>'aktiv?' style="" ':' style=""').'>'.(!$row->aktiv?' ':' ').' '.$this->CutString($row->bezeichnung_arr[$sprache], 21, '...').'' ); } @@ -58,18 +58,6 @@ class menu_addon_freifaecher extends menu_addon $this->output(); } - - private function CutString($strVal, $limit) - { - if(mb_strlen($strVal) > $limit+3) - { - return mb_substr($strVal, 0, $limit) . "..."; - } - else - { - return $strVal; - } - } } new menu_addon_freifaecher(); diff --git a/cms/menu/menu_addon_lehrveranstaltungen.inc.php b/cms/menu/menu_addon_lehrveranstaltungen.inc.php index 42a514302..4e6c3a097 100644 --- a/cms/menu/menu_addon_lehrveranstaltungen.inc.php +++ b/cms/menu/menu_addon_lehrveranstaltungen.inc.php @@ -235,7 +235,7 @@ class menu_addon_lehrveranstaltungen extends menu_addon } $this->block.= ''; $this->block.= ' '; $this->block.= ''; } @@ -243,18 +243,6 @@ class menu_addon_lehrveranstaltungen extends menu_addon $this->block.=''; $this->output(); } - - private function CutString($strVal, $limit) - { - if(mb_strlen($strVal) > $limit+3) - { - return mb_substr($strVal, 0, $limit) . "..."; - } - else - { - return $strVal; - } - } } new menu_addon_lehrveranstaltungen(); diff --git a/cms/menu/menu_addon_lehrveranstaltungen_studienplan.inc.php b/cms/menu/menu_addon_lehrveranstaltungen_studienplan.inc.php index c5f68776e..f053da50c 100644 --- a/cms/menu/menu_addon_lehrveranstaltungen_studienplan.inc.php +++ b/cms/menu/menu_addon_lehrveranstaltungen_studienplan.inc.php @@ -331,27 +331,15 @@ class menu_addon_lehrveranstaltungen_studienplan extends menu_addon else $bold=''; if(!$row->lehrauftrag && defined('CIS_LEHRVERANSTALTUNG_MODULE_LINK') && !CIS_LEHRVERANSTALTUNG_MODULE_LINK) - $this->block.= "
  • ".$this->CutString($row->bezeichnung_arr[$sprache], 21).' '.$row->lehrform_kurzbz."
  • "; + $this->block.= "
  • ".$this->CutString($row->bezeichnung_arr[$sprache], 21, '...').' '.$row->lehrform_kurzbz."
  • "; else - $this->block.= "
  • bezeichnung_arr[$sprache]."\" href=\"private/lehre/lesson.php?lvid=$row->lehrveranstaltung_id&studiensemester_kurzbz=$studiensemester_kurzbz\" target=\"content\">".$this->CutString($row->bezeichnung_arr[$sprache], 21).' '.$row->lehrform_kurzbz."
  • "; + $this->block.= "
  • bezeichnung_arr[$sprache]."\" href=\"private/lehre/lesson.php?lvid=$row->lehrveranstaltung_id&studiensemester_kurzbz=$studiensemester_kurzbz\" target=\"content\">".$this->CutString($row->bezeichnung_arr[$sprache], 21, '...').' '.$row->lehrform_kurzbz."
  • "; if(isset($row->childs)) $this->printTree($row->childs, $sprache, $studiensemester_kurzbz); } $this->block.="
"; } - - private function CutString($strVal, $limit) - { - if(mb_strlen($strVal) > $limit+3) - { - return mb_substr($strVal, 0, $limit) . "..."; - } - else - { - return $strVal; - } - } } new menu_addon_lehrveranstaltungen_studienplan(); ?> diff --git a/cms/menu/menu_addon_meinelehrfaecher.inc.php b/cms/menu/menu_addon_meinelehrfaecher.inc.php index 897898d64..59ffc26af 100644 --- a/cms/menu/menu_addon_meinelehrfaecher.inc.php +++ b/cms/menu/menu_addon_meinelehrfaecher.inc.php @@ -98,7 +98,7 @@ class menu_addon_meinelvkompatibel extends menu_addon $stsementry[] = array('title'=>$lv_obj->bezeichnung_arr[$sprache], 'target'=>'content', 'link'=>'private/freifaecher/lesson.php?lvid='.$row->lehrveranstaltung_id.'&studiensemester_kurzbz='.$stsem, - 'name'=>'FF '.$this->CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength) + 'name'=>'FF '.$this->CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength, '...') ); } else @@ -106,7 +106,7 @@ class menu_addon_meinelvkompatibel extends menu_addon $stsementry[] = array('title'=>$lv_obj->bezeichnung_arr[$sprache], 'target'=>'content', 'link'=>'private/lehre/lesson.php?lvid='.$row->lehrveranstaltung_id.'&studiensemester_kurzbz='.$stsem, - 'name'=>$this->CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength) + 'name'=>$this->CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength, '...') ); } } @@ -178,7 +178,7 @@ class menu_addon_meinelvkompatibel extends menu_addon $stsementry[] = array('title'=>$lv_obj->bezeichnung_arr[$sprache], 'target'=>'content', 'link'=>'private/freifaecher/lesson.php?lvid='.$row->lehrveranstaltung_id.'&studiensemester_kurzbz='.$stsem, - 'name'=>'FF '.$this->CutString($row->lehreverzeichnis, $cutlength) + 'name'=>'FF '.$this->CutString($row->lehreverzeichnis, $cutlength, '...') ); } else @@ -190,7 +190,7 @@ class menu_addon_meinelvkompatibel extends menu_addon $stsementry[] = array('title'=>$lv_obj->bezeichnung_arr[$sprache], 'target'=>'content', 'link'=>'private/lehre/lesson.php?lvid='.$row->lehrveranstaltung_id.'&studiensemester_kurzbz='.$stsem, - 'name'=>$this->CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength) + 'name'=>$this->CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength, '...') ); } } @@ -216,18 +216,6 @@ class menu_addon_meinelvkompatibel extends menu_addon } $this->output(); } - - private function CutString($strVal, $limit) - { - if(mb_strlen($strVal) > $limit+3) - { - return mb_substr($strVal, 0, $limit) . "..."; - } - else - { - return $strVal; - } - } } new menu_addon_meinelvkompatibel(); diff --git a/cms/menu/menu_addon_meinelv.inc.php b/cms/menu/menu_addon_meinelv.inc.php index 7c650ed04..c3dfd926f 100644 --- a/cms/menu/menu_addon_meinelv.inc.php +++ b/cms/menu/menu_addon_meinelv.inc.php @@ -101,7 +101,7 @@ class menu_addon_meinelv extends menu_addon $this->items[] = array('title'=>$lv_obj->bezeichnung_arr[$sprache], 'target'=>'content', 'link'=>'private/freifaecher/lesson.php?lvid='.$row->lehrveranstaltung_id.'&studiensemester_kurzbz='.$row->studiensemester_kurzbz, - 'name'=>'FF '.$this->CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength) + 'name'=>'FF '.$this->CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength, '...') ); } else @@ -109,7 +109,7 @@ class menu_addon_meinelv extends menu_addon $this->items[] = array('title'=>$lv_obj->bezeichnung_arr[$sprache], 'target'=>'content', 'link'=>'private/lehre/lesson.php?lvid='.$row->lehrveranstaltung_id.'&studiensemester_kurzbz='.$row->studiensemester_kurzbz, - 'name'=>strtoupper($row->typ.$row->kurzbz).$row->semester.' '.$this->CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength) + 'name'=>strtoupper($row->typ.$row->kurzbz).$row->semester.' '.$this->CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength, '...') ); } } @@ -192,7 +192,7 @@ class menu_addon_meinelv extends menu_addon $this->items[] = array('title'=>$lv_obj->bezeichnung_arr[$sprache], 'target'=>'content', 'link'=>'private/freifaecher/lesson.php?lvid='.$row->lehrveranstaltung_id, - 'name'=>'FF '.$this->CutString($row->lehreverzeichnis, $cutlength) + 'name'=>'FF '.$this->CutString($row->lehreverzeichnis, $cutlength, '...') ); } else @@ -203,7 +203,7 @@ class menu_addon_meinelv extends menu_addon $this->items[] = array('title'=>$titel, 'target'=>'content', 'link'=>'private/lehre/lesson.php?lvid='.$row->lehrveranstaltung_id.'&studiensemester_kurzbz='.$row->studiensemester_kurzbz, - 'name'=>$kurzbz.' '.$this->CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength) + 'name'=>$kurzbz.' '.$this->CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength, '...') ); } } @@ -220,18 +220,6 @@ class menu_addon_meinelv extends menu_addon } $this->output(); } - - private function CutString($strVal, $limit) - { - if(mb_strlen($strVal) > $limit+3) - { - return mb_substr($strVal, 0, $limit) . "..."; - } - else - { - return $strVal; - } - } } new menu_addon_meinelv(); diff --git a/include/functions.inc.php b/include/functions.inc.php index ed3175b5a..a531d0bfd 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -1050,17 +1050,18 @@ function generateSpecialCharacterString($inputString, $punctuationMark = false) /** * Cuts the string to the given limit minus the stringlength of the placeholderSign and adds the placeholderSign at the end of the string * If $keepFilextension is true, the string is checked for a PATHINFO_EXTENSION and the extension is added to the returned string. + * The returned stringlength includes the fileextension. * @param string $string The input string to be cutted * @param integer $limit The length of the returned string (including the placeholderSigns) * @param string $placeholderSign Optional. Default null. The string to be added at the end of the cutted string. * @param bool $keepFilextension. Default false. When set to true the - * @return string The cutted string with the placeholderSign at the end + * @return string The cutted string with the placeholderSign at the end and the optional fileextension */ -function cutString($string, $limit, $placeholderSign = '', $keepFilextension = false) +function cutString($string, $limit, $placeholderSign = '', $keepFileextension = false) { $offset = strlen($placeholderSign); $extension = ''; - if ($keepFilextension) + if ($keepFileextension) { $extension = '.'.pathinfo($string, PATHINFO_EXTENSION); $offset = $offset + strlen($extension); diff --git a/rdf/lehrauftrag.xml.php b/rdf/lehrauftrag.xml.php index 5358bcb0b..c268ca8d7 100644 --- a/rdf/lehrauftrag.xml.php +++ b/rdf/lehrauftrag.xml.php @@ -64,16 +64,6 @@ if(isset($_GET['ss'])) else die('Fehlerhafte Parameteruebergabe'); -//String der laenger als limit ist wird -//abgeschnitten und '...' angehaengt -function CutString($strVal, $limit) -{ - if(mb_strlen($strVal) > $limit+3) - return mb_substr($strVal, 0, $limit) . "..."; - else - return $strVal; -} - // GENERATE XML $xml = ''; $stg_arr = array(); @@ -307,7 +297,7 @@ function drawLehrauftrag($uid) } $lehreinheit_id=$row->lehreinheit_id; - $lehrveranstaltung = CutString($row->lv_bezeichnung,30).' '.$row->lehrform_kurzbz.' '.$row->lv_semester.'. Semester'; + $lehrveranstaltung = CutString($row->lv_bezeichnung, 30, '...').' '.$row->lehrform_kurzbz.' '.$row->lv_semester.'. Semester'; $fachbereich = $row->fachbereich_kurzbz; if($row->gruppe_kurzbz!='') diff --git a/vilesci/personen/preinteressent_uebersicht.php b/vilesci/personen/preinteressent_uebersicht.php index 9a968e040..8766e93d5 100644 --- a/vilesci/personen/preinteressent_uebersicht.php +++ b/vilesci/personen/preinteressent_uebersicht.php @@ -364,17 +364,6 @@ if(!empty ($_GET)) $stg_obj = new studiengang(); $stg_obj->getAll('typ, kurzbz', false); -function CutString($strVal, $limit) -{ - if(strlen($strVal) > $limit+3) - { - return substr($strVal, 0, $limit) . "..."; - } - else - { - return $strVal; - } -} echo 'Anzahl: '.(!empty($_GET)?count($preinteressent->result):'0'); echo ''; // Fixiertes Div mit den Filtern echo '






'; @@ -483,7 +472,7 @@ if(!empty ($_GET)) echo "$freigabe"; echo "$uebernahme"; - echo "".CutString($row->anmerkung, 20).""; + echo "".CutString($row->anmerkung, 20, '...').""; echo ''; echo " person_id','_blank')\" value='Gesamtübersicht' title='Zeigt die Details dieser Person an'>"; echo " "; From 92999ae93e60a30c548fbb14939d657c71d2bc2c Mon Sep 17 00:00:00 2001 From: Paolo Date: Wed, 20 Dec 2017 12:22:34 +0100 Subject: [PATCH 097/126] Retrive and display the list of available filters from DB --- .../system/infocenter/InfoCenter.php | 51 +++++++++++++++---- .../system/infocenter/infocenterFilters.php | 4 +- 2 files changed, 44 insertions(+), 11 deletions(-) diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index 17e7dcc03..a16377172 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -8,6 +8,10 @@ class InfoCenter extends VileSci_Controller { parent::__construct(); + // + $this->load->model('system/Filters_model', 'FiltersModel'); + + // $this->load->library('WidgetLib'); } @@ -16,17 +20,20 @@ class InfoCenter extends VileSci_Controller */ public function index() { - $listFiltersSent = array( - 'Sent 1' => 100, - 'Sent 2' => 200, - 'Sent 3' => 300 + $listFiltersSent = array(); + $listFiltersNotSent = array(); + + $personActionsArray = array( + 'app' => 'aufnahme', + 'dataset_name' => 'PersonActions', + 'person_id' => null, + 'default_filter' => false, + 'array_length(description, 1) >' => 0 ); - $listFiltersNotSent = array( - 'Not Sent 1' => 400, - 'Not Sent 2' => 500, - 'Not Sent 3' => 600 - ); + $listFiltersSent = $this->_getFilterList($personActionsArray, '%InfoCenterSentApplication%'); + + $listFiltersNotSent = $this->_getFilterList($personActionsArray, '%InfoCenterNotSentApplication%'); $this->load->view( 'system/infocenter/infocenter.php', @@ -36,4 +43,30 @@ class InfoCenter extends VileSci_Controller ) ); } + + /** + * + */ + private function _getFilterList($personActionsArray, $filter_kurzbz) + { + $listFilters = array(); + + $this->FiltersModel->resetQuery(); + $this->FiltersModel->addSelect('filter_id, description'); + $this->FiltersModel->addOrder('sort', 'ASC'); + + $personActionsArray['filter_kurzbz ILIKE'] = $filter_kurzbz; + $filters = $this->FiltersModel->loadWhere($personActionsArray); + if (hasData($filters)) + { + for ($filtersCounter = 0; $filtersCounter < count($filters->retval); $filtersCounter++) + { + $filter = $filters->retval[$filtersCounter]; + + $listFilters[$filter->filter_id] = $filter->description[0]; + } + } + + return $listFilters; + } } diff --git a/application/views/system/infocenter/infocenterFilters.php b/application/views/system/infocenter/infocenterFilters.php index f15b24fbb..9780be77f 100644 --- a/application/views/system/infocenter/infocenterFilters.php +++ b/application/views/system/infocenter/infocenterFilters.php @@ -1,11 +1,11 @@ $filterId) + foreach ($listFilters as $filterId => $description) { $toPrint = ''; - echo sprintf($toPrint, base_url('index.ci.php/system/infocenter/InfoCenter?filterId'), $filterId, $name).PHP_EOL; + echo sprintf($toPrint, base_url('index.ci.php/system/infocenter/InfoCenter?filterId'), $filterId, $description).PHP_EOL; } } From c0f9b314098e052212e85325bd7f75708cae9158 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 20 Dec 2017 14:54:11 +0100 Subject: [PATCH 098/126] Fixed Bug that lines are not continuious in some excel versions, projecttime now added up also if second time entry is starting at same time as last project entry ends, converting to date is done only once at begin of projectline iteration --- .../tools/zeitaufzeichnung_projektliste.php | 102 +++++++++++------- 1 file changed, 63 insertions(+), 39 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung_projektliste.php b/cis/private/tools/zeitaufzeichnung_projektliste.php index 130dde64a..ef272fedf 100644 --- a/cis/private/tools/zeitaufzeichnung_projektliste.php +++ b/cis/private/tools/zeitaufzeichnung_projektliste.php @@ -66,7 +66,7 @@ $toignore = ['Pause', 'LehreExtern']; $ztaufdata = $ztauf->result; $monthsums = [0 => 0.00]; -//sprt list by startdate ascending (if not already done in zeitaufzeichnung class) +//sort list by startdate ascending (if not already done in zeitaufzeichnung class) usort($ztaufdata, function ($ztaufa, $ztaufb) { $date = new datum(); @@ -75,9 +75,12 @@ usort($ztaufdata, function ($ztaufa, $ztaufb) ); //fill projectlines with data -for ($i = 0; $i < sizeof($ztaufdata); $i++) +for ($i = 0; $i < count($ztaufdata); $i++) { $ztaufrow = $ztaufdata[$i]; + //make sure dates are in correct format + $ztaufrow->start = $date->formatDatum($ztaufrow->start, $format = 'Y-m-d H:i:s'); + $ztaufrow->ende = $date->formatDatum($ztaufrow->ende, $format = 'Y-m-d H:i:s'); $day = intval($date->formatDatum($ztaufrow->ende, 'd')); //first entry for a day $isFirstEntry = !isset($projectlines[$day]); @@ -95,16 +98,16 @@ for ($i = 0; $i < sizeof($ztaufdata); $i++) $tosubtract[] = $subtraction; //save all pause ranges - if($ztaufrow->aktivitaet_kurzbz == $toignore[0]) + if ($ztaufrow->aktivitaet_kurzbz == $toignore[0]) { $prevpause = null; - if(sizeof($allpauseranges)>0) + if (count($allpauseranges) > 0) { - $prevpause = $allpauseranges[sizeof($allpauseranges) - 1]; + $prevpause = $allpauseranges[count($allpauseranges) - 1]; } //first pause or no overlap to previous pause - add pauserange - if( is_null($prevpause ) || $prevpause->ende <= $ztaufrow->start ) + if (is_null($prevpause) || $prevpause->ende <= $ztaufrow->start) { $pauserange = new stdClass(); $pauserange->start = $ztaufrow->start; @@ -112,16 +115,17 @@ for ($i = 0; $i < sizeof($ztaufdata); $i++) $allpauseranges[] = $pauserange; } //pause overlap - change pause ende - elseif($prevpause->ende > $ztaufrow->start ) + elseif ($prevpause->ende > $ztaufrow->start) { - $allpauseranges[sizeof($allpauseranges) - 1]->ende = $ztaufrow->ende; + $allpauseranges[count($allpauseranges) - 1]->ende = $ztaufrow->ende; } } } - if (($dayStart == '' || $date->mktime_fromtimestamp($date->formatDatum($dayStart, $format = 'Y-m-d H:i:s')) > $date->mktime_fromtimestamp($date->formatDatum($ztaufrow->start, $format = 'Y-m-d H:i:s'))) && $ztaufrow->aktivitaet_kurzbz != $toignore[1]) + //save new dayStart (if earlier) or dayEnd (if later) + if (($dayStart == '' || $dayStart > $ztaufrow->start) && $ztaufrow->aktivitaet_kurzbz != $toignore[1]) $dayStart = $ztaufrow->start; - if (($dayEnd == '' || $date->mktime_fromtimestamp($date->formatDatum($dayEnd, $format = 'Y-m-d H:i:s')) < $date->mktime_fromtimestamp($date->formatDatum($ztaufrow->ende, $format = 'Y-m-d H:i:s'))) && $ztaufrow->aktivitaet_kurzbz != $toignore[1]) + if (($dayEnd == '' || $dayEnd < $ztaufrow->ende) && $ztaufrow->aktivitaet_kurzbz != $toignore[1]) $dayEnd = $ztaufrow->ende; if ($isFirstEntry) @@ -141,7 +145,7 @@ for ($i = 0; $i < sizeof($ztaufdata); $i++) $toadd = 0.00; //case 1: there is no overlap, just add project time difference - if ($date->mktime_fromtimestamp($ztaufrow->start) > $date->mktime_fromtimestamp($lastende)) + if ($ztaufrow->start >= $lastende) { $toadd = $date->convertTimeStringToHours($ztaufrow->diff); $laststart = $ztaufrow->start; @@ -152,13 +156,13 @@ for ($i = 0; $i < sizeof($ztaufdata); $i++) $projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->alleZeiten[] = $newprojecttime; } //case 2: overlap - add only part of the time - elseif ($date->mktime_fromtimestamp($ztaufrow->start) < $date->mktime_fromtimestamp($lastende) && $date->mktime_fromtimestamp($ztaufrow->ende) > $date->mktime_fromtimestamp($lastende)) + elseif ($ztaufrow->start < $lastende && $ztaufrow->ende > $lastende) { $toadd = ($date->mktime_fromtimestamp($ztaufrow->ende) - $date->mktime_fromtimestamp($lastende)) / 3600; $lastende = $ztaufrow->ende; $alleZeiten =& $projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->alleZeiten; $index = count($alleZeiten); - $alleZeiten[$index-1]->ende = $ztaufrow->ende; + $alleZeiten[$index - 1]->ende = $ztaufrow->ende; } $projectlines[$day]->projekte[$ztaufrow->projekt_kurzbz]->stunden += $toadd; @@ -201,14 +205,14 @@ for ($i = 0; $i < sizeof($ztaufdata); $i++) if ($isLastEntry) { - $worktime_unix = $date->mktime_fromtimestamp($date->formatDatum($dayEnd, $format = 'Y-m-d H:i:s')) - $date->mktime_fromtimestamp($date->formatDatum($dayStart, $format = 'Y-m-d H:i:s')); + $worktime_unix = $date->mktime_fromtimestamp($dayEnd) - $date->mktime_fromtimestamp($dayStart); $worktimehours = $worktime_unix / 3600; $projectlines[$day]->arbeitszeit = $worktimehours; $pauseSubtracted = 0.00; $lehreExternExists = false; - //subtract Pauses and LehreExtern + //subtract pauses and LehreExtern from total worktime foreach ($tosubtract as $subtraction) { if ($subtraction->typ == $toignore[0]) @@ -223,32 +227,33 @@ for ($i = 0; $i < sizeof($ztaufdata); $i++) } } - //subtract pauses from Project worktimes - foreach($allpauseranges as $pauserange) + //subtract pauses from project worktimes + foreach ($allpauseranges as $pauserange) { - foreach($projectlines[$day]->projekte as $name => $project) + foreach ($projectlines[$day]->projekte as $name => $project) { - foreach($projectlines[$day]->projekte[$name]->alleZeiten as $zeit) + foreach ($projectlines[$day]->projekte[$name]->alleZeiten as $zeit) { - if($pauserange->start >= $zeit->start && $pauserange->ende <= $zeit->ende) + //pause between project start and end + if ($pauserange->start >= $zeit->start && $pauserange->ende <= $zeit->ende) { $projectlines[$day]->projekte[$name]->stunden -= ($date->mktime_fromtimestamp($pauserange->ende) - $date->mktime_fromtimestamp($pauserange->start)) / 3600; break; } - elseif($pauserange->start < $zeit->ende && $pauserange->start > $zeit->start) + //pause and project time overlap at project time end + elseif ($pauserange->start < $zeit->ende && $pauserange->start > $zeit->start) { $projectlines[$day]->projekte[$name]->stunden -= ($date->mktime_fromtimestamp($zeit->ende) - $date->mktime_fromtimestamp($pauserange->start)) / 3600; - //break; } - elseif($pauserange->ende > $zeit->start && $pauserange->ende< $zeit->ende) + //pause and project time overlap at project time start + elseif ($pauserange->ende > $zeit->start && $pauserange->ende < $zeit->ende) { $projectlines[$day]->projekte[$name]->stunden -= ($date->mktime_fromtimestamp($pauserange->ende) - $date->mktime_fromtimestamp($zeit->start)) / 3600; - //break; } } } } - + //worktime with no break greater 6 -> compulsory break of half an hour if ($pauseSubtracted < 0.5 && !$lehreExternExists) { @@ -262,7 +267,7 @@ for ($i = 0; $i < sizeof($ztaufdata); $i++) $projectlines[$day]->arbeitszeit = floor($projectlines[$day]->arbeitszeit * 100) / 100; - foreach($projectlines[$day]->projekte as $name => $project) + foreach ($projectlines[$day]->projekte as $name => $project) { $projecthours =& $projectlines[$day]->projekte[$name]->stunden; $projecthours = floor($projecthours * 100) / 100; @@ -309,6 +314,12 @@ $format_heading_right_bottomline->setAlign('right'); $format_heading_right_bottomline->setRight(2); $format_heading_right_bottomline->setBottom(2); +$format_heading_bottomline =& $workbook->addFormat(); +$format_heading_bottomline->setBottom(2); + +$format_heading_topline =& $workbook->addFormat(); +$format_heading_topline->setTop(2); + $format_bold_centered_toprightline =& $workbook->addFormat(); $format_bold_centered_toprightline->setBorder(1); $format_bold_centered_toprightline->setBold(); @@ -349,7 +360,9 @@ $format_cell_centered->setAlign('center'); $format_cell_centered->setVAlign('vcenter'); $format_cell_centered_leftline =& $workbook->addFormat(); -$format_cell_centered_leftline->setBorder(1); +$format_cell_centered_leftline->setRight(1); +$format_cell_centered_leftline->setLeft(1); +$format_cell_centered_leftline->setBottom(1); $format_cell_centered_leftline->setAlign('center'); $format_cell_centered_leftline->setVAlign('vcenter'); $format_cell_centered_leftline->setLeft(2); @@ -382,7 +395,7 @@ $format_cell_centered_alllines->setAlign('center'); $format_cell_centered_alllines->setVAlign('vcenter'); //define column widths -$nrProjects = sizeof($projectnames); +$nrProjects = count($projectnames); $daywidth = 4; $totalworktimewidth = 10; $worktimewidth = 8; @@ -431,14 +444,23 @@ while ($numberspaces > 0) $spalte = $zeile = 0; //write global header -$lastspalte = ($nrProjects > 0) ? 2 + sizeof($projectnames) * 2 : 14; +$lastspalte = ($nrProjects > 0) ? 2 + count($projectnames) * 2 : 14; $worksheet->setMerge($zeile, $spalte, $zeile + 1, $spalte + 2); $worksheet->write($zeile, $spalte, $monthtext." ".$year, $format_heading_left); -$worksheet->write($zeile + 1, $spalte, "", $format_heading_left); - +$worksheet->write($zeile + 1, $spalte, $monthtext." ".$year, $format_heading_left); +for ($i = 1; $i < 3; $i++) +{ + $worksheet->write($zeile, $spalte+$i, "", $format_heading_topline); + $worksheet->write($zeile + 1, $spalte+$i, "", $format_heading_bottomline); +} $worksheet->setMerge($zeile, $spalte + 3, $zeile, $lastspalte); $worksheet->setMerge($zeile + 1, $spalte + 3, $zeile + 1, $lastspalte); $worksheet->write($zeile, $spalte + 3, "Projektliste gedruckt am:".$spacesstringFirst.$username, $format_heading_right); +for ($i = 4; $i < $lastspalte; $i++) +{ + $worksheet->write($zeile, $i, "", $format_heading_topline); + $worksheet->write($zeile + 1, $i, "", $format_heading_bottomline); +} $worksheet->write($zeile, $lastspalte, '', $format_heading_right); $worksheet->write($zeile + 1, $spalte + 3, date('d.m.Y H:i').$spacesstringSecond.'Personal-Nr.:'.$persnr, $format_heading_right_bottomline); $worksheet->write($zeile + 1, $lastspalte, '', $format_heading_right_bottomline); @@ -452,7 +474,9 @@ $worksheet->hideScreenGridlines(); //write table header $worksheet->setMerge($zeile, $spalte, $zeile + 1, $spalte + 1); $worksheet->write($zeile, $spalte, "Tag", $format_bold_centered_alllines); -$worksheet->write($zeile + 1, $spalte++, "", $format_bold_centered_alllines); +$worksheet->write($zeile + 1, $spalte, "", $format_bold_centered_alllines); +$worksheet->write($zeile, $spalte + 1, "Tag", $format_bold_centered_alllines); +$worksheet->write($zeile + 1, ++$spalte, "", $format_bold_centered_alllines); $worksheet->setMerge($zeile, ++$spalte, $zeile + 1, $spalte); $worksheet->write($zeile, $spalte, "Arbeitszeit", $format_bold_centered_alllines); $worksheet->write($zeile + 1, $spalte, "", $format_bold_centered_alllines); @@ -505,15 +529,16 @@ for ($daysnmbr = 1; $daysnmbr <= $daysinmonth; $daysnmbr++) } else { - //write empty cells - $worksheet->write($zeile, $spalte, '0,00', $format_cell_centered_rightline); - $toskip = sizeof($projectnames) * 2; + //write empty cells until end of table + $worksheet->write($zeile, $spalte, '0,00', $format_cell_centered_leftline); + $toskip = count($projectnames) * 2; for ($i = 0; $i <= $toskip; $i++) { if ($i % 2 == 0) - $worksheet->write($zeile, $spalte++, '', $format_cell_centered_rightline); + $worksheet->write($zeile, $spalte, '', $format_cell_centered_rightline); else - $worksheet->write($zeile, $spalte++, '', $format_cell_centered); + $worksheet->write($zeile, $spalte, '', $format_cell_centered); + $spalte++; } } $zeile++; @@ -531,6 +556,7 @@ if ($nrProjects < 1) $spalte = 0; $worksheet->setMerge($zeile, $spalte, $zeile, $spalte + 1); $worksheet->write($zeile, $spalte, 'Summe:', $format_bold_centered_alllines); +$worksheet->write($zeile, $spalte + 1, '', $format_bold_centered_alllines); $spalte += 2; $worksheet->write($zeile, $spalte++, number_format($monthsums[0], 2, ",", "."), $format_cell_centered_alllines); foreach ($projectnames as $project) @@ -538,7 +564,5 @@ foreach ($projectnames as $project) $worksheet->write($zeile, $spalte++, number_format($monthsums[$project], 2, ",", "."), $format_cell_centered_topbottomleftline); $worksheet->write($zeile, $spalte++, "", $format_cell_centered_topbottomrightline); } - $worksheet->fitToPages(1, 1); $workbook->close(); - From 628908b9e800972e157c16a508ac1d03e5671e15 Mon Sep 17 00:00:00 2001 From: Paolo Date: Thu, 21 Dec 2017 16:26:23 +0100 Subject: [PATCH 099/126] - FilterWidget now loads filter from DB only the first time - Changed the query statement to load data from logs and person data --- .../system/infocenter/InfoCenter.php | 22 ++++++++-------- .../system/infocenter/infocenterData.php | 25 +++++++++---------- application/widgets/FilterWidget.php | 9 +++++-- 3 files changed, 30 insertions(+), 26 deletions(-) diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index a16377172..ac6cd2aa7 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -23,17 +23,9 @@ class InfoCenter extends VileSci_Controller $listFiltersSent = array(); $listFiltersNotSent = array(); - $personActionsArray = array( - 'app' => 'aufnahme', - 'dataset_name' => 'PersonActions', - 'person_id' => null, - 'default_filter' => false, - 'array_length(description, 1) >' => 0 - ); + $listFiltersSent = $this->_getFilterList('%InfoCenterSentApplication%'); - $listFiltersSent = $this->_getFilterList($personActionsArray, '%InfoCenterSentApplication%'); - - $listFiltersNotSent = $this->_getFilterList($personActionsArray, '%InfoCenterNotSentApplication%'); + $listFiltersNotSent = $this->_getFilterList('%InfoCenterNotSentApplication%'); $this->load->view( 'system/infocenter/infocenter.php', @@ -47,10 +39,18 @@ class InfoCenter extends VileSci_Controller /** * */ - private function _getFilterList($personActionsArray, $filter_kurzbz) + private function _getFilterList($filter_kurzbz) { $listFilters = array(); + $personActionsArray = array( + 'app' => 'aufnahme', + 'dataset_name' => 'PersonActions', + 'person_id' => null, + 'default_filter' => false, + 'array_length(description, 1) >' => 0 + ); + $this->FiltersModel->resetQuery(); $this->FiltersModel->addSelect('filter_id, description'); $this->FiltersModel->addOrder('sort', 'ASC'); diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php index 0c7b6bdba..6a6600d4d 100644 --- a/application/views/system/infocenter/infocenterData.php +++ b/application/views/system/infocenter/infocenterData.php @@ -1,20 +1,19 @@ ' SELECT p.person_id AS "PersonId", - p.nachname AS "Nachname", p.vorname AS "Vorname", - k.kontakt AS "Email", - p.aktiv AS "Aktiv", - k.updateamum AS "UpdateDate" - FROM public.tbl_person p INNER JOIN public.tbl_kontakt k USING(person_id) + p.nachname AS "Nachname", + p.gebdatum AS "Gebdatum", + l.zeitpunkt AS "LastAction", + l.insertvon AS "User/Operator" + FROM public.tbl_person p INNER JOIN system.tbl_log l USING(person_id) WHERE p.aktiv = TRUE - AND p.person_id = k.person_id - AND k.kontakttyp = \'email\' - AND p.person_id < 1000 + AND l.app = \'aufnahme\' ', - 'hideHeader' => true, - 'hideSave' => true, + 'hideHeader' => false, + 'hideSave' => false, 'additionalColumns' => array('Details'), 'formatRaw' => function($fieldName, $fieldValue, $datasetRaw) { @@ -41,9 +40,9 @@ } else { - $filterWidgetArray['app'] = 'core'; - $filterWidgetArray['datasetName'] = 'kontakts'; - $filterWidgetArray['filterKurzbz'] = 'This filter filters'; + $filterWidgetArray['app'] = 'aufnahme'; + $filterWidgetArray['datasetName'] = 'PersonActions'; + $filterWidgetArray['filterKurzbz'] = 'InfoCenterNotSentApplicationAll'; } echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray); diff --git a/application/widgets/FilterWidget.php b/application/widgets/FilterWidget.php index 988032c0a..59a4ae334 100644 --- a/application/widgets/FilterWidget.php +++ b/application/widgets/FilterWidget.php @@ -95,8 +95,13 @@ class FilterWidget extends Widget */ public function display($widgetData) { - // - $this->_loadFilter(); + $filterSessionArray = $this->session->userdata(self::SESSION_NAME); + if ((isset($filterSessionArray[self::SELECTED_FIELDS]) && count($filterSessionArray[self::SELECTED_FIELDS]) == 0) + && (isset($filterSessionArray[self::SELECTED_FILTERS]) && count($filterSessionArray[self::SELECTED_FILTERS]) == 0)) + { + // + $this->_loadFilter(); + } // $this->_setSessionFilterData(); From 017c6c24ec3afaf9860d053c2943cd0d9aa107f1 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 22 Dec 2017 15:04:06 +0100 Subject: [PATCH 100/126] added multilanguage support for Projektliste and CSV Export --- cis/private/tools/zeitaufzeichnung.php | 17 ++-- .../tools/zeitaufzeichnung_projektliste.php | 80 +++++++++++-------- locale/de-AT/zeitaufzeichnung.php | 17 +++- locale/en-US/zeitaufzeichnung.php | 17 +++- 4 files changed, 85 insertions(+), 46 deletions(-) diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 8b145092e..636c368ff 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -45,6 +45,9 @@ require_once('../../../include/benutzerberechtigung.class.php'); $sprache = getSprache(); $p=new phrasen($sprache); +$sprache_obj = new sprache(); +$sprache_obj->load($sprache); +$sprache_index=$sprache_obj->index; if (!$db = new basis_db()) die($p->t("global/fehlerBeimOeffnenDerDatenbankverbindung")); @@ -726,7 +729,7 @@ if($projekt->getProjekteMitarbeiter($user, true)) CSV Export"; if($anzprojekte > 0) - echo " | Projektexport"; + echo " | ".$p->t("zeitaufzeichnung/projektexport").""; echo " "; if ($p->t("dms_link/handbuchZeitaufzeichnung")!='') @@ -753,15 +756,15 @@ if($projekt->getProjekteMitarbeiter($user, true)) $jahreanz = 3; echo ''; echo '
'; - echo 'Projektexport'; - echo 'Monat: '; for($i=1;$i<13;$i++) { $selected = ($i == $aktmonat)?'selected = "selected"':''; - echo ''; + echo ''; } echo ''; - echo 'Jahr: '; for(;$jahreanz>0;$jahreanz--) { echo ''; @@ -795,8 +798,8 @@ if($projekt->getProjekteMitarbeiter($user, true)) echo ''; echo '
'; echo 'CSV-Export'; - echo 'Startdatum: '; - echo 'Enddatum: '; + echo ''.$p->t('zeitaufzeichnung/startdatum').' '; + echo ''.$p->t('zeitaufzeichnung/enddatum').' '; echo ''; echo ''; echo '
'; diff --git a/cis/private/tools/zeitaufzeichnung_projektliste.php b/cis/private/tools/zeitaufzeichnung_projektliste.php index ef272fedf..391167186 100644 --- a/cis/private/tools/zeitaufzeichnung_projektliste.php +++ b/cis/private/tools/zeitaufzeichnung_projektliste.php @@ -38,6 +38,12 @@ if (!isset($_GET['projexpmonat'])) if (!isset($_GET['projexpjahr'])) die("Parameter jahr fehlt"); +$sprache = getSprache(); +$p = new phrasen($sprache); +$sprache_obj = new sprache(); +$sprache_obj->load($sprache); +$sprache_index = $sprache_obj->index; + $uid = get_uid(); $benutzer = new benutzer(); if (!$benutzer->load($uid)) @@ -46,7 +52,7 @@ if (!$benutzer->load($uid)) $month = $_GET['projexpmonat']; $year = $_GET['projexpjahr']; -$monthtext = $monatsname[1][$month - 1]; +$monthtext = $monatsname[$sprache_index][$month - 1]; $username = $benutzer->vorname." ".$benutzer->nachname; $mitarbeiter = new mitarbeiter(); $mitarbeiter->load($uid); @@ -288,10 +294,10 @@ $workbook = new Spreadsheet_Excel_Writer(); $workbook->setVersion(8); // sending HTTP headers -$workbook->send("Projektliste_".$month."_".$year.".xls"); +$workbook->send('Projektliste_'.$month.'_'.$year.'.xls'); // Creating a worksheet -$worksheet =& $workbook->addWorksheet("Projektliste"); +$worksheet =& $workbook->addWorksheet($p->t('zeitaufzeichnung/projektliste')); $worksheet->setInputEncoding('utf-8'); // Define formats @@ -397,7 +403,7 @@ $format_cell_centered_alllines->setVAlign('vcenter'); //define column widths $nrProjects = count($projectnames); $daywidth = 4; -$totalworktimewidth = 10; +$totalworktimewidth = 13; $worktimewidth = 8; $worksheet->setColumn(0, 1, $daywidth); $worksheet->setColumn(2, 2, $totalworktimewidth); @@ -425,44 +431,48 @@ foreach ($projectcolumnwidths as $projectname => $width) //calculating spaces for centering global header texts $numberspaces = ($maxwidthprojects - 10 - strlen($username)); -$spacesstringFirst = ""; +$spacesstringFirst = ''; while ($numberspaces > 0) { - $spacesstringFirst .= " "; + $spacesstringFirst .= ' '; $numberspaces--; } $numberspaces = ($maxwidthprojects - 14 - strlen($persnr)); -$spacesstringSecond = ""; +$spacesstringSecond = ''; while ($numberspaces > 0) { - $spacesstringSecond .= " "; + $spacesstringSecond .= ' '; $numberspaces--; } $spalte = $zeile = 0; +//set language options +$decpoint = $sprache_index === '2' ? '.' : ','; +$thousandsep = $sprache_index === '2' ? ',' : '.'; + //write global header $lastspalte = ($nrProjects > 0) ? 2 + count($projectnames) * 2 : 14; $worksheet->setMerge($zeile, $spalte, $zeile + 1, $spalte + 2); -$worksheet->write($zeile, $spalte, $monthtext." ".$year, $format_heading_left); -$worksheet->write($zeile + 1, $spalte, $monthtext." ".$year, $format_heading_left); +$worksheet->write($zeile, $spalte, $monthtext.' '.$year, $format_heading_left); +$worksheet->write($zeile + 1, $spalte, $monthtext.' '.$year, $format_heading_left); for ($i = 1; $i < 3; $i++) { - $worksheet->write($zeile, $spalte+$i, "", $format_heading_topline); - $worksheet->write($zeile + 1, $spalte+$i, "", $format_heading_bottomline); + $worksheet->write($zeile, $spalte + $i, '', $format_heading_topline); + $worksheet->write($zeile + 1, $spalte + $i, '', $format_heading_bottomline); } $worksheet->setMerge($zeile, $spalte + 3, $zeile, $lastspalte); $worksheet->setMerge($zeile + 1, $spalte + 3, $zeile + 1, $lastspalte); -$worksheet->write($zeile, $spalte + 3, "Projektliste gedruckt am:".$spacesstringFirst.$username, $format_heading_right); +$worksheet->write($zeile, $spalte + 3, $p->t('zeitaufzeichnung/projektlistegedruckt').$spacesstringFirst.$username, $format_heading_right); for ($i = 4; $i < $lastspalte; $i++) { - $worksheet->write($zeile, $i, "", $format_heading_topline); - $worksheet->write($zeile + 1, $i, "", $format_heading_bottomline); + $worksheet->write($zeile, $i, '', $format_heading_topline); + $worksheet->write($zeile + 1, $i, '', $format_heading_bottomline); } $worksheet->write($zeile, $lastspalte, '', $format_heading_right); -$worksheet->write($zeile + 1, $spalte + 3, date('d.m.Y H:i').$spacesstringSecond.'Personal-Nr.:'.$persnr, $format_heading_right_bottomline); +$worksheet->write($zeile + 1, $spalte + 3, date('d.m.Y H:i').$spacesstringSecond.$p->t('zeitaufzeichnung/personalnr').$persnr, $format_heading_right_bottomline); $worksheet->write($zeile + 1, $lastspalte, '', $format_heading_right_bottomline); $zeile += 3; @@ -473,22 +483,22 @@ $worksheet->hideScreenGridlines(); //write table header $worksheet->setMerge($zeile, $spalte, $zeile + 1, $spalte + 1); -$worksheet->write($zeile, $spalte, "Tag", $format_bold_centered_alllines); -$worksheet->write($zeile + 1, $spalte, "", $format_bold_centered_alllines); -$worksheet->write($zeile, $spalte + 1, "Tag", $format_bold_centered_alllines); -$worksheet->write($zeile + 1, ++$spalte, "", $format_bold_centered_alllines); +$worksheet->write($zeile, $spalte, $p->t('zeitaufzeichnung/tag'), $format_bold_centered_alllines); +$worksheet->write($zeile + 1, $spalte, '', $format_bold_centered_alllines); +$worksheet->write($zeile, $spalte + 1, $p->t('zeitaufzeichnung/tag'), $format_bold_centered_alllines); +$worksheet->write($zeile + 1, ++$spalte, '', $format_bold_centered_alllines); $worksheet->setMerge($zeile, ++$spalte, $zeile + 1, $spalte); -$worksheet->write($zeile, $spalte, "Arbeitszeit", $format_bold_centered_alllines); -$worksheet->write($zeile + 1, $spalte, "", $format_bold_centered_alllines); +$worksheet->write($zeile, $spalte, $p->t('zeitaufzeichnung/arbeitszeit'), $format_bold_centered_alllines); +$worksheet->write($zeile + 1, $spalte, '', $format_bold_centered_alllines); $spalte++; foreach ($projectnames as $project) { $worksheet->setMerge($zeile, $spalte, $zeile, $spalte + 1); $worksheet->write($zeile, $spalte, $project, $format_bold_centered_toprightline); - $worksheet->write($zeile, $spalte + 1, "", $format_bold_centered_toprightline); - $worksheet->write($zeile + 1, $spalte, "Stunden", $format_bold_centered_bottomline); - $worksheet->write($zeile + 1, $spalte + 1, "Tätigkeit", $format_bold_centered_bottomrightline); + $worksheet->write($zeile, $spalte + 1, '', $format_bold_centered_toprightline); + $worksheet->write($zeile + 1, $spalte, $p->t('zeitaufzeichnung/stunden'), $format_bold_centered_bottomline); + $worksheet->write($zeile + 1, $spalte + 1, $p->t('zeitaufzeichnung/taetigkeit'), $format_bold_centered_bottomrightline); $spalte += 2; } $zeile += 2; @@ -501,14 +511,14 @@ for ($daysnmbr = 1; $daysnmbr <= $daysinmonth; $daysnmbr++) $monthstr = ($month < 10) ? '0'.$month : $month; $daystr = ($daysnmbr < 10) ? '0'.$daysnmbr : $daysnmbr; $datestring = $year.'-'.$monthstr.'-'.$daystr; - $weekday = substr($tagbez[1][$date->formatDatum($datestring, 'N')], 0, 2); + $weekday = substr($tagbez[$sprache_index][$date->formatDatum($datestring, 'N')], 0, 2); $worksheet->write($zeile, $spalte++, $weekday, $format_cell_centered_leftline); $worksheet->write($zeile, $spalte++, $daysnmbr, $format_cell_centered_rightline); if (array_key_exists($daysnmbr, $projectlines)) { //write worktime - $worksheet->write($zeile, $spalte++, number_format($projectlines[$daysnmbr]->arbeitszeit, 2, ",", "."), $format_cell_centered_rightline); + $worksheet->writeString($zeile, $spalte++, number_format($projectlines[$daysnmbr]->arbeitszeit, 2, $decpoint, $thousandsep), $format_cell_centered_rightline); $spaltetemp = $spalte; //write projects foreach ($projectnames as $project) @@ -516,7 +526,7 @@ for ($daysnmbr = 1; $daysnmbr <= $daysinmonth; $daysnmbr++) if (array_key_exists($project, $projectlines[$daysnmbr]->projekte)) { $worksheet->setColumn($spalte, $spalte, $worktimewidth); - $worksheet->write($zeile, $spalte++, number_format($projectlines[$daysnmbr]->projekte[$project]->stunden, 2, ",", "."), $format_cell_centered_leftline); + $worksheet->writeString($zeile, $spalte++, number_format($projectlines[$daysnmbr]->projekte[$project]->stunden, 2, $decpoint, $thousandsep), $format_cell_centered_leftline); $worksheet->setColumn($spalte, $spalte, $projectcolumnwidths[$project]); $worksheet->write($zeile, $spalte++, $projectlines[$daysnmbr]->projekte[$project]->beschreibung, $format_cell_rightline); } @@ -530,7 +540,7 @@ for ($daysnmbr = 1; $daysnmbr <= $daysinmonth; $daysnmbr++) else { //write empty cells until end of table - $worksheet->write($zeile, $spalte, '0,00', $format_cell_centered_leftline); + $worksheet->writeString($zeile, $spalte, number_format(0, 2, $decpoint, $thousandsep), $format_cell_centered_leftline); $toskip = count($projectnames) * 2; for ($i = 0; $i <= $toskip; $i++) { @@ -548,21 +558,21 @@ if ($nrProjects < 1) //no projects - merge all cells and write notice { $worksheet->setMerge(3, 3, 4 + $daysinmonth, $lastspalte); - $worksheet->write(3, 3, "keine Projekte vorhanden", $format_bold_centered_alllines); - $worksheet->write(3, $lastspalte, "", $format_bold_centered_alllines); + $worksheet->write(3, 3, $p->t('zeitaufzeichnung/keineprojekte'), $format_bold_centered_alllines); + $worksheet->write(3, $lastspalte, '', $format_bold_centered_alllines); } //write monthly sums $spalte = 0; $worksheet->setMerge($zeile, $spalte, $zeile, $spalte + 1); -$worksheet->write($zeile, $spalte, 'Summe:', $format_bold_centered_alllines); +$worksheet->write($zeile, $spalte, $p->t('zeitaufzeichnung/summe'), $format_bold_centered_alllines); $worksheet->write($zeile, $spalte + 1, '', $format_bold_centered_alllines); $spalte += 2; -$worksheet->write($zeile, $spalte++, number_format($monthsums[0], 2, ",", "."), $format_cell_centered_alllines); +$worksheet->writeString($zeile, $spalte++, number_format($monthsums[0], 2, $decpoint, $thousandsep), $format_cell_centered_alllines); foreach ($projectnames as $project) { - $worksheet->write($zeile, $spalte++, number_format($monthsums[$project], 2, ",", "."), $format_cell_centered_topbottomleftline); - $worksheet->write($zeile, $spalte++, "", $format_cell_centered_topbottomrightline); + $worksheet->writeString($zeile, $spalte++, number_format($monthsums[$project], 2, $decpoint, $thousandsep), $format_cell_centered_topbottomleftline); + $worksheet->write($zeile, $spalte++, '', $format_cell_centered_topbottomrightline); } $worksheet->fitToPages(1, 1); $workbook->close(); diff --git a/locale/de-AT/zeitaufzeichnung.php b/locale/de-AT/zeitaufzeichnung.php index 30ca703e9..a1f247827 100644 --- a/locale/de-AT/zeitaufzeichnung.php +++ b/locale/de-AT/zeitaufzeichnung.php @@ -41,7 +41,20 @@ $this->phrasen['zeitaufzeichnung/alleEintraege']='Alle Einträge'; $this->phrasen['zeitaufzeichnung/summeEintraege']='Summe Einträge'; $this->phrasen['zeitaufzeichnung/arbeitszeit']='Arbeitszeit'; $this->phrasen['zeitaufzeichnung/pause']='Pausen';'inkl. 30 min. Pflichtpause'; -$this->phrasen['zeitaufzeichnung/inklusivePflichtpause']='inkl. 30 min. Pflichtpause'; -$this->phrasen['zeitaufzeichnung/handbuchZeitaufzeichnung']='Arbeitszeitaufzeichnung Leitfaden'; +$this->phrasen['zeitaufzeichnung/inklusivePflichtpause']='inkl. 30 min. Pflichtpause'; +$this->phrasen['zeitaufzeichnung/handbuchZeitaufzeichnung']='Arbeitszeitaufzeichnung Leitfaden'; $this->phrasen['zeitaufzeichnung/fiktiveNormalarbeitszeit']='Vereinbarung der fiktiven Normalarbeitszeit'; +$this->phrasen['zeitaufzeichnung/projektexport']='Projektexport'; +$this->phrasen['zeitaufzeichnung/projektliste']='Projektliste'; +$this->phrasen['zeitaufzeichnung/projektlistegedruckt']='Projektliste gedruckt am:'; +$this->phrasen['zeitaufzeichnung/personalnr']='Personal-Nr.:'; +$this->phrasen['zeitaufzeichnung/jahr']='Jahr:'; +$this->phrasen['zeitaufzeichnung/monat']='Monat:'; +$this->phrasen['zeitaufzeichnung/tag']='Tag'; +$this->phrasen['zeitaufzeichnung/startdatum']='Startdatum:'; +$this->phrasen['zeitaufzeichnung/enddatum']='Enddatum:'; +$this->phrasen['zeitaufzeichnung/stunden']='Stunden'; +$this->phrasen['zeitaufzeichnung/taetigkeit']='Tätigkeit'; +$this->phrasen['zeitaufzeichnung/keineprojekte']='keine Projekte vorhanden'; +$this->phrasen['zeitaufzeichnung/summe']='Summe:'; ?> diff --git a/locale/en-US/zeitaufzeichnung.php b/locale/en-US/zeitaufzeichnung.php index 576657e8f..e7e92fa11 100644 --- a/locale/en-US/zeitaufzeichnung.php +++ b/locale/en-US/zeitaufzeichnung.php @@ -41,7 +41,20 @@ $this->phrasen['zeitaufzeichnung/alleEintraege']='All entries'; $this->phrasen['zeitaufzeichnung/summeEintraege']='Total'; $this->phrasen['zeitaufzeichnung/arbeitszeit']='Working time'; $this->phrasen['zeitaufzeichnung/pause']='Breaks'; -$this->phrasen['zeitaufzeichnung/inklusicePlichtpause']='incl. 30 min. lunch break'; -$this->phrasen['zeitaufzeichnung/handbuchZeitaufzeichnung']='Timesheet howto'; +$this->phrasen['zeitaufzeichnung/inklusicePlichtpause']='incl. 30 min. lunch break'; +$this->phrasen['zeitaufzeichnung/handbuchZeitaufzeichnung']='Timesheet howto'; $this->phrasen['zeitaufzeichnung/fiktiveNormalarbeitszeit']='Vereinbarung der fiktiven Normalarbeitszeit'; +$this->phrasen['zeitaufzeichnung/projektexport']='Projectexport'; +$this->phrasen['zeitaufzeichnung/projektliste']='Projectlist'; +$this->phrasen['zeitaufzeichnung/projektlistegedruckt']='Projectlist printed on:'; +$this->phrasen['zeitaufzeichnung/personalnr']='staff number '; +$this->phrasen['zeitaufzeichnung/jahr']='Year:'; +$this->phrasen['zeitaufzeichnung/monat']='Month:'; +$this->phrasen['zeitaufzeichnung/tag']='Day'; +$this->phrasen['zeitaufzeichnung/startdatum']='Startdate:'; +$this->phrasen['zeitaufzeichnung/enddatum']='Enddate:'; +$this->phrasen['zeitaufzeichnung/stunden']='Hours'; +$this->phrasen['zeitaufzeichnung/taetigkeit']='Activity'; +$this->phrasen['zeitaufzeichnung/keineprojekte']='no projects exist'; +$this->phrasen['zeitaufzeichnung/summe']='Sum:'; ?> \ No newline at end of file From f820fdf040115b0efd4c02ac9ecc939e8bacc2c4 Mon Sep 17 00:00:00 2001 From: Paolo Date: Wed, 3 Jan 2018 11:30:51 +0100 Subject: [PATCH 101/126] Correct CSS order in new FHC-Header --- application/views/templates/FHC-Header.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/application/views/templates/FHC-Header.php b/application/views/templates/FHC-Header.php index 4b4dcc511..d1986d73a 100644 --- a/application/views/templates/FHC-Header.php +++ b/application/views/templates/FHC-Header.php @@ -87,12 +87,12 @@ function _generateJSsInclude($JSs) // -------------------------------------------------------------------------------------------------------- // CSS - // Eventually required CSS - _generateCSSsInclude($customCSSs); // Eventually required CSS - // Table sorter CSS if ($tablesorter === true) _generateCSSsInclude('skin/tablesort.css'); + // Eventually required CSS + _generateCSSsInclude($customCSSs); // Eventually required CSS + // -------------------------------------------------------------------------------------------------------- // Javascripts From e6d78d6d8dc3935fd59104098949e7ed88156d84 Mon Sep 17 00:00:00 2001 From: Paolo Date: Thu, 4 Jan 2018 18:14:52 +0100 Subject: [PATCH 102/126] - Changed query to retrive data about persons & logs - Added operator "set" and "not set" to FilterWidget for timestamp type - FilterWidget store filterId into session - FilterWidget load a filter from DB only if a different filter is required --- .../system/infocenter/infocenterData.php | 81 ++++++++++- application/widgets/FilterWidget.php | 132 +++++++++++------- 2 files changed, 154 insertions(+), 59 deletions(-) diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php index 6a6600d4d..a4776e14d 100644 --- a/application/views/system/infocenter/infocenterData.php +++ b/application/views/system/infocenter/infocenterData.php @@ -2,25 +2,70 @@ $filterWidgetArray = array( 'query' => ' + SELECT * + FROM ( SELECT p.person_id AS "PersonId", p.vorname AS "Vorname", p.nachname AS "Nachname", p.gebdatum AS "Gebdatum", - l.zeitpunkt AS "LastAction", - l.insertvon AS "User/Operator" - FROM public.tbl_person p INNER JOIN system.tbl_log l USING(person_id) + (SELECT zeitpunkt + FROM system.tbl_log + WHERE app = \'aufnahme\' + AND person_id = p.person_id + ORDER BY zeitpunkt DESC + LIMIT 1) AS "LastAction", + (SELECT insertvon + FROM system.tbl_log + WHERE app = \'aufnahme\' + AND person_id = p.person_id + ORDER BY zeitpunkt DESC + LIMIT 1) AS "User/Operator", + (SELECT pss.studiensemester_kurzbz + FROM public.tbl_prestudentstatus pss + INNER JOIN public.tbl_prestudent ps USING(prestudent_id) + WHERE pss.status_kurzbz = \'Interessent\' + AND pss.bestaetigtam IS NULL + AND pss.bestaetigtvon IS NULL + AND ps.person_id = p.person_id + ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC + LIMIT 1) AS "Studiensemester", + (SELECT pss.bewerbung_abgeschicktamum + FROM public.tbl_prestudentstatus pss + INNER JOIN public.tbl_prestudent ps USING(prestudent_id) + WHERE pss.status_kurzbz = \'Interessent\' + AND pss.bestaetigtam IS NULL + AND pss.bestaetigtvon IS NULL + AND ps.person_id = p.person_id + ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC + LIMIT 1) AS "SendDate" + FROM public.tbl_person p WHERE p.aktiv = TRUE - AND l.app = \'aufnahme\' + AND p.person_id IN ( + SELECT person_id + FROM public.tbl_prestudent + INNER JOIN public.tbl_prestudentstatus USING(prestudent_id) + WHERE status_kurzbz = \'Interessent\' + AND bestaetigtam IS NULL + AND bestaetigtvon IS NULL) + GROUP BY 1, 2, 4, 5, 6, 7 + ORDER BY "LastAction" DESC + ) tbl_infocenter + WHERE "Studiensemester" IN ( + SELECT studiensemester_kurzbz + FROM public.tbl_studiensemester + WHERE (NOW() >= start AND NOW() <= ende) + OR start > NOW() + ) ', 'hideHeader' => false, 'hideSave' => false, 'additionalColumns' => array('Details'), 'formatRaw' => function($fieldName, $fieldValue, $datasetRaw) { - $link = 'Details'; - if ($fieldName == 'Details') { + $link = 'Details'; + $datasetRaw->{$fieldName} = sprintf( $link, base_url('index.ci.php/system/infocenter/infocenterDetails/showDetails/'), @@ -28,6 +73,30 @@ ); } + if ($fieldName == 'SendDate') + { + if ($datasetRaw->{$fieldName} == '1970.01.01 01:00:00') + { + $datasetRaw->{$fieldName} = 'Not sent'; + } + } + + if ($fieldName == 'LastAction') + { + if ($datasetRaw->{$fieldName} == '1970.01.01 01:00:00') + { + $datasetRaw->{$fieldName} = 'Not logged'; + } + } + + if ($fieldName == 'User/Operator') + { + if ($datasetRaw->{$fieldName} == '') + { + $datasetRaw->{$fieldName} = 'NA'; + } + } + return $datasetRaw; } ); diff --git a/application/widgets/FilterWidget.php b/application/widgets/FilterWidget.php index 59a4ae334..438862eb1 100644 --- a/application/widgets/FilterWidget.php +++ b/application/widgets/FilterWidget.php @@ -51,6 +51,8 @@ class FilterWidget extends Widget const OP_IS_FALSE = 'false'; const OP_CONTAINS = 'contains'; const OP_NOT_CONTAINS = 'ncontains'; + const OP_SET = 'set'; + const OP_NOT_SET = 'nset'; const OPT_DAYS = 'days'; const OPT_MONTHS = 'months'; @@ -95,9 +97,17 @@ class FilterWidget extends Widget */ public function display($widgetData) { + // $filterSessionArray = $this->session->userdata(self::SESSION_NAME); - if ((isset($filterSessionArray[self::SELECTED_FIELDS]) && count($filterSessionArray[self::SELECTED_FIELDS]) == 0) - && (isset($filterSessionArray[self::SELECTED_FILTERS]) && count($filterSessionArray[self::SELECTED_FILTERS]) == 0)) + + // + if ($this->filterId == null && isset($filterSessionArray[self::FILTER_ID])) + { + $this->filterId = $filterSessionArray[self::FILTER_ID]; + } + + // + if ($filterSessionArray[self::FILTER_ID] != $this->filterId) { // $this->_loadFilter(); @@ -281,6 +291,8 @@ class FilterWidget extends Widget @@ -492,6 +504,11 @@ class FilterWidget extends Widget $filterSessionArray[self::ADDITIONAL_COLUMNS] = array(); } + if (!isset($filterSessionArray[self::FILTER_ID])) + { + $filterSessionArray[self::FILTER_ID] = -1; + } + $this->session->set_userdata(self::SESSION_NAME, $filterSessionArray); } @@ -962,6 +979,8 @@ class FilterWidget extends Widget $filterSessionArray[self::ACTIVE_FILTERS_OPTION] ); + $filterSessionArray[self::FILTER_ID] = $this->filterId; + $this->session->set_userdata(self::SESSION_NAME, $filterSessionArray); } @@ -1001,61 +1020,68 @@ class FilterWidget extends Widget foreach ($activeFilters as $field => $activeFilterValue) { - if (trim($activeFilterValue) != '') + if ($first) { - if ($first) + $first = false; + } + else + { + $where .= ' AND '; + } + + if (isset($activeFiltersOperation[$field])) + { + $where .= '"'.$field.'"'; + $condition = ''; + + switch ($activeFiltersOperation[$field]) { - $first = false; - } - else - { - $where .= ' AND '; + case self::OP_EQUAL: + if (!is_numeric($activeFilterValue)) $activeFilterValue = 0; + $condition = ' = '.$activeFilterValue; + break; + case self::OP_NOT_EQUAL: + if (!is_numeric($activeFilterValue)) $activeFilterValue = 0; + $condition = ' != '.$activeFilterValue; + break; + case self::OP_GREATER_THAN: + if (!is_numeric($activeFilterValue)) $activeFilterValue = 0; + $condition = ' > '.$activeFilterValue; + break; + case self::OP_LESS_THAN: + if (!is_numeric($activeFilterValue)) $activeFilterValue = 0; + if (isset($activeFiltersOption[$field]) + && ($activeFiltersOption[$field] == self::OPT_DAYS + || $activeFiltersOption[$field] == self::OPT_MONTHS)) + { + $condition = ' < (NOW() - \''.$activeFilterValue.' '.$activeFiltersOption[$field].'\'::interval)'; + } + else + { + $condition = ' < '.$activeFilterValue; + } + break; + case self::OP_CONTAINS: + $condition = ' ILIKE \'%'.$activeFilterValue.'%\''; + break; + case self::OP_NOT_CONTAINS: + $condition = ' NOT ILIKE \'%'.$activeFilterValue.'%\''; + break; + case self::OP_IS_TRUE: + $condition = ' IS TRUE'; + break; + case self::OP_IS_FALSE: + $condition = ' IS FALSE'; + break; + case self::OP_SET: + $condition = ' IS NOT NULL'; + break; + case self::OP_NOT_SET: + $condition = ' IS NULL'; + break; } - if (isset($activeFiltersOperation[$field])) - { - $where .= '"'.$field.'"'; - $condition = ''; - - switch ($activeFiltersOperation[$field]) - { - case self::OP_EQUAL: - $condition = ' = '.$activeFilterValue; - break; - case self::OP_NOT_EQUAL: - $condition = ' != '.$activeFilterValue; - break; - case self::OP_GREATER_THAN: - $condition = ' > '.$activeFilterValue; - break; - case self::OP_LESS_THAN: - if (isset($activeFiltersOption[$field]) - && ($activeFiltersOption[$field] == self::OPT_DAYS - || $activeFiltersOption[$field] == self::OPT_MONTHS)) - { - $condition = ' < (NOW() - \''.$activeFilterValue.' '.$activeFiltersOption[$field].'\'::interval)'; - } - else - { - $condition = ' < '.$activeFilterValue; - } - break; - case self::OP_CONTAINS: - $condition = ' ILIKE \'%'.$activeFilterValue.'%\''; - break; - case self::OP_NOT_CONTAINS: - $condition = ' NOT ILIKE \'%'.$activeFilterValue.'%\''; - break; - case self::OP_IS_TRUE: - $condition = ' IS TRUE'; - break; - case self::OP_IS_FALSE: - $condition = ' IS FALSE'; - break; - } - - $where .= $condition; - } + $where .= $condition; } } From 00dbedc040c402423a5458ecf468897711fdf254 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 5 Jan 2018 12:45:58 +0100 Subject: [PATCH 103/126] added jqueryui, bootstrap, fontawesome, datatables (new tablesorter) --- application/views/templates/FHC-Header.php | 38 ++++- composer.json | 31 +++- composer.lock | 158 +++++++++++++++++++-- 3 files changed, 207 insertions(+), 20 deletions(-) diff --git a/application/views/templates/FHC-Header.php b/application/views/templates/FHC-Header.php index 4b4dcc511..f55048fdc 100644 --- a/application/views/templates/FHC-Header.php +++ b/application/views/templates/FHC-Header.php @@ -9,6 +9,10 @@ $customJSs = isset($customJSs) ? $customJSs : null; // By default set the parameters to false $jquery3 = isset($jquery3) ? $jquery3 : false; +$jqueryui = isset($jqueryui) ? $jqueryui : false; +$bootstrap = isset($bootstrap) ? $bootstrap : false; +$fontawesome= isset($fontawesome) ? $fontawesome : false; +$datatables= isset($datatables) ? $datatables : false; $tablesorter = isset($tablesorter) ? $tablesorter : false; /** @@ -80,24 +84,46 @@ function _generateJSsInclude($JSs) - - - Date: Mon, 8 Jan 2018 09:55:13 +0100 Subject: [PATCH 104/126] improved infocenter details, added bootstrap and admin theme (sb admin 2) , added zgv pruefung Status, Studiensemester and Ausbildungssemester, contacts in one table, nachzureichen and nachgereicht am columns --- .../system/infocenter/InfocenterDetails.php | 332 +++----- application/libraries/PersonLogLib.php | 20 +- application/models/crm/Prestudent_model.php | 34 + application/models/person/Notiz_model.php | 15 +- application/models/person/Person_model.php | 42 + .../system/infocenter/infocenterDetails.php | 746 ++++++++++++------ application/views/templates/FHC-Header.php | 6 +- application/widgets/Nation_widget.php | 4 +- application/widgets/Zgv_widget.php | 4 +- application/widgets/Zgvmaster_widget.php | 4 +- 10 files changed, 714 insertions(+), 493 deletions(-) diff --git a/application/controllers/system/infocenter/InfocenterDetails.php b/application/controllers/system/infocenter/InfocenterDetails.php index f65efea77..390885207 100644 --- a/application/controllers/system/infocenter/InfocenterDetails.php +++ b/application/controllers/system/infocenter/InfocenterDetails.php @@ -2,8 +2,15 @@ if (! defined("BASEPATH")) exit("No direct script access allowed"); +/** + * Class InfocenterDetails + * shows aufnahme-related data for a person and its prestudents, enables document and zgv checks, + * displays and saves Notizen for a person, logs aufnahme-related actions for a person + */ class InfocenterDetails extends VileSci_Controller { + //app name for logging + const APP = 'aufnahme'; /** * constructor @@ -11,20 +18,13 @@ class InfocenterDetails extends VileSci_Controller public function __construct() { parent::__construct(); - // Load models + $this->load->model('person/person_model', 'PersonModel'); - $this->load->model('person/kontakt_model', 'KontaktModel'); - $this->load->model('person/adresse_model', 'AdresseModel'); $this->load->model('person/notiz_model', 'NotizModel'); - $this->load->model('person/notizzuordnung_model', 'NotizzuordnungModel'); $this->load->model('crm/prestudent_model', 'PrestudentModel'); $this->load->model('crm/prestudentstatus_model', 'PrestudentstatusModel'); $this->load->model('crm/akte_model', 'AkteModel'); $this->load->model('crm/statusgrund_model', 'StatusgrundModel'); - $this->load->model('codex/nation_model', 'NationModel'); - $this->load->model('codex/zgv_model', 'ZgvModel'); - $this->load->model('codex/zgvmaster_model', 'ZgvmasterModel'); - $this->load->model('organisation/studiengang_model', 'StudiengangModel'); $this->load->library('DmsLib'); $this->load->library('WidgetLib'); @@ -33,53 +33,27 @@ class InfocenterDetails extends VileSci_Controller $this->load->helper('fhcauth'); $this->load->helper('url'); - $this->app = 'aufnahme'; $this->uid = getAuthUID(); if(!$this->uid) show_error('user authentification failed'); } - public function index() - { - //TODO error page - } - + /** + * loads all necessary Person data: Stammdaten (name, svnr, contact, ...), Dokumente, Logs and Notizen + * @param $person_id + * @return array + */ private function __loadPersonData($person_id) { - $person = $this->PersonModel->load($person_id); + $stammdaten = $this->PersonModel->getPersonStammdaten($person_id); - if ($person->error) + if ($stammdaten->error) { - show_error($person->retval); + show_error($stammdaten->retval); } - $staatsbuergerschaft = $this->NationModel->load($person->retval[0]->staatsbuergerschaft); - if ($staatsbuergerschaft->error) - { - show_error($staatsbuergerschaft->retval); - } - - $geburtsnation = $this->NationModel->load($person->retval[0]->geburtsnation); - if ($geburtsnation->error) - { - show_error($geburtsnation->retval); - } - - $this->KontaktModel->addDistinct(); - $this->KontaktModel->addSelect('kontakttyp, kontakt'); - $kontakte = $this->KontaktModel->loadWhere(array('person_id' => $person_id)); - - if ($kontakte->error) - { - show_error($kontakte->retval); - } - - $adresse = $this->AdresseModel->loadWhere(array('person_id' => $person_id)); - - if ($adresse->error) - { - show_error($adresse->retval); - } + if(!isset($stammdaten->retval)) + return null; $dokumente = $this->AkteModel->loadWhere(array('person_id' => $person_id)); @@ -88,41 +62,30 @@ class InfocenterDetails extends VileSci_Controller show_error($dokumente->retval); } - $logs = $this->personloglib->getLogs($person_id, $this->app); + $logs = $this->personloglib->getLogs($person_id, $this::APP); - foreach($logs as $log) - $log->logdata = json_decode($log->logdata); + $notizen = $this->NotizModel->getNotiz($person_id); - $this->NotizzuordnungModel->addSelect('notiz_id'); - $notizzuordnung = $this->NotizzuordnungModel->loadWhere(array('person_id' => $person_id)); - - if ($notizzuordnung->error) + if ($notizen->error) { - show_error($notizzuordnung->retval); - } - - $notizen = array(); - - foreach ($notizzuordnung->retval as $notiz_id) - { - $notiz = $this->NotizModel->load($notiz_id->notiz_id); - $notizen[] = $notiz->retval[0]; + show_error($notizen->retval); } $data = array ( - 'person' => $person->retval[0], - 'staatsbuergerschaft' => $staatsbuergerschaft->retval[0], - 'geburtsnation' => $geburtsnation->retval[0], - 'kontakte' => $kontakte->retval, - 'adresse' => isset($adresse->retval[0]) ? $adresse->retval[0] : null, + 'stammdaten' => $stammdaten->retval, 'dokumente' => $dokumente->retval, 'logs' => $logs, - 'notizen' => $notizen + 'notizen' => $notizen->retval ); return $data; } + /** + * loads all necessary Prestudent data: Zgv data, Statusgruende + * @param $person_id + * @return array + */ private function __loadPrestudentData($person_id) { $zgvpruefungen = []; @@ -136,117 +99,14 @@ class InfocenterDetails extends VileSci_Controller foreach ($prestudenten->retval as $prestudent) { - $zgvpruefung = new stdClass(); - $zgvpruefung->prestudent_id = $prestudent->prestudent_id; + $prestudent = $this->PrestudentModel->getPrestudentWithZgv($prestudent->prestudent_id); - //Prestudentstatus - $lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent->prestudent_id); - - if ($lastStatus->error) + if ($prestudent->error) { - show_error($lastStatus->retval); + show_error($prestudent->retval); } - $zgvpruefung->prestudentstatus = $lastStatus->retval[0]; - - // Studiengang - $this->StudiengangModel->addSelect('kurzbzlang, bezeichnung, typ');//TODO need bezeichnung? - $studiengang = $this->StudiengangModel->load($prestudent->studiengang_kz); - - if ($studiengang->error) - { - show_error($studiengang->retval); - } - - $zgvpruefung->studiengang = $studiengang->retval[0]->kurzbzlang; - $zgvpruefung->studiengangtyp = $studiengang->retval[0]->typ; - - // Zgv - if (isset($prestudent->zgv_code)) - { - $this->ZgvModel->addSelect('zgv_code, zgv_bez'); - $zgv = $this->ZgvModel->load($prestudent->zgv_code); - - if ($zgv->error) - { - show_error($zgv->retval); - } - - $zgvpruefung->zgv_code = $zgv->retval[0]->zgv_code; - $zgvpruefung->zgv_bez = $zgv->retval[0]->zgv_bez; - } - else - { - $zgvpruefung->zgv_code = null; - $zgvpruefung->zgv_bez = null; - } - $zgvpruefung->zgvort = $prestudent->zgvort; - $zgvpruefung->zgvdatum = $prestudent->zgvdatum; - - // Zgv Nation - if (isset($prestudent->zgvnation)) - { - $this->NationModel->addSelect('nation_code, kurztext'); - $zgvnation = $this->NationModel->load($prestudent->zgvnation); - - if ($zgvnation->error) - { - show_error($zgvnation->retval); - } - - $zgvpruefung->zgvnation_code = $zgvnation->retval[0]->nation_code; - $zgvpruefung->zgvnation_bez = $zgvnation->retval[0]->kurztext; - } - else - { - $zgvnation = null; - $zgvpruefung->zgvnation_code = null; - $zgvpruefung->zgvnation_bez = null; - } - - // Zgv Master - if (isset($prestudent->zgvmas_code)) - { - $this->ZgvmasterModel->addSelect('zgvmas_code, zgvmas_bez'); - $zgvmas = $this->ZgvmasterModel->load($prestudent->zgvmas_code); - - if ($zgvmas->error) - { - show_error($zgvmas->retval); - } - $zgvpruefung->zgvmas_code = $zgvmas->retval[0]->zgvmas_code; - $zgvpruefung->zgvmas_bez = $zgvmas->retval[0]->zgvmas_bez; - } - else - { - $zgvpruefung->zgvmas_code = null; - $zgvpruefung->zgvmas_bez = null; - } - $zgvpruefung->zgvmaort = $prestudent->zgvmaort; - $zgvpruefung->zgvmadatum = $prestudent->zgvmadatum; - - // Zgv Master Nation - if (isset($prestudent->zgvmanation)) - { - $this->NationModel->addSelect('nation_code, kurztext'); - $zgvmanation = $this->NationModel->load($prestudent->zgvmanation); - - if ($zgvmanation->error) - { - show_error($zgvmanation->retval); - } - - $zgvpruefung->zgvmanation_code = $zgvmanation->retval[0]->nation_code; - $zgvpruefung->zgvmanation_bez = $zgvmanation->retval[0]->kurztext; - } - else - { - $zgvmanation = null; - $zgvpruefung->zgvmanation_code = null; - $zgvpruefung->zgvmanation_bez = null; - } - - $zgvpruefungen[] = $zgvpruefung; + $zgvpruefungen[] = $prestudent->retval[0]; } //TODO replace with widget @@ -260,19 +120,33 @@ class InfocenterDetails extends VileSci_Controller return $data; } + /** + * initialization function, gets person and prestudent data and loads the view with the data + * @param $person_id + */ public function showDetails($person_id) { + if(!is_numeric($person_id)) + show_error('person id is not numeric!'); $persondata = $this->__loadPersonData($person_id); + if(!isset($persondata)) + show_error('person does not exist!'); $prestudentdata = $this->__loadPrestudentData($person_id); $this->load->view('system/infocenter/infocenterDetails.php', array_merge($persondata, $prestudentdata)); } + /** + * saves if a document has been formal geprueft. saves current timestamp if checked as geprueft, or null if not. + */ public function saveFormalGeprueft() { $akte_id = $this->input->get('akte_id'); $formalgeprueft = $this->input->get('formal_geprueft'); $person_id = $this->input->get('person_id'); + if(!isset($akte_id) || !isset($formalgeprueft) || !isset($person_id)) + show_error('Parameters not set!'); + $akte = $this->AkteModel->load($akte_id); if ($akte->error) @@ -280,23 +154,28 @@ class InfocenterDetails extends VileSci_Controller show_error($akte->retval); } - $timestamp = (isset($formalgeprueft) && $formalgeprueft === 'true')? date('Y-m-d H:i:s') : null; - $this->AkteModel->update($akte_id, array('formal_geprueft_amum' => $timestamp)); + $timestamp = ($formalgeprueft === 'true') ? date('Y-m-d H:i:s') : null; + $result = $this->AkteModel->update($akte_id, array('formal_geprueft_amum' => $timestamp)); + + if ($result->error) + { + show_error($result->retval); + } //write person log - $this->personloglib->log($person_id, 'Action', array('name' => 'Dokument formal geprüft', 'message' => 'Dokument'.$akte->titel.' formal geprüft, gesetzt auf '.(is_null($timestamp) ? 'NULL' : $timestamp), 'success' => 'true'), $this->app, null, $this->uid); - - redirect('/system/infocenter/InfocenterDetails/showDetails/'.$person_id); + $this->personloglib->log($person_id, 'Action', array('name' => 'Dokument formal geprüft', 'message' => 'Dokument '.$akte->titel.' formal geprüft, gesetzt auf '.(is_null($timestamp) ? 'NULL' : $timestamp), 'success' => 'true'), $this::APP, null, $this->uid); + //redirect to start page + redirect('/system/infocenter/InfocenterDetails/showDetails/'.$person_id.'#DokPruef'); } + /** + * saves a zgv for a prestudent. includes Ort, Datum, Nation for bachelor and master. + * @param $prestudent_id + */ public function saveZgvPruefung($prestudent_id) { - // prestudentdata - $studiensemester = $this->input->post('studiensemester') === 'null' ? null : $this->input->post('studiensemester'); - $ausbildungssemester = $this->input->post('ausbildungssemester'); - // zgvdata - $zgv_code = $this->input->post('zgv') === 'null' ? null : $this->input->post('zgv'); + $zgv_code = $this->input->post('zgv') === 'null' ? null : $this->input->post('zgv');//check for string null, in case dropdown changed to default value $zgvort = $this->input->post('zgvort'); $zgvdatum = $this->input->post('zgvdatum'); $zgvdatum = empty($zgvdatum) ? null : date_format(date_create($zgvdatum), 'Y-m-d'); @@ -309,20 +188,6 @@ class InfocenterDetails extends VileSci_Controller $zgvmadatum = empty($zgvmadatum) ? null : date_format(date_create($zgvmadatum), 'Y-m-d'); $zgvmanation_code = $this->input->post('zgvmanation') === 'null' ? null : $this->input->post('zgvmanation'); - $lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id); - - if ($lastStatus->error) - { - show_error($lastStatus->retval); - } - - $result = $this->PrestudentstatusModel->update(array('prestudent_id' => $prestudent_id, 'studiensemester_kurzbz' => $lastStatus->retval[0]->studiensemester_kurzbz, 'ausbildungssemester' => $lastStatus->retval[0]->ausbildungssemester), array('studiensemester_kurzbz' => $studiensemester, 'ausbildungssemester' => $ausbildungssemester)); - - if ($result->error) - { - show_error($result->retval); - } - $result = $this->PrestudentModel->update($prestudent_id, array('zgv_code' => $zgv_code, 'zgvort' => $zgvort, 'zgvdatum' => $zgvdatum, 'zgvnation' => $zgvnation_code, 'zgvmas_code' => $zgvmas_code, 'zgvmaort' => $zgvmaort, 'zgvmadatum' => $zgvmadatum, 'zgvmanation' => $zgvmanation_code)); @@ -331,15 +196,22 @@ class InfocenterDetails extends VileSci_Controller show_error($result->retval); } + //get extended Prestudent data for logging $logdata = $this->__getPersonAndStudiengangFromPrestudent($prestudent_id); - $this->personloglib->log($logdata['person_id'], 'Action', array('name' => 'Zgv gespeichert', 'message' => 'Zgv für Studiengang '.$logdata['studiengang_kurzbz'].' wurde gespeichert ', 'success' => 'true'), $this->app, null, $this->uid); + $this->personloglib->log($logdata['person_id'], 'Action', array('name' => 'Zgv gespeichert', 'message' => 'Zgv für Studiengang '.$logdata['studiengang_kurzbz'].' wurde gespeichert', 'success' => 'true'), $this::APP, null, $this->uid); - $this->__redirectToStart($prestudent_id); + $this->__redirectToStart($prestudent_id, 'ZgvPruef'); } + /** + * saves Absage for Prestudent including the reason for the Absage (statusgrund). + * inserts Studiensemester and Ausbildungssemester for the new Absage of (chronologically) last status. + * @param $prestudent_id + */ public function saveAbsage($prestudent_id) { + //TODO email messaging $statusgrund = $this->input->post('statusgrund'); $lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id); @@ -358,11 +230,16 @@ class InfocenterDetails extends VileSci_Controller $logdata = $this->__getPersonAndStudiengangFromPrestudent($prestudent_id); - $this->personloglib->log($logdata['person_id'], 'Processstate', array('name' => 'Interessent abgewiesen', 'message' => 'Interessent wurde für Studiengang '.$logdata['studiengang_kurzbz'].' abgewiesen', 'success' => 'true'), $this->app, null, $this->uid); + $this->personloglib->log($logdata['person_id'], 'Processstate', array('name' => 'Interessent abgewiesen', 'message' => 'Interessent wurde für Studiengang '.$logdata['studiengang_kurzbz'].' abgewiesen', 'success' => 'true'), $this::APP, null, $this->uid); - $this->__redirectToStart($prestudent_id); + $this->__redirectToStart($prestudent_id, 'ZgvPruef'); } + /** + * saves Freigabe of a Prestudent to the Studiengang. + * updates bestaetigtam and bestaetigtvon fields of the last status + * @param $prestudent_id + */ public function saveFreigabe($prestudent_id) { $lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id); @@ -382,11 +259,15 @@ class InfocenterDetails extends VileSci_Controller $logdata = $this->__getPersonAndStudiengangFromPrestudent($prestudent_id); - $this->personloglib->log($logdata['person_id'], 'Processstate', array('name' => 'Interessent freigegeben', 'message' => 'Interessent wurde für Studiengang '.$logdata['studiengang_kurzbz'].' freigegeben', 'success' => 'true'), $this->app, null, $this->uid); + $this->personloglib->log($logdata['person_id'], 'Processstate', array('name' => 'Interessent freigegeben', 'message' => 'Interessent wurde für Studiengang '.$logdata['studiengang_kurzbz'].' freigegeben', 'success' => 'true'), $this::APP, null, $this->uid); - $this->__redirectToStart($prestudent_id); + $this->__redirectToStart($prestudent_id, 'ZgvPruef'); } + /** + * saves a new Notiz for a person + * @param $person_id + */ public function saveNotiz($person_id) { $titel = $this->input->post('notiztitel'); @@ -395,11 +276,15 @@ class InfocenterDetails extends VileSci_Controller $this->NotizModel->addNotizForPerson($person_id, $titel, $text, $erledigt, $this->uid); - $this->personloglib->log($person_id, 'Action', array('name' => 'Notiz hinzugefügt', 'message' => 'Notiz mit Titel '.$titel.' wurde hinzugefügt', 'success' => 'true'), $this->app, null, $this->uid); + $this->personloglib->log($person_id, 'Action', array('name' => 'Notiz hinzugefügt', 'message' => 'Notiz mit Titel '.$titel.' wurde hinzugefügt', 'success' => 'true'), $this::APP, null, $this->uid); - redirect('/system/infocenter/InfocenterDetails/showDetails/'.$person_id); + redirect('/system/infocenter/InfocenterDetails/showDetails/'.$person_id.'#NotizAkt'); } + /** + * Outputs content of an Akte, sends appropriate headers (so the document can be downloaded) + * @param $akte_id + */ public function outputAkteContent($akte_id) { $akte = $this->AkteModel->load($akte_id); @@ -416,22 +301,34 @@ class InfocenterDetails extends VileSci_Controller show_error($aktecontent->retval); } - header("Content-type: ".$akte->retval[0]->mimetype); - header('Content-Disposition: attachment; filename="'.$akte->retval[0]->titel.'"'); - echo $aktecontent->retval; + $this->output + ->set_status_header(200) + ->set_content_type($akte->retval[0]->mimetype, 'utf-8') + ->set_header('Content-Disposition: attachment; filename="'.$akte->retval[0]->titel.'"') + ->set_output($aktecontent->retval) + ->_display(); } - private function __redirectToStart($prestudent_id) + /** + * helper function for redirecting to initial page for person from a prestudent-specific page + * @param $prestudent_id + * @param $section optional section of the page to go to + */ + private function __redirectToStart($prestudent_id, $section = '') { $this->PrestudentModel->addSelect('person_id'); $person_id = $this->PrestudentModel->load($prestudent_id)->retval[0]->person_id; - redirect('/system/infocenter/InfocenterDetails/showDetails/'.$person_id); + redirect('/system/infocenter/InfocenterDetails/showDetails/'.$person_id.'#'.$section); } + /** + * helper function retrieves personid and studiengang kurzbz from a prestudent id + * @param $prestudent_id + * @return array + */ private function __getPersonAndStudiengangFromPrestudent($prestudent_id) { - $this->PrestudentModel->addSelect('person_id, studiengang_kz'); - $prestudent = $this->PrestudentModel->load($prestudent_id); + $prestudent = $this->PrestudentModel->getPrestudentWithZgv($prestudent_id); if ($prestudent->error) { @@ -439,16 +336,7 @@ class InfocenterDetails extends VileSci_Controller } $person_id = $prestudent->retval[0]->person_id; - - $this->StudiengangModel->addSelect('kurzbzlang');//TODO need bezeichnung? - $studiengang = $this->StudiengangModel->load($prestudent->retval[0]->studiengang_kz); - - if ($studiengang->error) - { - show_error($studiengang->retval); - } - - $studiengang_kurzbz = $studiengang->retval[0]->kurzbzlang; + $studiengang_kurzbz = $prestudent->retval[0]->studiengang; return array('person_id' => $person_id, 'studiengang_kurzbz' => $studiengang_kurzbz); } diff --git a/application/libraries/PersonLogLib.php b/application/libraries/PersonLogLib.php index 34bde6145..6b63ba472 100644 --- a/application/libraries/PersonLogLib.php +++ b/application/libraries/PersonLogLib.php @@ -46,7 +46,8 @@ class PersonLogLib } /** - * Gets Logs for a Person, filtered by Parameters + * Gets Logs for a Person, filtered by parameters. + * Requirements for retrieving log: name is set * @param int $person_id ID of the Person. * @param string $app Name of the App. * @param string $oe_kurzbz Organisations Unit. @@ -55,8 +56,23 @@ class PersonLogLib public function getLogs($person_id, $app = null, $oe_kurzbz = null) { $result = $this->ci->PersonLogModel->filterLog($person_id, $app, $oe_kurzbz); + if (isSuccess($result)) - return $result->retval; + { + $decoded_logs = array(); + //decode logs + foreach ($result->retval as $log) + { + $log->logdata = json_decode($log->logdata); + //requirement - logname not null + if (isset($log->logdata->name)) + { + $decoded_logs[] = $log; + } + } + + return $decoded_logs; + } else show_error($result->retval); } diff --git a/application/models/crm/Prestudent_model.php b/application/models/crm/Prestudent_model.php index 2919036e9..99e5d4613 100644 --- a/application/models/crm/Prestudent_model.php +++ b/application/models/crm/Prestudent_model.php @@ -192,4 +192,38 @@ class Prestudent_model extends DB_Model return $this->execQuery(sprintf($query, is_array($prestudent_id) ? 'IN' : '='), array($prestudent_id)); } + + + /** + * gets extended zgv data (with bezeichnung) for a prestudent + * includes last status, Studiengang, zgv, zgv master + * @param $prestudent_id + */ + public function getPrestudentWithZgv($prestudent_id) + { + $this->addSelect('tbl_prestudent.*, tbl_studiengang.kurzbzlang as studiengang, tbl_studiengang.typ as studiengangtyp, tbl_zgv.zgv_code, tbl_zgv.zgv_bez, + tbl_prestudent.zgvort, tbl_prestudent.zgvdatum, tbl_prestudent.zgvnation as zgvnation_code, + tbl_zgvmaster.zgvmas_code, tbl_zgvmaster.zgvmas_bez, tbl_prestudent.zgvmaort, tbl_prestudent.zgvmadatum, tbl_prestudent.zgvmanation as zgvmanation_code'); + $this->addJoin('public.tbl_studiengang', 'studiengang_kz', 'LEFT'); + $this->addJoin('bis.tbl_zgv', 'zgv_code', 'LEFT'); + $this->addJoin('bis.tbl_zgvmaster', 'zgvmas_code', 'LEFT'); + + $prestudent = $this->load($prestudent_id); + if($prestudent->error) + return error($prestudent->retval); + + //Prestudentstatus + $this->load->model('crm/prestudentstatus_model', 'PrestudentstatusModel'); + $lastStatus = $this->PrestudentstatusModel->getLastStatus($prestudent_id); + + if ($lastStatus->error) + { + return error($lastStatus->retval); + } + + $prestudent->retval[0]->prestudentstatus = $lastStatus->retval[0]; + + return success($prestudent->retval); + } + } diff --git a/application/models/person/Notiz_model.php b/application/models/person/Notiz_model.php index 37581def1..3ec142ca4 100644 --- a/application/models/person/Notiz_model.php +++ b/application/models/person/Notiz_model.php @@ -131,5 +131,18 @@ class Notiz_model extends DB_Model return $result; } + + /** + * gets all Notizen for a person + * @param $person_id + */ + public function getNotiz($person_id) + { + // Join with the table public.tbl_notizzuordnung using notiz_id + $this->addJoin('public.tbl_notizzuordnung', 'notiz_id'); + + return $this->loadWhere(array('person_id' => $person_id)); + } // ------------------------------------------------------------------------------------------------------ -} \ No newline at end of file + +} diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php index 770be0e14..caf746b94 100644 --- a/application/models/person/Person_model.php +++ b/application/models/person/Person_model.php @@ -152,4 +152,46 @@ class Person_model extends DB_Model return $result; } + + /** + * gets Stammdaten for a person, including contactdata in textform from other tables + * nation, kontakt, adresse + * @param $person_id + * @return array + */ + public function getPersonStammdaten($person_id) + { + $this->addSelect('tbl_person.*, s.kurztext as staatsbuergerschaft, g.kurztext as geburtsnation'); + $this->addJoin('bis.tbl_nation s', 'tbl_person.staatsbuergerschaft = s.nation_code', 'LEFT'); + $this->addJoin('bis.tbl_nation g', 'tbl_person.geburtsnation = g.nation_code', 'LEFT'); + + $person = $this->load($person_id); + + if($person->error) + return error($person->retval); + + //return null if not found + if(count($person->retval) < 1) + return success(null); + + $this->load->model('person/kontakt_model', 'KontaktModel'); + $this->load->model('person/adresse_model', 'AdresseModel'); + + $this->KontaktModel->addDistinct(); + $this->KontaktModel->addSelect('kontakttyp, anmerkung, kontakt, zustellung'); + $this->KontaktModel->addOrder('kontakttyp'); + $kontakte = $this->KontaktModel->loadWhere(array('person_id' => $person_id)); + if($kontakte->error) + return error($kontakte->retval); + + $adressen = $this->AdresseModel->loadWhere(array('person_id' => $person_id)); + if($adressen->error) + return error($adressen->retval); + + $stammdaten = $person->retval[0]; + $stammdaten->kontakte = $kontakte->retval; + $stammdaten->adressen = $adressen->retval; + + return success($stammdaten); + } } diff --git a/application/views/system/infocenter/infocenterDetails.php b/application/views/system/infocenter/infocenterDetails.php index b663094c7..be9fffea3 100644 --- a/application/views/system/infocenter/infocenterDetails.php +++ b/application/views/system/infocenter/infocenterDetails.php @@ -1,269 +1,499 @@ load->view('templates/header', array('title' => 'InfocenterDetails', 'datepicker' => true, 'datepickerclass' => 'dateinput'/*, 'tablesort' => true, 'tableid' => 't1'*/)); +$this->load->view('templates/FHC-Header', array('title' => 'InfocenterDetails', 'jquery3' => true, 'jqueryui' => true, 'bootstrap' => true, 'fontawesome' => true, 'datatables' => true, 'customCSSs' => 'vendor/BlackrockDigital/startbootstrap-sb-admin-2/dist/css/sb-admin-2.min.css'/*, 'datepickerclass' => 'dateinput'*/)); ?> -

Infocenter - Person Details

-
- Stammdaten - - - - - - - +
+
+
+ +
+
+
+
+
+
+

Stammdaten

+
+ +
+
Vorname: vorname ?>
Nachname: nachname ?>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vornamevorname ?>
Nachname + nachname ?>
Geburtsdatum + gebdatum), 'd.m.Y') ?>
Sozialversicherungsnr + svnr ?>
Staatsbürgerschaft + staatsbuergerschaft ?>
Geschlecht + geschlecht ?>
Geburtsnation + geburtsnation ?>
Geburtsortgebort ?>
+ - - Geburtsdatum: gebdatum), 'd.m.Y') ?> - - - Sozialversicherungsnr: svnr ?> - - - Staatsbürgerschaft: kurztext ?> - - - Geschlecht: geschlecht ?> - - - Geburtsnation: kurztext ?> - - - Geburtsort: gebort ?> - - - Kontaktdaten - - - - kontakttyp).': '; - if ($kontakt->kontakttyp == 'email'): - ?> - - kontakt; - if ($kontakt->kontakttyp == 'email'): - ?> - - - - - - - - Adresse: strasse.", ".$adresse->plz." ".$adresse->ort : "" ?> - - - -
-
- Dokumentenprüfung - - - - - - - - - formal_geprueft_amum)) ? "checked" : ""; - ?> - - - - - - - - -
NameTypUploaddatumformal geprüft
titel ?> - dokument_kurzbz ?>erstelltam), 'd.m.Y') ?> - - onclick="onFormalGeprueftChange(this.checked, akte_id ?>, person_id ?>)"/> - formal_geprueft_amum; - ?> -
-
- - -
- ZGV Prüfung - Studiengang studiengang ?> - - - - - - - - - - - - - - studiengangtyp === 'm') :?> - - - - - - - - - - - - - - - - -
- - prestudentstatus->status_kurzbz?> - - - prestudentstatus->bestaetigtam) ? "ja" : "nein" ?> - - - widgetlib->widget( - 'Studiensemester_widget', - array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->prestudentstatus->studiensemester_kurzbz), - array('name' => 'studiensemester', 'id' => 'studiensemester') - ); ?> - - - prestudentstatus->ausbildungssemester ?> -
- - widgetlib->widget( - 'Zgv_widget', - array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgv_code), - array('name' => 'zgv', 'id' => 'zgv') - ); ?> - - - - - - zgvdatum), 'd.m.Y') ?>" - name="zgvdatum"> - - - widgetlib->widget( - 'Nation_widget', - array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvnation_code), - array('name' => 'zgvnation', 'id' => 'zgvnation') - ); ?> -
- - widgetlib->widget( - 'Zgvmaster_widget', - array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmas_code), - array('name' => 'zgvmas', 'id' => 'zgvmas') - ); ?> - - - - - - zgvmadatum), 'd.m.Y') ?>" - name="zgvmadatum"> - - - widgetlib->widget( - 'Nation_widget', - array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmanation_code), - array('name' => 'zgvmanation', 'id' => 'zgvmanation') - ); ?> -
- -
-
- + +
+ + + + + + + + + + + + + + kontakte as $kontakt): ?> - widgetlib->widget( - 'Statusgrund_widget', - array(), - array('name' => 'absage', 'id' => 'absage') - ); */ - //Prestudenten cannot be abgewiesen or freigegeben if already done - if(!isset($zgvpruefung->prestudentstatus->bestaetigtam) && $zgvpruefung->prestudentstatus->status_kurzbz != 'Abgewiesener') : - ?> - - - - - - - - - - -
Kontakte
TypKontaktZustellungAnmerkung
- - - - - - - - - - - - - - -
DatumAktivitätUser
zeitpunkt), 'd.m.Y H:i:s') ?>logdata->name ?>insertvon ?>
+ + kontakttyp); ?> + + kontakttyp === 'email'): ?> + + kontakt; + if ($kontakt->kontakttyp === 'email'): + ?> + + + + zustellung === true ? 'X' : ''; ?> + anmerkung; ?> + + + adressen as $adresse): ?> + + + Adresse + + + strasse.', '.$adresse->plz.' '.$adresse->ort : '' ?> + + + zustelladresse === true ? 'X' : '' ?> + + + heimatadresse === true ? 'Heimatadresse' : '').($adresse->heimatadresse === true && $adresse->rechnungsadresse === true ? ', ' : '').($adresse->rechnungsadresse === true ? 'Rechnungsadresse' : ''); ?> + + + + + +
+ + + + + +
+
+
+
- - - - - - - + +

Dokumentenprüfung

+
+
+
DatumNotizUser
+ + + + + + + + + + formal_geprueft_amum) ? "checked" : ""; + ?> + + + + + + + + + + +
NameTypUploaddatumformal geprüftnachzureichennachgereicht am
+ titel) ? $dokument->bezeichnung : $dokument->titel ?> + dokument_kurzbz ?>erstelltam), 'd.m.Y') ?> + /> + formal_geprueft_amum) ? date_format(date_create($dokument->formal_geprueft_amum), 'd.m.Y') : ''; ?> + + nachgereicht === true ? 'X' : ''; ?> + + nachgereicht_am) ? date_format(date_create($dokument->nachgereicht_am), 'd.m.Y') : ''; ?> +
+
+
+
+ + +
+
+
+
+
+
+ +

ZGV-Prüfung

+
+
+
+ - - - insertamum), 'd.m.Y H:i:s') ?> - titel ?> - verfasser_uid ?> - - - - -
- -
- Titel: -
- Text: - -
+
+
+ Studiengang studiengang ?> +
+
+
+
+
+
+ + prestudentstatus->bestaetigtam) ? "ja" : "nein" ?> +
+
+
+
+ + prestudentstatus->status_kurzbz ?> +
+
+
+
+ + prestudentstatus->studiensemester_kurzbz ?> +
+
+
+
+ + prestudentstatus->ausbildungssemester ?> +
+
+
+
+
+
+ + widgetlib->widget( + 'Zgv_widget', + array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgv_code), + array('name' => 'zgv', 'id' => 'zgv', 'class' => 'form-control') + ); ?> +
+
+
+
+ + +
+
+
+
+ + zgvdatum), 'd.m.Y') ?>" + name="zgvdatum"> +
+
+
+
+ + widgetlib->widget( + 'Nation_widget', + array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvnation_code), + array('name' => 'zgvnation', 'id' => 'zgvnation') + ); ?> +
+
+
+ + studiengangtyp === 'm') : ?> +
+
+
+ widgetlib->widget( + 'Zgvmaster_widget', + array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmas_code), + array('name' => 'zgvmas', 'id' => 'zgvmas') + ); ?> +
+
+
+
+ +
+
+
+
+ zgvmadatum), 'd.m.Y') ?>" + name="zgvmadatum"> +
+
+
+
+ widgetlib->widget( + 'Nation_widget', + array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmanation_code), + array('name' => 'zgvmanation', 'id' => 'zgvmanation') + ); ?> +
+
+
+ + +
+
+ +
+
+
- + prestudentstatus->bestaetigtam) && $zgvpruefung->prestudentstatus->status_kurzbz != 'Abgewiesener') : + ?> +
+
+
+
+
+ + +
+ + + + +
+
+
+ + +
+
+ + +
+
+
+
+
+
+
+ +
+
+
+
+

Notizen & Aktivitäten

+
+
+
+
+
+
+ +
+
+ +
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + +
DatumNotizUser
insertamum), 'd.m.Y H:i:s') ?>titel ?>verfasser_uid ?>
+
+
+ + + + + + + + + + + + + + + +
DatumAktivitätUser
zeitpunkt), 'd.m.Y H:i:s') ?>logdata->name) ? $log->logdata->name : '' ?>insertvon ?>
+
+
+
+
+
+ + +load->view('templates/FHC-Footer'); ?> diff --git a/application/views/templates/FHC-Header.php b/application/views/templates/FHC-Header.php index f55048fdc..c2d88a6bb 100644 --- a/application/views/templates/FHC-Header.php +++ b/application/views/templates/FHC-Header.php @@ -11,8 +11,8 @@ $customJSs = isset($customJSs) ? $customJSs : null; $jquery3 = isset($jquery3) ? $jquery3 : false; $jqueryui = isset($jqueryui) ? $jqueryui : false; $bootstrap = isset($bootstrap) ? $bootstrap : false; -$fontawesome= isset($fontawesome) ? $fontawesome : false; -$datatables= isset($datatables) ? $datatables : false; +$fontawesome = isset($fontawesome) ? $fontawesome : false; +$datatables = isset($datatables) ? $datatables : false; $tablesorter = isset($tablesorter) ? $tablesorter : false; /** @@ -97,7 +97,6 @@ function _generateJSsInclude($JSs) // datatables CSS if ($datatables === true) { - _generateCSSsInclude('vendor/datatables/datatables/media/css/jquery.dataTables.min.css'); _generateCSSsInclude('vendor/datatables/datatables/media/css/dataTables.bootstrap.min.css'); } // Table sorter CSS @@ -122,7 +121,6 @@ function _generateJSsInclude($JSs) _generateJSsInclude('vendor/datatables/datatables/media/js/dataTables.bootstrap.min.js'); _generateJSsInclude('vendor/moment/moment/min/moment.min.js'); _generateJSsInclude('vendor/datatables/plugins/sorting/datetime-moment.js'); - } // Table sorter JS if ($tablesorter === true) _generateJSsInclude('vendor/christianbach/tablesorter/jquery.tablesorter.min.js'); diff --git a/application/widgets/Nation_widget.php b/application/widgets/Nation_widget.php index 2c20b8691..8337a92c1 100644 --- a/application/widgets/Nation_widget.php +++ b/application/widgets/Nation_widget.php @@ -13,8 +13,8 @@ class Nation_widget extends DropdownWidget $this->setElementsArray( $this->NationModel->load(), true, - 'Select a nation...', - 'No nation found' + 'Nation wählen...', + 'keine Nation gefunden' ); $this->loadDropDownView($widgetData); diff --git a/application/widgets/Zgv_widget.php b/application/widgets/Zgv_widget.php index 8858d3206..a2500a1e9 100644 --- a/application/widgets/Zgv_widget.php +++ b/application/widgets/Zgv_widget.php @@ -13,8 +13,8 @@ class Zgv_widget extends DropdownWidget $this->setElementsArray( $this->ZgvModel->load(), true, - 'Select a zgv...', - 'No zgv found' + 'Zgv wählen...', + 'keine Zgv gefunden' ); $this->loadDropDownView($widgetData); diff --git a/application/widgets/Zgvmaster_widget.php b/application/widgets/Zgvmaster_widget.php index 8ac331109..357a4273c 100644 --- a/application/widgets/Zgvmaster_widget.php +++ b/application/widgets/Zgvmaster_widget.php @@ -13,8 +13,8 @@ class Zgvmaster_widget extends DropdownWidget $this->setElementsArray( $this->ZgvmasterModel->load(), true, - 'Select a zgv...', - 'No zgv found' + 'Zgv wählen...', + 'keine Zgv gefunden' ); $this->loadDropDownView($widgetData); From 6919255d013213dccf063a015a7f13b3956c0338 Mon Sep 17 00:00:00 2001 From: oesi Date: Mon, 8 Jan 2018 15:44:05 +0100 Subject: [PATCH 105/126] =?UTF-8?q?Fehler=20behoben=20wodurch=20das=20lade?= =?UTF-8?q?n=20der=20Studienpl=C3=A4ne=20im=20IE=20und=20Seamonkey=20nicht?= =?UTF-8?q?=20korrekt=20funktionierte?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vilesci/lehre/studienordnung.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/vilesci/lehre/studienordnung.js b/vilesci/lehre/studienordnung.js index 0eddc9aa1..f93cd6c21 100644 --- a/vilesci/lehre/studienordnung.js +++ b/vilesci/lehre/studienordnung.js @@ -125,8 +125,8 @@ function loadStudienordnung() $("#studienplan").html("Bitte wählen Sie zuerst eine Studienordnung aus!"); drawStudienordnungen(data.result); //jqUi( "#menueLinks" ).accordion("option","active",1); - } - neueStudienordnung(); + } + neueStudienordnung(); }); } @@ -138,12 +138,12 @@ function drawStudienordnungen(data) { var obj='Neue Studienordnung
    '; - for(i in data) + for(i in data) { if(data[i].studienordnung_id !== null) { obj = obj + '
  • ' - +' '+data[i].bezeichnung+' ' + +' '+data[i].bezeichnung+' ' +'    ' +' ' +' ' @@ -174,7 +174,7 @@ function loadStudienplanSTO(neue_studienordnung_id, studienplan_id,bezeichnung) "typ": "json", "class": "studienplan", "method": "loadStudienplanSTO", - "parameter_0": global_studienordnung_id + "parameter_0": global_studienordnung_id }, error: loadError }).success(function(data) @@ -1455,7 +1455,7 @@ function writeOverallSum(root) */ function semesterSTPLZuordnung() { - drawHeader('Neue Studienplan Zuordnung'); + drawHeader('Neue Studienplan Zuordnung'); $("#data").load('studienordnung.inc.php?method=semesterSTPLZuordnung&studienplan_id='+global_studienplan_id); } From c457b129c4b06cf12c6d771b0e528485589e3457 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Mon, 8 Jan 2018 19:15:19 +0100 Subject: [PATCH 106/126] Function cutString mit Multibyte Unterstuetzung --- include/functions.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/functions.inc.php b/include/functions.inc.php index a531d0bfd..86e4da84f 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -1064,7 +1064,7 @@ function cutString($string, $limit, $placeholderSign = '', $keepFileextension = if ($keepFileextension) { $extension = '.'.pathinfo($string, PATHINFO_EXTENSION); - $offset = $offset + strlen($extension); + $offset = $offset + mb_strlen($extension); } if(($limit - $offset) < 0) { @@ -1073,7 +1073,7 @@ function cutString($string, $limit, $placeholderSign = '', $keepFileextension = if(strlen($string) > ($limit - $offset)) { - return substr($string, 0, ($limit - $offset)).$placeholderSign.$extension; + return mb_substr($string, 0, ($limit - $offset)).$placeholderSign.$extension; } else { From 299d5f528d8973484b66a0baec847dc4c82815a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 9 Jan 2018 17:50:00 +0100 Subject: [PATCH 107/126] =?UTF-8?q?Problem=20behoben=20beim=20Verschieben?= =?UTF-8?q?=20von=20Stundenbl=C3=B6cken=20mit=20Kollision.=20Wenn=20bei=20?= =?UTF-8?q?einer=20Stundenverschiebung=20eine=20der=20geblockten=20Stunden?= =?UTF-8?q?=20kollidiert=20wird=20nun=20keine=20Verschiebung=20durchgef?= =?UTF-8?q?=C3=BChrt.=20Bisher=20wurden=20die=20Stunden=20die=20zu=20keine?= =?UTF-8?q?r=20kollision=20f=C3=BChrten=20dennoch=20durchgef=C3=BChrt.=20D?= =?UTF-8?q?ie=20Kollidierende=20Stunde=20blieb=20am=20Ursprung.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/lvplanung/timetable-week.xul.php | 54 ++++++++++++------------ 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/content/lvplanung/timetable-week.xul.php b/content/lvplanung/timetable-week.xul.php index 0fe246577..439960110 100644 --- a/content/lvplanung/timetable-week.xul.php +++ b/content/lvplanung/timetable-week.xul.php @@ -29,8 +29,8 @@ require_once('../../include/benutzerberechtigung.class.php'); require_once('../../include/lehreinheit.class.php'); require_once('../../include/zeitwunsch.class.php'); require_once('../../include/wochenplan.class.php'); -require_once('../../include/reservierung.class.php'); -require_once('../../include/log.class.php'); +require_once('../../include/reservierung.class.php'); +require_once('../../include/log.class.php'); echo ''; echo ''; @@ -93,7 +93,7 @@ if (isset($_GET['new_ort'])) $new_ort=$_GET['new_ort']; if (isset($_GET['kollisionsanzahl'])) $kollisionsanzahl=$_GET['kollisionsanzahl']; -else +else $kollisionsanzahl=0; if (isset($_GET['ort'])) $ort=$_GET['ort']; @@ -224,7 +224,7 @@ if ($aktion=='stpl_move' || $aktion=='stpl_single_search' || $aktion=='stpl_set' } $name_stpl_idx='x'.++$j.'stundenplan_id0'; } - + //ReservierungsIDs $i=0; $name_res_id='reservierung_id'.$i; @@ -233,7 +233,7 @@ if ($aktion=='stpl_move' || $aktion=='stpl_single_search' || $aktion=='stpl_set' $res_id[]=$_GET[$name_res_id]; $name_res_id='reservierung_id'.++$i; } - + // Mehrfachauswahl uebernehmen $j=0; $name_res_idx='x'.$j.'reservierung_id0'; @@ -259,7 +259,7 @@ if ($aktion=='stpl_move' || $aktion=='stpl_set') $undo=''; $sql=''; $moved=array(); - + foreach ($stpl_id as $stundenplan_id) { $moved[]=$stundenplan_id; @@ -332,9 +332,9 @@ if ($aktion=='stpl_move' || $aktion=='stpl_set') } } } - + //UNDO Befehl schreiben - if($undo!='' && $error_msg=='' && $sql!='') + if($undo!='' && $error_msg=='' && $sql!='' && $kollision_msg=='') { $log = new log(); $log->executetime = date('Y-m-d H:i:s'); @@ -344,14 +344,14 @@ if ($aktion=='stpl_move' || $aktion=='stpl_set') $log->mitarbeiter_uid = $uid; if(!$log->save(true)) $error_msg.='Fehler: '.$log->errormsg; - + } } // ****************** STPL Delete ******************************* elseif ($aktion=='stpl_delete_single' || $aktion=='stpl_delete_block') { $lehrstunde=new lehrstunde(); - + if($rechte->isBerechtigt('lehre/lvplan',null,'uid')) { //Einzelne Stunden entfernen @@ -363,7 +363,7 @@ elseif ($aktion=='stpl_delete_single' || $aktion=='stpl_delete_block') $error_msg.=$lehrstunde->errormsg; } } - + //Loeschen von mehreren Stunden if(isset($stpl_idx)) { @@ -373,7 +373,7 @@ elseif ($aktion=='stpl_delete_single' || $aktion=='stpl_delete_block') $error_msg.=$lehrstunde->errormsg; } } - + if(isset($res_id)) { foreach ($res_id as $reservierung_id) @@ -397,7 +397,7 @@ elseif ($aktion=='stpl_delete_single' || $aktion=='stpl_delete_block') } } } - + //Loeschen von mehreren Reservierungen if(isset($res_idx)) { @@ -459,7 +459,7 @@ elseif ($aktion=='lva_single_set') for ($j=0;$j<$lva[$i]->stundenblockung;$j++) { - + if (!$lva[$i]->save_stpl($new_datum,$new_stunde+$j,$new_ort,$db_stpl_table,$uid)) $error_msg.='Error: '.$lva[$i]->errormsg; } @@ -481,18 +481,18 @@ elseif ($aktion=='lva_multi_set') $ferien->getAll($stg_kz); else $ferien->getAll(0); - + // Ende holen if (!$result_semester=$db->db_query("SELECT * FROM public.tbl_studiensemester WHERE studiensemester_kurzbz=".$db->db_add_param($semester_aktuell).";")) die ($db->db_last_error()); if ($db->db_num_rows()>0) { - $row = $db->db_fetch_object(); + $row = $db->db_fetch_object(); $ende = $row->ende; } else $error_msg.="Fatal Error: Ende Datum ist nicht gesetzt ($semester_aktuell)!"; - + $ende=mktime(0,0,1,substr($ende,5,2),substr($ende,8,2),substr($ende,0,4)); $anz_lvas=count($lva_id); // Arrays intitialisieren @@ -510,7 +510,7 @@ elseif ($aktion=='lva_multi_set') $lvas.=' OR lehreinheit_id='.$id; $lvas=substr($lvas,3); $sql_query.=$lvas; - + if(!$result_lva = $db->db_query($sql_query)) $error_msg.=$db->db_last_error(); $num_rows_lva=$db->db_num_rows($result_lva); @@ -533,7 +533,7 @@ elseif ($aktion=='lva_multi_set') $offenestunden=$os; else $error_msg.='Offene Stunden sind nicht eindeutig!'; - + //Blockung $blk=$block[0]; $block=array_unique($block); @@ -630,7 +630,7 @@ if ($error_msg=='' && ($kollision_msg=='' || $kollisionsanzahl>0)) } else $db->db_query('ROLLBACK;'); - + $error_msg.=$kollision_msg; // Stundenplan erstellen @@ -686,17 +686,17 @@ while ($begin<=$ende) else $error_msg.=$wunsch->errormsg; } - + // Stundenplan einer Woche laden if (! $stdplan->load_week($datum,$db_stpl_table, $alle_unr_mitladen)) $error_msg.=$stdplan->errormsg; - + //Raumvorschlag setzen - + if ($aktion=='lva_single_search' || $aktion=='lva_multi_search') if (! $stdplan->load_lva_search($datum,$lva_id,$db_stpl_table, $aktion)) $error_msg.=$stdplan->errormsg; - + if ($aktion=='stpl_single_search') { if(isset($stpl_id)) @@ -704,13 +704,13 @@ while ($begin<=$ende) if (! $stdplan->load_stpl_search($datum,$stpl_id,$db_stpl_table)) $error_msg.=$stdplan->errormsg; } - else + else $error_msg.='Derzeit gibt es keinen Raumvorschlag fuer Reservierungen'; } // Stundenplan der Woche drucken $stdplan->draw_week_xul($semesterplan,$uid,$zeitwunsch, $ignore_kollision, $kollision_student, $max_kollision); - + } ?> @@ -724,7 +724,7 @@ while ($begin<=$ende) if ($error_msg!='') echo "alert('".str_replace("'",'"',str_replace(chr(10),'\n',htmlspecialchars($error_msg)))."');"; ?> - + top.document.getElementById("statusbarpanel-text").setAttribute("label",""); From 0e6e6ab8eae7e8ee2225fbf3ce9ecd53413d02ed Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 10 Jan 2018 09:53:34 +0100 Subject: [PATCH 108/126] added bootstrap datepicker, dokumente nachgereicht in separate table, zgv panels collapsible and Interessenten come first, made columns more responsive --- .../system/infocenter/InfocenterDetails.php | 33 +- application/models/crm/Akte_model.php | 34 +- .../system/infocenter/infocenterDetails.php | 440 ++++++++++-------- application/views/templates/FHC-Header.php | 8 + composer.json | 3 +- composer.lock | 59 ++- 6 files changed, 369 insertions(+), 208 deletions(-) diff --git a/application/controllers/system/infocenter/InfocenterDetails.php b/application/controllers/system/infocenter/InfocenterDetails.php index 390885207..b10c2ec24 100644 --- a/application/controllers/system/infocenter/InfocenterDetails.php +++ b/application/controllers/system/infocenter/InfocenterDetails.php @@ -23,8 +23,8 @@ class InfocenterDetails extends VileSci_Controller $this->load->model('person/notiz_model', 'NotizModel'); $this->load->model('crm/prestudent_model', 'PrestudentModel'); $this->load->model('crm/prestudentstatus_model', 'PrestudentstatusModel'); - $this->load->model('crm/akte_model', 'AkteModel'); $this->load->model('crm/statusgrund_model', 'StatusgrundModel'); + $this->load->model('crm/akte_model', 'AkteModel'); $this->load->library('DmsLib'); $this->load->library('WidgetLib'); @@ -55,13 +55,31 @@ class InfocenterDetails extends VileSci_Controller if(!isset($stammdaten->retval)) return null; - $dokumente = $this->AkteModel->loadWhere(array('person_id' => $person_id)); +/* $dokumente = $this->AkteModel->loadWhere(array('person_id' => $person_id)); if ($dokumente->error) { show_error($dokumente->retval); } + var_dump($dokumente->retval);*/ + + $dokumente = $this->AkteModel->getAktenWithDokInfo($person_id, null, false); + + if ($dokumente->error) + { + show_error($dokumente->retval); + } + + $dokumente_nachgereicht = $this->AkteModel->getAktenWithDokInfo($person_id, null, true); + + if ($dokumente_nachgereicht->error) + { + show_error($dokumente->retval); + } + + //var_dump($dokumente->retval);die(); + $logs = $this->personloglib->getLogs($person_id, $this::APP); $notizen = $this->NotizModel->getNotiz($person_id); @@ -74,6 +92,7 @@ class InfocenterDetails extends VileSci_Controller $data = array ( 'stammdaten' => $stammdaten->retval, 'dokumente' => $dokumente->retval, + 'dokumente_nachgereicht' => $dokumente_nachgereicht->retval, 'logs' => $logs, 'notizen' => $notizen->retval ); @@ -109,6 +128,16 @@ class InfocenterDetails extends VileSci_Controller $zgvpruefungen[] = $prestudent->retval[0]; } + //Interessenten come first + usort($zgvpruefungen, function ($a, $b){ + if($a->prestudentstatus->status_kurzbz === 'Interessent') + return -1; + else if($b->prestudentstatus->status_kurzbz === 'Interessent') + return 1; + else + return 0; + }); + //TODO replace with widget $statusgruende = $this->StatusgrundModel->load()->retval; diff --git a/application/models/crm/Akte_model.php b/application/models/crm/Akte_model.php index 4301af240..39f3cb29e 100644 --- a/application/models/crm/Akte_model.php +++ b/application/models/crm/Akte_model.php @@ -70,7 +70,7 @@ class Akte_model extends DB_Model return $this->execQuery($query, $parametersArray); } - + /** * getAktenAccepted */ @@ -116,7 +116,7 @@ class Akte_model extends DB_Model return $this->execQuery($query, $parametersArray); } - + /** * getAktenAcceptedDms */ @@ -173,4 +173,34 @@ class Akte_model extends DB_Model return $this->execQuery($query, $parametersArray); } + + /** + * gets Akten together with Documenttype info, mainly bezeichnung fields + * @param $person_id + * @param null $dokument_kurzbz + * @param bool $nachgereicht if true, retrieves only nachgereichte Dokumente. if false, only not nachgereichte. default: null, all Dokumente + * @return array + */ + public function getAktenWithDokInfo($person_id, $dokument_kurzbz = null, $nachgereicht = null) + { + if (isError($ent = $this->isEntitled($this->dbTable, PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent; + + $this->addSelect('public.tbl_akte.*, bezeichnung_mehrsprachig, dokumentbeschreibung_mehrsprachig, public.tbl_dokument.bezeichnung as dokument_bezeichnung', 'ausstellungsdetails'); + $this->addJoin('public.tbl_dokument', 'dokument_kurzbz'); + + $where = array(); + $where['person_id'] = $person_id; + if(isset($dokument_kurzbz)) + $where['dokument_kurzbz'] = $dokument_kurzbz; + if(is_bool($nachgereicht)) + $where['nachgereicht'] = $nachgereicht; + + $dokumente = $this->loadWhere($where); + + if($dokumente->error) + return error($dokumente->retval); + + return success($dokumente->retval); + } + } diff --git a/application/views/system/infocenter/infocenterDetails.php b/application/views/system/infocenter/infocenterDetails.php index be9fffea3..d52cba6ce 100644 --- a/application/views/system/infocenter/infocenterDetails.php +++ b/application/views/system/infocenter/infocenterDetails.php @@ -1,113 +1,110 @@ load->view('templates/FHC-Header', array('title' => 'InfocenterDetails', 'jquery3' => true, 'jqueryui' => true, 'bootstrap' => true, 'fontawesome' => true, 'datatables' => true, 'customCSSs' => 'vendor/BlackrockDigital/startbootstrap-sb-admin-2/dist/css/sb-admin-2.min.css'/*, 'datepickerclass' => 'dateinput'*/)); +$this->load->view('templates/FHC-Header', array('title' => 'InfocenterDetails', 'jquery3' => true, 'bootstrap' => true, 'fontawesome' => true, 'bootstrapdatepicker' => true, 'datatables' => true, 'customCSSs' => 'vendor/BlackrockDigital/startbootstrap-sb-admin-2/dist/css/sb-admin-2.min.css')); ?>
    -
    +
    -
    +

    Stammdaten

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Vornamevorname ?>
    Nachname - nachname ?>
    Geburtsdatum - gebdatum), 'd.m.Y') ?>
    Sozialversicherungsnr - svnr ?>
    Staatsbürgerschaft - staatsbuergerschaft ?>
    Geschlecht - geschlecht ?>
    Geburtsnation - geburtsnation ?>
    Geburtsortgebort ?>
    -
    - - -
    - - - - - - - - - - - - - - kontakte as $kontakt): ?> - +
    +
    +
    Kontakte
    TypKontaktZustellungAnmerkung
    - - - - + + - - adressen as $adresse): ?> + + nachname ?> + + + - + gebdatum), 'd.m.Y') ?> + + + - - - -
    kontakttyp); ?> - kontakttyp === 'email'): ?> - - kontakt; - if ($kontakt->kontakttyp === 'email'): - ?> - - - zustellung === true ? 'X' : ''; ?>anmerkung; ?>Vornamevorname ?>
    Nachname - Adresse -
    Geburtsdatum - strasse.', '.$adresse->plz.' '.$adresse->ort : '' ?> - - zustelladresse === true ? 'X' : '' ?> -
    Sozialversicherungsnr - heimatadresse === true ? 'Heimatadresse' : '').($adresse->heimatadresse === true && $adresse->rechnungsadresse === true ? ', ' : '').($adresse->rechnungsadresse === true ? 'Rechnungsadresse' : ''); ?> -
    + svnr ?> + + Staatsbürgerschaft + + staatsbuergerschaft ?> + + Geschlecht + + geschlecht ?> + + Geburtsnation + + geburtsnation ?> + + Geburtsort + gebort ?> + +
    +
    + + + + + + + + + + + + + + kontakte as $kontakt): ?> + + + + + + + + + adressen as $adresse): ?> + + + + + + + + +
    Kontakte
    TypKontaktZustellungAnmerkung
    kontakttyp); ?> + kontakttyp === 'email'): ?> + + kontakt; + if ($kontakt->kontakttyp === 'email'): + ?> + + + zustellung === true ? '' : ''; ?>anmerkung; ?>
    + Adresse + + strasse.', '.$adresse->plz.' '.$adresse->ort : '' ?> + + zustelladresse === true ? '' : '' ?> + + heimatadresse === true ? 'Heimatadresse' : '').($adresse->heimatadresse === true && $adresse->rechnungsadresse === true ? ', ' : '').($adresse->rechnungsadresse === true ? 'Rechnungsadresse' : ''); ?> +
    +
    @@ -116,49 +113,76 @@ $this->load->view('templates/FHC-Header', array('title' => 'InfocenterDetails',
    -
    +
    - - +

    Dokumentenprüfung

    -
    - - - - - - - - - - - formal_geprueft_amum) ? "checked" : ""; +
    NameTypUploaddatumformal geprüftnachzureichennachgereicht am
    + + + + + + + + + formal_geprueft_amum) ? "checked" : ""; + ?> + + + + + + + + + +
    NameTypUploaddatumFormal geprüft
    + titel) ? $dokument->bezeichnung : $dokument->titel ?> + dokument_bezeichnung ?>erstelltam), 'd.m.Y') ?> + /> + formal_geprueft_amum) ? date_format(date_create($dokument->formal_geprueft_amum), 'd.m.Y') : ''; ?> +
    + 0):?> +
    +

    Nachzureichende Dokumente:

    + + + + + + + + + + + + + + + + + +
    TypEintragsdatumNachzureichen amAnmerkung
    dokument_bezeichnung ?>erstelltam), 'd.m.Y') ?> + nachgereicht_am) ? date_format(date_create($dokument->nachgereicht_am), 'd.m.Y') : ''; ?> + + anmerkung; ?> +
    +
    @@ -176,34 +200,36 @@ $this->load->view('templates/FHC-Header', array('title' => 'InfocenterDetails',
    -
    - Studiengang studiengang ?> +

    + Studiengang studiengang ?> +

    +
    -
    +
    prestudentstatus->bestaetigtam) ? "ja" : "nein" ?>
    -
    +
    prestudentstatus->status_kurzbz ?>
    -
    +
    prestudentstatus->studiensemester_kurzbz ?>
    -
    +
    prestudentstatus->ausbildungssemester ?> @@ -211,7 +237,7 @@ $this->load->view('templates/FHC-Header', array('title' => 'InfocenterDetails',
    -
    +
    widgetlib->widget( @@ -221,7 +247,7 @@ $this->load->view('templates/FHC-Header', array('title' => 'InfocenterDetails', ); ?>
    -
    +
    load->view('templates/FHC-Header', array('title' => 'InfocenterDetails', name="zgvort">
    -
    +
    load->view('templates/FHC-Header', array('title' => 'InfocenterDetails', name="zgvdatum">
    -
    +
    widgetlib->widget( @@ -251,7 +277,7 @@ $this->load->view('templates/FHC-Header', array('title' => 'InfocenterDetails', studiengangtyp === 'm') : ?>
    -
    +
    widgetlib->widget( 'Zgvmaster_widget', @@ -260,21 +286,21 @@ $this->load->view('templates/FHC-Header', array('title' => 'InfocenterDetails', ); ?>
    -
    +
    -
    +
    zgvmadatum), 'd.m.Y') ?>" name="zgvmadatum">
    -
    +
    widgetlib->widget( 'Nation_widget', @@ -287,7 +313,7 @@ $this->load->view('templates/FHC-Header', array('title' => 'InfocenterDetails',
    -
    +
    @@ -301,7 +327,7 @@ $this->load->view('templates/FHC-Header', array('title' => 'InfocenterDetails',
    -
    +
    +
    + +
    +
    + +
    +
    + +
    +
    -
    - -
    - -
    - - - - - - - - + +
    DatumNotizUser
    + + + + + + - - - - - - - - -
    DatumNotizUser
    insertamum), 'd.m.Y H:i:s') ?>titel ?>verfasser_uid ?>
    -
    -
    - - - - - - - - - - - - - - - -
    DatumAktivitätUser
    zeitpunkt), 'd.m.Y H:i:s') ?>logdata->name) ? $log->logdata->name : '' ?>insertvon ?>
    + + + insertamum), 'd.m.Y H:i:s') ?> + titel ?> + verfasser_uid ?> + + + + +
    +
    + + + + + + + + + + + + + + + +
    DatumAktivitätUser
    zeitpunkt), 'd.m.Y H:i:s') ?>logdata->name) ? $log->logdata->name : '' ?>insertvon ?>
    +
    @@ -455,11 +484,19 @@ $this->load->view('templates/FHC-Header', array('title' => 'InfocenterDetails', "paging": false, "searching": false, "info": false, - "order": [[2, "desc"]] + "order": [[2, "desc"], [1, "asc"]] + }); + $("#nachgdoctable").DataTable({ + "language": {"url": german}, + "responsive": true, + "paging": false, + "searching": false, + "info": false, + "order": [[2, "asc"], [1, "desc"]] }); $("#logtable").DataTable({ "language": {"url": german}, - "responsive": true, + "responsive": false, "lengthChange": false, "info": false, "pageLength": 25, @@ -468,7 +505,7 @@ $this->load->view('templates/FHC-Header', array('title' => 'InfocenterDetails', }); $("#notiztable").DataTable({ "language": {"url": german}, - "responsive": true, + "responsive": false, "lengthChange": false, "info": false, "pageLength": 13, @@ -476,7 +513,8 @@ $this->load->view('templates/FHC-Header', array('title' => 'InfocenterDetails', "drawCallback": drawCallback }); $(".dateinput").datepicker({ - "dateFormat": "dd.mm.yy" + "language": "de", + "format": "dd.mm.yyyy" }); //javascript hack - not nice! $("select").addClass('form-control'); diff --git a/application/views/templates/FHC-Header.php b/application/views/templates/FHC-Header.php index c2d88a6bb..a5210d4c6 100644 --- a/application/views/templates/FHC-Header.php +++ b/application/views/templates/FHC-Header.php @@ -12,6 +12,7 @@ $jquery3 = isset($jquery3) ? $jquery3 : false; $jqueryui = isset($jqueryui) ? $jqueryui : false; $bootstrap = isset($bootstrap) ? $bootstrap : false; $fontawesome = isset($fontawesome) ? $fontawesome : false; +$bootstrapdatepicker = isset($bootstrapdatepicker) ? $bootstrapdatepicker : false; $datatables = isset($datatables) ? $datatables : false; $tablesorter = isset($tablesorter) ? $tablesorter : false; @@ -94,6 +95,8 @@ function _generateJSsInclude($JSs) if ($bootstrap === true) _generateCSSsInclude('vendor/components/bootstrap/css/bootstrap.min.css'); // font awesome CSS if ($fontawesome === true) _generateCSSsInclude('vendor/components/font-awesome/css/font-awesome.min.css'); + // bootstrap datepicker CSS + if ($bootstrapdatepicker === true) _generateCSSsInclude('vendor/eternicode/bootstrap-datepicker/dist/css/bootstrap-datepicker3.min.css'); // datatables CSS if ($datatables === true) { @@ -114,6 +117,11 @@ function _generateJSsInclude($JSs) if ($jqueryui === true) _generateJSsInclude('vendor/components/jqueryui/jquery-ui.min.js'); // bootstrap JS if ($bootstrap === true) _generateJSsInclude('vendor/components/bootstrap/js/bootstrap.min.js'); + // bootstrap datepicker JS + if ($bootstrapdatepicker === true){ + _generateJSsInclude('vendor/eternicode/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js'); + _generateJSsInclude('vendor/eternicode/bootstrap-datepicker/dist/locales/bootstrap-datepicker.de.min.js'); + } // datatables JS if ($datatables === true) { diff --git a/composer.json b/composer.json index f0fea90e5..1a6904333 100644 --- a/composer.json +++ b/composer.json @@ -251,7 +251,8 @@ "components/font-awesome": "^4.7", "moment/moment": "^2.20", "datatables/datatables": "^1.10", - "datatables/plugins": "^3.3" + "datatables/plugins": "^3.3", + "eternicode/bootstrap-datepicker": "^1.7" }, "require-dev": { "squizlabs/php_codesniffer": "2.*" diff --git a/composer.lock b/composer.lock index ffe6ab4f9..9aa3c5f64 100644 --- a/composer.lock +++ b/composer.lock @@ -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": "28942746c1b00b590a3d3cb43cd21606", - "content-hash": "2c99452d2bf338a1d1e3462197ab25b7", + "hash": "b386e8ea62cfd8c96c6697729860cc5a", + "content-hash": "65e7f00446fd7f602e914089cedaa931", "packages": [ { "name": "BlackrockDigital/startbootstrap-sb-admin-2", @@ -775,6 +775,61 @@ ], "time": "2015-02-27 09:45:49" }, + { + "name": "eternicode/bootstrap-datepicker", + "version": "v1.7.1", + "source": { + "type": "git", + "url": "https://github.com/uxsolutions/bootstrap-datepicker.git", + "reference": "4c12834aae54782ca41d9409d6334193f200124d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/uxsolutions/bootstrap-datepicker/zipball/4c12834aae54782ca41d9409d6334193f200124d", + "reference": "4c12834aae54782ca41d9409d6334193f200124d", + "shasum": "" + }, + "require": { + "components/bootstrap": ">=2.0, <4.0", + "components/jquery": ">=1.7.1, <4.0.0", + "robloach/component-installer": "*" + }, + "type": "component", + "extra": { + "component": { + "scripts": [ + "js/bootstrap-datepicker.js" + ], + "styles": [ + "dist/css/bootstrap-datepicker.css", + "dist/css/bootstrap-datepicker3.css" + ], + "files": [ + "js/locales/bootstrap-datepicker.*.js" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Andrew Rowls", + "email": "eternicode@gmail.com" + }, + { + "name": "Community", + "homepage": "https://github.com/uxsolutions/bootstrap-datepicker/contributors" + } + ], + "description": "A datepicker for Bootstrap", + "keywords": [ + "bootstrap", + "datepicker" + ], + "time": "2017-07-06 12:14:34" + }, { "name": "fgelinas/timepicker", "version": "0.3.3", From 55121cc2594b9ee278d82af6a0bb0b7e8f21240e Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 10 Jan 2018 09:59:12 +0100 Subject: [PATCH 109/126] log table personid updated bei Personenzusammenlegung --- vilesci/stammdaten/personen_wartung.php | 1 + 1 file changed, 1 insertion(+) diff --git a/vilesci/stammdaten/personen_wartung.php b/vilesci/stammdaten/personen_wartung.php index 83038e553..8fe6b8fa0 100644 --- a/vilesci/stammdaten/personen_wartung.php +++ b/vilesci/stammdaten/personen_wartung.php @@ -118,6 +118,7 @@ if(isset($radio_1) && isset($radio_2) && $radio_1>=0 && $radio_2>=0) $sql_query_upd1.="UPDATE public.tbl_preinteressent SET person_id=".$db->db_add_param($radio_2, FHC_INTEGER)." WHERE person_id=".$db->db_add_param($radio_1, FHC_INTEGER).";"; $sql_query_upd1.="UPDATE public.tbl_personfunktionstandort SET person_id=".$db->db_add_param($radio_2, FHC_INTEGER)." WHERE person_id=".$db->db_add_param($radio_1, FHC_INTEGER).";"; $sql_query_upd1.="UPDATE public.tbl_notizzuordnung SET person_id=".$db->db_add_param($radio_2, FHC_INTEGER)." WHERE person_id=".$db->db_add_param($radio_1, FHC_INTEGER).";"; + $sql_query_upd1.="UPDATE system.tbl_log SET person_id=".$db->db_add_param($radio_2, FHC_INTEGER)." WHERE person_id=".$db->db_add_param($radio_1, FHC_INTEGER).";"; $sql_query_upd1.="UPDATE wawi.tbl_konto SET person_id=".$db->db_add_param($radio_2, FHC_INTEGER)." WHERE person_id=".$db->db_add_param($radio_1, FHC_INTEGER).";"; $sql_query_upd1.="DELETE FROM public.tbl_person WHERE person_id=".$db->db_add_param($radio_1, FHC_INTEGER).";"; From 9e2030f06e623fc770978bd5dd9d3e2689936545 Mon Sep 17 00:00:00 2001 From: oesi Date: Thu, 11 Jan 2018 14:15:27 +0100 Subject: [PATCH 110/126] =?UTF-8?q?Problem=20behoben=20wodurch=20das=20CIS?= =?UTF-8?q?=20Men=C3=BC=20nicht=20mehr=20korrekt=20angezeigt=20wurde.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cms/menu/menu_addon_freifaecher.inc.php | 14 ++-- .../menu_addon_lehrveranstaltungen.inc.php | 2 +- ...on_lehrveranstaltungen_studienplan.inc.php | 4 +- cms/menu/menu_addon_meinelehrfaecher.inc.php | 72 +++++++++---------- cms/menu/menu_addon_meinelv.inc.php | 8 +-- 5 files changed, 50 insertions(+), 50 deletions(-) diff --git a/cms/menu/menu_addon_freifaecher.inc.php b/cms/menu/menu_addon_freifaecher.inc.php index 8c0e87f86..336ac6cba 100644 --- a/cms/menu/menu_addon_freifaecher.inc.php +++ b/cms/menu/menu_addon_freifaecher.inc.php @@ -19,8 +19,8 @@ */ /** * Menue Addon fuer die Darstellung der Freifaecher - * - * Es wird eine Link-Liste mit allen aktuellen Freifaechern erstellt + * + * Es wird eine Link-Liste mit allen aktuellen Freifaechern erstellt */ require_once(dirname(__FILE__).'/menu_addon.class.php'); require_once(dirname(__FILE__).'/../../include/functions.inc.php'); @@ -32,9 +32,9 @@ class menu_addon_freifaecher extends menu_addon public function __construct() { parent::__construct(); - + $this->link=false; - + $sprache = getSprache(); $stsem = new studiensemester(); $stsem = $stsem->getAktOrNext(); @@ -48,14 +48,14 @@ class menu_addon_freifaecher extends menu_addon $this->items[] = array('title'=>$row->bezeichnung_arr[$sprache], 'target'=>'content', 'link'=>'private/lehre/lesson.php?lvid='.$row->lehrveranstaltung_id.'&studiensemester_kurzbz='.$stsem, - 'name'=>'aktiv?' style="" ':' style=""').'>'.(!$row->aktiv?' ':' ').' '.$this->CutString($row->bezeichnung_arr[$sprache], 21, '...').'' + 'name'=>'aktiv?' style="" ':' style=""').'>'.(!$row->aktiv?' ':' ').' '.CutString($row->bezeichnung_arr[$sprache], 21, '...').'' ); } - + $this->block.= ''; - + $this->output(); } } diff --git a/cms/menu/menu_addon_lehrveranstaltungen.inc.php b/cms/menu/menu_addon_lehrveranstaltungen.inc.php index 4e6c3a097..e9fdb7ed9 100644 --- a/cms/menu/menu_addon_lehrveranstaltungen.inc.php +++ b/cms/menu/menu_addon_lehrveranstaltungen.inc.php @@ -235,7 +235,7 @@ class menu_addon_lehrveranstaltungen extends menu_addon } $this->block.= ''; $this->block.= ' '; $this->block.= ''; } diff --git a/cms/menu/menu_addon_lehrveranstaltungen_studienplan.inc.php b/cms/menu/menu_addon_lehrveranstaltungen_studienplan.inc.php index f053da50c..c518eb00e 100644 --- a/cms/menu/menu_addon_lehrveranstaltungen_studienplan.inc.php +++ b/cms/menu/menu_addon_lehrveranstaltungen_studienplan.inc.php @@ -331,9 +331,9 @@ class menu_addon_lehrveranstaltungen_studienplan extends menu_addon else $bold=''; if(!$row->lehrauftrag && defined('CIS_LEHRVERANSTALTUNG_MODULE_LINK') && !CIS_LEHRVERANSTALTUNG_MODULE_LINK) - $this->block.= "
  • ".$this->CutString($row->bezeichnung_arr[$sprache], 21, '...').' '.$row->lehrform_kurzbz."
  • "; + $this->block.= "
  • ".CutString($row->bezeichnung_arr[$sprache], 21, '...').' '.$row->lehrform_kurzbz."
  • "; else - $this->block.= "
  • bezeichnung_arr[$sprache]."\" href=\"private/lehre/lesson.php?lvid=$row->lehrveranstaltung_id&studiensemester_kurzbz=$studiensemester_kurzbz\" target=\"content\">".$this->CutString($row->bezeichnung_arr[$sprache], 21, '...').' '.$row->lehrform_kurzbz."
  • "; + $this->block.= "
  • bezeichnung_arr[$sprache]."\" href=\"private/lehre/lesson.php?lvid=$row->lehrveranstaltung_id&studiensemester_kurzbz=$studiensemester_kurzbz\" target=\"content\">".CutString($row->bezeichnung_arr[$sprache], 21, '...').' '.$row->lehrform_kurzbz."
  • "; if(isset($row->childs)) $this->printTree($row->childs, $sprache, $studiensemester_kurzbz); diff --git a/cms/menu/menu_addon_meinelehrfaecher.inc.php b/cms/menu/menu_addon_meinelehrfaecher.inc.php index 59ffc26af..8fa739cae 100644 --- a/cms/menu/menu_addon_meinelehrfaecher.inc.php +++ b/cms/menu/menu_addon_meinelehrfaecher.inc.php @@ -19,7 +19,7 @@ */ /** * Menue Addon zur Anzeige der zugeordneten LVs - * + * * Zeigt eine Liste mit den Lehrfächern an zu denen der Lektor oder Student zugeordnet ist. */ require_once(dirname(__FILE__).'/menu_addon.class.php'); @@ -34,15 +34,15 @@ class menu_addon_meinelvkompatibel extends menu_addon public function __construct() { parent::__construct(); - + $sprache = getSprache(); $user = get_uid(); - + $is_lector=check_lektor($user); - + $p = new phrasen($sprache); $cutlength=21; - + //Meine LVs Student if(!$is_lector) { @@ -57,34 +57,34 @@ class menu_addon_meinelvkompatibel extends menu_addon $stsem_array = array(); array_push($stsem_array, $stsem); array_push($stsem_array, $stsemobj->getNextFrom($stsem)); - + if(defined('CIS_MEINELV_ANZAHL_SEMESTER_PAST')) $end = CIS_MEINELV_ANZAHL_SEMESTER_PAST; else $end = 1; - + for($i=0; $i<$end; $i++) { $stsem = $stsemobj->getPreviousFrom($stsem); array_unshift($stsem_array, $stsem); } - + foreach($stsem_array as $stsem) { - $qry = "SELECT + $qry = "SELECT lehrfach.bezeichnung, lehrfach.lehrveranstaltung_id as lehrfach_id, vw_student_lehrveranstaltung.lehrveranstaltung_id, vw_student_lehrveranstaltung.studiengang_kz, vw_student_lehrveranstaltung.semester FROM campus.vw_student_lehrveranstaltung JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(vw_student_lehrveranstaltung.lehrfach_id=lehrfach.lehrveranstaltung_id) - WHERE - uid=".$this->db_add_param($user)." + WHERE + uid=".$this->db_add_param($user)." AND studiensemester_kurzbz=".$this->db_add_param($stsem)." - AND vw_student_lehrveranstaltung.lehre=true - AND vw_student_lehrveranstaltung.lehreverzeichnis<>'' - ORDER BY + AND vw_student_lehrveranstaltung.lehre=true + AND vw_student_lehrveranstaltung.lehreverzeichnis<>'' + ORDER BY vw_student_lehrveranstaltung.studiengang_kz, vw_student_lehrveranstaltung.semester, lehrfach.bezeichnung"; - + if($result = $this->db_query($qry)) { $stsementry=array(); @@ -92,13 +92,13 @@ class menu_addon_meinelvkompatibel extends menu_addon { $lv_obj = new lehrveranstaltung(); $lv_obj->load($row->lehrfach_id); - + if($row->studiengang_kz==0 && $row->semester==0) // Freifach { $stsementry[] = array('title'=>$lv_obj->bezeichnung_arr[$sprache], 'target'=>'content', 'link'=>'private/freifaecher/lesson.php?lvid='.$row->lehrveranstaltung_id.'&studiensemester_kurzbz='.$stsem, - 'name'=>'FF '.$this->CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength, '...') + 'name'=>'FF '.CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength, '...') ); } else @@ -127,9 +127,9 @@ class menu_addon_meinelvkompatibel extends menu_addon else { echo "Fehler Semester beim Auslesen der LV"; - } + } } - + //Eigenen LV des eingeloggten Lektors anzeigen if($is_lector) { @@ -140,39 +140,39 @@ class menu_addon_meinelvkompatibel extends menu_addon $stsem_array[]=$stsemobj->getPreviousFrom($stsem); $stsem_array[]=$stsem; $stsem_array[]=$stsemobj->getNextFrom($stsem); - + $this->items[] = array('title'=>$p->t("lvaliste/titel"), 'target'=>'content', 'link'=>'private/profile/lva_liste.php', 'name'=>$p->t("lvaliste/titel")); - + foreach($stsem_array as $stsem) { - - $qry = "SELECT - distinct tbl_lehrveranstaltung.bezeichnung, tbl_lehrveranstaltung.studiengang_kz, - tbl_lehrveranstaltung.semester, tbl_lehrveranstaltung.lehreverzeichnis, tbl_lehrveranstaltung.lehrveranstaltung_id, + + $qry = "SELECT + distinct tbl_lehrveranstaltung.bezeichnung, tbl_lehrveranstaltung.studiengang_kz, + tbl_lehrveranstaltung.semester, tbl_lehrveranstaltung.lehreverzeichnis, tbl_lehrveranstaltung.lehrveranstaltung_id, tbl_lehrveranstaltung.orgform_kurzbz, lehrfach.lehrveranstaltung_id as lehrfach_id, lehrfach.bezeichnung as lf_bezeichnung - FROM + FROM lehre.tbl_lehrveranstaltung JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id) JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id) - WHERE + WHERE mitarbeiter_uid=".$this->db_add_param($user)." AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($stsem)." ORDER BY tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.semester, lehrfach.bezeichnung"; - + if($result = $this->db_query($qry)) { - - + + $stsementry=array(); while($row = $this->db_fetch_object($result)) { $lv_obj = new lehrveranstaltung(); $lv_obj->load($row->lehrfach_id); - + if($row->studiengang_kz==0 AND $row->semester==0) { $stsementry[] = array('title'=>$lv_obj->bezeichnung_arr[$sprache], @@ -180,19 +180,19 @@ class menu_addon_meinelvkompatibel extends menu_addon 'link'=>'private/freifaecher/lesson.php?lvid='.$row->lehrveranstaltung_id.'&studiensemester_kurzbz='.$stsem, 'name'=>'FF '.$this->CutString($row->lehreverzeichnis, $cutlength, '...') ); - } + } else { $stg_obj = new studiengang(); $stg_obj->load($row->studiengang_kz); $kurzbz = $stg_obj->kuerzel.'-'.$row->semester.' '.$row->orgform_kurzbz; - + $stsementry[] = array('title'=>$lv_obj->bezeichnung_arr[$sprache], 'target'=>'content', 'link'=>'private/lehre/lesson.php?lvid='.$row->lehrveranstaltung_id.'&studiensemester_kurzbz='.$stsem, 'name'=>$this->CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength, '...') ); - } + } } if(count($stsementry)>0) { @@ -207,7 +207,7 @@ class menu_addon_meinelvkompatibel extends menu_addon else echo "Fehler beim Auslesen des Lehrfaches"; } - + } else { @@ -216,7 +216,7 @@ class menu_addon_meinelvkompatibel extends menu_addon } $this->output(); } -} +} new menu_addon_meinelvkompatibel(); ?> diff --git a/cms/menu/menu_addon_meinelv.inc.php b/cms/menu/menu_addon_meinelv.inc.php index c3dfd926f..89eecf088 100644 --- a/cms/menu/menu_addon_meinelv.inc.php +++ b/cms/menu/menu_addon_meinelv.inc.php @@ -101,7 +101,7 @@ class menu_addon_meinelv extends menu_addon $this->items[] = array('title'=>$lv_obj->bezeichnung_arr[$sprache], 'target'=>'content', 'link'=>'private/freifaecher/lesson.php?lvid='.$row->lehrveranstaltung_id.'&studiensemester_kurzbz='.$row->studiensemester_kurzbz, - 'name'=>'FF '.$this->CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength, '...') + 'name'=>'FF '.CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength, '...') ); } else @@ -109,7 +109,7 @@ class menu_addon_meinelv extends menu_addon $this->items[] = array('title'=>$lv_obj->bezeichnung_arr[$sprache], 'target'=>'content', 'link'=>'private/lehre/lesson.php?lvid='.$row->lehrveranstaltung_id.'&studiensemester_kurzbz='.$row->studiensemester_kurzbz, - 'name'=>strtoupper($row->typ.$row->kurzbz).$row->semester.' '.$this->CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength, '...') + 'name'=>strtoupper($row->typ.$row->kurzbz).$row->semester.' '.CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength, '...') ); } } @@ -192,7 +192,7 @@ class menu_addon_meinelv extends menu_addon $this->items[] = array('title'=>$lv_obj->bezeichnung_arr[$sprache], 'target'=>'content', 'link'=>'private/freifaecher/lesson.php?lvid='.$row->lehrveranstaltung_id, - 'name'=>'FF '.$this->CutString($row->lehreverzeichnis, $cutlength, '...') + 'name'=>'FF '.CutString($row->lehreverzeichnis, $cutlength, '...') ); } else @@ -203,7 +203,7 @@ class menu_addon_meinelv extends menu_addon $this->items[] = array('title'=>$titel, 'target'=>'content', 'link'=>'private/lehre/lesson.php?lvid='.$row->lehrveranstaltung_id.'&studiensemester_kurzbz='.$row->studiensemester_kurzbz, - 'name'=>$kurzbz.' '.$this->CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength, '...') + 'name'=>$kurzbz.' '.CutString($lv_obj->bezeichnung_arr[$sprache], $cutlength, '...') ); } } From 42a4bbe2a4fa1810ecdd51ae07e36a20b881abc0 Mon Sep 17 00:00:00 2001 From: oesi Date: Thu, 11 Jan 2018 15:24:07 +0100 Subject: [PATCH 111/126] Warning entfernt bei Personen die kein Foto hochgeladen haben --- vilesci/personen/personen_details.php | 113 ++++++++++++++------------ 1 file changed, 59 insertions(+), 54 deletions(-) diff --git a/vilesci/personen/personen_details.php b/vilesci/personen/personen_details.php index 9fde7d32e..796175774 100644 --- a/vilesci/personen/personen_details.php +++ b/vilesci/personen/personen_details.php @@ -56,7 +56,7 @@ echo ' ret = ret + now.getMilliseconds(); return ret; } - + function RefreshImage() { path=document.getElementById("personimage").src; @@ -130,7 +130,7 @@ if($uid!='') $qry = "SELECT person_id, true as mitarbeiter FROM campus.vw_mitarbeiter WHERE uid='".addslashes($uid)."' UNION SELECT person_id, false as mitarbeiter FROM campus.vw_student WHERE uid='".addslashes($uid)."'"; - + if($result = $db->db_query($qry)) { if($row = $db->db_fetch_object($result)) @@ -138,10 +138,10 @@ if($uid!='') $is_mitarbeiter = ($row->mitarbeiter=='t'?true:false); $person_id = $row->person_id; } - else + else die('UID wurde nicht gefunden'); } - else + else die('Fehler beim Ermitteln der UID'); } @@ -153,7 +153,7 @@ if(isset($_POST['saveperson'])) $person = new person(); if(!$person->load($person_id)) die('Person konnte nicht geladen werden'); - + $person->anrede = $anrede; $person->titelpre = $titelpre; $person->titelpost = $titelpost; @@ -177,32 +177,32 @@ if(isset($_POST['saveperson'])) $person->updatevon = $user; $person->kurzbeschreibung = $kurzbeschreibung; $person->new = false; - + if($person->save()) { $msg = '

    Personendaten wurden erfolgreich gespeichert

    '; } - else + else { $msg = "

    Fehler beim Speichern der Personendaten: $person->errormsg

    "; $error_person_save=true; } - + } if(isset($_GET['deleteimage'])) { if(!$rechte->isBerechtigt('student/stammdaten', null, 'su') && !$rechte->isBerechtigt('mitarbeiter/stammdaten', null, 'su')) die('Sie haben keine Berechtigung fuer diese Aktion'); - + $person = new person(); if(!$person->load($person_id)) die('Person konnte nicht geladen werden'); - + $person->foto=''; if(!$person->save()) die('Fehler beim Speichern:'.$person->errormsg); - + $akte = new akte(); if($akte->getAkten($person_id, 'Lichtbil')) { @@ -213,21 +213,21 @@ if(isset($_GET['deleteimage'])) echo 'Fehler beim Löschen des Bildes: '.$hlp->errormsg; } } - else + else { die('Fehler beim Laden der Akten:'.$akte->errormsg); } - + $msg = '

    Bild wurde erfolgreich entfernt

    '; } if(isset($_POST['savebenutzer'])) { if(!$rechte->isBerechtigt('student/stammdaten', null, 'su') && !$rechte->isBerechtigt('mitarbeiter/stammdaten', null, 'su')) die('Sie haben keine Berechtigung fuer diese Aktion'); - + $benutzer = new benutzer(); $benutzer->load($uid); - + if(checkalias($alias) || $alias=='') { $benutzer->alias = $alias; @@ -235,17 +235,17 @@ if(isset($_POST['savebenutzer'])) $benutzer->new = false; $benutzer->updateamum = date('Y-m-d H:i:s'); $benutzer->updatevon = $user; - + if($benutzer->save()) { $msg = '

    Daten wurden erfolgreich gespeichert

    '; } - else + else { $msg = "

    Fehler beim Speichern: $benutzer->errormsg"; } } - else + else { $msg = "

    Alias ist ungueltig $alias

    "; $error_benutzer_save=true; @@ -256,11 +256,11 @@ if(isset($_POST['savemitarbeiter'])) { if(!$rechte->isBerechtigt('mitarbeiter/stammdaten', null, 'su')) die('Sie haben keine Berechtigung fuer diese Aktion'); - + $mitarbeiter = new mitarbeiter(); if(!$mitarbeiter->load($uid)) die('Mitarbeiter konnte nicht geladen werden'); - + $mitarbeiter->personalnummer = $personalnummer; $mitarbeiter->telefonklappe = $telefonklappe; $mitarbeiter->kurzbz = $kurzbz; @@ -275,10 +275,10 @@ if(isset($_POST['savemitarbeiter'])) $mitarbeiter->new = false; $mitarbeiter->updateamum = date('Y-m-d H:i:s'); $mitarbeiter->updatevon = $user; - + if($mitarbeiter->save()) $msg = '

    Daten wurden erfolgreich gespeichert

    '; - else + else { $msg = "

    Fehler beim Speichern der Daten: $mitarbeiter->errormsg

    "; $error_mitarbeiter_save = true; @@ -294,10 +294,10 @@ if(isset($_POST['savestudent'])) $studiengang = new studiengang(); if(!$studiengang->load($student->studiengang_kz)) die('Fehler beim Laden des Studienganges'); - + if(!$rechte->isBerechtigt('student/stammdaten', $studiengang->oe_kurzbz, 'su')) die('Sie haben keine Berechtigung fuer diese Aktion'); - + $student->matrikelnr = $matrikelnummer; $student->semester = $semester; $student->verband = $verband; @@ -305,14 +305,14 @@ if(isset($_POST['savestudent'])) $student->updateamum = date('Y-m-d H:i:s'); $student->updatevon = $user; $student->new = false; - + if($student->save(null, false)) $msg = '

    Daten wurden erfolgreich gespeichert

    '; - else + else { $msg = "

    Fehler beim Speichern der Daten: $student->errormsg

    "; $error_student_save = true; - } + } } $person = new person(); @@ -348,7 +348,12 @@ if(!$error_person_save) $akte = new akte(); if($akte->getAkten($person_id, 'Lichtbil')) - $dms_id_lichtbild = $akte->result[0]->dms_id; +{ + if(isset($akte->result[0])) + { + $dms_id_lichtbild = $akte->result[0]->dms_id; + } +} // PERSON echo ""; - + if($is_mitarbeiter) { $mitarbeiter = new mitarbeiter(); if(!$mitarbeiter->load($uid)) die('Mitarbeiter konnte nicht geladen werden'); - + if(!$error_mitarbeiter_save) { $personalnummer = $mitarbeiter->personalnummer; @@ -562,7 +567,7 @@ if(isset($uid) && $uid!='') $anmerkung = $mitarbeiter->anmerkung; $bismelden = $mitarbeiter->bismelden; } - + //MITARBEITER echo " "; } - else + else { $student = new student(); if(!$student->load($uid)) die('Fehler beim Laden des Studenten'); - + if(!$error_student_save) { $semester = $student->semester; @@ -664,7 +669,7 @@ if(isset($uid) && $uid!='') $gruppe = $student->gruppe; $matrikelnummer = $student->matrikelnr; } - + //STUDENT echo "
    @@ -387,9 +392,9 @@ foreach ($nation->nation as $row_nation) { if($row_nation->code == $geburtsnation) $selected = 'selected'; - else + else $selected = ''; - + echo ""; } echo " @@ -413,9 +418,9 @@ foreach ($nation->nation as $row_nation) { if($row_nation->code == $staatsbuergerschaft) $selected = 'selected'; - else + else $selected = ''; - + echo ""; } echo " @@ -432,9 +437,9 @@ if($result_sprache = $db->db_query($qry)) { if($row_sprache->sprache == $sprache) $selected = 'selected'; - else + else $selected = ''; - + echo ""; } } @@ -518,10 +523,10 @@ if(isset($uid) && $uid!='') $qry = "SELECT * FROM public.tbl_benutzer WHERE uid='".addslashes($uid)."'"; if(!$result_benutzer = $db->db_query($qry)) die('Fehler beim Auslesen der Benutzerdaten'); - + if(!$row_benutzer = $db->db_fetch_object($result_benutzer)) die('Fehler beim Auslesen der Benutzerdaten'); - + echo "
    @@ -534,20 +539,20 @@ if(isset($uid) && $uid!='')
    "; - - + + echo '
    AccountInfoBlatt erstellen'; echo '
    Betriebsmittel verwalten'; - + echo "
    @@ -588,7 +593,7 @@ if(isset($uid) && $uid!='')
    Buero Standort
    @@ -698,4 +703,4 @@ echo "
    "; ?> - \ No newline at end of file + From 937eefcf37ee6c9915e6698dea9a0ff41598c629 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 12 Jan 2018 15:51:49 +0100 Subject: [PATCH 112/126] =?UTF-8?q?Default=20PFAD=20f=C3=BCr=20Bugtracking?= =?UTF-8?q?=20Link=20korrigiert=20damit=20die=20TicketNumber=20statt=20der?= =?UTF-8?q?=20TicketID=20verwendet=20wird?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/cis.config-default.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/cis.config-default.inc.php b/config/cis.config-default.inc.php index 063518284..835be5d80 100644 --- a/config/cis.config-default.inc.php +++ b/config/cis.config-default.inc.php @@ -234,5 +234,5 @@ define('CIS_DOKUMENTE_STUDIENBEITRAG_TYPEN', serialize(array("Studiengebuehr"))) define('CIS_LVMENUE_CUTLENGTH', 21); // Gibt an, auf welche Seite TicketIds ala #1234 im Jahresplan verlinkt werden zB zur Verlinkung in Bugtracker -define('JAHRESPLAN_TICKET_LINK','https://bug.technikum-wien.at/otrs/index.pl?Action=AgentTicketZoom;TicketID='); +define('JAHRESPLAN_TICKET_LINK','https://bug.technikum-wien.at/otrs/index.pl?Action=AgentTicketZoom;TicketNumber='); ?> From 9669360b9ad689ff0dd1d9e04f4471fbebd5ed23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 12 Jan 2018 15:52:20 +0100 Subject: [PATCH 113/126] Infocenter Filter angepasst damit die korrekten Personen angezeigt werden --- .../system/infocenter/infocenterData.php | 123 ++++++++++-------- 1 file changed, 69 insertions(+), 54 deletions(-) diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php index a4776e14d..6325f3b49 100644 --- a/application/views/system/infocenter/infocenterData.php +++ b/application/views/system/infocenter/infocenterData.php @@ -2,60 +2,75 @@ $filterWidgetArray = array( 'query' => ' - SELECT * - FROM ( - SELECT p.person_id AS "PersonId", - p.vorname AS "Vorname", - p.nachname AS "Nachname", - p.gebdatum AS "Gebdatum", - (SELECT zeitpunkt - FROM system.tbl_log - WHERE app = \'aufnahme\' - AND person_id = p.person_id - ORDER BY zeitpunkt DESC - LIMIT 1) AS "LastAction", - (SELECT insertvon - FROM system.tbl_log - WHERE app = \'aufnahme\' - AND person_id = p.person_id - ORDER BY zeitpunkt DESC - LIMIT 1) AS "User/Operator", - (SELECT pss.studiensemester_kurzbz - FROM public.tbl_prestudentstatus pss - INNER JOIN public.tbl_prestudent ps USING(prestudent_id) - WHERE pss.status_kurzbz = \'Interessent\' - AND pss.bestaetigtam IS NULL - AND pss.bestaetigtvon IS NULL - AND ps.person_id = p.person_id - ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC - LIMIT 1) AS "Studiensemester", - (SELECT pss.bewerbung_abgeschicktamum - FROM public.tbl_prestudentstatus pss - INNER JOIN public.tbl_prestudent ps USING(prestudent_id) - WHERE pss.status_kurzbz = \'Interessent\' - AND pss.bestaetigtam IS NULL - AND pss.bestaetigtvon IS NULL - AND ps.person_id = p.person_id - ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC - LIMIT 1) AS "SendDate" - FROM public.tbl_person p - WHERE p.aktiv = TRUE - AND p.person_id IN ( - SELECT person_id - FROM public.tbl_prestudent - INNER JOIN public.tbl_prestudentstatus USING(prestudent_id) - WHERE status_kurzbz = \'Interessent\' - AND bestaetigtam IS NULL - AND bestaetigtvon IS NULL) - GROUP BY 1, 2, 4, 5, 6, 7 - ORDER BY "LastAction" DESC - ) tbl_infocenter - WHERE "Studiensemester" IN ( - SELECT studiensemester_kurzbz - FROM public.tbl_studiensemester - WHERE (NOW() >= start AND NOW() <= ende) - OR start > NOW() - ) + SELECT + p.person_id AS "PersonId", + p.vorname AS "Vorname", + p.nachname AS "Nachname", + p.gebdatum AS "Gebdatum", + ( + SELECT zeitpunkt + FROM system.tbl_log + WHERE app = \'aufnahme\' + AND person_id = p.person_id + ORDER BY zeitpunkt DESC + LIMIT 1 + ) AS "LastAction", + ( + SELECT insertvon + FROM system.tbl_log + WHERE app = \'aufnahme\' + AND person_id = p.person_id + ORDER BY zeitpunkt DESC + LIMIT 1 + ) AS "User/Operator", + ( + SELECT + pss.studiensemester_kurzbz + FROM + public.tbl_prestudentstatus pss + INNER JOIN public.tbl_prestudent ps USING(prestudent_id) + WHERE pss.status_kurzbz = \'Interessent\' + AND pss.bestaetigtam IS NULL + AND pss.bestaetigtvon IS NULL + AND ps.person_id = p.person_id + ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC + LIMIT 1 + ) AS "Studiensemester", + ( + SELECT pss.bewerbung_abgeschicktamum + FROM + public.tbl_prestudentstatus pss + INNER JOIN public.tbl_prestudent ps USING(prestudent_id) + WHERE pss.status_kurzbz = \'Interessent\' + AND pss.bestaetigtam IS NULL + AND pss.bestaetigtvon IS NULL + AND ps.person_id = p.person_id + ORDER BY pss.datum DESC, pss.insertamum DESC, pss.ext_id DESC + LIMIT 1 + ) AS "SendDate" + FROM public.tbl_person p + WHERE + EXISTS( + SELECT 1 + FROM public.tbl_prestudent + WHERE person_id=p.person_id + AND \'Interessent\' = (SELECT status_kurzbz FROM public.tbl_prestudentstatus + WHERE prestudent_id=tbl_prestudent.prestudent_id + ORDER BY datum DESC, insertamum DESC, ext_id DESC + LIMIT 1 + ) + AND EXISTS (SELECT 1 FROM public.tbl_prestudentstatus + WHERE prestudent_id=tbl_prestudent.prestudent_id + AND status_kurzbz=\'Interessent\' AND bestaetigtam IS NULL and bestaetigtvon IS NULL + AND studiensemester_kurzbz IN ( + SELECT studiensemester_kurzbz + FROM public.tbl_studiensemester + WHERE (NOW() >= start AND NOW() <= ende) + OR start > NOW() + ) + ) + ) + ORDER BY "LastAction" DESC ', 'hideHeader' => false, 'hideSave' => false, From 5d31312b97c7f3fa3fb79ab71de7ab46dd50d57e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 12 Jan 2018 16:30:16 +0100 Subject: [PATCH 114/126] =?UTF-8?q?PersonenLog=20Klasse=20f=C3=BCr=20nicht?= =?UTF-8?q?-CI=20Code=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/functions.inc.php | 7 ++-- include/personlog.class.php | 68 +++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 include/personlog.class.php diff --git a/include/functions.inc.php b/include/functions.inc.php index 86e4da84f..eb49206f5 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -22,6 +22,7 @@ require_once(dirname(__FILE__).'/basis_db.class.php'); require_once(dirname(__FILE__).'/authentication.class.php'); require_once(dirname(__FILE__).'/betriebsmittelperson.class.php'); +require_once(dirname(__FILE__).'/personlog.class.php'); // Auth: Benutzer des Webportals /** @@ -1081,9 +1082,9 @@ function cutString($string, $limit, $placeholderSign = '', $keepFileextension = } } -function PersonLog($ci, $person_id, $logtype_kurzbz, $logdata, $app, $oe_kurzbz = null, $user=null) +function PersonLog($person_id, $logtype_kurzbz, $logdata, $app, $oe_kurzbz = null, $user=null) { - $ci->load->library('PersonLogLib'); - $ci->personloglib->log($person_id, $logtype_kurzbz, $logdata, $app, $oe_kurzbz, $user); + $personlog = new personlog(); + $personlog->log($person_id, $logtype_kurzbz, $logdata, $app, $oe_kurzbz, $user); } ?> diff --git a/include/personlog.class.php b/include/personlog.class.php new file mode 100644 index 000000000..93a810a6c --- /dev/null +++ b/include/personlog.class.php @@ -0,0 +1,68 @@ + + */ +require_once(dirname(__FILE__).'/basis_db.class.php'); + +class personlog extends basis_db +{ + public $new; // boolean + public $logs = array(); // lehreinheit Objekt + + //Tabellenspalten + public $log_id; // Serial + public $person_id; + public $zeitpunkt; // timestamp + public $app; // varchar(32) + public $oe_kurzbz; // varchar(32) + public $logtype_kurzbz; // varchar(32) + public $logdata; + public $insertvon; + + /** + * Konstruktor + */ + public function __construct($log_id=null) + { + parent::__construct(); + } + + public function log($person_id, $logtype_kurzbz, $logdata, $app='core', $oe_kurzbz='null', $user=null) + { + $qry = "INSERT INTO system.tbl_log(person_id, zeitpunkt, app, oe_kurzbz, + logtype_kurzbz, logdata, insertvon) VALUES(". + $this->db_add_param($person_id).','. + $this->db_add_param(date('Y-m-d H:i:s')).','. + $this->db_add_param($app).','. + $this->db_add_param($oe_kurzbz).','. + $this->db_add_param($logtype_kurzbz).','. + $this->db_add_param(json_encode($logdata)).','. + $this->db_add_param($user).')'; + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Logeintrages'; + return false; + } + } +} +?> From d52c423bd922f29bfd5a313ca3d69bef0bcb5010 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Fri, 12 Jan 2018 17:07:24 +0100 Subject: [PATCH 115/126] Phrasenanpassung CIS --- locale/de-AT/mailverteiler.php | 2 +- locale/de-AT/notebookregister.php | 2 +- locale/en-US/mailverteiler.php | 2 +- locale/en-US/notebookregister.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/locale/de-AT/mailverteiler.php b/locale/de-AT/mailverteiler.php index 73ebfc052..0b5852d88 100644 --- a/locale/de-AT/mailverteiler.php +++ b/locale/de-AT/mailverteiler.php @@ -1,5 +1,5 @@ phrasen['mailverteiler/titel']='Mailverteiler/Gruppen'; +$this->phrasen['mailverteiler/titel']='E-Mail Verteiler'; $this->phrasen['mailverteiler/absatz1']='Hinweis: Diese Verteiler dürfen nur für Fachhochschul-relevante Zwecke verwendet werden!'; $this->phrasen['mailverteiler/absatz2']='Info: Infos bezüglich Berechtigungskonzept Mailverteiler, Bedienungsanleitung Mailverteiler'; $this->phrasen['mailverteiler/berechtigungskonzept']='Berechtigungskonzept'; diff --git a/locale/de-AT/notebookregister.php b/locale/de-AT/notebookregister.php index 5c2f882ed..d77071bb2 100644 --- a/locale/de-AT/notebookregister.php +++ b/locale/de-AT/notebookregister.php @@ -2,7 +2,7 @@ $this->phrasen['notebookregister/notebook_absatz1']='Sollten Sie mehr als ein Notebook registrieren lassen wollen, wenden Sie sich bitte an support@technikum-wien.at, da nur ein Eintrag pro Person möglich ist.

    Geben Sie die MAC-Adresse in folgendem Format an: 00-50-DA-C2-32-1C, oder 00:50:DA:C2:32:1C'; $this->phrasen['notebookregister/notebook_absatz2']='Die Änderungen werden in ca. 30 Minuten wirksam. Bitte haben Sie etwas Geduld.

    Um das Internet nutzen zu können, lassen Sie bitte die Netzwerkverbindungseinstellungen vom DHCP-Server zuweisen.
    In Ihrem Browser tragen Sie bitte den Proxy-Server: proxy.technikum-wien.at und den Port 3128 ein.'; $this->phrasen['notebookregister/notebook_anmerkung']='muss nur angegeben werden, wenn UID nicht gleich dem angemeldetem Benutzer'; -$this->phrasen['notebookregister/titelNotebookRegistration']='Infrastruktur - Notebook-Registration'; +$this->phrasen['notebookregister/titelNotebookRegistration']='LAN Zugang'; $this->phrasen['notebookregister/passwortEingebenWennUIDgeaendert']='Es muss ein Passwort eingegeben werden, wenn die UID geändert wird'; $this->phrasen['notebookregister/passwortErneutEingeben']='Geben Sie das Passwort bitte erneut ein'; $this->phrasen['notebookregister/MACadresseBereitsVerwendet']='Die MAC Adresse ist bereits in Verwendung, bitte wenden Sie sich an den Support unter support@technikum-wien.at'; diff --git a/locale/en-US/mailverteiler.php b/locale/en-US/mailverteiler.php index 502846583..54dfc5a94 100644 --- a/locale/en-US/mailverteiler.php +++ b/locale/en-US/mailverteiler.php @@ -1,5 +1,5 @@ phrasen['mailverteiler/titel']='Mailing lists/Groups'; +$this->phrasen['mailverteiler/titel']='Mailing lists'; $this->phrasen['mailverteiler/absatz1']='Notice: These mailing lists may only be used for university-related purposes!'; $this->phrasen['mailverteiler/absatz2']='Info: Information regarding the authorization concept for mailing lists, instructions for mailing lists'; $this->phrasen['mailverteiler/berechtigungskonzept']='Authorization concept'; diff --git a/locale/en-US/notebookregister.php b/locale/en-US/notebookregister.php index 90782a2cd..94dd2708f 100644 --- a/locale/en-US/notebookregister.php +++ b/locale/en-US/notebookregister.php @@ -2,7 +2,7 @@ $this->phrasen['notebookregister/notebook_absatz1']='It is only possible to register one notebook PC per person.
    If you want to register more than one, please contact support at support@technikum-wien.at.

    Enter the MAC address in the following format: 00-50-DA-C2-32-1C, or 00:50:DA:C2:32:1C'; $this->phrasen['notebookregister/notebook_absatz2']='The changes will take effect in about 30 minutes. Please be patient.

    In order to access the Internet, please allow the DHCP server to assign the network connection settings.
    Please enter the following proxy server in your browser: proxy.technikum-wien.at and set the port to 3128.'; $this->phrasen['notebookregister/notebook_anmerkung']='only has to be entered if the UID is not the same as that of the logged-in user'; -$this->phrasen['notebookregister/titelNotebookRegistration']='Infrastructure - Notebook-Registration'; +$this->phrasen['notebookregister/titelNotebookRegistration']='LAN Access'; $this->phrasen['notebookregister/passwortEingebenWennUIDgeaendert']='A password must be entered when the UID is changed.'; $this->phrasen['notebookregister/passwortErneutEingeben']='Please enter the password again'; $this->phrasen['notebookregister/MACadresseBereitsVerwendet']='The MAC address is already in use, please contact support at support@technikum-wien.at'; From 39790a71f992906b163955fe18f1f97eee62bdf7 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Mon, 15 Jan 2018 14:50:28 +0100 Subject: [PATCH 116/126] BugFix oe_kurzbz --- include/personlog.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/personlog.class.php b/include/personlog.class.php index 93a810a6c..03fa1e27b 100644 --- a/include/personlog.class.php +++ b/include/personlog.class.php @@ -42,7 +42,7 @@ class personlog extends basis_db parent::__construct(); } - public function log($person_id, $logtype_kurzbz, $logdata, $app='core', $oe_kurzbz='null', $user=null) + public function log($person_id, $logtype_kurzbz, $logdata, $app='core', $oe_kurzbz=null, $user=null) { $qry = "INSERT INTO system.tbl_log(person_id, zeitpunkt, app, oe_kurzbz, logtype_kurzbz, logdata, insertvon) VALUES(". From 75894104cc6f44d72b76b591096ab76c5ac60221 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Mon, 15 Jan 2018 14:52:08 +0100 Subject: [PATCH 117/126] Vereinheitlichung Titel/Bezeichnung Der Filename wird nun als Titel gesetzt und die Dokumentbezeichung als Bezeichnung --- content/akteupload.php | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/content/akteupload.php b/content/akteupload.php index 8dd49850e..6f0b422ba 100644 --- a/content/akteupload.php +++ b/content/akteupload.php @@ -129,30 +129,15 @@ if(isset($_POST['submitbild'])) $dokument->loadDokumenttyp($_REQUEST['dokumenttyp']); $extension = end(explode(".",strtolower($_FILES['file']['name']))); - $titel = $_REQUEST['dokumenttyp']; - - // da nur 32 zeichen gespeichert werden dürfen, muss anhand vom typ gekürzt werden - if($_REQUEST['dokumenttyp']=='Lebenslf') - $titel = $p->t('incoming/lebenslauf').".".$extension; - if($_REQUEST['dokumenttyp']=='LearnAgr') - $titel = $p->t('incoming/learningAgreement').".".$extension; - if($_REQUEST['dokumenttyp']=='Motivat') - $titel = $p->t('incoming/motivationsschreiben').".".$extension; - if($_REQUEST['dokumenttyp']=='Zeugnis') - $titel = $p->t('incoming/zeugnis').".".$extension; - if($_REQUEST['dokumenttyp']=='Lichtbil') - $titel = $p->t('incoming/lichtbild').".".$extension; - // alle auf 32 $akte->dokument_kurzbz = $_REQUEST['dokumenttyp']; - $akte->bezeichnung = substr($_FILES['file']['name'],0,32); // auf 32 $akte->person_id = $_GET['person_id']; //$akte->inhalt = base64_encode($content); $akte->mimetype = $_FILES['file']['type']; $akte->erstelltam = date('Y-m-d H:i:s'); $akte->gedruckt = false; - $akte->titel = $titel; - //$akte->bezeichnung = $dokument->bezeichnung; + $akte->titel = $akte->titel = cutString($_FILES['file']['name'], 32, '~', true); // Filename gekuerzt auf 32 Zeichen; + $akte->bezeichnung = cutString($dokument->bezeichnung_mehrsprachig[DEFAULT_LANGUAGE], 32); $akte->updateamum = date('Y-m-d H:i:s'); $akte->updatevon = $user; $akte->insertamum = date('Y-m-d H:i:s'); From c54bb2303d23695906eff6616b5962c8740ce3c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Mon, 15 Jan 2018 18:00:41 +0100 Subject: [PATCH 118/126] Fixed some PHP 5.3 incompatible Codeparts --- application/libraries/DocumentLib.php | 11 +++- application/libraries/ExtensionsLib.php | 52 ++++++++++--------- application/libraries/LogLib.php | 26 +++++----- application/libraries/REST_Controller.php | 21 ++++---- .../models/system/MessageToken_model.php | 21 ++++---- 5 files changed, 73 insertions(+), 58 deletions(-) diff --git a/application/libraries/DocumentLib.php b/application/libraries/DocumentLib.php index ba76eca6c..204b1d30f 100644 --- a/application/libraries/DocumentLib.php +++ b/application/libraries/DocumentLib.php @@ -15,8 +15,17 @@ class DocumentLib $this->ci =& get_instance(); exec('unoconv --version', $ret_arr); + if(isset($ret_arr[0])) - $this->unoconv_version = explode(' ', $ret_arr[0])[1]; + { + $hlp = explode(' ', $ret_arr[0]); + if(isset($hlp[1])) + { + $this->unoconv_version = $hlp[1]; + } + else + show_error('Could not get Unoconv Version'); + } else show_error('Unoconv not found - Please install Unoconv'); } diff --git a/application/libraries/ExtensionsLib.php b/application/libraries/ExtensionsLib.php index 0008ba087..25e9c666a 100644 --- a/application/libraries/ExtensionsLib.php +++ b/application/libraries/ExtensionsLib.php @@ -11,16 +11,16 @@ class ExtensionsLib const SQL_FILE_EXTENSION = '.sql'; // SQL scripts file extension const FILE_INPUT_NAME = 'extension'; // name of the HTTP parameter containing the archive data - const ARCHIVE_EXTENSIONS = array('.tgz', '.tbz2'); // accepted file extensions for an uploaded extension const EXTENSION_JSON_NAME = 'extension.json'; // file that contains extension data - - const UPLOAD_PATH = APPPATH.'tmp/'; // temporary directory to store the upload file and checks the archive - const EXTENSIONS_PATH = APPPATH.'extensions/'; // directory where all the extensions are const EXTENSIONS_DIR_NAME = 'extensions'; // name of the directories where will be created the symlinks + private $ARCHIVE_EXTENSIONS = array('.tgz', '.tbz2'); // accepted file extensions for an uploaded extension + private $UPLOAD_PATH; // temporary directory to store the upload file and checks the archive + private $EXTENSIONS_PATH; // directory where all the extensions are + // Directories that are part of the extension archive - const SOFTLINK_TARGET_DIRECTORIES = array('config', 'controllers', 'helpers', 'hooks', 'libraries', 'models', 'views', 'widgets'); + private $SOFTLINK_TARGET_DIRECTORIES = array('config', 'controllers', 'helpers', 'hooks', 'libraries', 'models', 'views', 'widgets'); private $_errorOccurred; // boolean, true if an error occurred while installing an extension private $_currentInstalledExtensionVersion; // contains the version of the current installation of an extension @@ -29,9 +29,11 @@ class ExtensionsLib * Class constructor */ public function __construct() - { + { + $this->UPLOAD_PATH = APPPATH.'tmp/'; + $this->EXTENSIONS_PATH = APPPATH.'extensions/'; // Get code igniter instance - $this->ci =& get_instance(); + $this->ci =& get_instance(); // Loads message configurationx $this->ci->config->load('message'); @@ -60,7 +62,7 @@ class ExtensionsLib $this->_printInfo('WARNING!!! Please do not change page or stop this procedure before it is finished'); - $this->_loadUploadLibrary(); // loads CI upload library + $this->_loadUploadLibrary(); // loads CI upload library $uploadData = $this->_uploadExtension(); // perform the upload of the file and returns info about it @@ -99,7 +101,7 @@ class ExtensionsLib { // Loads and executes neede SQL scripts $this->_loadSQLs( - ExtensionsLib::UPLOAD_PATH.$extensionJson->name.'/'.ExtensionsLib::SQL_DIRECTORY, + $this->UPLOAD_PATH.$extensionJson->name.'/'.ExtensionsLib::SQL_DIRECTORY, $extensionJson ); } @@ -157,7 +159,7 @@ class ExtensionsLib $extensionName = $result->retval[0]->name; // extension name $this->_delSoftLinks($extensionName); // not to be checked, could fail if the extension is disabled // remove the extension from the extensions installation directory - $delExtension = $this->_rrm(ExtensionsLib::EXTENSIONS_PATH.$extensionName); + $delExtension = $this->_rrm($this->EXTENSIONS_PATH.$extensionName); // Select all the version of this extension $this->ci->ExtensionsModel->addSelect('extension_id'); @@ -215,7 +217,7 @@ class ExtensionsLib $this->ci->load->library( 'upload', array( - 'upload_path' => ExtensionsLib::UPLOAD_PATH, + 'upload_path' => $this->UPLOAD_PATH, 'allowed_types' => '*', 'overwrite' => true ) @@ -237,7 +239,7 @@ class ExtensionsLib $uploadData = $this->ci->upload->data(); // retrives data about the uploaded file // Checks the file extension $uploadedFileExtension = '.'.pathinfo($uploadData['full_path'], PATHINFO_EXTENSION); - if (!in_array($uploadedFileExtension, ExtensionsLib::ARCHIVE_EXTENSIONS)) + if (!in_array($uploadedFileExtension, $this->ARCHIVE_EXTENSIONS)) { $this->_printFailure('file extension must be tgz OR tbz2'); @@ -251,7 +253,7 @@ class ExtensionsLib { // Returns the extension name and the full path of the uploaded file $_uploadExtension = new stdClass(); - $_uploadExtension->extensionName = str_replace(ExtensionsLib::ARCHIVE_EXTENSIONS, '', $uploadData['file_name']); + $_uploadExtension->extensionName = str_replace($this->ARCHIVE_EXTENSIONS, '', $uploadData['file_name']); $_uploadExtension->fullPath = $uploadData['full_path']; } } @@ -279,7 +281,7 @@ class ExtensionsLib // Extracts the uploaded file $pd = new PharData($uploadPath); - $pd->extractTo(ExtensionsLib::UPLOAD_PATH, null, true); + $pd->extractTo($this->UPLOAD_PATH, null, true); } catch (UnexpectedValueException $uva) { @@ -342,10 +344,10 @@ class ExtensionsLib $this->_printStart('Checking extension file system structure'); // Checks if the root directory of this archive has the same name of the extension - if (is_dir(ExtensionsLib::UPLOAD_PATH.$extensionName)) + if (is_dir($this->UPLOAD_PATH.$extensionName)) { // Checks if file extension.json exists inside the uploaded archive - if (!file_exists(ExtensionsLib::UPLOAD_PATH.$extensionName.'/'.ExtensionsLib::EXTENSION_JSON_NAME)) + if (!file_exists($this->UPLOAD_PATH.$extensionName.'/'.ExtensionsLib::EXTENSION_JSON_NAME)) { $this->_errorOccurred = true; $this->_printFailure('missing extension.json'); @@ -371,7 +373,7 @@ class ExtensionsLib // Decodes extension.json $extensionJson = json_decode( - file_get_contents(ExtensionsLib::UPLOAD_PATH.$extensionName.'/'.ExtensionsLib::EXTENSION_JSON_NAME) + file_get_contents($this->UPLOAD_PATH.$extensionName.'/'.ExtensionsLib::EXTENSION_JSON_NAME) ); // Checks if the parameter name of the extension.json has the same value of the extension name @@ -608,10 +610,10 @@ class ExtensionsLib { $this->_printStart('Moving the upload extension from upload folder to extension folder'); - $this->_printMessage('Current extension directory: '.ExtensionsLib::UPLOAD_PATH.$extensionName); - $this->_printMessage('Directory where it will be moved: '.ExtensionsLib::EXTENSIONS_PATH.$extensionName); + $this->_printMessage('Current extension directory: '.$this->UPLOAD_PATH.$extensionName); + $this->_printMessage('Directory where it will be moved: '.$this->EXTENSIONS_PATH.$extensionName); - if (rename(ExtensionsLib::UPLOAD_PATH.$extensionName.'/', ExtensionsLib::EXTENSIONS_PATH.$extensionName)) + if (rename($this->UPLOAD_PATH.$extensionName.'/', $this->EXTENSIONS_PATH.$extensionName)) { $this->_printSuccess(true); } @@ -652,7 +654,7 @@ class ExtensionsLib { $_delSoftLinks = false; - foreach (ExtensionsLib::SOFTLINK_TARGET_DIRECTORIES as $key => $targetDirectory) + foreach ($this->SOFTLINK_TARGET_DIRECTORIES as $key => $targetDirectory) { if (file_exists(APPPATH.$targetDirectory.'/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$extensionName)) { @@ -700,10 +702,10 @@ class ExtensionsLib private function _addSoftLinks($extensionName) { $_addSoftLinks = false; - $extensionPath = ExtensionsLib::EXTENSIONS_PATH.$extensionName.'/'; + $extensionPath = $this->EXTENSIONS_PATH.$extensionName.'/'; // For every target directory - foreach (ExtensionsLib::SOFTLINK_TARGET_DIRECTORIES as $key => $targetDirectory) + foreach ($this->SOFTLINK_TARGET_DIRECTORIES as $key => $targetDirectory) { // If destination of the symlink does not exist if (!file_exists(APPPATH.$targetDirectory.'/'.ExtensionsLib::EXTENSIONS_DIR_NAME.'/'.$extensionName)) @@ -746,9 +748,9 @@ class ExtensionsLib $this->_printMessage('Removing the extracted data from the upload directory'); if ($uploadData != null && isset($uploadData->extensionName) - && file_exists(ExtensionsLib::UPLOAD_PATH.$uploadData->extensionName)) + && file_exists($this->UPLOAD_PATH.$uploadData->extensionName)) { - $this->_rrm(ExtensionsLib::UPLOAD_PATH.$uploadData->extensionName); + $this->_rrm($this->UPLOAD_PATH.$uploadData->extensionName); } // If the upload of the file is a success and the extension name is present and no previous installation were found diff --git a/application/libraries/LogLib.php b/application/libraries/LogLib.php index be401f208..222ed7cc7 100644 --- a/application/libraries/LogLib.php +++ b/application/libraries/LogLib.php @@ -10,29 +10,29 @@ class LogLib const DEBUG = 'debug'; const ERROR = 'error'; const INFO = 'info'; - + const CALLER_PREFIX = '['; const CALLER_POSTFIX = ']'; const CLASS_POSTFIX = '->'; const LINE_SEPARATOR = ':'; - + /** * format */ private function format($class, $function, $line) { $formatted = LogLib::CALLER_PREFIX; - + if (!is_null($class) && $class != '') { $formatted .= $class.LogLib::CLASS_POSTFIX; } - + $formatted .= $function.LogLib::LINE_SEPARATOR.$line.LogLib::CALLER_POSTFIX.' '; - + return $formatted; } - + /** * getCaller */ @@ -44,20 +44,20 @@ class LogLib $class = ''; $function = ''; $line = ''; - - if (isset(debug_backtrace()[$classIndex]['class']) && debug_backtrace()[$classIndex]['class'] != '') + $backtrace_arr = debug_backtrace(); + if (isset($backtrace_arr[$classIndex]['class']) && $backtrace_arr[$classIndex]['class'] != '') { - $class = debug_backtrace()[$classIndex]['class']; + $class = $backtrace_arr[$classIndex]['class']; } - if (isset(debug_backtrace()[$functionIndex]['function']) && debug_backtrace()[$functionIndex]['function'] != '') + if (isset($backtrace_arr[$functionIndex]['function']) && $backtrace_arr[$functionIndex]['function'] != '') { - $function = debug_backtrace()[$functionIndex]['function']; + $function = $backtrace_arr[$functionIndex]['function']; } - if (isset(debug_backtrace()[$lineIndex]['line']) && debug_backtrace()[$lineIndex]['line'] != '') + if (isset($backtrace_arr[$lineIndex]['line']) && $backgrace_arr[$lineIndex]['line'] != '') { - $line = debug_backtrace()[$lineIndex]['line']; + $line = $backtrace_arr[$lineIndex]['line']; } return $this->format($class, $function, $line); diff --git a/application/libraries/REST_Controller.php b/application/libraries/REST_Controller.php index d1bd334c6..e32cf75f7 100644 --- a/application/libraries/REST_Controller.php +++ b/application/libraries/REST_Controller.php @@ -351,7 +351,7 @@ abstract class REST_Controller extends CI_Controller { self::HTTP_INTERNAL_SERVER_ERROR => 'INTERNAL SERVER ERROR', self::HTTP_NOT_IMPLEMENTED => 'NOT IMPLEMENTED' ]; - + /** * Extend this function to apply additional checking early on in the process * @@ -361,7 +361,7 @@ abstract class REST_Controller extends CI_Controller { protected function early_checks() { } - + /** * Constructor for the REST API * @@ -385,7 +385,8 @@ abstract class REST_Controller extends CI_Controller { } // Check to see if this is CI 3.x - if (explode('.', CI_VERSION, 2)[0] < 3) + $ci_version_number = explode('.', CI_VERSION, 2); + if ($ci_version_number[0] < 3) { throw new Exception('REST Server requires CodeIgniter 3.x'); } @@ -528,7 +529,7 @@ abstract class REST_Controller extends CI_Controller { { $this->_allow = $this->_detect_api_key(); } - + // Only allow ajax requests if ($this->input->is_ajax_request() === FALSE && $this->config->item('rest_ajax_only')) { @@ -607,7 +608,7 @@ abstract class REST_Controller extends CI_Controller { //$controller_method = $object_called . '_' . $this->request->method; // CamelCase compliant $controller_method = $this->request->method.ucfirst($object_called); - + // Do we want to log this method (if allowed by config)? $log_method = !(isset($this->methods[$controller_method]['log']) && $this->methods[$controller_method]['log'] === FALSE); @@ -737,7 +738,7 @@ abstract class REST_Controller extends CI_Controller { // Set the format header $this->output->set_content_type($this->_supported_formats[$this->response->format], strtolower($this->config->item('charset'))); $output = $this->format->factory($data)->{'to_' . $this->response->format}(); - + // An array must be parsed as a string, so as not to cause an array to string error // Json is the most appropriate form for such a datatype if ($this->response->format === 'array') @@ -967,7 +968,7 @@ abstract class REST_Controller extends CI_Controller { $this->rest->level = NULL; $this->rest->user_id = NULL; $this->rest->ignore_limits = FALSE; - + // Find the key from server or arguments if (($key = isset($this->_args[$api_key_variable]) ? $this->_args[$api_key_variable] : $this->input->server($key_name))) { @@ -1899,7 +1900,7 @@ abstract class REST_Controller extends CI_Controller { ], self::HTTP_UNAUTHORIZED); } } - + /** * Prepares for basic authentication * @@ -1977,7 +1978,7 @@ abstract class REST_Controller extends CI_Controller { preg_match_all('@(username|nonce|uri|nc|cnonce|qop|response)=[\'"]?([^\'",]+)@', $digest_string, $matches); $digest = (empty($matches[1]) || empty($matches[2])) ? [] : array_combine($matches[1], $matches[2]); - // For digest authentication the library function should return + // For digest authentication the library function should return // already stored password for that username, even if it is hashed $username = $this->_check_login($digest['username'], TRUE); // If there no password @@ -2154,4 +2155,4 @@ abstract class REST_Controller extends CI_Controller { ->get($this->config->item('rest_access_table')) ->num_rows() > 0; } -} \ No newline at end of file +} diff --git a/application/models/system/MessageToken_model.php b/application/models/system/MessageToken_model.php index 24b9f05ca..fb7f81a0a 100644 --- a/application/models/system/MessageToken_model.php +++ b/application/models/system/MessageToken_model.php @@ -88,10 +88,11 @@ class MessageToken_model extends CI_Model // If no errors occurred if ($msgs) { + $msgs_result = $msgs->result(); // If at least a record is present - if (count($msgs->result()) > 0) + if (count($msgs_result) > 0) { - $msg = $msgs->result()[0]; + $msg = $msgs_result[0]; $msgStatusResult = false; // pessimistic expectation @@ -133,7 +134,7 @@ class MessageToken_model extends CI_Model } } - return success($msgs->result()); + return success($msgs_result); } else { @@ -193,7 +194,8 @@ class MessageToken_model extends CI_Model // If data are present if (is_array($result->result()) && count($result->result()) > 0) { - $person = $result->result()[0]; + $personresults = $result->result(); + $person = $personresults[0]; // If it is an employee if ($person->mitarbeiter_uid != null) @@ -236,13 +238,14 @@ class MessageToken_model extends CI_Model $result = $this->db->query($sql, array($oe_kurzbz)); if ($result) // If no errors occurred { + $result_arr = $result->result(); // If data are present - if (is_array($result->result()) - && count($result->result()) > 0 - && is_object($result->result()[0]) - && isset($result->result()[0]->oe_kurzbz)) + if (is_array($result_arr) + && count($result_arr) > 0 + && is_object($result_arr[0]) + && isset($result_arr[0]->oe_kurzbz)) { - return success($result->result()[0]->oe_kurzbz); + return success($result_arr[0]->oe_kurzbz); } else { From 5aafa2153b67889d70f2ac1eb27c47b292863426 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 16 Jan 2018 17:59:19 +0100 Subject: [PATCH 119/126] =?UTF-8?q?Tabelle=20f=C3=BCr=20Verarbeitungstaeti?= =?UTF-8?q?gkeiten=20hinzugef=C3=BCgt=20zur=20Kategorisierung=20von=20Loge?= =?UTF-8?q?intr=C3=A4gen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/infocenter/infocenterData.php | 4 +- include/functions.inc.php | 14 +++++- include/personlog.class.php | 17 ++++++- system/dbupdate_3.3.php | 48 ++++++++++++++++++- 4 files changed, 75 insertions(+), 8 deletions(-) diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php index 6325f3b49..b8a7de4bd 100644 --- a/application/views/system/infocenter/infocenterData.php +++ b/application/views/system/infocenter/infocenterData.php @@ -10,7 +10,7 @@ ( SELECT zeitpunkt FROM system.tbl_log - WHERE app = \'aufnahme\' + WHERE taetigkeit_kurzbz = \'bewerbung\' AND person_id = p.person_id ORDER BY zeitpunkt DESC LIMIT 1 @@ -18,7 +18,7 @@ ( SELECT insertvon FROM system.tbl_log - WHERE app = \'aufnahme\' + WHERE taetigkeit_kurzbz = \'bewerbung\' AND person_id = p.person_id ORDER BY zeitpunkt DESC LIMIT 1 diff --git a/include/functions.inc.php b/include/functions.inc.php index eb49206f5..6f6c5cc3b 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -1082,9 +1082,19 @@ function cutString($string, $limit, $placeholderSign = '', $keepFileextension = } } -function PersonLog($person_id, $logtype_kurzbz, $logdata, $app, $oe_kurzbz = null, $user=null) +/** + * Erstellt einen Log Eintrag zu einer Person + * @param $person_id ID der Person. + * @param $logtype_kurzbz Typ des Logeintrages + * @param $logdata Array mit den zusaetzlichen Logdaten zu diesem Typ. + * @param $taetigkeit_kurzbz Kurzbz der Verarbeitungstaetigkeit. + * @param $app Applikation von der dieser Logeintrag stammt. (optional) + * @param $oe_kurzbz Kurzbz der Organisationseinheit. (optional) + * @param $user User der die Aktion durchgefuehrt hat. (optional) + */ +function PersonLog($person_id, $logtype_kurzbz, $logdata, $taetigkeit_kurzbz, $app = 'core', $oe_kurzbz = null, $user = null) { $personlog = new personlog(); - $personlog->log($person_id, $logtype_kurzbz, $logdata, $app, $oe_kurzbz, $user); + $personlog->log($person_id, $logtype_kurzbz, $logdata, $taetigkeit_kurzbz, $app, $oe_kurzbz, $user); } ?> diff --git a/include/personlog.class.php b/include/personlog.class.php index 03fa1e27b..1c008971c 100644 --- a/include/personlog.class.php +++ b/include/personlog.class.php @@ -29,6 +29,7 @@ class personlog extends basis_db public $person_id; public $zeitpunkt; // timestamp public $app; // varchar(32) + public $taetigkeit_kurzbz; // varchar(32) public $oe_kurzbz; // varchar(32) public $logtype_kurzbz; // varchar(32) public $logdata; @@ -42,12 +43,24 @@ class personlog extends basis_db parent::__construct(); } - public function log($person_id, $logtype_kurzbz, $logdata, $app='core', $oe_kurzbz=null, $user=null) + /** + * Erstellt einen Log Eintrag zu einer Person + * @param $person_id ID der Person. + * @param $logtype_kurzbz Typ des Logeintrages + * @param $logdata Array mit den zusaetzlichen Logdaten zu diesem Typ. + * @param $taetigkeit_kurzbz Kurzbz der Verarbeitungstaetigkeit. + * @param $app Applikation von der dieser Logeintrag stammt. + * @param $oe_kurzbz Kurzbz der Organisationseinheit. (optional) + * @param $user User der die Aktion durchgefuehrt hat. (optional) + * @return boolean true wenn erfolgreich, false im Fehlerfall. + */ + public function log($person_id, $logtype_kurzbz, $logdata, $taetigkeit_kurzbz, $app = 'core', $oe_kurzbz = null, $user = null) { - $qry = "INSERT INTO system.tbl_log(person_id, zeitpunkt, app, oe_kurzbz, + $qry = "INSERT INTO system.tbl_log(person_id, zeitpunkt, taetigkeit_kurzbz, app, oe_kurzbz, logtype_kurzbz, logdata, insertvon) VALUES(". $this->db_add_param($person_id).','. $this->db_add_param(date('Y-m-d H:i:s')).','. + $this->db_add_param($taetigkeit_kurzbz).','. $this->db_add_param($app).','. $this->db_add_param($oe_kurzbz).','. $this->db_add_param($logtype_kurzbz).','. diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 450c5f7bb..5af97ecff 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -1055,10 +1055,53 @@ if ($result = $db->db_query("SELECT conname FROM pg_constraint WHERE conname = ' echo '
    Created foreign key tbl_filters_oe_kurzbz_fkey'; } } - // End filters //--------------------------------------------------------------------------------------------------------------------- +// system.tbl_verarbeitungstaetigkeit +if (!$result = @$db->db_query("SELECT 1 FROM system.tbl_verarbeitungstaetigkeit")) +{ + $qry = " + CREATE TABLE system.tbl_verarbeitungstaetigkeit + ( + taetigkeit_kurzbz varchar(32) NOT NULL, + bezeichnung varchar(255), + bezeichnung_mehrsprachig varchar(255)[], + aktiv boolean DEFAULT true + ); + + ALTER TABLE system.tbl_verarbeitungstaetigkeit ADD CONSTRAINT pk_verarbeitungstaetigkeit PRIMARY KEY (taetigkeit_kurzbz); + + INSERT INTO system.tbl_verarbeitungstaetigkeit(taetigkeit_kurzbz, bezeichnung, bezeichnung_mehrsprachig, aktiv) + VALUES('bewerbung','Bewerbung','{\'Bewerbung\',\'Bewerbung\'}', true); + INSERT INTO system.tbl_verarbeitungstaetigkeit(taetigkeit_kurzbz, bezeichnung, bezeichnung_mehrsprachig, aktiv) + VALUES('aufnahme','Reihungs-/Aufnahmeverfahren','{\'Reihungs-/Aufnahmeverfahren\',\'Reihungs-/Aufnahmeverfahren\'}', true); + INSERT INTO system.tbl_verarbeitungstaetigkeit(taetigkeit_kurzbz, bezeichnung, bezeichnung_mehrsprachig, aktiv) + VALUES('bewertung','Bewertung/Benotung','{\'Bewertung/Benotung\',\'Bewertung/Benotung\'}', true); + INSERT INTO system.tbl_verarbeitungstaetigkeit(taetigkeit_kurzbz, bezeichnung, bezeichnung_mehrsprachig, aktiv) + VALUES('lehrauftraege','Lehraufträge','{\'Lehraufträge\',\'Lehraufträge\'}', true); + + GRANT SELECT, UPDATE, INSERT, DELETE ON system.tbl_verarbeitungstaetigkeit TO vilesci; + GRANT SELECT ON system.tbl_verarbeitungstaetigkeit TO web; + "; + if (!$db->db_query($qry)) + echo 'tbl_verarbeitungstaetigkeit '.$db->db_last_error().'
    '; + else + echo '
    Created new table system.tbl_verarbeitungstaetigkeit'; +} + +// system.tbl_log.taetigkeit_kurzbz +if (!$result = @$db->db_query("SELECT taetigkeit_kurzbz FROM system.tbl_log")) +{ + $qry = " + ALTER TABLE system.tbl_log ADD COLUMN taetigkeit_kurzbz varchar(32); + ALTER TABLE system.tbl_log ADD CONSTRAINT fk_log_taetigkeit FOREIGN KEY (taetigkeit_kurzbz) REFERENCES system.tbl_verarbeitungstaetigkeit(taetigkeit_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT; + "; + if (!$db->db_query($qry)) + echo 'system.tbl_log.taetigkeit_kurzbz '.$db->db_last_error().'
    '; + else + echo '
    Added Column taetigkeit_kurzbz to system.tbl_log'; +} // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

    Pruefe Tabellen und Attribute!

    '; @@ -1309,13 +1352,14 @@ $tabellen=array( "system.tbl_benutzerrolle" => array("benutzerberechtigung_id","rolle_kurzbz","berechtigung_kurzbz","uid","funktion_kurzbz","oe_kurzbz","art","studiensemester_kurzbz","start","ende","negativ","updateamum", "updatevon","insertamum","insertvon","kostenstelle_id","anmerkung"), "system.tbl_berechtigung" => array("berechtigung_kurzbz","beschreibung"), "system.tbl_extensions" => array("extension_id","name","version","description","license","url","core_version","dependencies","enabled"), - "system.tbl_log" => array("log_id","person_id","zeitpunkt","app","oe_kurzbz","logtype_kurzbz","logdata","insertvon"), + "system.tbl_log" => array("log_id","person_id","zeitpunkt","app","oe_kurzbz","logtype_kurzbz","logdata","insertvon","taetigkeit_kurzbz"), "system.tbl_logtype" => array("logtype_kurzbz", "data_schema"), "system.tbl_filters" => array("filter_id","app","dataset_name","filter_kurzbz","person_id","description","sort","default_filter","filter","oe_kurzbz"), "system.tbl_phrase" => array("phrase_id","app","phrase","insertamum","insertvon"), "system.tbl_phrasentext" => array("phrasentext_id","phrase_id","sprache","orgeinheit_kurzbz","orgform_kurzbz","text","description","insertamum","insertvon"), "system.tbl_rolle" => array("rolle_kurzbz","beschreibung"), "system.tbl_rolleberechtigung" => array("berechtigung_kurzbz","rolle_kurzbz","art"), + "system.tbl_verarbeitungstaetigkeit" => array("taetigkeit_kurzbz", "bezeichnung", "bezeichnung_mehrsprachig","aktiv"), "system.tbl_webservicelog" => array("webservicelog_id","webservicetyp_kurzbz","request_id","beschreibung","request_data","execute_time","execute_user"), "system.tbl_webservicerecht" => array("webservicerecht_id","berechtigung_kurzbz","methode","attribut","insertamum","insertvon","updateamum","updatevon","klasse"), "system.tbl_webservicetyp" => array("webservicetyp_kurzbz","beschreibung"), From b1699a812024c6c47997925ee9726b6b52cfd898 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 17 Jan 2018 08:42:50 +0100 Subject: [PATCH 120/126] Im Dokumentenkarteireiter wird bei den akzeptierten Dokumenten per Default das Uploaddatum angezeigt anstatt dem Datum an dem das Dokument akzeptiert wurde --- content/student/interessentdokumenteoverlay.xul.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/student/interessentdokumenteoverlay.xul.php b/content/student/interessentdokumenteoverlay.xul.php index 3cde73f5f..d932eae61 100644 --- a/content/student/interessentdokumenteoverlay.xul.php +++ b/content/student/interessentdokumenteoverlay.xul.php @@ -171,11 +171,11 @@ echo ''; class="sortDirectionIndicator" sort="rdf:http://www.technikum-wien.at/dokumentprestudent/rdf#bezeichnung" onclick="InteressentDokumenteAbgegebenTreeSort()" /> -
    @@ -198,160 +208,279 @@ $this->load->view('templates/FHC-Header', array('title' => 'InfocenterDetails',
    - + infoonly; ?>
    -
    -
    -
    -
    -
    -
    - - prestudentstatus->bestaetigtam) ? "ja" : "nein" ?> -
    -
    -
    -
    - - prestudentstatus->status_kurzbz ?> -
    -
    -
    -
    - - prestudentstatus->studiensemester_kurzbz ?> -
    -
    -
    -
    - - prestudentstatus->ausbildungssemester ?> -
    -
    -
    -
    -
    -
    - - widgetlib->widget( - 'Zgv_widget', - array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgv_code), - array('name' => 'zgv', 'id' => 'zgv', 'class' => 'form-control') - ); ?> -
    -
    -
    -
    - - -
    -
    -
    -
    - - zgvdatum), 'd.m.Y') ?>" - name="zgvdatum"> -
    -
    -
    -
    - - widgetlib->widget( - 'Nation_widget', - array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvnation_code), - array('name' => 'zgvnation', 'id' => 'zgvnation') - ); ?> -
    -
    -
    - - studiengangtyp === 'm') : ?> +
    +
    +
    -
    - widgetlib->widget( - 'Zgvmaster_widget', - array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmas_code), - array('name' => 'zgvmas', 'id' => 'zgvmas') - ); ?> +
    + + prestudentstatus->bestaetigtam) ? "ja" : "nein" ?>
    -
    - +
    + + prestudentstatus->status_kurzbz) ? $zgvpruefung->prestudentstatus->status_kurzbz : '' ?>
    -
    - zgvmadatum), 'd.m.Y') ?>" - name="zgvmadatum"> +
    + + prestudentstatus->studiensemester_kurzbz) ? $zgvpruefung->prestudentstatus->studiensemester_kurzbz : '' ?>
    -
    - widgetlib->widget( - 'Nation_widget', - array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmanation_code), - array('name' => 'zgvmanation', 'id' => 'zgvmanation') - ); ?> -
    -
    -
    - - -
    -
    - -
    -
    - - - prestudentstatus->bestaetigtam) && $zgvpruefung->prestudentstatus->status_kurzbz != 'Abgewiesener') : - ?> -
    -
    -
    -
    - - + + prestudentstatus->ausbildungssemester) ? $zgvpruefung->prestudentstatus->ausbildungssemester : '' ?>
    - - - -
    -
    -
    - -
    +
    +
    +
    +
    + + zgv_bez; + else + echo $this->widgetlib->widget( + 'Zgv_widget', + array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgv_code), + array('name' => 'zgv', 'id' => 'zgv') + ); ?> +
    +
    +
    +
    + + zgvort; + else: + ?> + + +
    +
    +
    +
    + + zgvdatum), 'd.m.Y'); + else: + ?> + zgvdatum), 'd.m.Y') ?>" + name="zgvdatum"> + +
    +
    +
    +
    + + zgvnation_bez; + else + echo $this->widgetlib->widget( + 'Nation_widget', + array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvnation_code), + array('name' => 'zgvnation', 'id' => 'zgvnation') + ); ?> +
    +
    +
    + + studiengangtyp === 'm') : ?> +
    +
    +
    + zgvmas_bez; + else + echo $this->widgetlib->widget( + 'Zgvmaster_widget', + array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmas_code), + array('name' => 'zgvmas', 'id' => 'zgvmas') + ); ?> +
    +
    +
    +
    + + zgvmaort; + else: + ?> + + +
    +
    +
    +
    + + zgvmadatum), 'd.m.Y'); + else: + ?> + zgvmadatum), 'd.m.Y') ?>" + name="zgvmadatum"> + +
    +
    +
    +
    + zgvmanation_bez; + else + echo $this->widgetlib->widget( + 'Nation_widget', + array(DropdownWidget::SELECTED_ELEMENT => $zgvpruefung->zgvmanation_code), + array('name' => 'zgvmanation', 'id' => 'zgvmanation') + ); ?> +
    +
    +
    + + + +
    +
    + +
    +
    + + + + +
    +
    +
    +
    +
    + + +
    + + +
    +
    +
    +
    +
    +
    + +
    +
    + + +
    - +
    @@ -359,11 +488,11 @@ $this->load->view('templates/FHC-Header', array('title' => 'InfocenterDetails',
    -
    +

    Notizen & Aktivitäten

    @@ -427,6 +556,7 @@ $this->load->view('templates/FHC-Header', array('title' => 'InfocenterDetails',
    +