diff --git a/application/config/autoload.php b/application/config/autoload.php
index 97eac47b8..76835381d 100755
--- a/application/config/autoload.php
+++ b/application/config/autoload.php
@@ -58,7 +58,7 @@ $autoload['packages'] = array();
|
| $autoload['libraries'] = array('user_agent' => 'ua');
*/
-$autoload['libraries'] = array('Session', 'FHC_Auth');
+$autoload['libraries'] = array('Session', 'AuthLib');
/*
| -------------------------------------------------------------------
diff --git a/application/config/rest.php b/application/config/rest.php
index ec2d6f5ad..4f3a78972 100644
--- a/application/config/rest.php
+++ b/application/config/rest.php
@@ -143,7 +143,7 @@ $config['auth_source'] = 'library';
| password for that username, even if it is hashed
|
*/
-$config['auth_library_class'] = 'FHC_Auth';
+$config['auth_library_class'] = 'AuthLib';
// rest_auth is basic
$config['auth_library_function'] = 'basicAuthentication';
diff --git a/application/controllers/api/v1/CheckUserAuth.php b/application/controllers/api/v1/CheckUserAuth.php
index a793845a7..ac4195808 100644
--- a/application/controllers/api/v1/CheckUserAuth.php
+++ b/application/controllers/api/v1/CheckUserAuth.php
@@ -22,18 +22,23 @@ class CheckUserAuth extends APIv1_Controller
public function __construct()
{
parent::__construct();
- $this->load->model('CheckUserAuth_model', 'CheckUserAuthModel');
+
+ // Loads the authentication library
+ $this->load->library('AuthLib');
}
-
+
+ /**
+ * Checks if username and password of a final user are valid
+ */
public function getCheckByUsernamePassword()
{
- $username = $this->get("username");
- $password = $this->get("password");
-
+ $username = $this->get('username');
+ $password = $this->get('password');
+
if (isset($username) && isset($password))
{
- $result = $this->CheckUserAuthModel->checkByUsernamePassword($username, $password);
-
+ $result = $this->authlib->CheckUserAuthByUsernamePassword($username, $password);
+
$this->response($result, REST_Controller::HTTP_OK);
}
else
@@ -41,4 +46,45 @@ class CheckUserAuth extends APIv1_Controller
$this->response();
}
}
-}
\ No newline at end of file
+
+ /**
+ * Checks if username and password of a final user are valid
+ * Returns all the keys with which is possible to obtain all the personal data about a final user
+ */
+ public function getCheckUserAuth()
+ {
+ $code = $this->get('code');
+ $email = $this->get('email');
+ $username = $this->get('username');
+ $password = $this->get('password');
+
+ $result = null;
+ $httpCode = null;
+
+ // If username and password are given then check authentication using them
+ if (isset($username) && isset($password))
+ {
+ $result = $this->authlib->CheckUserAuthByUsernamePassword($username, $password, true);
+ }
+ elseif (isset($code) || isset($email))
+ {
+ // If code and email are given then check authentication using them
+ if (isset($code) && isset($email))
+ {
+ $result = $this->authlib->CheckUserAuthByCodeEmail($code, $email);
+ }
+ else // otherwise check authentication using only code
+ {
+ $result = $this->authlib->CheckUserAuthByCode($code);
+ }
+ }
+
+ // If is a success and contains data
+ if (hasData($result))
+ {
+ $httpCode = REST_Controller::HTTP_OK;
+ }
+
+ $this->response($result, $httpCode);
+ }
+}
diff --git a/application/libraries/AuthLib.php b/application/libraries/AuthLib.php
new file mode 100644
index 000000000..80351cd45
--- /dev/null
+++ b/application/libraries/AuthLib.php
@@ -0,0 +1,190 @@
+ci =& get_instance();
+
+ // Loads helper message to manage returning messages
+ $this->ci->load->helper('Message');
+ }
+
+ /**
+ * Checks the authentication of an addon
+ * returns TRUE if valid, otherwise FALSE
+ */
+ public function basicAuthentication($username, $password)
+ {
+ return $this->checkpassword($username, $password);
+ }
+
+ /**
+ * Checks if the given username and password of a final user are valid
+ */
+ public function CheckUserAuthByUsernamePassword($username, $password, $keys = false)
+ {
+ $result = error(false);
+
+ if (isset($username) && isset($password))
+ {
+ if ($this->checkpassword($username, $password) === true)
+ {
+ if ($keys === true)
+ {
+ $result = $this->_getFinalUserBasicDataByUID($username);
+ }
+ else
+ {
+ $result = success(true);
+ }
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * Checks if the given code of a final user is valid
+ */
+ public function CheckUserAuthByCode($code)
+ {
+ $result = error(false);
+
+ // Load model PersonModel
+ $this->ci->load->model('person/person_model', 'PersonModel');
+
+ $person = $this->ci->PersonModel->loadWhere(array('zugangscode' => $code));
+
+ if (hasData($person))
+ {
+ $result = $this->_getFinalUserBasicDataByPersonID($person->retval[0]->person_id);
+ }
+
+ return $result;
+ }
+
+ /**
+ * Checks if the given code and email of a final user are valid
+ */
+ public function CheckUserAuthByCodeEmail($code, $email)
+ {
+ $result = error(false);
+
+ // Load model PersonModel
+ $this->ci->load->model('person/person_model', 'PersonModel');
+
+ $person = $this->ci->PersonModel->getPersonKontaktByZugangscode($code, $email);
+
+ if (hasData($person))
+ {
+ $result = $this->_getFinalUserBasicDataByPersonID($person->retval[0]->person_id);
+ }
+
+ return $result;
+ }
+
+ /**
+ * Returns all the keys with which is possible to obtain personal data about a final user
+ * using the given username (uid)
+ */
+ private function _getFinalUserBasicDataByUID($uid)
+ {
+ $finalUserBasicDataByUID = null;
+
+ // Load model BenutzerModel
+ $this->ci->load->model('person/Benutzer_model', 'BenutzerModel');
+
+ $benutzer = $this->ci->BenutzerModel->load($uid);
+
+ if (hasData($benutzer))
+ {
+ $finalUserBasicDataByUID = $this->_getFinalUserBasicDataByPersonID($benutzer->retval[0]->person_id, $uid);
+ }
+
+ return $finalUserBasicDataByUID;
+ }
+
+ /**
+ * Returns all the keys with which is possible to obtain personal data about a final user
+ * using the given person_id. The uid is optional
+ */
+ private function _getFinalUserBasicDataByPersonID($person_id, $uid = null)
+ {
+ $finalUserBasicDataByPersonID = new stdClass(); // returned object
+
+ // Store the person_id and eventually all the uids and prestudent_ids related to this final user
+ $finalUserBasicDataByPersonID->person_id = $person_id;
+ $finalUserBasicDataByPersonID->uids = array();
+ $finalUserBasicDataByPersonID->prestudent_ids = array();
+
+ // If the UID has not been given as a parameter
+ if ($uid != null)
+ {
+ $finalUserBasicDataByPersonID->uid[0] = $uid;
+ }
+ else
+ {
+ // Load model BenutzerModel
+ $this->ci->load->model('person/Benutzer_model', 'BenutzerModel');
+
+ // Loads all the benutzer whith that person_id
+ $benutzer = $this->ci->BenutzerModel->loadWhere(array('person_id' => $person_id));
+
+ if (hasData($benutzer)) // store all the uids
+ {
+ foreach ($benutzer->retval as $rownum => $rowdata)
+ {
+ $finalUserBasicDataByPersonID->uids[$rownum] = $rowdata->uid;
+ }
+ }
+ }
+
+ // Load model PrestudentModel
+ $this->ci->load->model('crm/Prestudent_model', 'PrestudentModel');
+
+ // Loads all the prestudent whith that person_id
+ $prestudent = $this->ci->PrestudentModel->loadWhere(array('person_id' => $person_id));
+
+ if (hasData($prestudent)) // store all the prestudent_ids
+ {
+ foreach ($prestudent->retval as $rownum => $rowdata)
+ {
+ $finalUserBasicDataByPersonID->prestudent_ids[$rownum] = $rowdata->prestudent_id;
+ }
+ }
+
+ return success($finalUserBasicDataByPersonID);
+ }
+}
diff --git a/application/libraries/FHC_Auth.php b/application/libraries/FHC_Auth.php
deleted file mode 100644
index dd7bb09e2..000000000
--- a/application/libraries/FHC_Auth.php
+++ /dev/null
@@ -1,69 +0,0 @@
-checkpassword($username, $password))
- {
- return true;
- }
- else
- {
- return false;
- }
- }
-
- /**
- *
- * TO BE UPDATED
- *
- * Get the md5 hashed password by the addon username
- *
- * @param string $username addon username
- * @return string md5 hashed string
- */
- public function digestAuthentication($username)
- {
- $aam = new AddonAuthentication();
-
- return md5($aam->getPasswordByUsername($username));
- }
-}
diff --git a/application/models/CheckUserAuth_model.php b/application/models/CheckUserAuth_model.php
deleted file mode 100644
index 503251268..000000000
--- a/application/models/CheckUserAuth_model.php
+++ /dev/null
@@ -1,18 +0,0 @@
-load->library('fhc_auth');
- }
-
- public function checkByUsernamePassword($username, $password)
- {
- return success($this->fhc_auth->checkpassword($username, $password));
- }
-}
\ No newline at end of file
diff --git a/content/student/aufnahmetermine.xul.php b/content/student/aufnahmetermine.xul.php
index ef5fcd387..62e273da2 100644
--- a/content/student/aufnahmetermine.xul.php
+++ b/content/student/aufnahmetermine.xul.php
@@ -139,7 +139,7 @@ echo ']>
+ sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#anmeldedatum_iso"/>
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/aufnahmetermine/rdf#studienplan_studiengang" />
+
+
+
+
@@ -202,6 +210,8 @@ echo ']>
+
+
diff --git a/content/student/studentenoverlay.xul.php b/content/student/studentenoverlay.xul.php
index 6e6fc6680..dd5916682 100644
--- a/content/student/studentenoverlay.xul.php
+++ b/content/student/studentenoverlay.xul.php
@@ -383,6 +383,9 @@ else
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/student/rdf#aktiv" onclick="StudentTreeSort()"/>
+
@@ -433,6 +436,7 @@ else
+
@@ -484,7 +488,7 @@ else
if(!defined('FAS_MESSAGES') || FAS_MESSAGES==true)
echo '';
?>
-
+
';
@@ -523,11 +527,11 @@ else
';
-
+
if (!defined('FAS_UDF') || FAS_UDF == true)
echo '';
?>
-
+
diff --git a/include/AddonAuthentication.php b/include/AddonAuthentication.php
deleted file mode 100644
index a67ea260b..000000000
--- a/include/AddonAuthentication.php
+++ /dev/null
@@ -1,46 +0,0 @@
-db->query($sql, array($username));
-
- if(!is_null($result) && $result->num_rows() > 0)
- {
- $password = $result->row()->password;
- }
-
- return $password;
- }
-}
\ No newline at end of file
diff --git a/include/pgsql.class.php b/include/pgsql.class.php
index 81c444dfd..52ac9b4f8 100644
--- a/include/pgsql.class.php
+++ b/include/pgsql.class.php
@@ -406,7 +406,8 @@ class basis_db extends db
foreach ($matches as $mk => $match)
{
- $values[$languages[$mk+1]] = $match[3] != '' ? stripcslashes($match[3]) : (strtolower($match[2]) == 'null' ? null : $match[2]);
+ if(isset($languages[$mk+1]))
+ $values[$languages[$mk+1]] = $match[3] != '' ? stripcslashes($match[3]) : (strtolower($match[2]) == 'null' ? null : $match[2]);
}
return $values;
}
diff --git a/rdf/lehrstunde.rdf.php b/rdf/lehrstunde.rdf.php
index bdfea690d..5c6fee800 100644
--- a/rdf/lehrstunde.rdf.php
+++ b/rdf/lehrstunde.rdf.php
@@ -138,7 +138,7 @@ $rdf_url='http://www.technikum-wien.at/lehrstunde';
db_add_param($studiensemester_kurzbz)."
+ AND studiengang_kz=".$db->db_add_param($studiengang_kz)." AND
+ semester=".$db->db_add_param($semester);
if(trim($verband)!='')
- $qry.=" AND trim(verband)=trim('".addslashes($verband)."')";
+ $qry.=" AND trim(verband)=trim(".$db->db_add_param($verband).")";
if(trim($gruppe)!='')
- $qry.=" AND trim(gruppe)=trim('".addslashes($gruppe)."')";
+ $qry.=" AND trim(gruppe)=trim(".$db->db_add_param($gruppe).")";
+ if($mitschwund)
+ {
+ // Studierende mit Anrechnungen herausnehmen
+ $qry.=" AND NOT EXISTS(
+ SELECT 1 FROM lehre.tbl_zeugnisnote
+ WHERE student_uid=tbl_studentlehrverband.student_uid
+ AND lehrveranstaltung_id=(SELECT lehrveranstaltung_id FROM lehre.tbl_lehreinheit
+ WHERE lehreinheit_id=".$db->db_add_param($lehreinheit_id, FHC_INTEGER).")
+ AND studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)."
+ AND note=6)";
+ // Abbrecher und Unterbrecher herausnehmen
+ $qry.=" AND get_rolle_prestudent((SELECT prestudent_id FROM public.tbl_student
+ WHERE student_uid=tbl_studentlehrverband.student_uid),null) NOT IN('Abbrecher','Unterbrecher') ";
+ }
}
else
{
$qry = "SELECT count(*) as anzahl FROM public.tbl_benutzergruppe
- WHERE studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'
- AND gruppe_kurzbz='".addslashes($gruppe_kurzbz)."'";
+ WHERE studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)."
+ AND gruppe_kurzbz=".$db->db_add_param($gruppe_kurzbz);
+
+ if($mitschwund)
+ {
+ // Studierende mit Anrechnungen herausnehmen
+ $qry.=" AND NOT EXISTS(
+ SELECT 1 FROM lehre.tbl_zeugnisnote
+ WHERE student_uid=tbl_benutzergruppe.uid
+ AND lehrveranstaltung_id=(SELECT lehrveranstaltung_id FROM lehre.tbl_lehreinheit
+ WHERE lehreinheit_id=".$db->db_add_param($lehreinheit_id, FHC_INTEGER).")
+ AND studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)."
+ AND note=6)";
+ // Abbrecher und Unterbrecher herausnehmen
+ $qry.=" AND get_rolle_prestudent((SELECT prestudent_id FROM public.tbl_student
+ WHERE student_uid=tbl_benutzergruppe.uid),null) NOT IN('Abbrecher','Unterbrecher') ";
+ }
}
if($res_anz = $db->db_query($qry))
@@ -180,7 +209,8 @@ if (is_array($lehrstunden->lehrstunden))
{
//Anzahl der Studenten in der Gruppe ermitteln
$stsem = getStudiensemesterFromDatum($ls->datum);
- $anzahl = getAnzahl($ls->studiengang_kz, $ls->sem, $ls->ver, $ls->grp, $ls->gruppe_kurzbz, $stsem);
+ $anzahl = getAnzahl($ls->studiengang_kz, $ls->sem, $ls->ver, $ls->grp, $ls->gruppe_kurzbz, $stsem, $ls->lehreinheit_id, false);
+ $anzahl_mitschwund = getAnzahl($ls->studiengang_kz, $ls->sem, $ls->ver, $ls->grp, $ls->gruppe_kurzbz, $stsem, $ls->lehreinheit_id, true);
$gruppenbezeichnung = '';
$gruppenbeschreibung = '';
@@ -225,7 +255,7 @@ if (is_array($lehrstunden->lehrstunden))
anmerkung; ?>]]>
anmerkung_lehreinheit; ?>]]>
titel; ?>]]>
- ]]>
+ ]]>
]]>
]]>
diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php
index 8538e1122..c4a18d61e 100644
--- a/system/dbupdate_3.3.php
+++ b/system/dbupdate_3.3.php
@@ -624,7 +624,7 @@ $tabellen=array(
"public.tbl_ortraumtyp" => array("ort_kurzbz","hierarchie","raumtyp_kurzbz"),
"public.tbl_organisationseinheit" => array("oe_kurzbz", "oe_parent_kurzbz", "bezeichnung","organisationseinheittyp_kurzbz", "aktiv","mailverteiler","freigabegrenze","kurzzeichen","lehre","standort","warn_semesterstunden_frei","warn_semesterstunden_fix","standort_id"),
"public.tbl_organisationseinheittyp" => array("organisationseinheittyp_kurzbz", "bezeichnung", "beschreibung"),
- "public.tbl_person" => array("person_id","staatsbuergerschaft","geburtsnation","sprache","anrede","titelpost","titelpre","nachname","vorname","vornamen","gebdatum","gebort","gebzeit","foto","anmerkung","homepage","svnr","ersatzkennzeichen","familienstand","geschlecht","anzahlkinder","aktiv","insertamum","insertvon","updateamum","updatevon","ext_id","bundesland_code","kompetenzen","kurzbeschreibung","zugangscode", "foto_sperre","matr_nr","zugangscode_timestamp"),
+ "public.tbl_person" => array("person_id","staatsbuergerschaft","geburtsnation","sprache","anrede","titelpost","titelpre","nachname","vorname","vornamen","gebdatum","gebort","gebzeit","foto","anmerkung","homepage","svnr","ersatzkennzeichen","familienstand","geschlecht","anzahlkinder","aktiv","insertamum","insertvon","updateamum","updatevon","ext_id","bundesland_code","kompetenzen","kurzbeschreibung","zugangscode", "foto_sperre","matr_nr","zugangscode_timestamp","udf_values"),
"public.tbl_person_fotostatus" => array("person_fotostatus_id","person_id","fotostatus_kurzbz","datum","insertamum","insertvon","updateamum","updatevon"),
"public.tbl_personfunktionstandort" => array("personfunktionstandort_id","funktion_kurzbz","person_id","standort_id","position","anrede"),
"public.tbl_preincoming" => array("preincoming_id","person_id","mobilitaetsprogramm_code","zweck_code","firma_id","universitaet","aktiv","bachelorthesis","masterthesis","von","bis","uebernommen","insertamum","insertvon","updateamum","updatevon","anmerkung","zgv","zgv_ort","zgv_datum","zgv_name","zgvmaster","zgvmaster_datum","zgvmaster_ort","zgvmaster_name","program_name","bachelor","master","jahre","person_id_emergency","person_id_coordinator_dep","person_id_coordinator_int","code","deutschkurs1","deutschkurs2","research_area","deutschkurs3","ext_id"),
@@ -636,7 +636,7 @@ $tabellen=array(
"public.tbl_preoutgoing_lehrveranstaltung" => array("preoutgoing_lehrveranstaltung_id","preoutgoing_id","bezeichnung","ects","endversion","insertamum","insertvon","updateamum","updatevon","wochenstunden","unitcode"),
"public.tbl_preoutgoing_preoutgoing_status" => array("status_id","preoutgoing_status_kurzbz","preoutgoing_id","datum","insertamum","insertvon","updateamum","updatevon"),
"public.tbl_preoutgoing_status" => array("preoutgoing_status_kurzbz","bezeichnung"),
- "public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor","zgvnation","zgvmanation","zgvdoktornation","gsstudientyp_kurzbz","aufnahmegruppe_kurzbz"),
+ "public.tbl_prestudent" => array("prestudent_id","aufmerksamdurch_kurzbz","person_id","studiengang_kz","berufstaetigkeit_code","ausbildungcode","zgv_code","zgvort","zgvdatum","zgvmas_code","zgvmaort","zgvmadatum","aufnahmeschluessel","facheinschlberuf","reihungstest_id","anmeldungreihungstest","reihungstestangetreten","rt_gesamtpunkte","rt_punkte1","rt_punkte2","bismelden","anmerkung","dual","insertamum","insertvon","updateamum","updatevon","ext_id","ausstellungsstaat","rt_punkte3", "zgvdoktor_code", "zgvdoktorort", "zgvdoktordatum","mentor","zgvnation","zgvmanation","zgvdoktornation","gsstudientyp_kurzbz","aufnahmegruppe_kurzbz","udf_values"),
"public.tbl_prestudentstatus" => array("prestudent_id","status_kurzbz","studiensemester_kurzbz","ausbildungssemester","datum","orgform_kurzbz","insertamum","insertvon","updateamum","updatevon","ext_id","studienplan_id","bestaetigtam","bestaetigtvon","fgm","faktiv", "anmerkung","bewerbung_abgeschicktamum","rt_stufe","statusgrund_id"),
"public.tbl_raumtyp" => array("raumtyp_kurzbz","beschreibung","kosten"),
"public.tbl_reihungstest" => array("reihungstest_id","studiengang_kz","ort_kurzbz","anmerkung","datum","uhrzeit","updateamum","updatevon","insertamum","insertvon","ext_id","freigeschaltet","max_teilnehmer","oeffentlich","studiensemester_kurzbz","aufnahmegruppe_kurzbz","stufe","anmeldefrist"),
@@ -686,7 +686,7 @@ $tabellen=array(
"system.tbl_webservicerecht" => array("webservicerecht_id","berechtigung_kurzbz","methode","attribut","insertamum","insertvon","updateamum","updatevon","klasse"),
"system.tbl_webservicetyp" => array("webservicetyp_kurzbz","beschreibung"),
"system.tbl_server" => array("server_kurzbz","beschreibung"),
- "system.tbl_udf" => array("schema", "tbl_udf.table", "jsons"),
+ "system.tbl_udf" => array("schema", "table", "jsons"),
"wawi.tbl_betriebsmittelperson" => array("betriebsmittelperson_id","betriebsmittel_id","person_id", "anmerkung", "kaution", "ausgegebenam", "retouram","insertamum", "insertvon","updateamum", "updatevon","ext_id","uid"),
"wawi.tbl_betriebsmittel" => array("betriebsmittel_id","betriebsmitteltyp","oe_kurzbz", "ort_kurzbz", "beschreibung", "nummer", "hersteller","seriennummer", "bestellung_id","bestelldetail_id", "afa","verwendung","anmerkung","reservieren","updateamum","updatevon","insertamum","insertvon","ext_id","inventarnummer","leasing_bis","inventuramum","inventurvon","anschaffungsdatum","anschaffungswert","hoehe","breite","tiefe","nummer2","verplanen"),
"wawi.tbl_betriebsmittel_betriebsmittelstatus" => array("betriebsmittelbetriebsmittelstatus_id","betriebsmittel_id","betriebsmittelstatus_kurzbz", "datum", "updateamum", "updatevon", "insertamum", "insertvon","anmerkung"),
@@ -720,7 +720,7 @@ foreach ($tabellen AS $attribute)
{
$sql_attr='';
foreach($attribute AS $attr)
- $sql_attr.=$attr.',';
+ $sql_attr.='"'.$attr.'",';
$sql_attr=substr($sql_attr, 0, -1);
if (!@$db->db_query('SELECT '.$sql_attr.' FROM '.$tabs[$i].' LIMIT 1;'))
diff --git a/system/mlists/mlists_generate.php b/system/mlists/mlists_generate.php
index 7ce919eef..7059e2e4b 100644
--- a/system/mlists/mlists_generate.php
+++ b/system/mlists/mlists_generate.php
@@ -76,55 +76,55 @@ $error_msg='';
$qry = "UPDATE public.tbl_gruppe SET generiert=true WHERE UPPER(gruppe_kurzbz)=UPPER('".addslashes($gruppe)."')";
$db->db_query($qry);
}
-
+
/**
* Einfache Verteiler, deren Erstellung ohne Schleifen-Logik moeglich ist, werden ueber dieses Array erstellt
* Benoetigt werden die 3 Attribute:
* $verteilerArray['name_des_verteilers']['bezeichnung'] = 'Bezeichnung des Verteilers (32 Zeichen)';
* $verteilerArray['name_des_verteilers']['beschreibung'] = 'Beschreibung des Verteilers (Anzeige im CIS)(128 Zeichen)';
* $verteilerArray['name_des_verteilers']['sql'] = 'UIDs, die im Verteiler enthalten sein sollen (kein Semikolon am Ende)';
- *
+ *
* Die Verteiler werden dann alle gleich erstellt:
* - Pruefen, ob Gruppe existiert, wenn nicht, anlegen mit Default-Werten
* - Gruppe auf generiert setzen
* - UIDs loeschen, die nicht mehr in den Verteiler gehoeren
* - UIDs hinzufuegen, die im Verteiler fehlen
*/
-
+
$verteilerArray = array();
-
+
// Sql-Schema: SELECT foo AS uid FROM bar WHERE foobar
-
+
//Aktive MitarbeiterInnen mit Personalnummer > 0
$verteilerArray['tw_ma']['bezeichnung'] = 'Alle aktiven MitarbeiterInnen';
$verteilerArray['tw_ma']['beschreibung'] = 'Alle aktiven MitarbeiterInnen';
- $verteilerArray['tw_ma']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
- FROM public.tbl_mitarbeiter
- JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
- WHERE aktiv
+ $verteilerArray['tw_ma']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
+ FROM public.tbl_mitarbeiter
+ JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
+ WHERE aktiv
AND personalnummer >= 0";
//Aktive weibliche MitarbeiterInnen mit Personalnummer > 0
$verteilerArray['tw_ma_w']['bezeichnung'] = 'Weibliche Mitarbeiterinnen';
$verteilerArray['tw_ma_w']['beschreibung'] = 'Weibliche Mitarbeiterinnen';
- $verteilerArray['tw_ma_w']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
- FROM public.tbl_mitarbeiter
- JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
- JOIN public.tbl_person USING(person_id)
- WHERE tbl_benutzer.aktiv
- AND geschlecht='w'
+ $verteilerArray['tw_ma_w']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
+ FROM public.tbl_mitarbeiter
+ JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
+ JOIN public.tbl_person USING(person_id)
+ WHERE tbl_benutzer.aktiv
+ AND geschlecht='w'
AND personalnummer >=0";
//Alle aktiven MitarbeiterInnen mit Attribut lektor=true
$verteilerArray['tw_lkt']['bezeichnung'] = 'Alle LektorInnen';
$verteilerArray['tw_lkt']['beschreibung'] = 'Alle LektorInnen an der FH Technikum Wien';
- $verteilerArray['tw_lkt']['sql'] = " SELECT mitarbeiter_uid AS uid
- FROM public.tbl_mitarbeiter
- JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
- WHERE lektor
+ $verteilerArray['tw_lkt']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
+ FROM public.tbl_mitarbeiter
+ JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
+ WHERE lektor
AND aktiv";
//MitarbeiterInnen mit gueltiger Funktion "ass" (assistenz)
$verteilerArray['tw_sek']['bezeichnung'] = 'Alle Sekretariate';
$verteilerArray['tw_sek']['beschreibung'] = 'Alle Sekretariate an der FH Technikum Wien';
- $verteilerArray['tw_sek']['sql'] = " SELECT mitarbeiter_uid AS uid
+ $verteilerArray['tw_sek']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
FROM
public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
@@ -147,7 +147,7 @@ $error_msg='';
AND (tbl_benutzerfunktion.funktion_kurzbz='Leitung' OR funktion_kurzbz='gLtg' OR funktion_kurzbz='stvLtg')
AND (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now())
AND (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())
- AND mitarbeiter_uid NOT LIKE '\\\\_%'
+ AND mitarbeiter_uid NOT LIKE '\\\\_%'
AND tbl_studiengang.aktiv=true";
//Aktive MitarbeiterInnen mit gueltiger Funktion "Leitung", "gLtg" oder "stvLtg" in aktiven Bachelor- oder Master-Studiengaengen mit Kennzahl>0 und Kennzahl<10000
$verteilerArray['tw_stgl_bama']['bezeichnung'] = 'Studiengangsleitung BAMA';
@@ -171,36 +171,36 @@ $error_msg='';
//Alle aktiven MitarbeiterInnen mit Attribut fixangestellt=true
$verteilerArray['tw_fix']['bezeichnung'] = 'Alle Fix-Angestellten';
$verteilerArray['tw_fix']['beschreibung'] = 'Alle Fix-Angestellten an der FH Technikum Wien';
- $verteilerArray['tw_fix']['sql'] = " SELECT mitarbeiter_uid AS uid
- FROM public.tbl_mitarbeiter
- JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid)
- WHERE fixangestellt
- AND aktiv
+ $verteilerArray['tw_fix']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
+ FROM public.tbl_mitarbeiter
+ JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid)
+ WHERE fixangestellt
+ AND aktiv
AND mitarbeiter_uid NOT LIKE '\\\\_%'";
//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';
- $verteilerArray['tw_fix_lkt']['sql'] = " SELECT mitarbeiter_uid AS uid
- FROM public.tbl_mitarbeiter
- JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid)
- WHERE fixangestellt
- AND lektor
- AND aktiv
+ $verteilerArray['tw_fix_lkt']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
+ FROM public.tbl_mitarbeiter
+ JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid)
+ WHERE fixangestellt
+ AND lektor
+ AND aktiv
AND mitarbeiter_uid NOT LIKE '\\\\_%'";
//Alle aktiven MitarbeiterInnen mit Attribut fixangestellt=false und lektor=true
$verteilerArray['tw_ext_lkt']['bezeichnung'] = 'Externe LektorInnen';
$verteilerArray['tw_ext_lkt']['beschreibung'] = 'Alle externen LektorInnen an der FH Technikum Wien';
- $verteilerArray['tw_ext_lkt']['sql'] = " SELECT mitarbeiter_uid AS uid
- FROM public.tbl_mitarbeiter
- JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid)
- WHERE NOT fixangestellt
- AND lektor
- AND aktiv
+ $verteilerArray['tw_ext_lkt']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
+ FROM public.tbl_mitarbeiter
+ JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid)
+ WHERE NOT fixangestellt
+ AND lektor
+ AND aktiv
AND mitarbeiter_uid NOT LIKE '\\\\_%'";
//Hochschulvertretung. Studierende mit gueltiger Funktion 'hsv'.
$verteilerArray['tw_hsv']['bezeichnung'] = 'Hochschulvertretung FHTW';
$verteilerArray['tw_hsv']['beschreibung'] = 'Hochschulvertretung FHTW';
- $verteilerArray['tw_hsv']['sql'] = " SELECT uid
+ $verteilerArray['tw_hsv']['sql'] = " SELECT DISTINCT uid
FROM
public.tbl_benutzerfunktion
JOIN public.tbl_benutzer USING(uid)
@@ -212,7 +212,7 @@ $error_msg='';
//Studienvertretung. Studierende mit gueltiger Funktion 'stdv'.
$verteilerArray['tw_stdv']['bezeichnung'] = 'Alle StudierendenvertreterInnen';
$verteilerArray['tw_stdv']['beschreibung'] = 'Alle StudierendenvertreterInnen';
- $verteilerArray['tw_stdv']['sql'] = " SELECT uid
+ $verteilerArray['tw_stdv']['sql'] = " SELECT DISTINCT uid
FROM
public.tbl_benutzerfunktion
JOIN public.tbl_benutzer USING(uid)
@@ -224,7 +224,7 @@ $error_msg='';
//Jahrgangsvertretung. Studierende mit gueltiger Funktion 'jgv'.
$verteilerArray['tw_jgv']['bezeichnung'] = 'Alle JahrgangsvertreterInnen';
$verteilerArray['tw_jgv']['beschreibung'] = 'Alle JahrgangsvertreterInnen';
- $verteilerArray['tw_jgv']['sql'] = " SELECT uid
+ $verteilerArray['tw_jgv']['sql'] = " SELECT DISTINCT uid
FROM
public.tbl_benutzerfunktion
JOIN public.tbl_benutzer USING(uid)
@@ -233,12 +233,12 @@ $error_msg='';
AND tbl_benutzer.aktiv AND
(tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND
(tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now())";
- //Alle aktiven Studierenden
+ //Alle aktiven Studierenden
//Abbrecher bleiben noch 3 Wochen im Verteiler andere inaktive noch fuer 20 Wochen
//damit im CIS die Menuepunkte fuer Studierende richtig angezeigt werden
$verteilerArray['tw_std']['bezeichnung'] = 'Alle Studierenden';
$verteilerArray['tw_std']['beschreibung'] = 'Alle ordentlichen, außerordentlichen und fiktiven Studierenden';
- $verteilerArray['tw_std']['sql'] = " SELECT uid
+ $verteilerArray['tw_std']['sql'] = " SELECT DISTINCT uid
FROM campus.vw_student
WHERE (
aktiv
@@ -251,7 +251,7 @@ $error_msg='';
//Abbrecher bleiben noch 3 Wochen im Verteiler andere inaktive noch fuer 20 Wochen
$verteilerArray['tw_std_m']['bezeichnung'] = 'Alle männlichen Studenten';
$verteilerArray['tw_std_m']['beschreibung'] = 'Alle männlichen Studenten an der FHTW';
- $verteilerArray['tw_std_m']['sql'] = " SELECT uid
+ $verteilerArray['tw_std_m']['sql'] = " SELECT DISTINCT uid
FROM campus.vw_student
WHERE (
aktiv
@@ -265,7 +265,7 @@ $error_msg='';
//Abbrecher bleiben noch 3 Wochen im Verteiler andere inaktive noch fuer 20 Wochen
$verteilerArray['tw_std_w']['bezeichnung'] = 'Alle weiblichen Studentinnen';
$verteilerArray['tw_std_w']['beschreibung'] = 'Alle weiblichen Studentinnen an der FHTW';
- $verteilerArray['tw_std_w']['sql'] = " SELECT uid
+ $verteilerArray['tw_std_w']['sql'] = " SELECT DISTINCT uid
FROM campus.vw_student
WHERE (
aktiv
@@ -279,7 +279,7 @@ $error_msg='';
//Absolventen bleiben noch 20 Wochen im Verteiler
$verteilerArray['tw_bama']['bezeichnung'] = 'Alle BaMa-Studierenden';
$verteilerArray['tw_bama']['beschreibung'] = 'Alle ordentlichen Bachelor- und Master-Studierenden';
- $verteilerArray['tw_bama']['sql'] = " SELECT uid
+ $verteilerArray['tw_bama']['sql'] = " SELECT DISTINCT uid
FROM campus.vw_student
WHERE (
aktiv
@@ -287,7 +287,7 @@ $error_msg='';
(aktiv=false AND get_rolle_prestudent(vw_student.prestudent_id, null)='Absolvent' AND updateaktivam>now()-'20 weeks'::interval)
AND studiengang_kz IN (SELECT studiengang_kz FROM public.tbl_studiengang WHERE typ IN ('b','m'))
)";
- //Moodle-LektorenVerteiler
+ //Moodle-LektorenVerteiler
$verteilerArray['moodle_lkt']['bezeichnung'] = 'Moodle Lektoren';
$verteilerArray['moodle_lkt']['beschreibung'] = 'Moodle Lektoren';
$verteilerArray['moodle_lkt']['sql'] = " SELECT distinct mitarbeiter_uid AS uid
@@ -310,7 +310,7 @@ $error_msg='';
JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
JOIN public.tbl_benutzerfunktion USING(uid)
JOIN public.tbl_organisationseinheit USING(oe_kurzbz)
- WHERE tbl_benutzer.aktiv AND (funktion_kurzbz='Leitung')
+ WHERE tbl_benutzer.aktiv AND (funktion_kurzbz='Leitung')
AND (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now())
AND (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())
AND tbl_organisationseinheit.organisationseinheittyp_kurzbz='Abteilung'";
@@ -387,10 +387,10 @@ $error_msg='';
//Alle aktiven MitarbeiterInnen mit Funktion Leitung oder stvLeitung oder gfLtg
$verteilerArray['tw_leitung']['bezeichnung'] = 'Alle MA mit Leitungsfunktion';
$verteilerArray['tw_leitung']['beschreibung'] = 'Alle MA mit Funktion Leitung, stellvertretende Leitung oder geschäftsführende Leitung';
- $verteilerArray['tw_leitung']['sql'] = " SELECT DISTINCT uid
- FROM
- public.tbl_person
- JOIN public.tbl_benutzer USING (person_id)
+ $verteilerArray['tw_leitung']['sql'] = " SELECT DISTINCT uid
+ FROM
+ public.tbl_person
+ JOIN public.tbl_benutzer USING (person_id)
JOIN tbl_benutzerfunktion USING (uid)
WHERE funktion_kurzbz IN('Leitung','stvLtg','gLtg')
AND tbl_benutzer.aktiv
@@ -412,7 +412,21 @@ $error_msg='';
(vw_student.aktiv=false AND get_rolle_prestudent(vw_student.prestudent_id, null)!='Abbrecher' AND vw_student.updateaktivam>now()-'20 weeks'::interval))
AND tbl_organisationseinheit.oe_parent_kurzbz='lehrgang'
AND organisationseinheittyp_kurzbz='Lehrgang'";
-
+ //Alle aktiven Lektoren von BIF DUA
+ $verteilerArray['bif_lkt_dua']['bezeichnung'] = 'Alle Lektoren von BIF DUAL';
+ $verteilerArray['bif_lkt_dua']['beschreibung'] = 'Alle Lektoren von BIF DUAL';
+ $verteilerArray['bif_lkt_dua']['sql'] = "SELECT distinct mitarbeiter_uid as uid
+ FROM
+ lehre.tbl_lehrveranstaltung
+ JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id)
+ JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
+ WHERE
+ (studiensemester_kurzbz='$studiensemester' OR
+ studiensemester_kurzbz='$stsem2')
+ AND mitarbeiter_uid NOT LIKE '\\\\_%'
+ AND tbl_lehrveranstaltung.studiengang_kz=257
+ AND tbl_lehrveranstaltung.orgform_kurzbz='DUA'
+ ";
$bezeichnung = '';
$beschreibung = '';
foreach ($verteilerArray AS $listname => $data)
@@ -423,14 +437,14 @@ $error_msg='';
{
if (strlen($data['bezeichnung']) > 32)
$bezeichnung = substr($data['bezeichnung'], 0, 32);
- else
+ else
$bezeichnung = $data['bezeichnung'];
-
+
if (strlen($data['beschreibung']) > 128)
$beschreibung = substr($data['beschreibung'], 0, 128);
else
$beschreibung = $data['beschreibung'];
-
+
$grp->gruppe_kurzbz = $listname;
$grp->studiengang_kz = '0';
$grp->semester = '0';
@@ -447,7 +461,7 @@ $error_msg='';
$grp->aufnahmegruppe = false;
$grp->insertamum = date('Y-m-d H:i:s');
$grp->insertvon = 'mlists_generate';
-
+
if(!$grp->save(true, true))
{
$error_msg .= 'Fehler beim Anlegen der Gruppe '.$listname.': '.$grp->errormsg;
@@ -464,36 +478,36 @@ $error_msg='';
if (substr($data['sql'], -1) == ';')
$data['sql'] = substr($data['sql'], 0, strlen($data['sql'])-1);
- $qry_delete = " DELETE FROM
- public.tbl_benutzergruppe
- WHERE
- UPPER(gruppe_kurzbz)=UPPER(".$db->db_add_param($listname).")
- AND
+ $qry_delete = " DELETE FROM
+ public.tbl_benutzergruppe
+ WHERE
+ UPPER(gruppe_kurzbz)=UPPER(".$db->db_add_param($listname).")
+ AND
uid NOT IN (".$data['sql'].");";
if(!($result = $db->db_query($qry_delete)))
$error_msg .= $db->db_last_error().$qry_delete.'
';
-
+
echo strtoupper($listname).' '.$db->db_affected_rows($result).' Einträge gelöscht
';
-
+
flush();
- $qry_insert = " WITH
+ $qry_insert = " WITH
uids AS (".$data['sql'].")
- INSERT INTO
- public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon)
- SELECT
- *, UPPER(".$db->db_add_param($listname)."), now(), 'mlists_generate'
- FROM
- uids
- WHERE
+ INSERT INTO
+ public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon)
+ SELECT
+ *, UPPER(".$db->db_add_param($listname)."), now(), 'mlists_generate'
+ FROM
+ uids
+ WHERE
uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER(".$db->db_add_param($listname)."));";
if(!($result = $db->db_query($qry_insert)))
$error_msg .= $db->db_last_error().$qry_insert.'
';
-
+
echo strtoupper($listname).' '.$db->db_affected_rows($result).' Einträge hinzugefügt
';
-
+
flush();
}
@@ -501,7 +515,7 @@ $error_msg='';
// Erstellen der Mailinglisten mit Schleifen-Logik
// **************************************************************
-
+
// **************************************************************
// Lektoren-Verteiler innerhalb der Studiengaenge abgleichen
// Lektoren holen die nicht mehr in den Verteiler gehoeren
@@ -998,7 +1012,7 @@ $error_msg='';
}
}
echo '
';
-
+
// **************************************************************
// Studierendenverteiler fuer die einzelnen Organisationseinheiten bei Mischformen
echo '
Abgleich der Mischformverteiler';
@@ -1103,7 +1117,7 @@ $error_msg='';
$error_msg.=$db->db_last_error().' '.$sql_query;
echo $error_msg;
-
+
// Send Mail to admin if error occurs
if ($error_msg != '')
{
diff --git a/vilesci/bis/studentenmeldung.php b/vilesci/bis/studentenmeldung.php
index 5b194fc8e..5222093d0 100644
--- a/vilesci/bis/studentenmeldung.php
+++ b/vilesci/bis/studentenmeldung.php
@@ -803,6 +803,7 @@ function GenerateXMLStudentBlock($row)
AND studiensemester_kurzbz=".$db->db_add_param($aktstatus_stsem)."
ORDER BY tbl_mobilitaet.insertamum DESC limit 1;";
+ $studtyp = '';
if($resultgs = $db->db_query($qrygs))
{
while($rowgs = $db->db_fetch_object($resultgs))
@@ -1021,7 +1022,7 @@ function GenerateXMLStudentBlock($row)
}
}
- if($beginndatum!='' && !$ausserordentlich)
+ if($beginndatum!='' && !$ausserordentlich && $studtyp!='E')
{
$datei.="
".date("dmY", $datumobj->mktime_fromdate($beginndatum))."";
@@ -1037,14 +1038,17 @@ function GenerateXMLStudentBlock($row)
Incoming
Ausserordentlich Studierender
*/
- if($aktstatus!='Incoming' && !$ausserordentlich)
+ if($aktstatus!='Incoming' && !$ausserordentlich && $studtyp!='E')
{
$datei.="
".$sem."";
}
- $datei.="
- ".$status."";
+ if($studtyp!='E')
+ {
+ $datei.="
+ ".$status."";
+ }
if($orgform_code_array[$storgform]!=1 && !$ausserordentlich) // Wenn nicht Vollzeit und nicht Ausserordentlich
{