From 0336c39a81bc28a9ea94d42b6171e67a85276cf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 3 Sep 2014 08:28:03 +0000 Subject: [PATCH] =?UTF-8?q?Abmeldung=20von=20Lehrveranstaltungen=20hinzuge?= =?UTF-8?q?f=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- addons/index.html | 0 cis/private/lehre/abmeldung.php | 117 ++++++++++++++++++++++++++++++++ cis/private/lehre/lesson.php | 45 +++++++----- include/lvangebot.class.php | 41 +++++++++++ include/tw/cis_menu_lv.inc.php | 22 ++++++ locale/de-AT/lehre.php | 5 ++ 6 files changed, 213 insertions(+), 17 deletions(-) create mode 100644 addons/index.html create mode 100644 cis/private/lehre/abmeldung.php diff --git a/addons/index.html b/addons/index.html new file mode 100644 index 000000000..e69de29bb diff --git a/cis/private/lehre/abmeldung.php b/cis/private/lehre/abmeldung.php new file mode 100644 index 000000000..d8fa70a5f --- /dev/null +++ b/cis/private/lehre/abmeldung.php @@ -0,0 +1,117 @@ + + */ +require_once('../../../config/cis.config.inc.php'); +require_once('../../../config/global.config.inc.php'); +require_once('../../../include/functions.inc.php'); +require_once('../../../include/phrasen.class.php'); +require_once('../../../include/lvangebot.class.php'); +require_once('../../../include/benutzergruppe.class.php'); +require_once('../../../include/lehrveranstaltung.class.php'); + +$sprache = getSprache(); +$p = new phrasen($sprache); + +if (!$db = new basis_db()) + die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung')); + +if (!$user=get_uid()) + die($p->t('global/nichtAngemeldet')); + +echo ' + + + + + + +

'.$p->t('lehre/abmeldung').'

'; + +if(!isset($_GET['lvid']) || !isset($_GET['stsem'])) +{ + die('Fehlerhafte Parameterübergabe'); +} + +$lvid = $_GET['lvid']; +$stsem = $_GET['stsem']; + +$lvangebot = new lvangebot(); +$gruppen = $lvangebot->AbmeldungMoeglich($lvid, $stsem, $user); +if(count($gruppen)>0) +{ + if(isset($_POST['gruppe'])) + { + $gruppe = $_POST['gruppe']; + if(in_array($gruppe, $gruppen)) + { + $benutzergruppe = new benutzergruppe(); + if($benutzergruppe->delete($user, $gruppe)) + { + echo $p->t('lehre/AbmeldungErfolgreich'); + // Menuebaum neu Laden damit die LV nicht mehr angezeigt wird + echo ''; + } + else + { + echo $benutzergruppe->errormsg; + } + } + else + { + echo $p->t('lehre/AbmeldungAusGruppeNichtMoeglich'); + } + } + else + { + foreach($gruppen as $gruppe) + { + $lehrveranstaltung = new lehrveranstaltung(); + $lehrveranstaltung->load($lvid); + + if(defined('CIS_LEHRVERANSTALTUNG_LEHRFACH_ANZEIGEN') && CIS_LEHRVERANSTALTUNG_LEHRFACH_ANZEIGEN) + { + $qry = "SELECT + lehrfach_id + FROM + lehre.tbl_lehreinheit + JOIN lehre.tbl_lehreinheitgruppe USING(lehreinheit_id) + WHERE + gruppe_kurzbz=".$db->db_add_param($gruppe)." + AND lehrveranstaltung_id=".$db->db_add_param($lvid)." + AND studiensemester_kurzbz=".$db->db_add_param($stsem); + if($result = $db->db_query($qry)) + { + if($row = $db->db_fetch_object($result)) + { + $lehrveranstaltung->load($row->lehrfach_id); + } + } + } + echo '
'; + echo $p->t('lehre/confirmAbmeldung',array($lehrveranstaltung->bezeichnung)); + echo ''; + echo '

'; + echo '


'; + } + } +} + +echo ' +'; + diff --git a/cis/private/lehre/lesson.php b/cis/private/lehre/lesson.php index 9b2d03695..963730b90 100644 --- a/cis/private/lehre/lesson.php +++ b/cis/private/lehre/lesson.php @@ -30,6 +30,7 @@ require_once('../../../include/studiengang.class.php'); require_once('../../../include/moodle.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/lehre_tools.class.php'); +require_once('../../../include/lvangebot.class.php'); $sprache = getSprache(); $p = new phrasen($sprache); @@ -141,17 +142,17 @@ if (isset($_GET["handbuch"])){  

studiengang_kz==0) - $angezeigtes_stsem = $stsem->getNearest(); - else - $angezeigtes_stsem = $stsem->getNearest($semester); + $stsem = new studiensemester(); + if($studiensemester_kurzbz!='') + $angezeigtes_stsem=$studiensemester_kurzbz; + else + { + if($lv->studiengang_kz==0) + $angezeigtes_stsem = $stsem->getNearest(); + else + $angezeigtes_stsem = $stsem->getNearest($semester); } - + $lehrfach_id=''; if(defined('CIS_LEHRVERANSTALTUNG_LEHRFACH_ANZEIGEN') && CIS_LEHRVERANSTALTUNG_LEHRFACH_ANZEIGEN) { // Wenn der eingeloggte User zu einer der Lehreinheiten zugeteilt ist @@ -165,7 +166,8 @@ if (isset($_GET["handbuch"])){ JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id) WHERE studiensemester_kurzbz=".$db->db_add_param($angezeigtes_stsem)." - AND mitarbeiter_uid=".$db->db_add_param($user); + AND mitarbeiter_uid=".$db->db_add_param($user)." + AND lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER); } else { @@ -186,16 +188,19 @@ if (isset($_GET["handbuch"])){ { if($row = $db->db_fetch_object($result)) { - $lehrfach = new lehrveranstaltung(); + $lehrfach = new lehrveranstaltung(); $lehrfach->load($row->lehrfach_id); - - echo $lehrfach->bezeichnung_arr[$sprache].' - '.$lv_obj->bezeichnung_arr[$sprache]; + $lehrfach_id=$row->lehrfach_id; + if($lehrfach->bezeichnung_arr[$sprache]==$lv_obj->bezeichnung_arr[$sprache]) + echo $lv_obj->bezeichnung_arr[$sprache]; + else + echo $lehrfach->bezeichnung_arr[$sprache].' - '.$lv_obj->bezeichnung_arr[$sprache]; } } else echo $lv_obj->bezeichnung_arr[$sprache]; } - } + } else echo $lv_obj->bezeichnung_arr[$sprache]; @@ -223,8 +228,14 @@ if (isset($_GET["handbuch"])){ lehrveranstaltung_id=".$db->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=".$db->db_add_param($angezeigtes_stsem)." - ORDER BY uid, lvleiter desc) as a ORDER BY lvleiter desc, nachname, vorname"; + studiensemester_kurzbz=".$db->db_add_param($angezeigtes_stsem); + + // Wenn das Lehrfach angezeigt werden nur die Lektoren angezeigt die dieser + // Lehreinheit / Lehrfach zugeordnet sind + if($lehrfach_id!='') + $qry.=" AND tbl_lehreinheit.lehrfach_id=".$db->db_add_param($lehrfach_id); + + $qry.=" ORDER BY uid, lvleiter desc) as a ORDER BY lvleiter desc, nachname, vorname"; if(!$result = $db->db_query($qry)) { diff --git a/include/lvangebot.class.php b/include/lvangebot.class.php index 6fc521cdf..61594771c 100644 --- a/include/lvangebot.class.php +++ b/include/lvangebot.class.php @@ -448,5 +448,46 @@ class lvangebot extends basis_db return false; } } + + /** + * Prueft ob eine Abmeldung von einer Lehrveranstaltung moeglich ist + * und liefert die Gruppen von denen sich abgemeldet werden kann + * @param $lehrveranstaltung_id + * @param $studiensemester_kurzbz + * @param $uid + * @return $gruppen Array mit den Gruppen + */ + public function AbmeldungMoeglich($lehrveranstaltung_id, $studiensemester_kurzbz, $uid) + { + $qry = "SELECT + gruppe_kurzbz + FROM + lehre.tbl_lvangebot + JOIN public.tbl_benutzergruppe USING(studiensemester_kurzbz, gruppe_kurzbz) + WHERE + tbl_lvangebot.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." + AND tbl_benutzergruppe.uid=".$this->db_add_param($uid)." + AND (tbl_lvangebot.lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)." + OR tbl_lvangebot.lehrveranstaltung_id IN(SELECT lehrveranstaltung_id_kompatibel + FROM lehre.tbl_lehrveranstaltung_kompatibel + WHERE lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)." + ) + )"; + + if($result = $this->db_query($qry)) + { + $gruppen=array(); + while($row = $this->db_fetch_object($result)) + { + $gruppen[] = $row->gruppe_kurzbz; + } + return $gruppen; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } } ?> diff --git a/include/tw/cis_menu_lv.inc.php b/include/tw/cis_menu_lv.inc.php index b21a29151..bf1eb92ee 100644 --- a/include/tw/cis_menu_lv.inc.php +++ b/include/tw/cis_menu_lv.inc.php @@ -693,6 +693,28 @@ function checkZeilenUmbruch() echo ''; } + checkZeilenUmbruch(); + + 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) + { + //Abmelden von der Lehrveranstaltung + $eintraegeprozeile++; + echo ''; + echo ''; + echo '
'; + + echo "".$p->t('lehre/abmelden')."

"; + echo ''; + } + } + } + //Anzeigen von zusaetzlichen Lehre-Tools $lehretools = new lehre_tools(); diff --git a/locale/de-AT/lehre.php b/locale/de-AT/lehre.php index e9a9ac722..75a600892 100755 --- a/locale/de-AT/lehre.php +++ b/locale/de-AT/lehre.php @@ -35,4 +35,9 @@ $this->phrasen['lehre/mail']='E-Mail an Studierende'; $this->phrasen['lehre/keinMailverteiler']='Für die Gruppe(n) %s existiert kein Verteiler! Die Studierenden in diesen Gruppen bekommen kein Mail.'; $this->phrasen['lehre/pinboard']='Pinboard'; +$this->phrasen['lehre/abmelden']='Abmelden'; +$this->phrasen['lehre/abmeldung']='Abmeldung'; +$this->phrasen['lehre/AbmeldungErfolgreich']='Sie wurden erfolgreich von der Lehrveranstaltung abgemeldet'; +$this->phrasen['lehre/AbmeldungAusGruppeNichtMoeglich']='Sie können sich nicht von dieser Lehrveranstaltung abmelden'; +$this->phrasen['lehre/confirmAbmeldung']='Wollen Sie sich wirklich von der Lehrveranstaltung "%s" abmelden?'; ?>