diff --git a/cis/private/lehre/lesson.php b/cis/private/lehre/lesson.php index 420d4d3e9..512f99f91 100644 --- a/cis/private/lehre/lesson.php +++ b/cis/private/lehre/lesson.php @@ -191,18 +191,23 @@ function hideSemPlanHelp(){ } //Berechtigungen auf Fachbereichsebene - $qry = "SELECT distinct fachbereich_kurzbz, tbl_lehrveranstaltung.studiengang_kz - FROM lehre.tbl_lehrveranstaltung JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id) JOIN lehre.tbl_lehrfach USING(lehrfach_id) - WHERE lehrveranstaltung_id='$lvid'"; + $qry = "SELECT + distinct fachbereich_kurzbz, tbl_lehrveranstaltung.studiengang_kz, tbl_fachbereich.oe_kurzbz + FROM + lehre.tbl_lehrveranstaltung + JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id) + JOIN lehre.tbl_lehrfach USING(lehrfach_id) + JOIN public.tbl_fachbereich USING(fachbereich_kurzbz) + WHERE lehrveranstaltung_id='".addslashes($lvid)."'"; if(isset($angezeigtes_stsem) && $angezeigtes_stsem!='') - $qry .= " AND studiensemester_kurzbz='$angezeigtes_stsem'"; + $qry .= " AND studiensemester_kurzbz='".addslashes($angezeigtes_stsem)."'"; if($result = $db->db_query($qry)) { while($row = $db->db_fetch_object($result)) { - if($rechte->isBerechtigt('lehre',null,null,$row->fachbereich_kurzbz) || $rechte->isBerechtigt('assistenz',$row->studiengang_kz)) + if($rechte->isBerechtigt('lehre',$row->oe_kurzbz) || $rechte->isBerechtigt('assistenz',$stgobj->oe_kurzbz)) $user_is_allowed_to_upload=true; } } diff --git a/cis/private/mailverteiler.php b/cis/private/mailverteiler.php index 7c6714f79..cb0d9acf4 100644 --- a/cis/private/mailverteiler.php +++ b/cis/private/mailverteiler.php @@ -19,104 +19,102 @@ * Andreas Oesterreicher and * Rudolf Hangl . */ +require_once('../../config/cis.config.inc.php'); +require_once('../../include/functions.inc.php'); +require_once('../../include/studiengang.class.php'); +require_once('../../include/gruppe.class.php'); +require_once('../../include/person.class.php'); +require_once('../../include/benutzer.class.php'); +require_once('../../include/student.class.php'); +require_once('../../include/lehrverband.class.php'); +require_once('../../include/benutzerfunktion.class.php'); - require_once('../../config/cis.config.inc.php'); - require_once('../../include/basis_db.class.php'); - if (!$db = new basis_db()) - die('Fehler beim Oeffnen der Datenbankverbindung'); - - require_once('../../include/functions.inc.php'); - require_once('../../include/studiengang.class.php'); - require_once('../../include/gruppe.class.php'); - require_once('../../include/person.class.php'); - require_once('../../include/benutzer.class.php'); - require_once('../../include/student.class.php'); - require_once('../../include/lehrverband.class.php'); - require_once('../../include/benutzerfunktion.class.php'); +if (!$db = new basis_db()) + die('Fehler beim Oeffnen der Datenbankverbindung'); - $user=get_uid(); +$user=get_uid(); - $is_lector=check_lektor($user); - $is_stdv=false; - - //Studentenvertreter duerfen den Verteiler tw_std oeffnen - if(!$is_lector) - { - $fkt = new benutzerfunktion(); - if($fkt->benutzerfunktion_exists($user, 'stdv')) - $is_stdv=true; - } +$is_lector=check_lektor($user); +$is_stdv=false; +$std_obj = new student($user); +//Studentenvertreter duerfen den Verteiler tw_std oeffnen -?> - +if(!$is_lector) +{ + $fkt = new benutzerfunktion(); + if($fkt->benutzerfunktion_exists($user, 'stdv')) + $is_stdv=true; +} + +?> - - -Mailverteiler - + function js_toggle_container(conid) + { + + if (document.getElementById) + { + var block = "table-row"; + if (navigator.appName.indexOf('Microsoft') > -1) + block = 'block'; + var status = __js_page_array[conid]; + if (status == null) + status = "none"; + if (status == "none") + { + document.getElementById(conid).style.display = block; + __js_page_array[conid] = "visible"; + } + else + { + document.getElementById(conid).style.display = 'none'; + __js_page_array[conid] = "none"; + } + return false; + } + else + return true; + } + function show_layer(x) + { + if (document.getElementById && document.getElementById(x)) + { + document.getElementById(x).style.visibility = 'visible'; + document.getElementById(x).style.display = 'inline'; + } else if (document.all && document.all[x]) { + document.all[x].visibility = 'visible'; + document.all[x].style.display='inline'; + } else if (document.layers && document.layers[x]) { + document.layers[x].visibility = 'show'; + document.layers[x].style.display='inline'; + } + + } + + function hide_layer(x) + { + if (document.getElementById && document.getElementById(x)) + { + document.getElementById(x).style.visibility = 'hidden'; + document.getElementById(x).style.display = 'none'; + } else if (document.all && document.all[x]) { + document.all[x].visibility = 'hidden'; + document.all[x].style.display='none'; + } else if (document.layers && document.layers[x]) { + document.layers[x].visibility = 'hide'; + document.layers[x].style.display='none'; + } + } + + //--> + @@ -146,7 +144,7 @@
getAll('ascii(bezeichnung), bezeichnung, typ', true)) + if(!$stg_obj->getAll(null, true)) echo $stg_obj->errormsg; @@ -186,31 +184,25 @@ { // Kopfzeile hinausschreiben echo ""; -# echo ""; - echo ''; - echo " "; - echo " "; - echo " "; - echo " "; - echo " "; -# echo "\n"; - echo "
 
anzeigen "; - echo " $row->kuerzel - $row->bezeichnungstudiengang_kz\">   top 
 
"; + echo ''; + echo " anzeigen "; + echo " $row->kuerzel - $row->bezeichnungstudiengang_kz\"> "; + echo "  "; + echo "  "; + echo " top "; + echo " "; + echo ""; // Kopfzeile hinausschreiben echo ""; -# echo ""; - echo ''; - - - echo " "; - echo " "; - echo " "; - echo " "; - echo " "; -# echo "\n"; - + echo ''; + + echo " "; + echo " "; + echo " "; + echo " "; + echo " "; // Verteiler Normal $grp_obj = new gruppe(); @@ -230,7 +222,7 @@ $class=' class="row-even" '; } echo ""; - echo " "; + echo " "; // LINK for opening a closed mail dispatcher // display the open-link only when its a closed dispatcher and if the user has status lector @@ -253,25 +245,24 @@ else { echo " "; - echo " "; - echo "gesperrt"; - echo " "; + echo " "; } } else { echo " "; - echo " "; } - if(strtolower($row1->gruppe_kurzbz)=='tw_std') - echo '"; + if(strtolower($row1->gruppe_kurzbz)=='tw_std') + echo '"; echo "\n"; } @@ -279,114 +270,109 @@ //StudentenListe Rausschreiben if($row->studiengang_kz!=0) //0 ist für ganzes TW - { - // ffe, 20060508: Display the opening link for department dispatchers only for students of the particular department - $std_obj = new student($user); - + { $qry_stud = "SELECT count(*) as anzahl FROM public.tbl_student WHERE studiengang_kz='$row->studiengang_kz' AND student_uid NOT LIKE '_Dummy%'"; - if(!$row_stud=$db->db_fetch_object($db->db_query($qry_stud))) - echo 'Fehler beim Laden der Studenten'; + if(!$row_stud=$db->db_fetch_object($db->db_query($qry_stud))) + echo 'Fehler beim Laden der Studenten'; - if($row_stud->anzahl>0) - { - echo ""; - - // ffe, 20060508: Display the opening link for department dispatchers only for students of the particular department - if($is_lector || $std_obj->studiengang_kz==$row->studiengang_kz || !MAILVERTEILER_SPERRE) - { - echo " '; - /* open a popup containing the final dispatcher address */ - echo " "; - } - else - { - echo " "; - //echo " "; - echo " "; - } - - echo ' \n"; - } - echo "\n"; - echo ''; - echo ''; - - //$sql_query1 = "SELECT DISTINCT studiengang_kz, semester, verband, gruppe FROM public.tbl_student where studiengang_kz ='$row->studiengang_kz' AND student_uid NOT LIKE '_dummy%' ORDER BY semester"; - $lv_obj = new lehrverband(); - $lv_obj->getlehrverband($row->studiengang_kz); - - $zeilenzaehler=0; - echo "\n"; - foreach($lv_obj->result as $row1) - { - if((!is_null($row1->semester)) && !empty($row1->semester) && ($row1->semester != "") && ($row1->semester<=$row->max_semester) && ($row1->semester>'0')) //($row1->semester<'10')) - { - $qry_cnt = "SELECT count(*) as anzahl FROM public.tbl_student WHERE studiengang_kz='$row1->studiengang_kz' AND semester='$row1->semester' AND student_uid NOT LIKE '_Dummy%'"; - if(trim($row1->verband)!='') - { - $qry_cnt .= " AND verband='$row1->verband'"; - - if(trim($row1->gruppe)!='') - $qry_cnt .= " AND gruppe='$row1->gruppe'"; - } - - if($row_cnt = $db->db_fetch_object($db->db_query($qry_cnt))) - { - if($row_cnt->anzahl>0) - { - - $zeile++; - if ($zeile%2) - { - $class=' class="row-odd" '; - } - else - { - $class=' class="row-even" '; - } - - $param = "kz=".$row->studiengang_kz."&sem=".$row1->semester; - $strhelp = mb_strtolower($row->kuerzel.trim($row1->semester).trim($row1->verband).trim($row1->gruppe)); - echo "\n"; - echo " "; - echo " "; - echo " "; - echo " "; - echo ""; - $zeilenzaehler++; - } - } - } - } - if($zeilenzaehler==0) - { - echo ""; - } - $zeilenzaehler=0; - echo ""; - } - else + if($row_stud->anzahl>0) { - echo ""; + echo "• Alle Studenten dieses Studiengangs"; + + // ffe, 20060508: Display the opening link for department dispatchers only for students of the particular department + if($is_lector || $std_obj->studiengang_kz==$row->studiengang_kz || !MAILVERTEILER_SPERRE) + { + echo " "; + if(MAILVERTEILER_SPERRE) + echo 'Verteiler'; + /* open a popup containing the final dispatcher address */ + echo " kuerzel)."_std@".DOMAIN."\" class=\"Item\">".strtolower($row->kuerzel)."_std@".DOMAIN.""; + } + else + { + echo "  "; + echo " gesperrt"; + } + + echo ' Personen'; + echo "\n"; } - } - echo ""; + echo "\n"; + echo '• Studentenverteiler'; + echo ''; + echo ''; + + $lv_obj = new lehrverband(); + $lv_obj->getlehrverband($row->studiengang_kz); + + $zeilenzaehler=0; + echo "\n"; + foreach($lv_obj->result as $row1) + { + if((!is_null($row1->semester)) && !empty($row1->semester) && ($row1->semester != "") && ($row1->semester<=$row->max_semester) && ($row1->semester>'0')) //($row1->semester<'10')) + { + $qry_cnt = "SELECT count(*) as anzahl FROM public.tbl_student WHERE studiengang_kz='$row1->studiengang_kz' AND semester='$row1->semester' AND student_uid NOT LIKE '_Dummy%'"; + if(trim($row1->verband)!='') + { + $qry_cnt .= " AND verband='$row1->verband'"; + + if(trim($row1->gruppe)!='') + $qry_cnt .= " AND gruppe='$row1->gruppe'"; + } + + if($row_cnt = $db->db_fetch_object($db->db_query($qry_cnt))) + { + if($row_cnt->anzahl>0) + { + + $zeile++; + if ($zeile%2) + { + $class=' class="row-odd" '; + } + else + { + $class=' class="row-even" '; + } + + $param = "kz=".$row->studiengang_kz."&sem=".$row1->semester; + $strhelp = mb_strtolower($row->kuerzel.trim($row1->semester).trim($row1->verband).trim($row1->gruppe)); + echo "\n"; + echo " "; + echo " "; + echo " "; + echo " "; + echo ""; + $zeilenzaehler++; + } + } + } + } + if($zeilenzaehler==0) + { + echo ""; + } + $zeilenzaehler=0; + echo ""; + } + else + { + echo ""; + } + } + echo ""; //Menue oeffnen wenn kurzbz uebergeben wird if(isset($_GET['kbzl']) AND $_GET['kbzl']!='') @@ -395,5 +381,5 @@ js_toggle_container('".$_GET['kbzl']."'); "; } - ?> +?> \ No newline at end of file diff --git a/system/mlists/mlists_generate.php b/system/mlists/mlists_generate.php index e60c193a7..0d4cadf18 100644 --- a/system/mlists/mlists_generate.php +++ b/system/mlists/mlists_generate.php @@ -604,7 +604,170 @@ $error_msg=''; } } */ + // ************************************************************** + // Instituts-Verteiler + echo '
Abgleich der Institutsverteiler
'; + //Externe Mitarbeiter + $qry = "SELECT * FROM public.tbl_organisationseinheit WHERE aktiv AND mailverteiler AND organisationseinheittyp_kurzbz='Institut'"; + if($result = $db->db_query($qry)) + { + while($row = $db->db_fetch_object($result)) + { + $mlist_name=strtoupper($row->oe_kurzbz).'_EXT'; + + $grp = new gruppe(); + if(!$grp->exists($mlist_name)) + { + $grp->gruppe_kurzbz = $mlist_name; + $grp->studiengang_kz = '0'; + $grp->bezeichnung = $row->oe_kurzbz; + $grp->beschreibung = 'Externe Mitarbeiter des Instituts '.$row->bezeichnung; + $grp->semester = '0'; + $grp->mailgrp = true; + $grp->sichtbar = true; + $grp->generiert = true; + $grp->aktiv = true; + $grp->lehre = true; + $grp->insertamum = date('Y-m-d H:i:s'); + $grp->insertvon = 'mlists_generate'; + + if(!$grp->save(true, false)) + die('Fehler: '.$grp->errormsg); + } + else + { + setGeneriert($mlist_name); + } + + $oe = new organisationseinheit(); + $childs = $oe->getChilds($row->oe_kurzbz); + + // Lektoren holen die nicht mehr in den Verteiler gehoeren + echo '
'.$mlist_name.' wird abgeglichen!'; + flush(); + + $oes=''; + foreach ($childs as $oe_kurzbz) + { + if($oes!='') + $oes.=','; + + $oes .= "'".addslashes($oe_kurzbz)."'"; + } + + $sql_query = "SELECT distinct uid + FROM + public.tbl_benutzer + JOIN public.tbl_benutzerfunktion USING(uid) + JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid) + WHERE oe_kurzbz in($oes) + AND tbl_benutzer.aktiv AND NOT fixangestellt + AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null) + AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)"; + + $sql_querys="DELETE FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name' AND uid NOT IN ($sql_query)"; + if(!$db->db_query($sql_querys)) + { + $error_msg.=$db->db_last_error().' '.$sql_querys; + } + + $sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')"; + if(!($result_oe = $db->db_query($sql_query))) + $error_msg.=$db->db_last_error().' '.$sql_query; + // Lektoren holen die nicht im Verteiler sind + + while($row_oe = $db->db_fetch_object($result_oe)) + { + $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row_oe->uid','".$mlist_name."', now(), 'mlists_generate')"; + if(!$db->db_query($sql_query)) + { + $error_msg.=$db->db_last_error().$sql_query; + } + } + } + } + + //Fixe Mitarbeiter + $qry = "SELECT * FROM public.tbl_organisationseinheit WHERE aktiv AND mailverteiler AND organisationseinheittyp_kurzbz='Institut'"; + + if($result = $db->db_query($qry)) + { + while($row = $db->db_fetch_object($result)) + { + $mlist_name=strtoupper($row->oe_kurzbz).'_FIX'; + + $grp = new gruppe(); + if(!$grp->exists($mlist_name)) + { + $grp->gruppe_kurzbz = $mlist_name; + $grp->studiengang_kz = '0'; + $grp->bezeichnung = $row->oe_kurzbz; + $grp->beschreibung = 'Fixangestellte Mitarbeiter des Instituts '.$row->bezeichnung; + $grp->semester = '0'; + $grp->mailgrp = true; + $grp->sichtbar = true; + $grp->generiert = true; + $grp->aktiv = true; + $grp->lehre = true; + $grp->insertamum = date('Y-m-d H:i:s'); + $grp->insertvon = 'mlists_generate'; + + if(!$grp->save(true, false)) + die('Fehler: '.$grp->errormsg); + } + else + { + setGeneriert($mlist_name); + } + + $oe = new organisationseinheit(); + $childs = $oe->getChilds($row->oe_kurzbz); + + // Lektoren holen die nicht mehr in den Verteiler gehoeren + echo '
'.$mlist_name.' wird abgeglichen!'; + flush(); + + $oes=''; + foreach ($childs as $oe_kurzbz) + { + if($oes!='') + $oes.=','; + + $oes .= "'".addslashes($oe_kurzbz)."'"; + } + + $sql_query = "SELECT distinct uid + FROM + public.tbl_benutzer + JOIN public.tbl_benutzerfunktion USING(uid) + JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid) + WHERE oe_kurzbz in($oes) + AND tbl_benutzer.aktiv AND fixangestellt + AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null) + AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)"; + + $sql_querys="DELETE FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name' AND uid NOT IN ($sql_query)"; + if(!$db->db_query($sql_querys)) + { + $error_msg.=$db->db_last_error().' '.$sql_querys; + } + + $sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')"; + if(!($result_oe = $db->db_query($sql_query))) + $error_msg.=$db->db_last_error().' '.$sql_query; + // Lektoren holen die nicht im Verteiler sind + while($row_oe = $db->db_fetch_object($result_oe)) + { + $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row_oe->uid','".$mlist_name."', now(), 'mlists_generate')"; + if(!$db->db_query($sql_query)) + { + $error_msg.=$db->db_last_error().$sql_query; + } + } + } + } + echo '
'; // ************************************************************** // Studentenverteiler fuer die einzelnen Organisationseinheiten bei Mischformen echo '
Abgleich der Mischformverteiler';