From 3a3656139b990fd274db34849ec5f14008e13975 Mon Sep 17 00:00:00 2001 From: Andreas Oesterreicher Date: Wed, 6 Sep 2017 08:00:51 +0200 Subject: [PATCH 1/4] Added UserDefinedFields to Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61be20952..9e0ba7e95 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ - **[FAS]** Bei Statuswechsel von Studierenden können Gründe für den Statuswechsel angegeben werden - **[ADDONS]** Addons können Menüpunkte im Vilesci anpassen - **[ADDONS]** Addons können Noten für die Gesamtnote vorschlagen +- **[CORE]** UserDefinedFields ### CHANGED - **[CORE]** Berechtigungsprüfung wurde angepasst damit deaktivierte Benutzer keine Berechtigungen mehr haben From 3e7402955268dba501b2f5216d9d066db36c0d5f Mon Sep 17 00:00:00 2001 From: Paolo Date: Thu, 7 Sep 2017 13:43:56 +0200 Subject: [PATCH 2/4] If the recipient is an employee and has a UID then send the email to UID@Domain --- application/libraries/MessageLib.php | 24 +++++-- application/models/system/Recipient_model.php | 67 ++++++++++--------- 2 files changed, 57 insertions(+), 34 deletions(-) diff --git a/application/libraries/MessageLib.php b/application/libraries/MessageLib.php index 7a1d8df8f..3b18874eb 100755 --- a/application/libraries/MessageLib.php +++ b/application/libraries/MessageLib.php @@ -422,7 +422,8 @@ class MessageLib for ($i = 0; $i < count($result->retval) && $sent; $i++) { // If the person has an email account - if (!is_null($result->retval[$i]->receiver) && $result->retval[$i]->receiver != '') + if ((!is_null($result->retval[$i]->receiver) && $result->retval[$i]->receiver != '') + || (!is_null($result->retval[$i]->employeecontact) && $result->retval[$i]->employeecontact != '')) { $href = $this->ci->config->item('message_server').$this->ci->config->item('message_html_view_url').$result->retval[0]->token; // Using a template for the html email body @@ -461,10 +462,17 @@ class MessageLib { $sender = $result->retval[0]->sender; } + + $receiverContanct = $result->retval[$i]->receiver; + if (!is_null($result->retval[$i]->employeecontact) && $result->retval[$i]->employeecontact != '') + { + $receiverContanct = $result->retval[$i]->employeecontact.'@'.DOMAIN; + } + // Sending email $sent = $this->ci->maillib->send( $sender, - $result->retval[$i]->receiver, + $receiverContanct, $result->retval[$i]->subject, $body, null, @@ -546,6 +554,7 @@ class MessageLib null, $message_id ); + // Checks if errors were occurred if (isSuccess($result)) { @@ -553,7 +562,8 @@ class MessageLib if (is_array($result->retval) && count($result->retval) > 0) { // If the person has an email account - if (!is_null($result->retval[0]->receiver) && $result->retval[0]->receiver != '') + if ((!is_null($result->retval[0]->receiver) && $result->retval[0]->receiver != '') + || (!is_null($result->retval[0]->employeecontact) && $result->retval[0]->employeecontact != '')) { // If it is required use a multi-part message in MIME format if ($multiPartMime === true) @@ -602,10 +612,16 @@ class MessageLib $sender = $result->retval[0]->sender; } + $receiverContanct = $result->retval[0]->receiver; + if (!is_null($result->retval[0]->employeecontact) && $result->retval[0]->employeecontact != '') + { + $receiverContanct = $result->retval[0]->employeecontact.'@'.DOMAIN; + } + // Sending email $sent = $this->ci->maillib->send( $sender, - $result->retval[0]->receiver, + $receiverContanct, is_null($subject) ? $result->retval[0]->subject : $subject, // if parameter subject is not null, use it! $bodyMsg, null, diff --git a/application/models/system/Recipient_model.php b/application/models/system/Recipient_model.php index 790f7487e..b8ffecab3 100644 --- a/application/models/system/Recipient_model.php +++ b/application/models/system/Recipient_model.php @@ -12,7 +12,7 @@ class Recipient_model extends DB_Model $this->pk = array('person_id', 'message_id'); $this->hasSequence = false; } - + /** * Get data for a received message */ @@ -27,7 +27,7 @@ class Recipient_model extends DB_Model return $ent; if (isError($ent = $this->isEntitled('public.tbl_msg_recipient', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent; - + $query = 'SELECT mr.message_id, mr.person_id, mm.subject, @@ -43,13 +43,13 @@ class Recipient_model extends DB_Model SELECT person_id, kontakt FROM public.tbl_kontakt WHERE kontakttyp = \'email\' ) ks ON (ks.person_id = mr.person_id) WHERE mr.message_id = ? AND mr.person_id = ?'; - + $parametersArray = array($message_id, $person_id); - + // Get data of the messages to sent return $this->execQuery($query, $parametersArray); } - + /** * Get a received message identified by token */ @@ -62,7 +62,7 @@ class Recipient_model extends DB_Model return $ent; if (isError($ent = $this->isEntitled('public.tbl_msg_status', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent; - + $sql = 'SELECT r.message_id, m.person_id as sender_id, r.person_id as receiver_id, @@ -80,10 +80,10 @@ class Recipient_model extends DB_Model ) s ON (r.message_id = s.message_id AND r.person_id = s.person_id) WHERE r.token = ? LIMIT 1'; - + return $this->execQuery($sql, array(MSG_STATUS_DELETED, $token)); } - + /** * Get all received messages for a person identified by person_id */ @@ -98,7 +98,7 @@ class Recipient_model extends DB_Model return $ent; if (isError($ent = $this->isEntitled('public.tbl_msg_status', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent; - + $sql = 'SELECT DISTINCT ON (r.message_id) r.message_id, m.person_id, m.subject, @@ -126,9 +126,9 @@ class Recipient_model extends DB_Model ) s ON (m.message_id = s.message_id AND r.person_id = s.person_id) WHERE r.person_id = ? ORDER BY r.message_id DESC, s.status DESC'; - + $parametersArray = array($person_id); - + if ($all == 'true') { $sql = sprintf($sql, ''); @@ -138,10 +138,10 @@ class Recipient_model extends DB_Model array_push($parametersArray, $person_id, $person_id); $sql = sprintf($sql, 'WHERE person_id = ? AND message_id NOT IN (SELECT message_id FROM public.tbl_msg_status WHERE status >= 3 AND person_id = ?)'); } - + return $this->execQuery($sql, $parametersArray); } - + /** * Get all received messages for a person identified by uid */ @@ -188,18 +188,18 @@ class Recipient_model extends DB_Model SELECT * FROM public.tbl_msg_status ORDER BY insertamum DESC LIMIT 1 ) s ON (r.message_id = s.message_id AND r.person_id = s.person_id) WHERE b.uid = ?'; - + if (! $all) $sql .= ' AND (status < 3 OR status IS NULL)'; - + return $this->execQuery($sql, array($uid)); } - + /** * getMessages - * + * * Gets all the messages to be sent - * + * * @param kontaktType specifies the type of the kontakt to get * @param sent specifies the status of the messages to get (NULL never sent, otherwise the shipping date) * @param limit specifies the number of messages to get @@ -214,10 +214,11 @@ class Recipient_model extends DB_Model return $ent; if (isError($ent = $this->isEntitled('public.tbl_kontakt', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent; - + $query = 'SELECT mm.message_id, ks.kontakt as sender, kr.kontakt as receiver, + mu.mitarbeiter_uid as employeeContact, mr.person_id as receiver_id, mr.token, mm.subject, @@ -229,10 +230,16 @@ class Recipient_model extends DB_Model ) ks ON (ks.person_id = mm.person_id) LEFT JOIN ( SELECT person_id, kontakt FROM public.tbl_kontakt WHERE kontakttyp = ? - ) kr ON (kr.person_id = mr.person_id)'; - + ) kr ON (kr.person_id = mr.person_id) + LEFT JOIN ( + SELECT b.person_id, + m.mitarbeiter_uid + FROM public.tbl_benutzer b INNER JOIN public.tbl_mitarbeiter m ON(b.uid = m.mitarbeiter_uid) + WHERE b.aktiv = TRUE + ) mu ON (mu.person_id = mr.person_id)'; + $parametersArray = array($kontaktType, $kontaktType); - + if (is_null($sent) || $sent == '') { $query .= ' WHERE mr.sent IS NULL'; @@ -242,24 +249,24 @@ class Recipient_model extends DB_Model array_push($parametersArray, $sent); $query .= ' WHERE mr.sent = ?'; } - + if (!is_null($message_id)) { array_push($parametersArray, $message_id); $query .= ' AND mm.message_id = ?'; } - + $query .= ' ORDER BY mr.insertamum ASC'; - + if (!is_null($limit)) { $query .= ' LIMIT ?'; array_push($parametersArray, $limit); } - + return $this->execQuery($query, $parametersArray); } - + /** * Get all unread messages for a person identified by person_id */ @@ -270,7 +277,7 @@ class Recipient_model extends DB_Model return $ent; if (isError($ent = $this->isEntitled('public.tbl_msg_status', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent; - + $sql = 'SELECT COUNT(r.message_id) AS unreadMessages FROM public.tbl_msg_recipient r JOIN public.tbl_msg_status s ON (r.message_id = s.message_id AND r.person_id = s.person_id) @@ -283,9 +290,9 @@ class Recipient_model extends DB_Model WHERE r.person_id = ? AND s.status > ? )'; - + $parametersArray = array($person_id, MSG_STATUS_UNREAD, $person_id, MSG_STATUS_UNREAD); - + return $this->execQuery($sql, $parametersArray); } } From cd81bac7eba4c6e2a94f3b295985ed49995b8cc7 Mon Sep 17 00:00:00 2001 From: Paolo Date: Thu, 7 Sep 2017 14:05:45 +0200 Subject: [PATCH 3/4] Added foreign keys for columns sprache, orgeinheit_kurzbz and orgform_kurzbz to table system.tbl_phrasentext --- system/dbupdate_3.3.php | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index e2a904f8b..8538e1122 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -402,6 +402,34 @@ if ($result = @$db->db_query("SELECT conname FROM pg_constraint WHERE conname = } } +// FOREIGN KEY tbl_phrasentext_orgeinheit_kurzbz_fkey: system.tbl_phrasentext.orgeinheit_kurzbz references public.tbl_organisationseinheit.orgeinheit_kurzbz +if ($result = @$db->db_query("SELECT conname FROM pg_constraint WHERE conname = 'tbl_phrasentext_orgeinheit_kurzbz_fkey'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = "ALTER TABLE system.tbl_phrasentext ADD CONSTRAINT tbl_phrasentext_orgeinheit_kurzbz_fkey FOREIGN KEY (orgeinheit_kurzbz) REFERENCES public.tbl_organisationseinheit(oe_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;"; + + if (!$db->db_query($qry)) + echo 'system.tbl_phrasentext: '.$db->db_last_error().'
'; + else + echo '
system.tbl_phrasentext: added foreign key on column orgeinheit_kurzbz referenced to public.tbl_organisationseinheit(orgeinheit_kurzbz)'; + } +} + +// FOREIGN KEY tbl_phrasentext_orgform_kurzbz_fkey: system.tbl_phrasentext.orgform_kurzbz references bis.tbl_orgform.orgform_kurzbz +if ($result = @$db->db_query("SELECT conname FROM pg_constraint WHERE conname = 'tbl_phrasentext_orgform_kurzbz_fkey'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = "ALTER TABLE system.tbl_phrasentext ADD CONSTRAINT tbl_phrasentext_orgform_kurzbz_fkey FOREIGN KEY (orgform_kurzbz) REFERENCES bis.tbl_orgform(orgform_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;"; + + if (!$db->db_query($qry)) + echo 'system.tbl_phrasentext: '.$db->db_last_error().'
'; + else + echo '
system.tbl_phrasentext: added foreign key on column orgform_kurzbz referenced to bis.tbl_orgform(orgform_kurzbz)'; + } +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; From df34c6c2027d28e3032549856edbab1de8199517 Mon Sep 17 00:00:00 2001 From: Andreas Oesterreicher Date: Thu, 7 Sep 2017 19:09:50 +0200 Subject: [PATCH 4/4] =?UTF-8?q?Einfachere=20GUI=20zur=20Aktivierung=20von?= =?UTF-8?q?=20FH-Ausweisen=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/tw/vilesci_menu_main.inc.php | 3 +- vilesci/fhausweis/kartenausgabe.php | 156 +++++++++++++++++++++++++++ 2 files changed, 157 insertions(+), 2 deletions(-) create mode 100644 vilesci/fhausweis/kartenausgabe.php diff --git a/include/tw/vilesci_menu_main.inc.php b/include/tw/vilesci_menu_main.inc.php index 841cffed6..70e56bdbf 100755 --- a/include/tw/vilesci_menu_main.inc.php +++ b/include/tw/vilesci_menu_main.inc.php @@ -168,10 +168,9 @@ $menu=array 'Kartenverwaltung'=>array('name'=>'Kartenverwaltung','link'=>'fhausweis/kartenverwaltung.php','target'=>'main'), 'KarteZuweisen'=>array('name'=>'Karte zuweisen','link'=>'fhausweis/kartezuweisen.php','target'=>'main'), 'Kartentausch'=>array('name'=>'Kartentausch','link'=>'fhausweis/kartentausch.php','target'=>'main'), + 'Kartenausgabe'=>array('name'=>'Kartenausgabe','link'=>'fhausweis/kartenausgabe.php','target'=>'main'), 'Verlaengerung'=>array('name'=>'Verlängerung','link'=>'fhausweis/verlaengerung.php','target'=>'main'), 'Suche'=>array('name'=>'Suche','link'=>'fhausweis/search.php','target'=>'main'), - 'Synchronisation'=>array('name'=>'Syncronisation', 'link'=>'stammdaten/imexport/zutrittskarten/index.html', 'target'=>'main'), - 'Korrektur'=>array('name'=>'Kartenkorrektur','link'=>'fhausweis/kartenkorrektur.php','target'=>'main') ) ), 'Wartung'=> array diff --git a/vilesci/fhausweis/kartenausgabe.php b/vilesci/fhausweis/kartenausgabe.php new file mode 100644 index 000000000..d4f7069fe --- /dev/null +++ b/vilesci/fhausweis/kartenausgabe.php @@ -0,0 +1,156 @@ + + */ +/** + * Gui zum aktivieren der Zutrittskarte + * Hier wird die neue Karte einmal über den Kartenleser gezogen zum das Ausgabedatum zu setzen + */ +require_once('../../config/vilesci.config.inc.php'); +require_once('../../include/functions.inc.php'); +require_once('../../include/person.class.php'); +require_once('../../include/benutzer.class.php'); +require_once('../../include/student.class.php'); +require_once('../../include/studiengang.class.php'); +require_once('../../include/betriebsmittel.class.php'); +require_once('../../include/betriebsmittelperson.class.php'); +require_once('../../include/benutzerberechtigung.class.php'); + +$uid = get_uid(); + +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($uid); + +echo ' + + + + + + + + Kartentausch + + +

Zutrittskarte - Ausgabe

'; + +if(!$rechte->isBerechtigt('basis/fhausweis', 'suid')) + die('Sie haben keine Berechtigung für diese Seite'); + +$db = new basis_db(); +$kartennummer = (isset($_POST['kartennummer'])?$_POST['kartennummer']:''); +$action=(isset($_POST['action'])?$_POST['action']:''); + +if ($action == 'kartenausgabe') +{ + $bmp = new betriebsmittelperson(); + if ($bmp->getKartenzuordnung($kartennummer)) + { + if ($bmp->uid != '') + { + $karten_user = $bmp->uid; + + $benutzer = new benutzer(); + if(!$benutzer->load($karten_user)) + { + echo 'Fehler beim Laden des Benutzers'; + } + else + { + $error=false; + //Neue Karte aktivieren + $bmp = new betriebsmittelperson(); + if ($bmp->getKartenzuordnungPerson($benutzer->person_id, $kartennummer)) + { + if ($bmp->ausgegebenam == '') + { + $bmp->ausgegebenam=date('Y-m-d'); + $bmp->updateamum = date('Y-m-d H:i:s'); + $bmp->updatevon = $uid; + + if(!$bmp->save(false)) + { + echo 'Fehler beim Tauschen: '.$bmp->errormsg.''; + $error=true; + } + else + echo 'Karte wurde erfolgreich aktiviert.
+ + + + + +
+ + + Vorname: '.$benutzer->vorname.'
+ Nachname: '.$benutzer->nachname.'
+ UID: '.$benutzer->uid.'
+
'; + } + else + { + echo 'Karte wurde bereits am '.$bmp->ausgegebenam.' aktiviert'; + } + } + else + { + echo ' + + Fehler beim Tauschen: Die neue Karte wurde dieser + Person noch nicht zugeordnet ('.$benutzer->uid.' '.$kartennummer.') + '; + $error = true; + } + } + } + else + { + echo 'Diese Karte ist derzeit nicht zugewiesen'; + } + } + else + { + echo 'Diese Karte ist derzeit nicht zugewiesen'; + } + + echo '


'; +} + +echo ' +Ziehen Sie die neue Karte über den Hitag Kartenleser um die Karte zu aktivieren: + +

+
+ + Kartennummer: + + +
+'; + +echo ' +'; +?>