diff --git a/addons/template/cis/index.html b/addons/template/cis/index.html deleted file mode 100755 index e69de29bb..000000000 diff --git a/addons/template/cis/init.js.php b/addons/template/cis/init.js.php deleted file mode 100755 index 174f620ed..000000000 --- a/addons/template/cis/init.js.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ -/** - * Initialisierung des Addons - */ -?> -if(typeof addon =='undefined') - var addon=Array(); - -addon.push( -{ - init: function(page, params) - { - // Diese Funktion wird nach dem Laden der Seite im CIS aufgerufen - - /* - switch(page) - { - case 'cis/private/tools/zeitaufzeichnung.php': - break; - - default: - break; - } - */ - } -}); diff --git a/addons/template/cis/vorlage_profil_array.php b/addons/template/cis/vorlage_profil_array.php deleted file mode 100755 index 3b4a04a65..000000000 --- a/addons/template/cis/vorlage_profil_array.php +++ /dev/null @@ -1,55 +0,0 @@ - - */ -/** - * Diese Datei fügt zusätzliche Links im CIS Profil ein - * Dazu muss die Datei umbenannt werden in profil_array.php - * - * Dazu wird ein Array aufgebaut welches die Links enthaelt. - * - * $menu = array('MeinLink'=>array('name'=>'Name des Links','link'=>'../path/to/file.php','target'='content')); - */ - - -// Unterschiedliche Links für Studierende und Mitarbeiter -if($type=='student') -{ - if(!$ansicht) - $menu['Notenliste']=array('name'=>$p->t('profil/leistungsbeurteilung'), 'link'=>'../lehre/notenliste.php', 'target'=>'content'); - $menu['LVPlan']=array('name'=>$p->t('profil/lvplanVon').' '.$user->nachname, 'link'=>'../lvplan/stpl_week.php?pers_uid='.$user->uid.'&type=student', 'target'=>'content'); -} -else -{ - if(!$ansicht) - { - $menu['Zeitwunsch']=array('name'=>$p->t('profil/zeitwuensche'), 'link'=>'zeitwunsch.php?uid='.$user->uid, 'target'=>'content'); - $menu['Lehrveranstaltungen']=array('name'=>$p->t('lvaliste/lehrveranstaltungen'), 'link'=>'lva_liste.php?uid='.$user->uid, 'target'=>'content'); - } - - if(check_lektor(get_uid())) - { - $menu['Zeitsperren']=array('name'=>$p->t('profil/zeitsperrenVon').' '.$user->nachname, 'link'=>'zeitsperre_days.php?days=30&lektor='.$user->uid, 'target'=>'content'); - } - - if($uid!=get_uid()) - { - $menu['LVPlan']=array('name'=>$p->t('profil/lvplanVon').' '.$user->nachname, 'link'=>'../lvplan/stpl_week.php?pers_uid='.$user->uid.'&type=lektor', 'target'=>'content'); - } -} -?> diff --git a/addons/template/content/index.html b/addons/template/content/index.html deleted file mode 100755 index e69de29bb..000000000 diff --git a/addons/template/content/init.js.php b/addons/template/content/init.js.php deleted file mode 100755 index 4209c2f12..000000000 --- a/addons/template/content/init.js.php +++ /dev/null @@ -1,90 +0,0 @@ - - */ -/** - * Initialisierung des Addons - */ -?> -addon.push( -{ - init: function() - { - // Diese Funktion wird nach dem Laden des FAS aufgerufen - - /* - - // Hinzufuegen eines zusaetzlichen Tabs bei Mitarbeitern mit einem Label darin - var tabitem = document.createElement("tab"); - tabitem.setAttribute("id","addon-template-tab"); - tabitem.setAttribute("label","Template"); - - var mitarbeitertabs = document.getElementById("mitarbeiter-tabs"); - mitarbeitertabs.appendChild(tabitem); - - var tabpanelitem = document.createElement("vbox"); - tabpanelitem.setAttribute("id","addon-template-tabpannel-vbox"); - var label = document.createElement("label"); - label.setAttribute("value","Template"); - tabpanelitem.appendChild(label); - - var mitarbeitertabpanels=document.getElementById("mitarbeiter-tabpanels-main"); - mitarbeitertabpanels.appendChild(tabpanelitem); - - // zusaetzliche Funktion beim klicken des Suchen Button bei Mitarbeitern hinzufuegen - searchbutton = document.getElementById("mitarbeiter-toolbar-button-search"); - searchbutton.addEventListener("command",AddonTemplateMitarbeiterSearch, true); - - // Menuepunkt hinzufuegen - statistikmenue = document.getElementById("menu-statistic-popup"); - - var menuentry = document.createElement("menuitem"); - menuentry.setAttribute("id","addons-template-mymenuentry"); - menuentry.setAttribute("label","Addon Template Menu Entry"); - menuentry.addEventListener("command",AddonTemplateMenuEntry, true); - - statistikmenue.appendChild(menuentry); - - */ - }, - selectMitarbeiter: function(person_id, mitarbeiter_uid) - { - }, - selectStudent: function(person_id, prestudent_id, student_uid) - { - }, - selectVerband: function(item) - { - }, - selectInstitut: function(institut) - { - }, - selectLektor: function(lektor) - { - } -}); - -function AddonTemplateMitarbeiterSearch() -{ - alert("AddonTemplateSearchButtonClicked"); -} - -function AddonTemplateMenuEntry() -{ - alert("AddonTemplateMenuEntry clicked"); -} diff --git a/addons/template/dbcheck.php b/addons/template/dbcheck.php deleted file mode 100755 index a5f9e8b30..000000000 --- a/addons/template/dbcheck.php +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - Addon Datenbank Check - - -

Addon Datenbank Check

'; - -$uid = get_uid(); -$rechte = new benutzerberechtigung(); -$rechte->getBerechtigungen($uid); - -if(!$rechte->isBerechtigt('basis/addon', null, 'suid')) -{ - exit('Sie haben keine Berechtigung für die Verwaltung von Addons'); -} - -echo '

Aktualisierung der Datenbank

'; - -// Code fuer die Datenbankanpassungen - -/* -if(!$result = @$db->db_query("SELECT 1 FROM addon.tbl_template_items")) -{ - - $qry = 'CREATE TABLE addon.tbl_template_items - ( - template_items_kurzbz varchar(32), - bezeichnung varchar(256) - );'; - - if(!$db->db_query($qry)) - echo 'addon.tbl_template_items: '.$db->db_last_error().'
'; - else - echo ' addon.tbl_template_items: Tabelle addon.template_items hinzugefuegt!
'; - -} -*/ - -echo '
Aktualisierung abgeschlossen

'; -echo '

Gegenprüfung

'; - - -// Liste der verwendeten Tabellen / Spalten des Addons -$tabellen=array( - "addon.tbl_template_items" => array("template_items_kurzbz","bezeichnung"), -); - - -$tabs=array_keys($tabellen); -$i=0; -foreach ($tabellen AS $attribute) -{ - $sql_attr=''; - foreach($attribute AS $attr) - $sql_attr.=$attr.','; - $sql_attr=substr($sql_attr, 0, -1); - - if (!@$db->db_query('SELECT '.$sql_attr.' FROM '.$tabs[$i].' LIMIT 1;')) - echo '
'.$tabs[$i].': '.$db->db_last_error().'
'; - else - echo $tabs[$i].': OK - '; - flush(); - $i++; -} -?> diff --git a/addons/template/index.html b/addons/template/index.html deleted file mode 100755 index e69de29bb..000000000 diff --git a/addons/template/install.php b/addons/template/install.php deleted file mode 100755 index d9644bd3e..000000000 --- a/addons/template/install.php +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - Addon Installation - - -

Addon Installation

'; - -$uid = get_uid(); -$rechte = new benutzerberechtigung(); -$rechte->getBerechtigungen($uid); - -if(!$rechte->isBerechtigt('basis/addon', null, 'suid')) -{ - exit('Sie haben keine Berechtigung für die Verwaltung von Addons'); -} - -if($fhcomplete_version>=$fhcomplete_target_version) -{ - echo 'Installiere Addon '.$addon_name.' Version '.$addon_version.'

'; - - /** - * Fuegen Sie hier Ihre Installationsroutine hinzu - */ - - echo '>> weiter zur Aktualisierung der Datenbank'; -} -else -{ - echo 'Dieses Addon funktioniert erst mit FHComplete Version '.$fhcomplete_target_version; - echo 'Installation abgebrochen'; -} -?> diff --git a/addons/template/locale/README.txt b/addons/template/locale/README.txt deleted file mode 100755 index fcf4930cd..000000000 --- a/addons/template/locale/README.txt +++ /dev/null @@ -1,6 +0,0 @@ -In diesem Ordner können Locale-Dateien abgelegt werden. -Diese überschreiben globale Locales die unter /locale/ abgelegt sind. - -In den Dateien müssen nicht alle Phrasen vorhanden sein. Es genügt, wenn nur die Phrasen vorhanden sind die überschrieben werden sollen. Alle anderen Phrasen werden aus dem Standard-Ordner übernommen. - -Die Datei mit der Phrase muss jedoch den selben Namen haben wie die Ursprungsdatei in der die Phrase enthalten ist. diff --git a/addons/template/locale/index.html b/addons/template/locale/index.html deleted file mode 100755 index e69de29bb..000000000 diff --git a/addons/template/soap/index.html b/addons/template/soap/index.html deleted file mode 100755 index e69de29bb..000000000 diff --git a/addons/template/system/index.html b/addons/template/system/index.html deleted file mode 100755 index e69de29bb..000000000 diff --git a/addons/template/system/vorlage_zip/README.txt b/addons/template/system/vorlage_zip/README.txt deleted file mode 100755 index 33c9e2414..000000000 --- a/addons/template/system/vorlage_zip/README.txt +++ /dev/null @@ -1,2 +0,0 @@ -In diesem Ordner können modifizierte ODT Vorlagen für die Dokumentenerstellung abgelegt werden. -Vorlagen die in diesem Ordner abgelegt werden, werden bevorzugt gegenüber jenen die unter /system/vorlage_zip abgelegt sind. diff --git a/addons/template/version.php b/addons/template/version.php deleted file mode 100755 index 447a26c2a..000000000 --- a/addons/template/version.php +++ /dev/null @@ -1,29 +0,0 @@ - diff --git a/addons/template/vilesci/index.php b/addons/template/vilesci/index.php deleted file mode 100755 index 6ed5cbfba..000000000 --- a/addons/template/vilesci/index.php +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - Template - - -

Template

'; - -$uid = get_uid(); -$rechte = new benutzerberechtigung(); -$rechte->getBerechtigungen($uid); - -if(!$rechte->isBerechtigt('basis/addon')) -{ - die('Sie haben keine Berechtigung fuer diese Seite'); -} -echo 'Template Addon Vilesci Integration'; -?> diff --git a/addons/template/vilesci/init.js.php b/addons/template/vilesci/init.js.php deleted file mode 100755 index 5ac9310ca..000000000 --- a/addons/template/vilesci/init.js.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ -/** - * Initialisierung des Addons - */ -?> -if(typeof addon =='undefined') - var addon=Array(); - -addon.push( -{ - init: function(page, params) - { - // Diese Funktion wird nach dem Laden der Seite im Vilesci aufgerufen - - /* - switch(page) - { - case 'vilesci/lehre/lehrveranstaltung.php': - break; - - default: - break; - } - */ - } -}); diff --git a/addons/template/vilesci/menu.inc.php b/addons/template/vilesci/menu.inc.php deleted file mode 100755 index 77e9c8ec3..000000000 --- a/addons/template/vilesci/menu.inc.php +++ /dev/null @@ -1,44 +0,0 @@ -, - */ -/** - * Hier koennen neue Menuepunkte im Vilesci definiert werden - */ - -// Hauptmenuepunkt hinzufuegen -$menu_addon = array -( - 'Template'=>array - ( - 'name'=>'Template', 'opener'=>'true', 'hide'=>'true', 'permissions'=>array('basis/addon'), 'image'=>'../../skin/images/vilesci_addons.png', - 'link'=>'left.php?categorie=Template', 'target'=>'nav', - 'TemplateEntry1'=>array('name'=>'Template Entry1', 'link'=>'../addons/template/vilesci/index.php', 'target'=>'main'), - 'TemplateEntry2'=>array('name'=>'Template Entry2', 'link'=>'../addons/template/vilesci/index.php', 'target'=>'main') - ) -); -$menu = array_merge($menu,$menu_addon); - -// Submenuepunkt hinzufuegen unter dem Hauptmenue Punkt "Admin" -$menu_addon = array -( - 'TemplateSubmenu'=>array('name'=>'Template', 'link'=>'../addons/template/vilesci/index.php', 'target'=>'main','permissions'=>array('basis/addon')), - -); -$menu['Admin'] = array_merge($menu['Admin'],$menu_addon); -?> diff --git a/addons/template/vilesci/vorlage_generateuid.inc.php b/addons/template/vilesci/vorlage_generateuid.inc.php deleted file mode 100755 index ebe2be3e2..000000000 --- a/addons/template/vilesci/vorlage_generateuid.inc.php +++ /dev/null @@ -1,69 +0,0 @@ - and -*/ -/** - * Benutzerdefinierte Funktion zur Generierung der UIDs - * Zur Aktivierung muss die Datei in generateuid.inc.php umbenannt werden - */ - -/** - * Generiert die UID für Studierende - * - * @param $stgkzl Studiengangskuerzel - * @param $jahr Studienjahr (zB 2014) - * @param $stgtyp Studiengangstyp einstellige Ziffer - * @param $matrikelnummer Personenkennzeichen des Studierenden - */ -function generateUID($stgkzl, $jahr, $stgtyp, $matrikelnummer) -{ - return $matrikelnummer; -} - -/** - * Gerneriert die Mitarbeiter UID - * Format v.nachname max 20 Zeichen - * Im Fall von Doppelnamen wird vor dem Bindestrich abgeschnitten - * - * @param $vorname Vorname - * @param $nachname Nachname - * @param $lektor Boolean true wenn Lektor sonst false - */ -function generateMitarbeiterUID($vorname, $nachname, $lektor, $fixangestellt=true) -{ - $bn = new benutzer(); - $uid=''; - - // Wenn ein Bindestrich vorhanden ist (Doppelname), dort abschneiden - if(mb_strpos($nachname,'-')!==false) - $nachname = mb_substr($nachname, 0, mb_strpos($nachname,'-')); - // Nachname wird so lange verkuerzt bis eine eindeutige UID entsteht die noch nicht vergeben ist - for($nn=18;$nn!=0;$nn--) - { - $uid = mb_substr($vorname,0,1); - $uid .= mb_substr($nachname,0,$nn); - - $uid = mb_str_replace(' ','',$uid); - $uid = mb_str_replace('-','',$uid); - - $uid = mb_strtolower($uid); - if(!$bn->uid_exists($uid)) - return $uid; - } - return false; -} diff --git a/addons/template/vilesci/vorlage_passwort.inc.php b/addons/template/vilesci/vorlage_passwort.inc.php deleted file mode 100755 index 0d922f6bc..000000000 --- a/addons/template/vilesci/vorlage_passwort.inc.php +++ /dev/null @@ -1,39 +0,0 @@ - - */ -/* - * Diese Datei überschreibt die Default-Funktionen zur Passwort Änderung - * Zur Aktivierung muss die Datei in passwort.inc.php umbenannt werden - * - * Ansonsten wird die Default Funktionalität unter /include/tw/passwort.inc.php verwendet - */ - -/** - * Aendert das Passwort - * @param $passwort_alt Altes (aktuelles) Passwort - * @param $passwort_neu neues Passwort - * @param $uid - UID/Benutzername des Users - * @return true wenn erfolgreich - Fehlermeldung im Fehlerfall - */ -function change_password($passwort_alt, $passwort_neu, $uid) -{ - return 'Passwort Änderung fehlgeschlagen.'; -} - -?> diff --git a/addons/template/vilesci/vorlage_serviceterminal.inc.php b/addons/template/vilesci/vorlage_serviceterminal.inc.php deleted file mode 100755 index 25debceea..000000000 --- a/addons/template/vilesci/vorlage_serviceterminal.inc.php +++ /dev/null @@ -1,72 +0,0 @@ - - */ - -// Raumtyp der per Default am Infoterminal angezeigt wird -$ServiceTerminalDefaultRaumtyp='EDV'; - -// Liste der Raumtypen die am Infoterminal angezeigt werden -$ServiceTerminalRaumtypen=array( - array("type"=>"EDV","beschreibung"=>" Freie 
 PC Räume ","img"=>""), - array("type"=>"HS","beschreibung"=>" Freie 
 Hörsäle ","img"=>""), - array("type"=>"SEM","beschreibung"=>" Freie 
 Seminarräume ","img"=>""), - array("type"=>"Lab","beschreibung"=>" Freie 
 Laborräume ","img"=>""), - ); - -/** - * Prueft ob die Karte verlaengert werden darf - * @param $uid - * @return Array mit boolean und Errormsg - */ -function ServiceTerminalCheckVerlaengerung($uid) -{ - if(!check_lektor($uid)) - { - - $konto = new konto(); - if($aktSemester= $konto->getLastStudienbeitrag($uid)) - { - return array(true,'Studienbeitrag für Semester '.$aktSemester.' bezahlt'); - } - else - { - return array(false,'Verlängerung der Karte ist derzeit nicht möglich da der Studienbeitrag noch nicht bezahlt wurde'); - } - } - else - return array(false,'Für Mitarbeiter ist eine Kartenverlängerung nicht möglich'); -} - -/** - * Liefert den Text der auf die Karte gedruckt werden soll oder einer Errormsg - * @param $uid UID des Users - * @return array mit Datum/Drucktext und errorMessage - */ -function ServiceTerminalGetDrucktext($uid) -{ - // hole Semester des letzten eingezahlten Studienbeitrages - $konto = new konto(); - if(!$aktSemester= $konto->getLastStudienbeitrag($uid)) - { - return array('datum'=>'', 'errorMessage'=>'Fehler beim Auslesen des Studienganges. Bitte wenden Sie sich an den Service Desk.'); - } - - return array('datum'=>'Gueltig fuer/valid for '.$aktSemester, 'errorMessage'=>''); -} -?> diff --git a/addons/template/xml/index.html b/addons/template/xml/index.html deleted file mode 100755 index e69de29bb..000000000 diff --git a/application/config/Events.php b/application/config/Events.php index 191a1eb98..14eb30d3e 100644 --- a/application/config/Events.php +++ b/application/config/Events.php @@ -3,6 +3,8 @@ if (! defined('BASEPATH')) exit('No direct script access allowed'); use CI3_Events as Events; +// build the menu for fhc + /** * NOTE(chris): example: Events::on('stv_conf_student', function (&$res) { diff --git a/application/controllers/CisHtml/Dashboard.php b/application/controllers/CisHtml/Dashboard.php index 243f16e1e..e4d422788 100755 --- a/application/controllers/CisHtml/Dashboard.php +++ b/application/controllers/CisHtml/Dashboard.php @@ -17,6 +17,7 @@ class Dashboard extends Auth_Controller 'index' => 'user:r' ) ); + } // ----------------------------------------------------------------------------------------------------------------- @@ -26,7 +27,7 @@ class Dashboard extends Auth_Controller * @return void */ public function index() - { + { $this->load->view('CisHtml/Dashboard.php'); } } diff --git a/application/controllers/api/frontend/v1/Lehre.php b/application/controllers/api/frontend/v1/Lehre.php new file mode 100644 index 000000000..a36b673b4 --- /dev/null +++ b/application/controllers/api/frontend/v1/Lehre.php @@ -0,0 +1,72 @@ +. + */ + +if (! defined('BASEPATH')) exit('No direct script access allowed'); + + +class Lehre extends FHCAPI_Controller +{ + + /** + * Object initialization + */ + public function __construct() + { + parent::__construct([ + 'lvStudentenMail' => self::PERM_LOGGED, + ]); + + + + } + + //------------------------------------------------------------------------------------------------------------------ + // Public methods + + /** + * constructs the emails of the groups from a lehrveranstaltung + */ + public function lvStudentenMail() + { + $lehreinheit_id = $this->input->get("lehreinheit_id",TRUE); + + // return early if the required parameter is missing + if(!isset($lehreinheit_id)) + { + $this->terminateWithError('Missing required parameter', self::ERROR_TYPE_GENERAL); + } + + $this->load->model('education/Lehreinheit_model', 'LehreinheitModel'); + + $studentenMails = $this->LehreinheitModel->getStudentenMail($lehreinheit_id); + + $studentenMails = $this->getDataOrTerminateWithError($studentenMails); + + //convert array of objects into array of strings + $studentenMails = array_map(function($element){ + return $element->mail; + }, $studentenMails); + + $this->terminateWithSuccess($studentenMails); + } + + + + +} + diff --git a/application/controllers/api/frontend/v1/LvMenu.php b/application/controllers/api/frontend/v1/LvMenu.php new file mode 100644 index 000000000..97cdcc294 --- /dev/null +++ b/application/controllers/api/frontend/v1/LvMenu.php @@ -0,0 +1,803 @@ +. + */ + +if (! defined('BASEPATH')) exit('No direct script access allowed'); + + +use CI3_Events as Events; + +/** + * This controller operates between (interface) the JS (GUI) and the SearchBarLib (back-end) + * Provides data to the ajax get calls about the searchbar component + * This controller works with JSON calls on the HTTP GET and the output is always JSON + */ +class LvMenu extends FHCAPI_Controller +{ + + + /** + * Object initialization + */ + public function __construct() + { + parent::__construct([ + 'getLvMenu' => self::PERM_LOGGED + ]); + + $this->load->library("PhrasesLib"); + $this->loadPhrases(array('global')); + } + + //------------------------------------------------------------------------------------------------------------------ + // Public methods + + /** + * + */ + public function getLvMenu($lvid, $studiensemester_kurzbz) + { + + // return early if parameters are missing + if(!isset($lvid) || !isset($studiensemester_kurzbz)) + $this->terminateWithError('Missing parameters', self::ERROR_TYPE_GENERAL); + + // FH-Core Variables + // ########################################################################################## + + require_once(FHCPATH.'config/cis.config.inc.php'); + require_once(FHCPATH.'include/lehrveranstaltung.class.php'); + require_once(FHCPATH.'include/studiensemester.class.php'); + require_once(FHCPATH.'include/lehreinheit.class.php'); + require_once(FHCPATH.'include/vertrag.class.php'); + require_once(FHCPATH.'include/functions.inc.php'); + require_once(FHCPATH.'include/benutzerberechtigung.class.php'); + require_once(FHCPATH.'include/studiengang.class.php'); + require_once(FHCPATH.'include/phrasen.class.php'); + require_once(FHCPATH.'include/lvangebot.class.php'); + require_once(FHCPATH.'include/lehre_tools.class.php'); + // data gets not returned + //require_once(FHCPATH.'addons/moodle/lib/LogicCourses.php'); + //require_once(FHCPATH.'addons/moodle/lib/Database.php'); + + // get the sprache + $sprache = getSprache(); + $p = new phrasen($sprache); + //$p = $this->$p; + + // get the db + if (!$db = new basis_db()) + die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung')); + + // get the user + if (!$user=get_uid()) + die($p->t('global/nichtAngemeldet')); + + // check if is_lector + if(check_lektor($user)) + $is_lector=true; + else + $is_lector=false; + + // definition of user_is_allowed_to_upload + $user_is_allowed_to_upload=false; + + // rechte des users + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($user); + + $angezeigtes_stsem = $studiensemester_kurzbz; + + // load lehreinheit + $lehreinheit = new lehreinheit($lvid); + + // load lehrveranstaltung + $lv_obj = new lehrveranstaltung(); + $lv_obj->load($lvid); + $lv=$lv_obj; + + // define studiengang_kz / semester / lehrverzeichnis + $studiengang_kz = $lv->studiengang_kz; + $semester = $lv->semester; + $short = $lv->lehreverzeichnis; + + // load studiengang + $stg_obj = new studiengang(); + $stg_obj->load($lv->studiengang_kz); + $kurzbz = $stg_obj->kuerzel; + + $short_name = $lv->bezeichnung; + $short_short_name = $lv->lehreverzeichnis; + + // create documents directory + $dir_name=DOC_ROOT.'/documents'; + if(!is_dir($dir_name)) + { + exec('mkdir -m 755 '.escapeshellarg($dir_name)); + exec('sudo chown www-data:teacher '.escapeshellarg($dir_name)); + } + + // angemeldet + $angemeldet = true; + if(defined('CIS_LEHRVERANSTALTUNG_WENNANGEMELDET_DETAILS_ANZEIGEN') && CIS_LEHRVERANSTALTUNG_WENNANGEMELDET_DETAILS_ANZEIGEN && !$is_lector) + { + $angemeldet = false; + + $lehrveranstaltung_obj = new lehrveranstaltung(); + $result = $lehrveranstaltung_obj->getLehreinheitenOfLv($lvid, $user, $angezeigtes_stsem); + + if(count($result)>0) + $angemeldet = true; + } + + // lehrfach + $lehrfach_id=''; + + if(defined('CIS_LEHRVERANSTALTUNG_LEHRFACH_ANZEIGEN') && CIS_LEHRVERANSTALTUNG_LEHRFACH_ANZEIGEN) + { + // Wenn der eingeloggte User zu einer der Lehreinheiten zugeteilt ist + // wird zusätzlich das Lehrfach der Lehreinheit angezeigt. + if($is_lector ) + { + $result = $lehreinheit->lehrfach_id_mitarbeiter($angezeigtes_stsem,$user,$lvid); + } + else + { + $result = $lehreinheit->lehrfach_id_studierender($angezeigtes_stsem,$user,$lvid); + + } + + // Wenn die LV mehrere verschiedenen Lehrfaecher hat, und der User zu mehreren davon zugeteilt ist + // wird das Lehrfach nicht angezeigt damit es nicht zu verwirrungen kommt. + if(count($result)==1 && $row = $result[0]) + { + $lehrfach_id=$row->lehrfach_id; + } + } + + // lektor der lv + $lektor_der_lv=false; + + $db_result = $lehreinheit->lehreinheitInfo($lvid,$angezeigtes_stsem,$lehrfach_id); + + $num_rows_result = count($db_result); + + if($num_rows_result > 0) + { + + foreach($db_result as $row_lector) + { + + // Lektor wird erst angezeigt wenn der Auftrag erteilt wurde + if (defined('CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON') + && CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON != '') + { + $vertrag = new vertrag(); + if (!$vertrag->isVertragErteiltLV($lvid, $angezeigtes_stsem, $row_lector->uid)) + { + continue; + } + } + + + if($user==$row_lector->uid) + { + $lektor_der_lv=true; + $user_is_allowed_to_upload=true; + } + + // style of the link + if($row_lector->lvleiter=='t') + $style='style="font-weight: bold"'; + else + $style=''; + + } + } + + //Berechtigungen auf Fachbereichsebene + $lehrfach_oe_kurzbz_arr = array(); + if($result = $lv_obj->getBerechtigungenAufFachberechsebene($lvid,$angezeigtes_stsem)) + { + foreach($result as $row) + { + $lehrfach_oe_kurzbz_arr[]=$row->oe_kurzbz; + if($rechte->isBerechtigt('lehre',$row->oe_kurzbz) || $rechte->isBerechtigt('assistenz',$stg_obj->oe_kurzbz)){ + $user_is_allowed_to_upload=true; + } + } + } + + // FH-Core Menu Logic + // ########################################################################################## + + $menu = array(); + + //todo: digitale anwesenheiten sollte ein Events.php im config/ folder beinhalten + //$this->fhc_menu_digitale_anwesenheiten($menu, $angemeldet, $studiengang_kz, $semester, $lvid, $angezeigtes_stsem, $p); + + $this->fhc_menu_lvinfo($menu, $lvid, $studiengang_kz, $lektor_der_lv, $is_lector, $rechte, $lehrfach_oe_kurzbz_arr, $p); + + $this->fhc_menu_feedback($menu, $angemeldet, $lvid, $p); + + $this->fhc_menu_gesamtnote($menu, $angemeldet, $lvid, $lv_obj, $is_lector, $angezeigtes_stsem, $p); + + $this->fhc_menu_emailStudierende($menu, $angemeldet, $lehreinheit->lehreinheit_id, $p); + + $this->fhc_menu_abmeldung($menu, $user, $is_lector, $lvid, $angezeigtes_stsem, $p); + + $this->fhc_menu_lehretools($menu, $lvid, $angezeigtes_stsem, $sprache); + + $this->fhc_menu_anrechnungStudent($menu, $rechte, $lvid, $angezeigtes_stsem, $p); + + $this->fhc_menu_anrechnungLector($menu, $rechte, $angezeigtes_stsem, $p); + + // LEGACY FH-CORE MENU POINTS + //$this->fhc_menu_notenliste($menu, $angemeldet, $is_lector, $lvid, $studiengang_kz, $angezeigtes_stsem, $kurzbz, $semester, $short_short_name, $p); + //$this->fhc_menu_download($menu, $angemeldet, $user_is_allowed_to_upload, $rechte, $semester, $kurzbz, $studiengang_kz, $short_short_name, $short, $p); + //$this->fhc_menu_semesterplan($menu, $angemeldet, $user_is_allowed_to_upload, $rechte, $lvid, $studiengang_kz, $kurzbz, $semester, $short_short_name, $p); + //$this->fhc_menu_stundenupload($menu, $angemeldet, $lvid, $is_lector, $studiengang_kz, $kurzbz, $semester, $short, $short_short_name, $p); + //$this->fhc_menu_pinboard($menu, $angemeldet, $is_lector, $studiengang_kz, $semester, $p); + + + // Addons Menu Logic + // ########################################################################################## + + $params = [ + 'sprache'=>$sprache, + 'p'=>$p, + 'ci_p'=> $this->p, + 'db'=>$db, + 'user'=>$user, + 'is_lector'=>$is_lector, + 'user_is_allowed_to_upload'=>$user_is_allowed_to_upload, + 'rechte'=>$rechte, + 'angezeigtes_stsem'=>$angezeigtes_stsem, + 'lehreinheit'=>$lehreinheit, + 'lv_obj'=>$lv_obj, + 'lv'=>$lv, + 'lvid'=>$lvid, + 'studiengang_kz'=>$studiengang_kz, + 'semester'=>$semester, + 'short'=>$short, + 'stg_obj'=>$stg_obj, + 'kurzbz'=>$kurzbz, + 'short_name'=>$short_name, + 'short_short_name'=>$short_short_name, + 'dir_name'=>$dir_name, + 'angemeldet'=>$angemeldet, + 'lehrfach_id'=>$lehrfach_id, + 'lektor_der_lv'=>$lektor_der_lv, + 'lehrfach_oe_kurzbz_arr'=>$lehrfach_oe_kurzbz_arr, + ]; + + Events::trigger('lvMenuBuild', + // passing $menu per reference + function & () use (&$menu) { + return $menu; + }, + $params + ); + + // Menu sortieren + // ########################################################################################## + + foreach ($menu as $key => $row){ + + // removes menu points that are not needed in the c4 lvUebersicht + if( !array_key_exists('c4_link',$row) || !array_key_exists('c4_icon',$row)){ + unset($menu[$key]); + continue; + } + + // fills pos array to sort the menu + $pos[$key] = $row['position']; + + } + + array_multisort($pos, SORT_ASC, SORT_NUMERIC, $menu); + + // DEBUGGING + $this->addMeta("is_lector",$is_lector); + $this->addMeta("lektor_der_lv",$lektor_der_lv); + + // HTTP response + // ########################################################################################## + + $this->terminateWithSuccess($menu); + + } + + + private function fhc_menu_digitale_anwesenheiten(&$menu, $angemeldet, $studiengang_kz, $semester, $lvid, $angezeigtes_stsem, $p){ + + // DIGITALE ANWESENHEITEN + if (CIS_LEHRVERANSTALTUNG_ANWESENHEIT_ANZEIGEN && $angemeldet) { + + $menu[] = array + ( + 'id' => 'core_menu_digitale_anwesenheitslisten', + 'position' => '50', + 'name' => $p->t('lehre/digiAnw'), + 'c4_icon' => base_url('skin/images/button_kreuzerltool.png'), + 'c4_link' => base_url("index.ci.php/extensions/FHC-Core-Anwesenheiten/?stg_kz=$studiengang_kz&sem=$semester&lvid=$lvid&sem_kurzbz=$angezeigtes_stsem&nav=false"), + 'c4_linkList' => [] + ); + } + } + + private function fhc_menu_lvinfo(&$menu, $lvid, $studiengang_kz, $lektor_der_lv, $is_lector, $rechte, $lehrfach_oe_kurzbz_arr, $p){ + + // LVINFO + if(!defined('CIS_LEHRVERANSTALTUNG_LVINFO_ANZEIGEN') || CIS_LEHRVERANSTALTUNG_LVINFO_ANZEIGEN) + { + $c4_linkList=array(); + + // Bearbeiten Button anzeigen wenn Lektor der LV und bearbeiten fuer Lektoren aktiviert ist + // Oder Berechtigung zum Bearbeiten eingetragen ist + if((!defined('CIS_LEHRVERANSTALTUNG_LVINFO_LEKTOR_EDIT') && $lektor_der_lv) + || (defined('CIS_LEHRVERANSTALTUNG_LVINFO_LEKTOR_EDIT') && CIS_LEHRVERANSTALTUNG_LVINFO_LEKTOR_EDIT==true && $lektor_der_lv) + || $rechte->isBerechtigt('lehre/lvinfo',$studiengang_kz) + || $rechte->isBerechtigtMultipleOe('lehre/lvinfo', $lehrfach_oe_kurzbz_arr) + ) + { + $c4_linkList[]= [$p->t('lehre/lvInfoBearbeiten'), 'ects/index.php?lvid='.$lvid]; + } + elseif ($is_lector) + { + $c4_linkList[]= ["Bearbeiten der LV-Infos derzeit gesperrt",'#']; + } + + $menu[]=array + ( + 'id'=>'core_menu_lvinfo', + 'position'=>'10', + 'name'=>$p->t('lehre/lehrveranstaltungsinformation'), + 'icon'=>'../../../skin/images/button_lvinfo.png', + 'link'=>'', + 'c4_icon'=> base_url('skin/images/button_lvinfo.png'), + 'c4_link'=>'', + 'c4_linkList'=>$c4_linkList + ); + } + } + + private function fhc_menu_feedback(&$menu, $angemeldet, $lvid, $p){ + //FEEDBACK + if((!defined('CIS_LEHRVERANSTALTUNG_FEEDBACK_ANZEIGEN') || CIS_LEHRVERANSTALTUNG_FEEDBACK_ANZEIGEN) && $angemeldet) + { + $menu[]=array + ( + 'id'=>'core_menu_feedback', + 'position'=>'60', + 'name'=>$p->t('lehre/feedback'), + 'c4_icon'=> base_url('skin/images/button_feedback.png'), + 'c4_link'=> base_url('feedback.php?lvid='.$lvid), + ); + } + } + + private function fhc_menu_gesamtnote(&$menu, $angemeldet, $lvid, $lv_obj, $is_lector, $angezeigtes_stsem, $p){ + //Gesamtnote + if($is_lector && ((!defined('CIS_LEHRVERANSTALTUNG_GESAMTNOTE_ANZEIGEN') || CIS_LEHRVERANSTALTUNG_GESAMTNOTE_ANZEIGEN) && $angemeldet)) + { + if($lv_obj->benotung) + { + $menu[]=array + ( + 'id'=>'core_menu_gesamtnote', + 'position'=>'80', + 'name'=>$p->t('lehre/gesamtnote'), + 'c4_icon'=> base_url('skin/images/button_endnote.png'), + 'c4_link'=> base_url('cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php?lvid='.urlencode($lvid).'&stsem='.urlencode($angezeigtes_stsem)) + //'c4_link'=> base_url('benotungstool/lvgesamtnoteverwalten.php?lvid='.urlencode($lvid).'&stsem='.urlencode($angezeigtes_stsem)) + ); + } + else + { + $menu[]=array + ( + 'id'=>'core_menu_gesamtnote', + 'position'=>'80', + 'name'=>$p->t('lehre/gesamtnote'), + 'c4_icon'=>base_url('skin/images/button_endnote.png'), + 'c4_link'=>'#', + 'c4_linkList'=>[[$p->t('lehre/noteneingabedeaktiviert'),'#']], + ); + } + } + } + + + + private function fhc_menu_emailStudierende(&$menu, $angemeldet, $lehreinheit_id,$p){ + // Email an Studierende + if((!defined('CIS_LEHRVERANSTALTUNG_MAILSTUDIERENDE_ANZEIGEN') || CIS_LEHRVERANSTALTUNG_MAILSTUDIERENDE_ANZEIGEN) && $angemeldet) + { + $mailto='mailto:'; + $c4_linkList=array(); + + // load the Lehreinheit model and get the student mails + $this->load->model('education/Lehreinheit_model','LehreinheitModel'); + $studentMails = $this->LehreinheitModel->getStudentenMail($lehreinheit_id); + + // get the data of the database result and map the array of objects to their object property + $studentMails = $this->getDataOrTerminateWithError($studentMails, 'No student mails found'); + + // emails used to create the mailto link + $mailtoMails = array(); + $noMails = array(); + $noMailLink = FALSE; + + foreach($studentMails as $mail){ + + if($mail->mail == 'nomail'){ + $noMails[]=$mail->gruppe_kurzbz; + $noMailLink= TRUE; + }else{ + $mailtoMails[]=$mail->mail; + } + } + + if($noMailLink){ + $c4_linkList[]=[$p->t('lehre/keinMailverteiler',array(implode(" ",$noMails))), '#']; + $link_onclick='alert(\''.$p->t('lehre/keinMailverteiler',array(implode(" ",$noMails))).'\');'; + }else{ + $link_onclick=''; + } + + $mailto .= implode(',',$mailtoMails); + + $menu[]=array + ( + 'id'=>'core_menu_mailanstudierende', + 'position'=>'100', + 'name'=>$p->t('lehre/mail'), + 'c4_icon'=>base_url('skin/images/button_feedback.png'), + 'c4_link'=>$mailto, + 'c4_linkList'=>$c4_linkList, + 'link_onclick'=>$link_onclick + ); + } + } + + + + private function fhc_menu_abmeldung(&$menu, $user, $is_lector, $lvid, $angezeigtes_stsem, $p){ + if(!defined('CIS_LEHRVERANSTALTUNG_ABMELDUNG_ANZEIGEN') || CIS_LEHRVERANSTALTUNG_ABMELDUNG_ANZEIGEN) + { + if(!$is_lector) + { + $lvangebot = new lvangebot(); + $gruppen = $lvangebot->AbmeldungMoeglich($lvid, $angezeigtes_stsem, $user); + if(count($gruppen)>0) + { + $menu[]=array + ( + 'id'=>'core_menu_abmeldung', + 'position'=>'120', + 'name'=>$p->t('lehre/abmelden'), + 'c4_icon'=>base_url('skin/images/button_studiupload.png'), + 'c4_link'=>base_url('abmeldung.php?lvid='.urlencode($lvid).'&stsem='.urlencode($angezeigtes_stsem)), + ); + + } + } + } + } + + private function fhc_menu_lehretools(&$menu, $lvid, $angezeigtes_stsem, $sprache){ + //Anzeigen von zusaetzlichen Lehre-Tools + $lehretools = new lehre_tools(); + if($lehretools->getTools($lvid, $angezeigtes_stsem)) + { + if(count($lehretools->result)>0) + { + foreach($lehretools->result as $row) + { + $menu[]=array + ( + 'id'=>'core_menu_lehretools_'.$row->lehre_tools_id, + 'position'=>'1000', + 'name'=>$row->bezeichnung[$sprache], + 'c4_icon'=>base_url('cms/dms.php?id='.$row->logo_dms_id), + 'c4_link'=>$row->basis_url, + ); + } + } + } + } + + private function fhc_menu_anrechnungStudent(&$menu, $rechte, $lvid, $angezeigtes_stsem, $p){ + // Anerkennung nachgewiesener Kenntnisse (Anrechnung) - Anzeige fuer Studenten + if((!defined('CIS_LEHRVERANSTALTUNG_ANRECHNUNG_ANZEIGEN') || CIS_LEHRVERANSTALTUNG_ANRECHNUNG_ANZEIGEN) + && $rechte->isBerechtigt('student/anrechnung_beantragen')) + { + $menu[]=array + ( + 'id'=>'core_menu_anerkennungNachgewiesenerKenntnisse', + 'position'=>'128', + 'name'=>$p->t('lehre/anrechnung'), + 'c4_icon'=>base_url('skin/images/button_listen.png'), + 'c4_link' => base_url('index.ci.php/lehre/anrechnung/RequestAnrechnung?studiensemester='.urlencode($angezeigtes_stsem).'&lv_id='.urlencode($lvid)) + ); + } + } + + private function fhc_menu_anrechnungLector(&$menu, $rechte, $angezeigtes_stsem, $p){ + // Anerkennung nachgewiesener Kenntnisse (Anrechnung) - Anzeige fuer LektorInnen + if((!defined('CIS_LEHRVERANSTALTUNG_ANRECHNUNG_ANZEIGEN') || CIS_LEHRVERANSTALTUNG_ANRECHNUNG_ANZEIGEN) + && $rechte->isBerechtigt('lehre/anrechnung_empfehlen')) + { + $menu[]=array + ( + 'id'=>'core_menu_anerkennungNachgewiesenerKenntnisse_empfehlen', + 'position'=>'128', + 'name'=>$p->t('lehre/anrechnungen'), + 'c4_icon'=> base_url('skin/images/button_listen.png'), + 'c4_link' => base_url('index.ci.php/lehre/anrechnung/ReviewAnrechnungUebersicht?studiensemester='.urlencode($angezeigtes_stsem)) + ); + } + } + +// OLD PINBOARD MENU POINT ********************************************************************************************************************************************* +/* +private function fhc_menu_pinboard(&$menu, $angemeldet, $is_lector, $studiengang_kz, $semester, $p){ + // Pinboard + if((!defined('CIS_LEHRVERANSTALTUNG_PINBOARD_ANZEIGEN') || CIS_LEHRVERANSTALTUNG_PINBOARD_ANZEIGEN) && $angemeldet) + { + $text=''; + if($is_lector) + $text.= "".$p->t('profil/adminstration').""; + + // this is the new cis4 version + $menu[]=array + ( + 'id'=>'core_menu_pinboard', + 'position'=>'110', + 'name'=>$p->t('lehre/pinboard'), + 'c4_icon'=>base_url('skin/images/button_pinboard.png'), + 'c4_link'=>base_url('CisHtml/Cms/news'), + 'text'=>$text + ); + + + } + } +*/ + +// LEGACY MENU POINTS THAT USED OWN DIRECTORIES ************************************************************************************************************************* +/* + private function fhc_menu_semesterplan(&$menu, $angemeldet, $user_is_allowed_to_upload, $rechte, $lvid, $studiengang_kz, $kurzbz, $semester, $short_short_name, $p){ + + // Semesterplan + if((!defined('CIS_LEHRVERANSTALTUNG_SEMESTERPLAN_ANZEIGEN') || CIS_LEHRVERANSTALTUNG_SEMESTERPLAN_ANZEIGEN) && $angemeldet) + { + $dir_name = $this->ensureDirectoryExists($kurzbz, $semester, $short_short_name, 'semesterplan','teacher'); + + $dir_empty = $this->isDirectoryEmpty($dir_name); + + if($dir_empty == false) + { + $link = $dir_name.'/'; + } + else + $link = ''; + + $text=''; + if((!defined('CIS_LEHRVERANSTALTUNG_SEMESTERPLAN_LEKTOR_EDIT') && $user_is_allowed_to_upload) + || (defined('CIS_LEHRVERANSTALTUNG_SEMESTERPLAN_LEKTOR_EDIT') && CIS_LEHRVERANSTALTUNG_SEMESTERPLAN_LEKTOR_EDIT==true && $user_is_allowed_to_upload) + || $rechte->isBerechtigt('admin',$studiengang_kz) || $rechte->isBerechtigt('lehre',$studiengang_kz)) + { + $text.= ''; + $text.= $p->t('lehre/semesterplanUpload').""; + + $text.= '   '; + $text.= $p->t('lehre/semesterplanVorlage'); + $text.= ' [html]'; + $text.= ''; + $text.= ' '; + $text.= '[doc]'; + $text.= ''; + $text.= ' ('.$p->t('lehre/semesterplanVorlageHilfe').')'; + } + + $menu[]=array + ( + 'id'=>'core_menu_semesterplan', + 'position'=>'20', + 'name'=>$p->t('lehre/semesterplan'), + 'icon'=>'../../../skin/images/button_semplan.png', + 'link'=>$link, + 'c4_icon'=> base_url('skin/images/button_semplan.png'), + 'c4_link'=> $link, + 'link_target'=>'_blank', + 'text'=>$text + ); + } + } + + private function fhc_menu_stundenupload(&$menu, $angemeldet, $lvid, $is_lector, $studiengang_kz, $kurzbz, $semester, $short, $short_short_name, $p){ + // Studentenupload + if((!defined('CIS_LEHRVERANSTALTUNG_STUDENTENUPLOAD_ANZEIGEN') || CIS_LEHRVERANSTALTUNG_STUDENTENUPLOAD_ANZEIGEN) && $angemeldet) + { + $link=''; + $link_target=''; + + $dir_name = $this->ensureDirectoryExists($kurzbz, $semester, $short_short_name, 'upload','student'); + $dir_empty = $this->isDirectoryEmpty($dir_name); + + if(isset($dir_empty) && $dir_empty == false) + { + if($is_lector == true) + { + $link='lector_choice.php?lvid='.urlencode($lvid); + $link_target='_blank'; + } + else + { + $link='upload.php?course_id='.urlencode($studiengang_kz).'&term_id='.urlencode($semester).'&short='.urlencode($short); + $link_target='_blank'; + } + } + else + { + if($is_lector == true) + { + $link=''; + } + else + { + $link='upload.php?course_id='.urlencode($studiengang_kz).'&term_id='.urlencode($semester).'&short='.urlencode($short); + $link_target='_blank'; + } + } + $menu[]=array + ( + 'id'=>'core_menu_studentenupload', + 'position'=>'90', + 'name'=>$p->t('lehre/studentenAbgabe'), + 'c4_icon'=>'skin/images/button_studiupload.png', + 'c4_link'=>$link, + 'link_target'=>$link_target + ); + } + } + + private function fhc_menu_download(&$menu, $angemeldet, $user_is_allowed_to_upload, $rechte, $semester, $kurzbz, $studiengang_kz, $short_short_name, $short, $p){ + + if((!defined('CIS_LEHRVERANSTALTUNG_DOWNLOAD_ANZEIGEN') || CIS_LEHRVERANSTALTUNG_DOWNLOAD_ANZEIGEN) && $angemeldet) + { + $dir_name = $this->ensureDirectoryExists($kurzbz, $semester, $short_short_name, 'download','teacher'); + $dir_empty = $this->isDirectoryEmpty($dir_name); + + $text = ''; + if($dir_empty == false) + { + $link = $dir_name.'/'; + } + else + $link = ''; + + //Wenn user eine Lehrfachzuteilung fuer dieses Lehrfach hat wird + //Ein Link zum Upload angezeigt und ein Link um das Download-Verzeichnis + //als Zip Archiv herunterzuladen + if($user_is_allowed_to_upload || $rechte->isBerechtigt('admin',$studiengang_kz) || $rechte->isBerechtigt('lehre',$studiengang_kz))// || $rechte->isBerechtigt('lehre',null,null,$fachbereich_id)) + { + $text.= mb_strtolower("$kurzbz/$semester/$short/download"); + $text.= '
'; + $text.= "".$p->t('lehre/upload').""; + $text.= '   '; + } + + $menu[]=array + ( + 'id'=>'core_menu_download', + 'position'=>'30', + 'name'=>$p->t('lehre/download'), + 'icon'=>'../../../skin/images/button_download.png', + 'link'=>$link, + 'c4_icon'=> base_url('skin/images/button_download.png'), + 'c4_link'=>$link, + 'text'=>$text + ); + } + } + + private function fhc_menu_notenliste(&$menu, $angemeldet, $is_lector, $lvid, $studiengang_kz, $angezeigtes_stsem, $kurzbz, $semester, $short_short_name, $p){ + // Anwesenheits und Notenlisten + if(CIS_LEHRVERANSTALTUNG_LEISTUNGSUEBERSICHT_ANZEIGEN || $is_lector) + { + $link=''; + $name=''; + if($is_lector) + { + $name = $p->t('lehre/anwesenheitsUndNotenlisten'); + $link= "anwesenheitsliste.php?stg_kz=$studiengang_kz&sem=$semester&lvid=$lvid&stsem=$angezeigtes_stsem"; + } + + $text=''; + if(CIS_LEHRVERANSTALTUNG_LEISTUNGSUEBERSICHT_ANZEIGEN && ($angemeldet || $is_lector)) + { + $dir_name = $this->ensureDirectoryExists($kurzbz, $semester, $short_short_name, 'leistung','teacher'); + $dir_empty = $this->isDirectoryEmpty($dir_name); + + if($dir_empty == false) + { + + if($is_lector) + { + $text.= ''; + $text.= ''.$p->t('lehre/leistungsuebersicht').''; + $text.= ''; + } + else + { + $name = $p->t('lehre/leistungsuebersicht'); + $link = $dir_name; + } + } + else + { + if($is_lector) + { + $text.= ''.$p->t('lehre/leistungsuebersicht').''; + } + else + { + $name = $p->t('lehre/leistungsuebersicht'); + $link = ''; + } + } + } + + $menu[]=array + ( + 'id'=>'core_menu_anwesenheitslisten', + 'position'=>'40', + 'name'=>$name, + 'icon'=>'../../../skin/images/button_listen.png', + 'link'=>$link, + 'c4_icon'=> base_url('skin/images/button_listen.png'), + 'c4_link'=>$link, + 'text'=>$text + ); + } + } + + private function ensureDirectoryExists($kurzbz, $semester, $short_short_name, $type, $role){ + $dir_name = DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name).'/'.$type; + + if (!is_dir($dir_name)) { + exec('mkdir -m 775 -p '.escapeshellarg($dir_name)); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz))); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester)); + exec('sudo chown www-data:teacher '.escapeshellarg(DOC_ROOT.'/documents/'.mb_strtolower($kurzbz).'/'.$semester.'/'.mb_strtolower($short_short_name))); + exec('sudo chown www-data:'.$role.' '.escapeshellarg($dir_name)); + } + + return $dir_name; + } + + private function isDirectoryEmpty($dir){ + return count(scandir($dir)) == 2 ? true : false; + } + + */ + + +} \ No newline at end of file diff --git a/application/core/CI3_Events.php b/application/core/CI3_Events.php index 33a96b89e..7e7e471b1 100644 --- a/application/core/CI3_Events.php +++ b/application/core/CI3_Events.php @@ -46,6 +46,11 @@ class CI3_Events * NOTE(chris): Autoload Events config */ require_once(APPPATH.'config/Events.php'); + foreach (scandir(APPPATH.'config/extensions') as $dir) if ($dir[0] != '.' && file_exists(APPPATH.'config/extensions/'.$dir.'/Events.php')) require_once APPPATH.'config/extensions/'.$dir.'/Events.php'; + +foreach (scandir(FHCPATH.'addons') as $dir) + if ($dir[0] != '.' && file_exists(FHCPATH.'addons/'.$dir.'/Events.php')) + require_once FHCPATH.'addons/'.$dir.'/Events.php'; diff --git a/application/models/education/Lehreinheit_model.php b/application/models/education/Lehreinheit_model.php index 10c122b94..869f0a19c 100755 --- a/application/models/education/Lehreinheit_model.php +++ b/application/models/education/Lehreinheit_model.php @@ -113,4 +113,47 @@ class Lehreinheit_model extends DB_Model return $this->execQuery($query, array($lehreinheit_id)); } + + /** + * Gets emails of all Studierende in a lehrveranstaltung + * @param int $lehreinheit_id + * @return array + */ + public function getStudentenMail($lehreinheit_id) + { + + // logic used from cis_menu_lv.inc.php line 335 + return $this->execReadOnlyQuery(" + SELECT + gruppe_kurzbz, + CASE + WHEN nomail = TRUE THEN 'nomail' + WHEN gruppe_kurzbz !='' THEN LOWER(gruppe_kurzbz || '@' || ?) + ELSE LOWER(stg_typ || stg_kurzbz || semester || TRIM(verband) || TRIM(gruppe) || '@' || ?) + END AS mail + + FROM + ( + SELECT + distinct vw_lehreinheit.studiensemester_kurzbz, vw_lehreinheit.stg_kurzbz, vw_lehreinheit.stg_typ, vw_lehreinheit.semester, + COALESCE(vw_lehreinheit.verband,'') as verband, COALESCE(vw_lehreinheit.gruppe,'') as gruppe, vw_lehreinheit.gruppe_kurzbz, tbl_gruppe.mailgrp, + CASE + WHEN mailgrp = TRUE OR mailgrp IS NULL THEN FALSE + ELSE TRUE + END as nomail + FROM campus.vw_lehreinheit + LEFT JOIN public.tbl_gruppe USING(gruppe_kurzbz) + WHERE + vw_lehreinheit.lehrveranstaltung_id= + (select distinct lehrveranstaltung_id from campus.vw_lehreinheit where lehreinheit_id=?) + AND + vw_lehreinheit.studiensemester_kurzbz = + (select distinct studiensemester_kurzbz from campus.vw_lehreinheit where lehreinheit_id=?) + AND (vw_lehreinheit.gruppe_kurzbz IS NULL OR + (vw_lehreinheit.gruppe_kurzbz IS NOT NULL AND (SELECT COUNT(*) FROM public.tbl_benutzergruppe where gruppe_kurzbz = vw_lehreinheit.gruppe_kurzbz AND studiensemester_kurzbz = vw_lehreinheit.studiensemester_kurzbz) > 0)) + + + ) AS subquery + ",[DOMAIN,DOMAIN,$lehreinheit_id,$lehreinheit_id ]); + } } diff --git a/application/models/ressource/Stundenplan_model.php b/application/models/ressource/Stundenplan_model.php index 5ec6ea302..511bf5000 100755 --- a/application/models/ressource/Stundenplan_model.php +++ b/application/models/ressource/Stundenplan_model.php @@ -19,11 +19,12 @@ class Stundenplan_model extends DB_Model */ public function loadForUid($uid) { - $this->addSelect('sp.*'); + $this->addSelect(['sp.*','le.studiensemester_kurzbz']); $this->db->join('public.tbl_benutzergruppe bg', 'sp.gruppe_kurzbz=bg.gruppe_kurzbz AND bg.uid=?', 'LEFT', false); $this->addJoin('public.tbl_studiensemester ss1', 'bg.studiensemester_kurzbz=ss1.studiensemester_kurzbz AND ss1.start<=sp.datum AND ss1.ende>=sp.datum', 'LEFT'); $this->db->join('public.tbl_studentlehrverband slv', "sp.studiengang_kz=slv.studiengang_kz AND slv.student_uid=? AND (slv.semester=sp.semester OR sp.semester IS NULL) AND (slv.verband=sp.verband OR sp.verband IS NULL OR sp.verband='' OR sp.verband='0') AND (slv.gruppe=sp.gruppe OR sp.gruppe IS NULL OR sp.gruppe='' OR sp.gruppe='0') AND sp.gruppe_kurzbz IS NULL", 'LEFT', false); $this->addJoin('public.tbl_studiensemester ss2', 'slv.studiensemester_kurzbz=ss2.studiensemester_kurzbz AND ss2.start<=sp.datum AND ss2.ende>=sp.datum', 'LEFT'); + $this->db->join('lehre.tbl_lehreinheit le', 'le.lehreinheit_id=sp.lehreinheit_id', 'LEFT'); $this->db->or_where('ss1.studiensemester_kurzbz IS NOT NULL', null, false); $this->db->or_where('ss2.studiensemester_kurzbz IS NOT NULL', null, false); diff --git a/application/views/CisHmvc/Cms/Content.php b/application/views/CisHmvc/Cms/Content.php index 494add9a4..c0aa69bec 100755 --- a/application/views/CisHmvc/Cms/Content.php +++ b/application/views/CisHmvc/Cms/Content.php @@ -7,13 +7,15 @@ $includesArray = array( #'skin/style.css.php' ] ); - -switch($template_kurzbz){ - case 'raum_contentmittitel': - $includesArray['tabulator5'] = true; - break; +if(isset($template_kurzbz)){ + switch($template_kurzbz){ + case 'raum_contentmittitel': + $includesArray['tabulator5'] = true; + break; + } } + $this->load->view('templates/CISVUE-Header', $includesArray); ?> diff --git a/application/views/CisHmvc/Dashboard.php b/application/views/CisHmvc/Dashboard.php index 46d769a38..06da8cd7f 100755 --- a/application/views/CisHmvc/Dashboard.php +++ b/application/views/CisHmvc/Dashboard.php @@ -1,6 +1,7 @@ 'FH-Complete', + 'tabulator5'=>true, 'customJSModules' => ['public/js/apps/Dashboard/Fhc.js'], 'customCSSs' => [ 'public/css/components/dashboard.css' diff --git a/application/views/CisHtml/Cms/Content.php b/application/views/CisHtml/Cms/Content.php index 037f21cb6..96817a01c 100755 --- a/application/views/CisHtml/Cms/Content.php +++ b/application/views/CisHtml/Cms/Content.php @@ -8,13 +8,15 @@ $includesArray = array( ] ); -switch($template_kurzbz){ - case 'raum_contentmittitel': - $includesArray['tabulator5'] = true; - break; +if(isset($template_kurzbz)){ + switch($template_kurzbz){ + case 'raum_contentmittitel': + $includesArray['tabulator5'] = true; + break; + } } -$this->load->view('templates/CISHTML-Header', $includesArray); +$this->load->view('templates/CISVUE-Header', $includesArray); ?>

diff --git a/application/views/CisHtml/Dashboard.php b/application/views/CisHtml/Dashboard.php index 1b023191e..1eddba454 100755 --- a/application/views/CisHtml/Dashboard.php +++ b/application/views/CisHtml/Dashboard.php @@ -1,6 +1,7 @@ 'Dashboard', + 'tabulator5'=>true, 'customJSModules' => ['public/js/apps/Dashboard/Fhc.js'], 'customCSSs' => [ 'public/css/components/dashboard.css' diff --git a/application/views/CisVue/Cms/Content.php b/application/views/CisVue/Cms/Content.php index 494add9a4..450d014e6 100755 --- a/application/views/CisVue/Cms/Content.php +++ b/application/views/CisVue/Cms/Content.php @@ -8,12 +8,15 @@ $includesArray = array( ] ); -switch($template_kurzbz){ - case 'raum_contentmittitel': - $includesArray['tabulator5'] = true; - break; +if(isset($template_kurzbz)){ + switch($template_kurzbz){ + case 'raum_contentmittitel': + $includesArray['tabulator5'] = true; + break; + } } + $this->load->view('templates/CISVUE-Header', $includesArray); ?> diff --git a/application/views/CisVue/Dashboard.php b/application/views/CisVue/Dashboard.php index 06c2620cc..10721630e 100755 --- a/application/views/CisVue/Dashboard.php +++ b/application/views/CisVue/Dashboard.php @@ -1,5 +1,6 @@ true, 'customJSModules' => ['public/js/apps/Dashboard/Fhc.js'], 'customCSSs' => [ 'public/css/components/dashboard.css' diff --git a/include/lehreinheit.class.php b/include/lehreinheit.class.php index 6bf1f7282..1b7ed10e4 100755 --- a/include/lehreinheit.class.php +++ b/include/lehreinheit.class.php @@ -1122,4 +1122,100 @@ class lehreinheit extends basis_db return $ret; } + + +public function lehreinheitInfo($lvid,$angezeigtes_stsem,$lehrfach_id) +{ + $qry = "SELECT * FROM (SELECT distinct on(uid) vorname, nachname, tbl_benutzer.uid as uid, + CASE WHEN lehrfunktion_kurzbz='LV-Leitung' THEN true ELSE false END as lvleiter + FROM lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter, public.tbl_benutzer, public.tbl_person + WHERE + tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND + tbl_lehreinheitmitarbeiter.mitarbeiter_uid=tbl_benutzer.uid AND + tbl_person.person_id=tbl_benutzer.person_id AND + lehrveranstaltung_id=".$this->db_add_param($lvid, FHC_INTEGER)." AND + tbl_lehreinheitmitarbeiter.mitarbeiter_uid NOT like '_Dummy%' AND + tbl_benutzer.aktiv=true AND tbl_person.aktiv=true AND + studiensemester_kurzbz=".$this->db_add_param($angezeigtes_stsem); + + if($lehrfach_id!='') + $qry.=" AND tbl_lehreinheit.lehrfach_id=".$this->db_add_param($lehrfach_id); + + $qry.=" ORDER BY uid, lvleiter desc) as a ORDER BY lvleiter desc, nachname, vorname"; + + $result = $this->db_query($qry); + if (!$result) + { + $this->errormsg=$this->db_last_error().$qry; + return false; + } + $ret = array(); + + while($row = $this->db_fetch_object($result)) + { + $ret[] = $row; + } + + return $ret; } + +public function lehrfach_id_mitarbeiter($angezeigtes_stsem,$user,$lvid) +{ + $qry = "SELECT + distinct lehrfach_id + FROM + lehre.tbl_lehreinheit + JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id) + WHERE + studiensemester_kurzbz=".$this->db_add_param($angezeigtes_stsem)." + AND mitarbeiter_uid=".$this->db_add_param($user)." + AND lehrveranstaltung_id=".$this->db_add_param($lvid, FHC_INTEGER); + + + $result = $this->db_query($qry); + if (!$result) + { + $this->errormsg=$this->db_last_error().$qry; + return false; + } + $ret = array(); + + while($row = $this->db_fetch_object($result)) + { + $ret[] = $row; + } + + return $ret; +} + +public function lehrfach_id_studierender($lvid,$angezeigtes_stsem,$user) +{ + $qry = "SELECT distinct lehrfach_id + FROM + campus.vw_student_lehrveranstaltung + WHERE + lehrveranstaltung_id=".$this->db_add_param($lvid, FHC_INTEGER)." + AND studiensemester_kurzbz=".$this->db_add_param($angezeigtes_stsem)." + AND uid=".$this->db_add_param($user); + + $result = $this->db_query($qry); + if (!$result) + { + $this->errormsg=$this->db_last_error().$qry; + return false; + } + $ret = array(); + + while($row = $this->db_fetch_object($result)) + { + $ret[] = $row; + } + + return $ret; +} + + +} + + + diff --git a/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php index 48edd9d0a..b2a3bc481 100755 --- a/include/lehrveranstaltung.class.php +++ b/include/lehrveranstaltung.class.php @@ -2861,5 +2861,36 @@ class lehrveranstaltung extends basis_db return false; } } +//Berechtigungen auf Fachbereichsebene +public function getBerechtigungenAufFachberechsebene($lvid,$angezeigtes_stsem) +{ + $qry = "SELECT + distinct lehrfach.oe_kurzbz + FROM + lehre.tbl_lehrveranstaltung + JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id) + JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id) + WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=".$this->db_add_param($lvid, FHC_INTEGER); + + if(isset($angezeigtes_stsem) && $angezeigtes_stsem!=''){ + $qry .= " AND studiensemester_kurzbz=".$this->db_add_param($angezeigtes_stsem); + } + + $lehrveranstaltungen = []; + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $lehrveranstaltungen[] = $row; + } + return $lehrveranstaltungen; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } +} + } ?> diff --git a/public/css/components/dashboard.css b/public/css/components/dashboard.css index 67dd9cf3f..10b865027 100755 --- a/public/css/components/dashboard.css +++ b/public/css/components/dashboard.css @@ -35,3 +35,14 @@ .cursor-move { cursor: move; } + +.lvUebersichtMenuPunkt:hover{ + background-color:rgba(0, 100, 156, 0.25); +} + +.underline_hover:hover{ + color:var(--bs-primary); + text-decoration: underline; +} + + diff --git a/public/js/api/addons.js b/public/js/api/addons.js new file mode 100644 index 000000000..6a6b430c6 --- /dev/null +++ b/public/js/api/addons.js @@ -0,0 +1,12 @@ +export default { + getLvMenu(lvid, studiensemester_kurzbz) { + return this.$fhcApi.get( + FHC_JS_DATA_STORAGE_OBJECT.app_root + + FHC_JS_DATA_STORAGE_OBJECT.ci_router + + `/api/frontend/v1/LvMenu/getLvMenu/${lvid}/${studiensemester_kurzbz}`, + {} + ); + }, + + + } \ No newline at end of file diff --git a/public/js/api/fhcapifactory.js b/public/js/api/fhcapifactory.js index 4228ead8e..a3039d391 100644 --- a/public/js/api/fhcapifactory.js +++ b/public/js/api/fhcapifactory.js @@ -29,6 +29,8 @@ import betriebsmittel from "./betriebsmittel.js"; import ampeln from "./ampeln.js"; import ort from "./ort.js"; import cms from "./cms.js"; +import lehre from "./lehre.js"; +import addons from "./addons.js"; export default { search, @@ -45,4 +47,6 @@ export default { ampeln, ort, cms, + lehre, + addons, }; diff --git a/public/js/api/lehre.js b/public/js/api/lehre.js new file mode 100644 index 000000000..d3117948e --- /dev/null +++ b/public/js/api/lehre.js @@ -0,0 +1,10 @@ +export default { + getStudentenMail(lehreinheit_id) { + return this.$fhcApi.get( + FHC_JS_DATA_STORAGE_OBJECT.app_root + + FHC_JS_DATA_STORAGE_OBJECT.ci_router + + "/api/frontend/v1/Lehre/lvStudentenMail", + { lehreinheit_id: lehreinheit_id } + ); + }, + } \ No newline at end of file diff --git a/public/js/components/Cis/Cms/ContentModal.js b/public/js/components/Cis/Cms/ContentModal.js index 0a5903ccc..7a8d9beb8 100644 --- a/public/js/components/Cis/Cms/ContentModal.js +++ b/public/js/components/Cis/Cms/ContentModal.js @@ -1,4 +1,5 @@ import BsModal from "../../Bootstrap/Modal"; +import RaumContent from "./Content_types/Raum_contentmittitel"; export default { @@ -8,6 +9,7 @@ export default { components:{ BsModal, + RaumContent, }, props:{ contentID:{ @@ -36,7 +38,8 @@ export default { if(this.contentID){ this.$fhcApi.factory.cms.content(this.contentID).then(res =>{ - this.content = res.data; + this.content = res.data.content; + this.type = res.data.type; }) } @@ -44,17 +47,17 @@ export default { }, mounted(){ this.modal = this.$refs.modalContainer; - + }, template:/*html*/` - +