From 21e43d7a0894ec036591cfc1e6d088a77a6ceb73 Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 27 May 2020 11:37:49 +0200 Subject: [PATCH 01/80] Created DB view public.vw.msg_vars_user (data of logged in user) This data will be used by the messaging system to provide data of the logged in user. --- system/dbupdate_3.3.php | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 64f4f490a..3112bacbb 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -196,6 +196,43 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.vw_msg_vars_person LIMIT 1")) echo '
Granted privileges to vilesci on public.vw_msg_vars_person'; } +// CREATE OR REPLACE VIEW public.vw_msg_vars_user and grants privileges +if(!$result = @$db->db_query("SELECT 1 FROM public.vw_msg_vars_user LIMIT 1")) +{ + $qry = ' + CREATE OR REPLACE VIEW public.vw_msg_vars_user AS ( + SELECT DISTINCT ON + (b.uid) b.uid, + p.vorname, + p.nachname, + b.alias, + ma.telefonklappe AS "durchwahl" + FROM public.tbl_person p + JOIN public.tbl_benutzer b USING (person_id) + JOIN public.tbl_mitarbeiter ma ON ma.mitarbeiter_uid = b.uid + WHERE ma.personalnummer > 0 + );'; + + if(!$db->db_query($qry)) + echo 'public.vw_msg_vars_user: '.$db->db_last_error().'
'; + else + echo '
public.vw_msg_vars_user view created'; + + $qry = 'GRANT SELECT ON TABLE public.vw_msg_vars_user TO web;'; + + if(!$db->db_query($qry)) + echo 'public.vw_msg_vars_user: '.$db->db_last_error().'
'; + else + echo '
Granted privileges to web on public.vw_msg_vars_user'; + + $qry = 'GRANT SELECT ON TABLE public.vw_msg_vars_user TO vilesci;'; + + if(!$db->db_query($qry)) + echo 'public.vw_msg_vars_user: '.$db->db_last_error().'
'; + else + echo '
Granted privileges to vilesci on public.vw_msg_vars_user'; +} + //Spalte anmerkung und rechnungsadresse in tbl_adresse if(!$result = @$db->db_query("SELECT rechnungsadresse FROM public.tbl_adresse LIMIT 1")) { From 1be1d1c8e9b32b8bb47798901fd58f139b0b81eb Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 27 May 2020 11:48:05 +0200 Subject: [PATCH 02/80] Added GUI for 'Eigene Felder' + layout adaptations . GUI: added multidropdown 'Eigene Felder', which contains fields of the logged in user . Layout: Message text area has now min and max height; sending button now aligned correctly; multidropdowns now aligned to text area Signed-off-by: Cris --- .../system/messages/htmlWriteTemplate.php | 31 ++++++++++++++++--- public/js/messaging/messageWrite.js | 7 ++++- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/application/views/system/messages/htmlWriteTemplate.php b/application/views/system/messages/htmlWriteTemplate.php index 199a88cfa..95ab12630 100644 --- a/application/views/system/messages/htmlWriteTemplate.php +++ b/application/views/system/messages/htmlWriteTemplate.php @@ -83,19 +83,41 @@ 19 ? 19 : count($variables); echo $this->widgetlib->widget( 'MultipleDropdown_widget', array('elements' => success($variables)), array( 'name' => 'variables[]', 'id' => 'variables', - 'size' => count($variables), + 'size' => $size, 'multiple' => true ) ); ?> - +
+
+ + + 5 ? 5 : count($user_fields); + echo $this->widgetlib->widget( + 'MultipleDropdown_widget', + array('elements' => success($user_fields)), + array( + 'name' => 'user_fields[]', + 'id' => 'user_fields', + 'size' => $size, + 'multiple' => true + ) + ); + ?> +

@@ -111,14 +133,15 @@ ?> -
-
+

diff --git a/public/js/messaging/messageWrite.js b/public/js/messaging/messageWrite.js index 3a3a23792..1978fc08c 100644 --- a/public/js/messaging/messageWrite.js +++ b/public/js/messaging/messageWrite.js @@ -46,7 +46,12 @@ $(document).ready(function () { tinymce.init({ selector: "#bodyTextArea", - plugins: "autoresize" + plugins: "autoresize", + autoresize_on_init: false, + autoresize_min_height: 400, + autoresize_max_height: 400, + autoresize_bottom_margin: 10, + auto_focus: "bodyTextArea" }); tinymce.init({ From 7ab2155d6a0098b3127e353ad4ed29a85170f63c Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 27 May 2020 11:49:35 +0200 Subject: [PATCH 03/80] Added method to retrieve data of logged in user in Message model Signed-off-by: Cris --- application/models/system/Message_model.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/application/models/system/Message_model.php b/application/models/system/Message_model.php index 764c3ae14..5ebcc5ee9 100644 --- a/application/models/system/Message_model.php +++ b/application/models/system/Message_model.php @@ -191,4 +191,23 @@ class Message_model extends DB_Model return $this->execQuery(sprintf($query, is_array($person_id) ? 'IN' : '='), array($person_id)); } + + /** + * Get message vars for logged in user + * @param string $uid + * @return array|null + */ + public function getMsgVarsDataLoggedInUser() + { + $result = $this->db->query('SELECT * FROM public.vw_msg_vars_user WHERE uid = \''. getAuthUID(). '\''); + + if ($result) + { + return success($result->list_fields()); + } + else + { + return error($this->db->error(), FHC_DB_ERROR); + } + } } From a5e0c9ca5a89020cf0796f00bba657400a147a34 Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 27 May 2020 11:52:12 +0200 Subject: [PATCH 04/80] Added logic to provide fields of logged in user in Messaging system Signed-off-by: Cris --- application/libraries/MessageLib.php | 25 ++++++++++++++++++++++++ application/models/CL/Messages_model.php | 21 ++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/application/libraries/MessageLib.php b/application/libraries/MessageLib.php index fd2051f48..31d33eda4 100644 --- a/application/libraries/MessageLib.php +++ b/application/libraries/MessageLib.php @@ -215,6 +215,31 @@ class MessageLib return $messageVars; // otherwise returns the error } + + /** + * Retrieves message vars of the logged in user from view vw_msg_vars_user + */ + public function getMessageVarsLoggedInUser() + { + // Retrieves message vars from view vw_msg_vars + $messageVars = $this->_ci->MessageModel->getMsgVarsDataLoggedInUser(); + if (isSuccess($messageVars)) // if everything is ok + { + $variablesArray = array(); + $tmpVariablesArray = getData($messageVars); + + // Starts from 1 to skip the first element which is uid + for ($i = 1; $i < count($tmpVariablesArray); $i++) + { + $variablesArray['{my_'.str_replace(' ', '_', strtolower($tmpVariablesArray[$i])).'}'] + = 'my_'. strtoupper($tmpVariablesArray[$i]); + } + + return success($variablesArray); + } + + return $messageVars; // otherwise returns the error + } /** * Retrieves organisation units for each role that a user plays inside that organisation unit diff --git a/application/models/CL/Messages_model.php b/application/models/CL/Messages_model.php index 67e7ff969..2bec3dd9c 100644 --- a/application/models/CL/Messages_model.php +++ b/application/models/CL/Messages_model.php @@ -833,6 +833,26 @@ class Messages_model extends CI_Model $variables[] = $tmpVar; } + + // --------------------------------------------------------------------------------------- + // Retrieves message vars of logged in user from database view vw_msg_vars_person + $result = null; + + // If data contains a prestudent id + $result = $this->messagelib->getMessageVarsLoggedInUser(); + + if (isError($result)) show_error(getError($result)); + + // Then builds an array that contains objects with field name and field description of logged in user data + $user_fields = array(); + foreach (getData($result) as $id => $description) + { + $obj = new stdClass(); + $obj->id = $id; + $obj->description = $description; + + $user_fields[] = $obj; + } // --------------------------------------------------------------------------------------- // Retrieves the sender id @@ -853,6 +873,7 @@ class Messages_model extends CI_Model 'subject' => $replySubject, 'body' => $replyBody, 'variables' => $variables, + 'user_fields' => $user_fields, 'organisationUnits' => getData($organisationUnits), 'senderIsAdmin' => getData($senderIsAdmin), 'recipientsArray' => $recipientsArray, From 046994f14b667effcd07e120eaf153b3b508954e Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 27 May 2020 11:53:56 +0200 Subject: [PATCH 05/80] Added phrase 'meineFelder' Signed-off-by: Cris --- system/phrasesupdate.php | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 14af8e733..2672d5b91 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -6766,6 +6766,26 @@ When on hold, the date is only a reminder.', ) ) ), + array( + 'app' => 'core', + 'category' => 'ui', + 'phrase' => 'meineFelder', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Meine Felder', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'My fields', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), ); From 634401485a5f857842e8a08a6431e7a7f1191526 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 28 May 2020 09:42:51 +0200 Subject: [PATCH 06/80] Renamed 'Meine Felder'-msg names and small method adaptation to retrieve fields Signed-off-by: Cris --- application/libraries/MessageLib.php | 6 +++--- application/models/system/Message_model.php | 17 +++++++++++++++++ system/dbupdate_3.3.php | 10 +++++----- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/application/libraries/MessageLib.php b/application/libraries/MessageLib.php index 31d33eda4..e0622e664 100644 --- a/application/libraries/MessageLib.php +++ b/application/libraries/MessageLib.php @@ -222,7 +222,7 @@ class MessageLib public function getMessageVarsLoggedInUser() { // Retrieves message vars from view vw_msg_vars - $messageVars = $this->_ci->MessageModel->getMsgVarsDataLoggedInUser(); + $messageVars = $this->_ci->MessageModel->getMsgVarsLoggedInUser(); if (isSuccess($messageVars)) // if everything is ok { $variablesArray = array(); @@ -231,8 +231,8 @@ class MessageLib // Starts from 1 to skip the first element which is uid for ($i = 1; $i < count($tmpVariablesArray); $i++) { - $variablesArray['{my_'.str_replace(' ', '_', strtolower($tmpVariablesArray[$i])).'}'] - = 'my_'. strtoupper($tmpVariablesArray[$i]); + $variablesArray['{'.str_replace(' ', '_', strtolower($tmpVariablesArray[$i])).'}'] + = strtoupper($tmpVariablesArray[$i]); } return success($variablesArray); diff --git a/application/models/system/Message_model.php b/application/models/system/Message_model.php index 5ebcc5ee9..0972f127f 100644 --- a/application/models/system/Message_model.php +++ b/application/models/system/Message_model.php @@ -171,6 +171,23 @@ class Message_model extends DB_Model return error($this->db->error(), FHC_DB_ERROR); } } + + /** + * Get message variables for logged in user + */ + public function getMsgVarsLoggedInUser() + { + $result = $this->db->query('SELECT * FROM public.vw_msg_vars_user WHERE 0 = 1'); + + if ($result) + { + return success($result->list_fields()); + } + else + { + return error($this->db->error(), FHC_DB_ERROR); + } + } /** * getMsgVarsDataByPrestudentId diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 3112bacbb..f0da8fab6 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -202,11 +202,11 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.vw_msg_vars_user LIMIT 1")) $qry = ' CREATE OR REPLACE VIEW public.vw_msg_vars_user AS ( SELECT DISTINCT ON - (b.uid) b.uid, - p.vorname, - p.nachname, - b.alias, - ma.telefonklappe AS "durchwahl" + (b.uid) b.uid AS "my_uid", + p.vorname AS "my_vorname", + p.nachname AS "my_nachname", + b.alias AS "my_alias", + ma.telefonklappe AS "my_durchwahl" FROM public.tbl_person p JOIN public.tbl_benutzer b USING (person_id) JOIN public.tbl_mitarbeiter ma ON ma.mitarbeiter_uid = b.uid From ebd9c2c0ba8fc1efe22f3e0933c20d165e5a8b6e Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 28 May 2020 09:46:15 +0200 Subject: [PATCH 07/80] Added method to retrieve message vars data of the logged in user This method retrieves the specific data of the logged in user to be used in 'Meine Felder' Signed-off-by: Cris --- application/models/system/Message_model.php | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/application/models/system/Message_model.php b/application/models/system/Message_model.php index 0972f127f..6f2a3c7ed 100644 --- a/application/models/system/Message_model.php +++ b/application/models/system/Message_model.php @@ -210,21 +210,13 @@ class Message_model extends DB_Model } /** - * Get message vars for logged in user - * @param string $uid + * Get message vars data for logged in user * @return array|null */ - public function getMsgVarsDataLoggedInUser() + public function getMsgVarsDataByLoggedInUser() { - $result = $this->db->query('SELECT * FROM public.vw_msg_vars_user WHERE uid = \''. getAuthUID(). '\''); + $query = 'SELECT * FROM public.vw_msg_vars_user WHERE my_uid = ?'; - if ($result) - { - return success($result->list_fields()); - } - else - { - return error($this->db->error(), FHC_DB_ERROR); - } + return $this->execQuery($query, array(getAuthUID())); } } From 4f1796ee9d969812273f1e637d9ad5ad3c657a39 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 28 May 2020 09:48:31 +0200 Subject: [PATCH 08/80] Added logic to add message vars data of logged in user into message body Signed-off-by: Cris --- application/models/CL/Messages_model.php | 39 ++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/application/models/CL/Messages_model.php b/application/models/CL/Messages_model.php index 2bec3dd9c..d0676c5dd 100644 --- a/application/models/CL/Messages_model.php +++ b/application/models/CL/Messages_model.php @@ -393,7 +393,10 @@ class Messages_model extends CI_Model // Looping on receivers data foreach (getData($msgVarsData) as $receiver) { - $msgVarsDataArray = $this->_lowerReplaceSpaceArrayKeys((array)$receiver); // replaces array keys + // Merge receivers data with logged in user data + $msgVarsDataArray = $this->_addMsgVarsDataOfLoggedInUser($receiver); + + $msgVarsDataArray = $this->_lowerReplaceSpaceArrayKeys((array)getData($msgVarsDataArray)[0]); // replaces array keys $parsedSubject = parseText($subject, $msgVarsDataArray); $parsedBody = parseText($body, $msgVarsDataArray); @@ -600,6 +603,9 @@ class Messages_model extends CI_Model $parseMessageText = error('The given person_id is not a valid number'); if (is_numeric($person_id)) $parseMessageText = $this->MessageModel->getMsgVarsDataByPersonId($person_id); + + // Add message vars data of the logged in user + $parseMessageText = $this->_addMsgVarsDataOfLoggedInUser($parseMessageText); if (hasData($parseMessageText)) { @@ -623,7 +629,10 @@ class Messages_model extends CI_Model $parseMessageText = error('The given prestudent_id is not a valid number'); if (is_numeric($prestudent_id)) $parseMessageText = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id); - + + // Add message vars data of the logged in user + $parseMessageText = $this->_addMsgVarsDataOfLoggedInUser($parseMessageText); + if (hasData($parseMessageText)) { $parseMessageText = success( @@ -882,4 +891,30 @@ class Messages_model extends CI_Model 'type' => $type ); } + + /** + * Adds message vars data of the logged in user to the given object (that should also have message vars data) + * @param object $otherMsgVarsDataObj Can be success object or simple object. + * @return object Returns success object. + */ + public function _addMsgVarsDataOfLoggedInUser($otherMsgVarsDataObj) + { + // First check if param type is object + if (!is_object($otherMsgVarsDataObj)) show_error('Must pass an object to merge with data of logged in user'); + + // If it is a return object, extract the simple data object + if (isSuccess($otherMsgVarsDataObj)) + { + $otherMsgVarsDataObj = getData($otherMsgVarsDataObj)[0]; + } + + // Retrieve message vars data of the logged in user + if (!$msgVarsDataLoggedInUser = getData($this->MessageModel->getMsgVarsDataByLoggedInUser())[0]) + { + return success($otherMsgVarsDataObj); // If failed, return at least given object as expected success object + } + + return success(array((object)(array_merge((array) $otherMsgVarsDataObj, (array) $msgVarsDataLoggedInUser)))); + + } } From 8b80f2226e63c3b3471082946cdd91113a7540e5 Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 2 Jun 2020 15:03:31 +0200 Subject: [PATCH 09/80] Added logic for cronjob to add senders fields into message body Signed-off-by: Cris --- application/models/CL/Messages_model.php | 25 +++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/application/models/CL/Messages_model.php b/application/models/CL/Messages_model.php index d0676c5dd..ac3a16e3e 100644 --- a/application/models/CL/Messages_model.php +++ b/application/models/CL/Messages_model.php @@ -48,6 +48,9 @@ class Messages_model extends CI_Model $this->load->model('system/Benutzerrolle_model', 'BenutzerrolleModel'); // Loads model Prestudent_model $this->load->model('crm/Prestudent_model', 'PrestudentModel'); + // Loads model Benutzer_model + $this->load->model('person/Benutzer_model', 'BenutzerModel'); + } //------------------------------------------------------------------------------------------------------------------ @@ -463,6 +466,14 @@ class Messages_model extends CI_Model if (!hasData($msgVarsData)) show_error('No recipients were given'); $prestudentsData = $this->PrestudentModel->getOrganisationunits($prestudents); + + // Get the senders uid + $this->BenutzerModel->addSelect('uid'); + if (!$result = getData($this->BenutzerModel->getFromPersonId($sender_id))) + { + show_error('No sender_uid found'); + } + $sender_uid = $result[0]->uid; // Adds the organisation unit to each prestudent if (isEmptyString($oe_kurzbz) && hasData($msgVarsData) && hasData($prestudentsData)) @@ -472,7 +483,15 @@ class Messages_model extends CI_Model foreach (getData($msgVarsData) as $receiver) { - $msgVarsDataArray = $this->_lowerReplaceSpaceArrayKeys((array)$receiver); // replaces array keys + /** + * Merge receivers data with senders data + * NOTE: _addMsgVarsDataOfLoggedInUser usually retrieves data of the logged in user that is set in the + * templates user fields. As sendExplicitTemplateSenderId is run by a job, a sender uid is passed to be used + * instead the logged in user. + */ + $msgVarsDataArray = $this->_addMsgVarsDataOfLoggedInUser($receiver, $sender_uid); + + $msgVarsDataArray = $this->_lowerReplaceSpaceArrayKeys((array)getData($msgVarsDataArray)[0]); // replaces array keys // Additional message variables if (is_array($msgVars)) $msgVarsDataArray = array_merge($msgVarsDataArray, $msgVars); @@ -897,7 +916,7 @@ class Messages_model extends CI_Model * @param object $otherMsgVarsDataObj Can be success object or simple object. * @return object Returns success object. */ - public function _addMsgVarsDataOfLoggedInUser($otherMsgVarsDataObj) + public function _addMsgVarsDataOfLoggedInUser($otherMsgVarsDataObj, $uid = null) { // First check if param type is object if (!is_object($otherMsgVarsDataObj)) show_error('Must pass an object to merge with data of logged in user'); @@ -909,7 +928,7 @@ class Messages_model extends CI_Model } // Retrieve message vars data of the logged in user - if (!$msgVarsDataLoggedInUser = getData($this->MessageModel->getMsgVarsDataByLoggedInUser())[0]) + if (!$msgVarsDataLoggedInUser = getData($this->MessageModel->getMsgVarsDataByLoggedInUser($uid))[0]) { return success($otherMsgVarsDataObj); // If failed, return at least given object as expected success object } From d35ee0c834becab5700ba448284864d4b49f749e Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 2 Jun 2020 15:06:22 +0200 Subject: [PATCH 10/80] Adapted method to retrieve user fields when method is called by a cronjob Signed-off-by: Cris --- application/models/system/Message_model.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/application/models/system/Message_model.php b/application/models/system/Message_model.php index 6f2a3c7ed..d9f8585ed 100644 --- a/application/models/system/Message_model.php +++ b/application/models/system/Message_model.php @@ -211,12 +211,23 @@ class Message_model extends DB_Model /** * Get message vars data for logged in user + * @param string uid The UID should ONLY be passed if this method is called by a cronjob. + * This is to enable jobs to use templates which use logged-in-user fields ('Eigene Felder'). * @return array|null */ - public function getMsgVarsDataByLoggedInUser() + public function getMsgVarsDataByLoggedInUser($uid = null) { + if (is_string($uid)) + { + $params = array($uid); + } + else + { + $params = array(getAuthUID()); + } + $query = 'SELECT * FROM public.vw_msg_vars_user WHERE my_uid = ?'; - return $this->execQuery($query, array(getAuthUID())); + return $this->execQuery($query, $params); } } From 2906c1803e9d0caf5cac630730eb1de18ce2cdac Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 2 Jun 2020 16:29:51 +0200 Subject: [PATCH 11/80] Changed 'Eigene Felder'-Alias: if alias is NULL, uid is used as alias This is to ensure the email is built correctly. Signed-off-by: Cris --- system/dbupdate_3.3.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index f0da8fab6..f03718116 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -205,7 +205,7 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.vw_msg_vars_user LIMIT 1")) (b.uid) b.uid AS "my_uid", p.vorname AS "my_vorname", p.nachname AS "my_nachname", - b.alias AS "my_alias", + COALESCE(b.alias, b.uid) AS "my_alias", ma.telefonklappe AS "my_durchwahl" FROM public.tbl_person p JOIN public.tbl_benutzer b USING (person_id) From 8304b4a1ae50668156b127e17bda2948a70057aa Mon Sep 17 00:00:00 2001 From: Cris Date: Tue, 2 Jun 2020 16:31:52 +0200 Subject: [PATCH 12/80] Adapted GUI: display user fields in tinymce-editor on doubleclick Signed-off-by: Cris --- public/js/messaging/messageWrite.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/public/js/messaging/messageWrite.js b/public/js/messaging/messageWrite.js index 1978fc08c..8b1d73bdf 100644 --- a/public/js/messaging/messageWrite.js +++ b/public/js/messaging/messageWrite.js @@ -78,6 +78,21 @@ $(document).ready(function () }); } + if ($("#user_fields")) + { + $("#user_fields").dblclick(function () + { + if ($("#bodyTextArea")) + { + //if editor active add at cursor position, otherwise at end + if (tinymce.activeEditor.id === "bodyTextArea") + tinymce.activeEditor.execCommand('mceInsertContent', false, $(this).children(":selected").val()); + else + tinyMCE.get("bodyTextArea").setContent(tinyMCE.get("bodyTextArea").getContent() + $(this).children(":selected").val()); + } + }); + } + if ($("#recipients")) { $("#recipients").change(tinymcePreviewSetContent); From 742c9fa8572745b9f7c4a570bf6bb4550eac30df Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 4 Jun 2020 11:33:58 +0200 Subject: [PATCH 13/80] Check that user is an active employee in message-cronjob Signed-off-by: Cris --- application/models/CL/Messages_model.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/application/models/CL/Messages_model.php b/application/models/CL/Messages_model.php index ac3a16e3e..f24e16086 100644 --- a/application/models/CL/Messages_model.php +++ b/application/models/CL/Messages_model.php @@ -467,8 +467,9 @@ class Messages_model extends CI_Model $prestudentsData = $this->PrestudentModel->getOrganisationunits($prestudents); - // Get the senders uid + // Get the senders uid (if user is an active employee) $this->BenutzerModel->addSelect('uid'); + $this->BenutzerModel->addJoin('public.tbl_mitarbeiter ma', 'ma.mitarbeiter_uid = uid'); if (!$result = getData($this->BenutzerModel->getFromPersonId($sender_id))) { show_error('No sender_uid found'); From 2d86477e1b106978ff9d2bc3a76b8a64659162e8 Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 2 Jul 2020 12:04:30 +0200 Subject: [PATCH 14/80] Added column co_name to tbl_adresse (= Abweichender Empfaenger) Signed-off-by: Cris --- system/dbupdate_3.3.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index f9d7197aa..aee61d116 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -4200,6 +4200,19 @@ if(!$result = @$db->db_query("SELECT sort FROM lehre.tbl_abschlussbeurteilung LI echo '
lehre.tbl_abschlussbeurteilung: Spalte sort hinzugefuegt!
'; } +//Spalte co_adresse in tbl_adresse +if(!$result = @$db->db_query("SELECT co_name FROM public.tbl_adresse LIMIT 1")) +{ + $qry = " + ALTER TABLE public.tbl_adresse ADD COLUMN co_name varchar(64); + COMMENT ON COLUMN public.tbl_adresse.co_name IS 'Name des abweichenden Empfaengers';"; + + if(!$db->db_query($qry)) + echo 'public.tbl_adresse: '.$db->db_last_error().'
'; + else + echo '
public.tbl_adresse: Spalte co_name und anmerkung hinzugefuegt'; +} + // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -4351,7 +4364,7 @@ $tabellen=array( "lehre.tbl_zeugnis" => array("zeugnis_id","student_uid","zeugnis","erstelltam","gedruckt","titel","bezeichnung","updateamum","updatevon","insertamum","insertvon","ext_id"), "lehre.tbl_zeugnisnote" => array("lehrveranstaltung_id","student_uid","studiensemester_kurzbz","note","uebernahmedatum","benotungsdatum","bemerkung","updateamum","updatevon","insertamum","insertvon","ext_id","punkte"), "public.ci_apikey" => array("apikey_id","key","level","ignore_limits","date_created"), - "public.tbl_adresse" => array("adresse_id","person_id","name","strasse","plz","ort","gemeinde","nation","typ","heimatadresse","zustelladresse","firma_id","updateamum","updatevon","insertamum","insertvon","ext_id","rechnungsadresse","anmerkung"), + "public.tbl_adresse" => array("adresse_id","person_id","name","strasse","plz","ort","gemeinde","nation","typ","heimatadresse","zustelladresse","firma_id","updateamum","updatevon","insertamum","insertvon","ext_id","rechnungsadresse","anmerkung", "co_name"), "public.tbl_akte" => array("akte_id","person_id","dokument_kurzbz","uid","inhalt","mimetype","erstelltam","gedruckt","titel","bezeichnung","updateamum","updatevon","insertamum","insertvon","ext_id","dms_id","nachgereicht","anmerkung","titel_intern","anmerkung_intern","nachgereicht_am","ausstellungsnation","formal_geprueft_amum","archiv","signiert","stud_selfservice","akzeptiertamum"), "public.tbl_ampel" => array("ampel_id","kurzbz","beschreibung","benutzer_select","deadline","vorlaufzeit","verfallszeit","insertamum","insertvon","updateamum","updatevon","email","verpflichtend","buttontext"), "public.tbl_ampel_benutzer_bestaetigt" => array("ampel_benutzer_bestaetigt_id","ampel_id","uid","insertamum","insertvon"), From 998127740f7ac191c7ca80c5beba1db35ebb880e Mon Sep 17 00:00:00 2001 From: Cris Date: Thu, 2 Jul 2020 12:08:19 +0200 Subject: [PATCH 15/80] Added co_name to FAS Adressedialogue/-fields & to class Adresse This new field co_name = Abweichender Empfaenger is required for BIS Meldung. Signed-off-by: Cris --- content/adressedialog.js.php | 409 ++++---- content/adressedialog.xul.php | 403 ++++---- content/fasDBDML.php | 1645 +++++++++++++++++---------------- content/kontakt.js.php | 1596 ++++++++++++++++---------------- content/kontakt.xul.php | 681 +++++++------- include/adresse.class.php | 21 +- rdf/adresse.rdf.php | 1 + 7 files changed, 2395 insertions(+), 2361 deletions(-) diff --git a/content/adressedialog.js.php b/content/adressedialog.js.php index 6f4eaf5fe..210b208b0 100644 --- a/content/adressedialog.js.php +++ b/content/adressedialog.js.php @@ -1,204 +1,207 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -require_once('../config/vilesci.config.inc.php'); -require_once('../include/functions.inc.php'); - -$user = get_uid(); -loadVariables($user); -?> - -// **** -// * Laedt die zu bearbeitenden Daten -// **** -function AdresseInit(adresse_id, person_id) -{ - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - - if(adresse_id!='') - { - //Daten holen - var url = 'rdf/adresse.rdf.php?adresse_id='+adresse_id+'&'+gettimestamp(); - - var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"]. - getService(Components.interfaces.nsIRDFService); - - var dsource = rdfService.GetDataSourceBlocking(url); - - var subject = rdfService.GetResource("http://www.technikum-wien.at/adresse/" + adresse_id); - - var predicateNS = "http://www.technikum-wien.at/adresse/rdf"; - - //RDF parsen - - person_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#person_id" )); - name = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#name" )); - strasse = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#strasse" )); - plz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#plz" )); - ort = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#ort" )); - gemeinde = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#gemeinde" )); - nation = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#nation" )); - typ = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#typ" )); - heimatadresse = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#heimatadresse" )); - zustelladresse = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zustelladresse" )); - firma_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#firma_id" )); - rechnungsadresse = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#rechnungsadresse" )); - anmerkung = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkung" )); - neu = false; - } - else - { - //Defaultwerte bei Neuem Datensatz - neu = true; - name=''; - strasse=''; - plz=''; - ort=''; - gemeinde='' - nation='A'; - typ='h'; - heimatadresse='Ja'; - zustelladresse='Ja'; - firma_id=''; - rechnungsadresse='Nein'; - anmerkung=''; - } - - document.getElementById('adresse-checkbox-neu').checked=neu; - document.getElementById('adresse-textbox-person_id').value=person_id; - document.getElementById('adresse-textbox-adresse_id').value=adresse_id; - document.getElementById('adresse-textbox-name').value=name; - document.getElementById('adresse-textbox-strasse').value=strasse; - document.getElementById('adresse-textbox-plz').value=plz; - AdresseLoadGemeinde(true); - document.getElementById('adresse-textbox-gemeinde').value=gemeinde; - AdresseLoadOrtschaft(true); - document.getElementById('adresse-textbox-ort').value=ort; - document.getElementById('adresse-menulist-nation').value=nation; - document.getElementById('adresse-menulist-typ').value=typ; - if(heimatadresse=='Ja') - document.getElementById('adresse-checkbox-heimatadresse').checked=true; - else - document.getElementById('adresse-checkbox-heimatadresse').checked=false; - - if(zustelladresse=='Ja') - document.getElementById('adresse-checkbox-zustelladresse').checked=true; - else - document.getElementById('adresse-checkbox-zustelladresse').checked=false; - document.getElementById('adresse-menulist-firma').value=firma_id; - document.getElementById('adresse-textbox-anmerkung').value=anmerkung; - if(rechnungsadresse=='Ja') - document.getElementById('adresse-checkbox-rechnungsadresse').checked=true; - else - document.getElementById('adresse-checkbox-rechnungsadresse').checked=false; -} - -// **** -// * Speichern der Daten -// **** -function AdresseSpeichern() -{ - if(window.opener.KontaktAdresseSpeichern(document)) - window.close(); - else - this.focus(); -} - -// **** -// * Laedt die Gemeinden zur eingegebenen Postleitzahl -// **** -function AdresseLoadGemeinde(blocking) -{ - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - - menulist_gemeinde = document.getElementById('adresse-textbox-gemeinde'); - if(document.getElementById('adresse-menulist-nation').value=='A') - { - menulist_gemeinde.value=''; - document.getElementById('adresse-textbox-ort').value=''; - } - plz = document.getElementById('adresse-textbox-plz').value; - - if(plz.length>3) - { - var url = 'rdf/gemeinde.rdf.php?plz='+plz+'&'+gettimestamp(); - - var oldDatasources = menulist_gemeinde.database.GetDataSources(); - while(oldDatasources.hasMoreElements()) - { - menulist_gemeinde.database.RemoveDataSource(oldDatasources.getNext()); - } - //Refresh damit die entfernten DS auch wirklich entfernt werden - menulist_gemeinde.builder.rebuild(); - - var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); - if(blocking) - var datasource = rdfService.GetDataSourceBlocking(url); - else - var datasource = rdfService.GetDataSource(url); - datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); - datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); - menulist_gemeinde.database.AddDataSource(datasource); - - menulist_gemeinde.builder.rebuild(); - } -} - -// **** -// * Laedt die Ortschaften zu Plz und Gemeinde -// **** -function AdresseLoadOrtschaft(blocking) -{ - netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); - - gemeinde = document.getElementById('adresse-textbox-gemeinde').value; - menulist_ort = document.getElementById('adresse-textbox-ort'); - if(document.getElementById('adresse-menulist-nation').value=='A') - { - menulist_ort.value=''; - } - plz = document.getElementById('adresse-textbox-plz').value; - - if(plz.length>3 && gemeinde!='') - { - var url = 'rdf/gemeinde.rdf.php?plz='+plz+'&gemeinde='+encodeURIComponent(gemeinde)+'&'+gettimestamp(); - - var oldDatasources = menulist_ort.database.GetDataSources(); - while(oldDatasources.hasMoreElements()) - { - menulist_ort.database.RemoveDataSource(oldDatasources.getNext()); - } - //Refresh damit die entfernten DS auch wirklich entfernt werden - menulist_ort.builder.rebuild(); - - var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); - if(blocking) - var datasource1 = rdfService.GetDataSourceBlocking(url); - else - var datasource1 = rdfService.GetDataSource(url); - datasource1.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); - datasource1.QueryInterface(Components.interfaces.nsIRDFXMLSink); - menulist_ort.database.AddDataSource(datasource1); - - menulist_ort.builder.rebuild(); - } +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +require_once('../config/vilesci.config.inc.php'); +require_once('../include/functions.inc.php'); + +$user = get_uid(); +loadVariables($user); +?> + +// **** +// * Laedt die zu bearbeitenden Daten +// **** +function AdresseInit(adresse_id, person_id) +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + + if(adresse_id!='') + { + //Daten holen + var url = 'rdf/adresse.rdf.php?adresse_id='+adresse_id+'&'+gettimestamp(); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"]. + getService(Components.interfaces.nsIRDFService); + + var dsource = rdfService.GetDataSourceBlocking(url); + + var subject = rdfService.GetResource("http://www.technikum-wien.at/adresse/" + adresse_id); + + var predicateNS = "http://www.technikum-wien.at/adresse/rdf"; + + //RDF parsen + + person_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#person_id" )); + name = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#name" )); + strasse = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#strasse" )); + plz = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#plz" )); + ort = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#ort" )); + gemeinde = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#gemeinde" )); + nation = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#nation" )); + typ = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#typ" )); + heimatadresse = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#heimatadresse" )); + zustelladresse = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zustelladresse" )); + co_name = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#co_name" )); + firma_id = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#firma_id" )); + rechnungsadresse = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#rechnungsadresse" )); + anmerkung = getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anmerkung" )); + neu = false; + } + else + { + //Defaultwerte bei Neuem Datensatz + neu = true; + name=''; + strasse=''; + plz=''; + ort=''; + gemeinde='' + nation='A'; + typ='h'; + heimatadresse='Ja'; + zustelladresse='Ja'; + co_name = ''; + firma_id=''; + rechnungsadresse='Nein'; + anmerkung=''; + } + + document.getElementById('adresse-checkbox-neu').checked=neu; + document.getElementById('adresse-textbox-person_id').value=person_id; + document.getElementById('adresse-textbox-adresse_id').value=adresse_id; + document.getElementById('adresse-textbox-name').value=name; + document.getElementById('adresse-textbox-strasse').value=strasse; + document.getElementById('adresse-textbox-plz').value=plz; + AdresseLoadGemeinde(true); + document.getElementById('adresse-textbox-gemeinde').value=gemeinde; + AdresseLoadOrtschaft(true); + document.getElementById('adresse-textbox-ort').value=ort; + document.getElementById('adresse-menulist-nation').value=nation; + document.getElementById('adresse-menulist-typ').value=typ; + if(heimatadresse=='Ja') + document.getElementById('adresse-checkbox-heimatadresse').checked=true; + else + document.getElementById('adresse-checkbox-heimatadresse').checked=false; + + if(zustelladresse=='Ja') + document.getElementById('adresse-checkbox-zustelladresse').checked=true; + else + document.getElementById('adresse-checkbox-zustelladresse').checked=false; + document.getElementById('adresse-textbox-co_name').value = co_name; + document.getElementById('adresse-menulist-firma').value=firma_id; + document.getElementById('adresse-textbox-anmerkung').value=anmerkung; + if(rechnungsadresse=='Ja') + document.getElementById('adresse-checkbox-rechnungsadresse').checked=true; + else + document.getElementById('adresse-checkbox-rechnungsadresse').checked=false; +} + +// **** +// * Speichern der Daten +// **** +function AdresseSpeichern() +{ + if(window.opener.KontaktAdresseSpeichern(document)) + window.close(); + else + this.focus(); +} + +// **** +// * Laedt die Gemeinden zur eingegebenen Postleitzahl +// **** +function AdresseLoadGemeinde(blocking) +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + + menulist_gemeinde = document.getElementById('adresse-textbox-gemeinde'); + if(document.getElementById('adresse-menulist-nation').value=='A') + { + menulist_gemeinde.value=''; + document.getElementById('adresse-textbox-ort').value=''; + } + plz = document.getElementById('adresse-textbox-plz').value; + + if(plz.length>3) + { + var url = 'rdf/gemeinde.rdf.php?plz='+plz+'&'+gettimestamp(); + + var oldDatasources = menulist_gemeinde.database.GetDataSources(); + while(oldDatasources.hasMoreElements()) + { + menulist_gemeinde.database.RemoveDataSource(oldDatasources.getNext()); + } + //Refresh damit die entfernten DS auch wirklich entfernt werden + menulist_gemeinde.builder.rebuild(); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); + if(blocking) + var datasource = rdfService.GetDataSourceBlocking(url); + else + var datasource = rdfService.GetDataSource(url); + datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); + datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); + menulist_gemeinde.database.AddDataSource(datasource); + + menulist_gemeinde.builder.rebuild(); + } +} + +// **** +// * Laedt die Ortschaften zu Plz und Gemeinde +// **** +function AdresseLoadOrtschaft(blocking) +{ + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + + gemeinde = document.getElementById('adresse-textbox-gemeinde').value; + menulist_ort = document.getElementById('adresse-textbox-ort'); + if(document.getElementById('adresse-menulist-nation').value=='A') + { + menulist_ort.value=''; + } + plz = document.getElementById('adresse-textbox-plz').value; + + if(plz.length>3 && gemeinde!='') + { + var url = 'rdf/gemeinde.rdf.php?plz='+plz+'&gemeinde='+encodeURIComponent(gemeinde)+'&'+gettimestamp(); + + var oldDatasources = menulist_ort.database.GetDataSources(); + while(oldDatasources.hasMoreElements()) + { + menulist_ort.database.RemoveDataSource(oldDatasources.getNext()); + } + //Refresh damit die entfernten DS auch wirklich entfernt werden + menulist_ort.builder.rebuild(); + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); + if(blocking) + var datasource1 = rdfService.GetDataSourceBlocking(url); + else + var datasource1 = rdfService.GetDataSource(url); + datasource1.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); + datasource1.QueryInterface(Components.interfaces.nsIRDFXMLSink); + menulist_ort.database.AddDataSource(datasource1); + + menulist_ort.builder.rebuild(); + } } \ No newline at end of file diff --git a/content/adressedialog.xul.php b/content/adressedialog.xul.php index 9cac357de..f4f530bf0 100644 --- a/content/adressedialog.xul.php +++ b/content/adressedialog.xul.php @@ -1,199 +1,206 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -header("Cache-Control: no-cache"); -header("Cache-Control: post-check=0, pre-check=0",false); -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Pragma: no-cache"); -header("Content-type: application/vnd.mozilla.xul+xml"); - -include('../config/vilesci.config.inc.php'); -echo ''."\n"; - -echo ''; -echo ''; - -if(isset($_GET['adresse_id']) && is_numeric($_GET['adresse_id'])) - $adresse_id=$_GET['adresse_id']; -else - $adresse_id=''; - -if(isset($_GET['person_id']) && is_numeric($_GET['person_id'])) - $person_id=$_GET['person_id']; -else - $person_id=''; -?> - -)" - > - - - - - - - - - -
-
-
-
-
-
- - - -
-
drucken
- -
-
schliessen  
- -
-
-
-
-
-
-getaktorNext(); - $objSS->load($ss); - $datum_obj = new datum(); - $ss_begin=$datum_obj->mktime_fromdate($objSS->start); - $ss_ende=$datum_obj->mktime_fromdate($objSS->ende); - - - $sql_query=' select tbl_adresse.plz,tbl_adresse.name, sum(tbl_ort.max_person) as summe '; - $sql_query.=' from public.tbl_ort,public.tbl_standort, public.tbl_adresse '; - $sql_query.=" where tbl_standort.standort_id=tbl_ort.standort_id "; - $sql_query.=" and tbl_adresse.adresse_id=tbl_standort.adresse_id "; - $sql_query.=" and tbl_adresse.adresse_id=".$db->db_add_param($adresse_id, FHC_INTEGER)." "; - $sql_query.=" and tbl_ort.aktiv and tbl_ort.lehre "; - $sql_query.=" group by tbl_adresse.plz,tbl_adresse.name "; - // Gibt es fuer das Datum und Stunde einen Stundenplaneintrag - if(!$results_anzahl=$db->db_query($sql_query)) - die($db->db_last_error()); - $raum_max_anz=0; - $fh_name='FH lese fehler'; - if ($num_rows_anzahl=$db->db_num_rows($results_anzahl)) - { - $fh_name = $db->db_result($results_anzahl,0,"name").', '.$db->db_result($results_anzahl,0,"plz"); - $raum_max_anz = $db->db_result($results_anzahl,0,"summe"); - } - - $stg=array(); - echo '

-  Lehrveranstaltungsplan >> Wochenplan - Anzahl Studenten -    << - Wochenplan  Kw '.$kw.' -  >> -    Heute -

'; - - // Stundentafel abfragen - $sql_query="SELECT stunde, beginn, ende FROM lehre.tbl_stunde ORDER BY stunde"; - if(!$results=$db->db_query($sql_query)) - die($db->db_last_error()); - - - echo ''; - echo ''; - echo ''; - echo ''; - for ($i=0; $i'.strftime('%a',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).' '.date('d M',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).''; - } - echo ''; - - $max_person_array=array(); - $num_rows_stunde=$db->db_num_rows($results); - echo ''; - for ($k=0; $k<$num_rows_stunde; $k++) - { - $row = $db->db_fetch_object($results, $k); - $row->show_beginn=substr($row->beginn,0,5); - $row->show_ende=substr($row->ende,0,5); - $row->check_beginn=str_replace(':','',substr($row->beginn,0,5)); - $row->check_ende=str_replace(':','',substr($row->ende,0,5)); - - echo ''; - $lehreinheiten=array(); - - for ($i=0; $i= $row->check_beginn && date('Hi')<=$row->check_ende ) - $aktiv=true; - - echo ''; - else - $tooltip.=''; - $tooltip.=''; - $gefunden_anz+=$row_anz->anz; - } - - if (!empty($gefunden_anz)) - { - $tooltip.=''; - - echo '
Gesamt: '.$gefunden_anz; - echo ''; - } - echo ''; - - - if (!isset($max_person_array[$i]['tag'])) - $max_person_array[$i]['tag']=0; - $max_person_array[$i]['tag']=$max_person_array[$i]['tag']+$gefunden_anz; - if (!isset($max_person_array[$i]['tag_max'])) - $max_person_array[$i]['tag_max']=0; - $max_person_array[$i]['tag_max']=$max_person_array[$i]['tag_max']+$max_person; - - if (!isset($max_person_array[$k]['stunde'])) - $max_person_array[$k]['stunde']=0; - $max_person_array[$k]['stunde']=$max_person_array[$k]['stunde']+$gefunden_anz; - if (!isset($max_person_array[$k]['stunde_max'])) - $max_person_array[$k]['stunde_max']=0; - $max_person_array[$k]['stunde_max']=$max_person_array[$k]['stunde_max']+$max_person; - - if (!isset($max_person_array[$i][$k]['tag_stunde'])) - $max_person_array[$i][$k]['tag_stunde']=0; - $max_person_array[$i][$k]['tag_stunde']=$max_person_array[$i][$k]['tag_stunde']+$gefunden_anz; - if (!isset($max_person_array[$i][$k]['tag_stunde_max'])) - $max_person_array[$i][$k]['tag_stunde_max']=0; - $max_person_array[$i][$k]['tag_stunde_max']=$max_person_array[$i][$k]['tag_stunde_max']+$max_person; - - } - echo ''; - - } - echo '
'. $fh_name .'      '. (date('Ym',$montag)==date('Ym',$letzterTagAnzeige)?$tag:(date('Y',$montag)==date('Y',$letzterTagAnzeige)?$tag_monat:$tag_monat_jahr)) .' - '. $letzter_tag_monat_jahr.'
Stunde
'.$row->show_beginn.'
'.$row->show_ende.'
'; - - $sql_query=' select distinct vw_'.$stpl_table.'.stg_bezeichnung as bezeichnung,vw_'.$stpl_table.'.stg_kurzbzlang as kurzbzlang,vw_'.$stpl_table.'.stg_kurzbz as kurzbz, vw_'.$stpl_table.'.'.$stpl_table.'_id,vw_'.$stpl_table.'.lehrform, vw_'.$stpl_table.'.gruppe, vw_'.$stpl_table.'.gruppe_kurzbz, vw_'.$stpl_table.'.unr,vw_'.$stpl_table.'.verband,vw_'.$stpl_table.'.ort_kurzbz,vw_'.$stpl_table.'.lehreinheit_id,vw_'.$stpl_table.'.studiengang_kz,vw_'.$stpl_table.'.semester,tbl_ort.max_person,tbl_standort.adresse_id,tbl_adresse.plz,tbl_adresse.name '; - $sql_query.=' from lehre.vw_'.$stpl_table.', public.tbl_ort,public.tbl_standort, public.tbl_adresse '; - $sql_query.=" where vw_".$stpl_table.".datum=".$db->db_add_param(date('Y-m-d',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))))." "; - $sql_query.=" and vw_".$stpl_table.".stunde=".$db->db_add_param($row->stunde, FHC_INTEGER)." "; - $sql_query.=" and tbl_ort.ort_kurzbz=vw_".$stpl_table.".ort_kurzbz "; - $sql_query.=" and tbl_standort.standort_id=tbl_ort.standort_id "; - $sql_query.=" and tbl_adresse.adresse_id=tbl_standort.adresse_id "; - $sql_query.=" and tbl_adresse.adresse_id=".$db->db_add_param($adresse_id, FHC_INTEGER)." "; - $sql_query.=" order by tbl_adresse.plz,vw_".$stpl_table.".ort_kurzbz "; - - // Gibt es fuer das Datum und Stunde einen Stundenplaneintrag - if(!$results_anzahl=$db->db_query($sql_query)) - die($db->db_last_error()); - $num_rows_anzahl=$db->db_num_rows($results_anzahl); - - $gefunden_anz=0; - $tooltip=''; - for ($k_anz=0; $k_anz<$num_rows_anzahl; $k_anz++) - { - $row_anz = $db->db_fetch_object($results_anzahl, $k_anz); - // Lehreinheit wird aufgeteilt in zwei Raeume - nicht verarbeiten , das sind die selben Personen - if (isset($lehreinheiten[trim($row_anz->lehreinheit_id).trim($row_anz->gruppe_kurzbz)])) - continue; - $lehreinheiten[$row_anz->lehreinheit_id]=trim($row_anz->lehreinheit_id).trim($row_anz->gruppe_kurzbz); - - $max_person=$row_anz->max_person+$max_person; - $row_anz->verband=trim($row_anz->verband); - $row_anz->gruppe=trim($row_anz->gruppe); - $row_anz->gruppe_kurzbz=trim($row_anz->gruppe_kurzbz); - - $stsem=$ss; - - $gruppe=($row_anz->gruppe_kurzbz?$row_anz->gruppe_kurzbz:null); - $student=new student(); - - $row_anz->anz=0; - if ($result=$student->getStudents($row_anz->studiengang_kz,$row_anz->semester,$row_anz->verband,$row_anz->gruppe,$gruppe, $stsem)) - $row_anz->anz=count($result); - - - if (empty($row_anz->anz)) - $fehler=true; - - $lvb=$row_anz->kurzbzlang.'-'.$row_anz->semester; - if (!is_null($row_anz->verband) && !empty($row_anz->verband)) - { - $lvb.=$row_anz->verband; - if (!is_null($row_anz->gruppe) && !empty($row_anz->gruppe) ) - $lvb.=$row_anz->gruppe; - } - if (!empty($k_anz)) - $tooltip.='
'. date('d M Y',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).' '.$row->show_beginn.' - '.$row->show_ende.'Anzahl
stundenplan_id:$row_anz->stundenplandev_id).'\'>'.trim($row_anz->ort_kurzbz).' ort_kurzbz).'\' target=\'_blank\' titel=\'Studiengang Kz '.$row_anz->studiengang_kz.'\'>'.$lvb.' '.$row_anz->gruppe_kurzbz.' '.(!$row_anz->anz?'':'').$row_anz->bezeichnung.(!$row_anz->anz?'':'').' '.$row_anz->anz.'
max.Personen:'.$max_person.' Belegung:'. number_format($gefunden_anz / $max_person,2)*100 .'% Ges.:'.$gefunden_anz.'
'; - - - $rechte = new benutzerberechtigung(); - $rechte->getBerechtigungen($uid); - if($rechte->isBerechtigt('admin')) - { - echo ''; - echo ''; - - echo ''; - echo ''; - for ($i=0; $i'.strftime('%a',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).' '. date('d M Y',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).''; - } - echo ''; - $stunde_proz=0; - $stunde=0; - $stunde_max=0; - for ($k=0; $k<$num_rows_stunde; $k++) - { - $row = $db->db_fetch_object($results, $k); - $row->show_beginn=substr($row->beginn,0,5); - $row->show_ende=substr($row->ende,0,5); - $row->check_beginn=str_replace(':','',substr($row->beginn,0,5)); - $row->check_ende=str_replace(':','',substr($row->ende,0,5)); - echo ''; - echo ''; - echo ''; - - $stunde=$stunde+$max_person_array[$k]['stunde']; - $stunde_max=$stunde_max+$max_person_array[$k]['stunde_max']; - - for ($i=0; $i'; - echo 'anz.:'.$max_person_array[$i][$k]['tag_stunde']; - echo '
'; - echo 'FH   max.:'. $raum_max_anz; - echo '
'; - echo ' '.($max_person_array[$i][$k]['tag_stunde']?number_format($max_person_array[$i][$k]['tag_stunde'] / $raum_max_anz,2)*100:0).'%'; - echo '
'; - echo 'Raum max.:'. $max_person_array[$i][$k]['tag_stunde_max']; - echo '
'; - echo ' '.($max_person_array[$i][$k]['tag_stunde']?number_format($max_person_array[$i][$k]['tag_stunde'] / $max_person_array[$i][$k]['tag_stunde_max'],2)*100:0).'%'; - echo ''; - } - echo '
'; - } - - - echo ''; - echo ''; - - echo ''; - - - for ($i=0; $i'; - echo 'FH      Ø '.($max_person_array[$i]['tag']?number_format($max_person_array[$i]['tag'] / ($raum_max_anz *$num_rows_stunde),2)*100:0).'%'; - echo '
'; - echo 'Raum Ø '.($max_person_array[$i]['tag']?number_format($max_person_array[$i]['tag'] / $max_person_array[$i]['tag_max'],2)*100:0).'%'; - echo ''; - } - - echo '
'; - - - echo '
'. $fh_name .'      '. (date('Ym',$montag)==date('Ym',$letzterTagAnzeige)?$tag:(date('Y',$montag)==date('Y',$letzterTagAnzeige)?$tag_monat:$tag_monat_jahr)) .' - '. $letzter_tag_monat_jahr.'
Zeit / Datum – 
'.$row->show_beginn.'
'.$row->show_ende.'
'; - echo 'anz.:'.$max_person_array[$k]['stunde']; - echo '
'; - echo 'FH   '.($raum_max_anz*TAGE_PRO_WOCHE); - echo '
'; - echo ' Ø '.($max_person_array[$k]['stunde']?number_format(($max_person_array[$k]['stunde'])/TAGE_PRO_WOCHE / ($raum_max_anz),2)*100:0).'%'; - echo '
'; - echo 'Raum '.$max_person_array[$k]['stunde_max']; - echo '
'; - echo ' Ø '.($max_person_array[$k]['stunde']?number_format(($max_person_array[$k]['stunde']/TAGE_PRO_WOCHE) / ($max_person_array[$k]['stunde_max']/TAGE_PRO_WOCHE),2)*100:0).'%'; - echo '
Ø'; - echo 'FH      Ø '.($stunde?number_format(($stunde)/$num_rows_stunde/TAGE_PRO_WOCHE / ($raum_max_anz),2)*100:0).'%'; - echo '
'; - echo 'Raum Ø '.($stunde_max?number_format(($stunde/$num_rows_stunde/TAGE_PRO_WOCHE) / ($stunde_max/$num_rows_stunde/TAGE_PRO_WOCHE),2)*100:0).'%'; - echo '
'; - } -?> - - + + + + + + + +
+
+
+
+
+
+ + + +
+
drucken
+ +
+
schliessen  
+ +
+
+
+
+
+
+getaktorNext(); + $objSS->load($ss); + $datum_obj = new datum(); + $ss_begin=$datum_obj->mktime_fromdate($objSS->start); + $ss_ende=$datum_obj->mktime_fromdate($objSS->ende); + + + $sql_query=' select tbl_adresse.plz,tbl_adresse.name, sum(tbl_ort.max_person) as summe '; + $sql_query.=' from public.tbl_ort,public.tbl_standort, public.tbl_adresse '; + $sql_query.=" where tbl_standort.standort_id=tbl_ort.standort_id "; + $sql_query.=" and tbl_adresse.adresse_id=tbl_standort.adresse_id "; + $sql_query.=" and tbl_adresse.adresse_id=".$db->db_add_param($adresse_id, FHC_INTEGER)." "; + $sql_query.=" and tbl_ort.aktiv and tbl_ort.lehre "; + $sql_query.=" group by tbl_adresse.plz,tbl_adresse.name "; + // Gibt es fuer das Datum und Stunde einen Stundenplaneintrag + if(!$results_anzahl=$db->db_query($sql_query)) + die($db->db_last_error()); + $raum_max_anz=0; + $fh_name='FH lese fehler'; + if ($num_rows_anzahl=$db->db_num_rows($results_anzahl)) + { + $fh_name = $db->db_result($results_anzahl,0,"name").', '.$db->db_result($results_anzahl,0,"plz"); + $raum_max_anz = $db->db_result($results_anzahl,0,"summe"); + } + + $stg=array(); + echo '

+  Lehrveranstaltungsplan >> Wochenplan - Anzahl Studenten +    << + Wochenplan  Kw '.$kw.' +  >> +    Heute +

'; + + // Stundentafel abfragen + $sql_query="SELECT stunde, beginn, ende FROM lehre.tbl_stunde ORDER BY stunde"; + if(!$results=$db->db_query($sql_query)) + die($db->db_last_error()); + + + echo ''; + echo ''; + echo ''; + echo ''; + for ($i=0; $i'.strftime('%a',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).' '.date('d M',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).''; + } + echo ''; + + $max_person_array=array(); + $num_rows_stunde=$db->db_num_rows($results); + echo ''; + for ($k=0; $k<$num_rows_stunde; $k++) + { + $row = $db->db_fetch_object($results, $k); + $row->show_beginn=substr($row->beginn,0,5); + $row->show_ende=substr($row->ende,0,5); + $row->check_beginn=str_replace(':','',substr($row->beginn,0,5)); + $row->check_ende=str_replace(':','',substr($row->ende,0,5)); + + echo ''; + $lehreinheiten=array(); + + for ($i=0; $i= $row->check_beginn && date('Hi')<=$row->check_ende ) + $aktiv=true; + + echo ''; + else + $tooltip.=''; + $tooltip.=''; + $gefunden_anz+=$row_anz->anz; + } + + if (!empty($gefunden_anz)) + { + $tooltip.=''; + + echo '
Gesamt: '.$gefunden_anz; + echo ''; + } + echo ''; + + + if (!isset($max_person_array[$i]['tag'])) + $max_person_array[$i]['tag']=0; + $max_person_array[$i]['tag']=$max_person_array[$i]['tag']+$gefunden_anz; + if (!isset($max_person_array[$i]['tag_max'])) + $max_person_array[$i]['tag_max']=0; + $max_person_array[$i]['tag_max']=$max_person_array[$i]['tag_max']+$max_person; + + if (!isset($max_person_array[$k]['stunde'])) + $max_person_array[$k]['stunde']=0; + $max_person_array[$k]['stunde']=$max_person_array[$k]['stunde']+$gefunden_anz; + if (!isset($max_person_array[$k]['stunde_max'])) + $max_person_array[$k]['stunde_max']=0; + $max_person_array[$k]['stunde_max']=$max_person_array[$k]['stunde_max']+$max_person; + + if (!isset($max_person_array[$i][$k]['tag_stunde'])) + $max_person_array[$i][$k]['tag_stunde']=0; + $max_person_array[$i][$k]['tag_stunde']=$max_person_array[$i][$k]['tag_stunde']+$gefunden_anz; + if (!isset($max_person_array[$i][$k]['tag_stunde_max'])) + $max_person_array[$i][$k]['tag_stunde_max']=0; + $max_person_array[$i][$k]['tag_stunde_max']=$max_person_array[$i][$k]['tag_stunde_max']+$max_person; + + } + echo ''; + + } + echo '
'. $fh_name .'      '. (date('Ym',$montag)==date('Ym',$letzterTagAnzeige)?$tag:(date('Y',$montag)==date('Y',$letzterTagAnzeige)?$tag_monat:$tag_monat_jahr)) .' - '. $letzter_tag_monat_jahr.'
Stunde
'.$row->show_beginn.'
'.$row->show_ende.'
'; + + $sql_query=' select distinct vw_'.$stpl_table.'.stg_bezeichnung as bezeichnung,vw_'.$stpl_table.'.stg_kurzbzlang as kurzbzlang,vw_'.$stpl_table.'.stg_kurzbz as kurzbz, vw_'.$stpl_table.'.'.$stpl_table.'_id,vw_'.$stpl_table.'.lehrform, vw_'.$stpl_table.'.gruppe, vw_'.$stpl_table.'.gruppe_kurzbz, vw_'.$stpl_table.'.unr,vw_'.$stpl_table.'.verband,vw_'.$stpl_table.'.ort_kurzbz,vw_'.$stpl_table.'.lehreinheit_id,vw_'.$stpl_table.'.studiengang_kz,vw_'.$stpl_table.'.semester,tbl_ort.max_person,tbl_standort.adresse_id,tbl_adresse.plz,tbl_adresse.name '; + $sql_query.=' from lehre.vw_'.$stpl_table.', public.tbl_ort,public.tbl_standort, public.tbl_adresse '; + $sql_query.=" where vw_".$stpl_table.".datum=".$db->db_add_param(date('Y-m-d',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))))." "; + $sql_query.=" and vw_".$stpl_table.".stunde=".$db->db_add_param($row->stunde, FHC_INTEGER)." "; + $sql_query.=" and tbl_ort.ort_kurzbz=vw_".$stpl_table.".ort_kurzbz "; + $sql_query.=" and tbl_standort.standort_id=tbl_ort.standort_id "; + $sql_query.=" and tbl_adresse.adresse_id=tbl_standort.adresse_id "; + $sql_query.=" and tbl_adresse.adresse_id=".$db->db_add_param($adresse_id, FHC_INTEGER)." "; + $sql_query.=" order by tbl_adresse.plz,vw_".$stpl_table.".ort_kurzbz "; + + // Gibt es fuer das Datum und Stunde einen Stundenplaneintrag + if(!$results_anzahl=$db->db_query($sql_query)) + die($db->db_last_error()); + $num_rows_anzahl=$db->db_num_rows($results_anzahl); + + $gefunden_anz=0; + $tooltip=''; + for ($k_anz=0; $k_anz<$num_rows_anzahl; $k_anz++) + { + $row_anz = $db->db_fetch_object($results_anzahl, $k_anz); + // Lehreinheit wird aufgeteilt in zwei Raeume - nicht verarbeiten , das sind die selben Personen + if (isset($lehreinheiten[trim($row_anz->lehreinheit_id).trim($row_anz->gruppe_kurzbz)])) + continue; + $lehreinheiten[$row_anz->lehreinheit_id]=trim($row_anz->lehreinheit_id).trim($row_anz->gruppe_kurzbz); + + $max_person=$row_anz->max_person+$max_person; + $row_anz->verband=trim($row_anz->verband); + $row_anz->gruppe=trim($row_anz->gruppe); + $row_anz->gruppe_kurzbz=trim($row_anz->gruppe_kurzbz); + + $stsem=$ss; + + $gruppe=($row_anz->gruppe_kurzbz?$row_anz->gruppe_kurzbz:null); + $student=new student(); + + $row_anz->anz=0; + if ($result=$student->getStudents($row_anz->studiengang_kz,$row_anz->semester,$row_anz->verband,$row_anz->gruppe,$gruppe, $stsem)) + $row_anz->anz=count($result); + + + if (empty($row_anz->anz)) + $fehler=true; + + $lvb=$row_anz->kurzbzlang.'-'.$row_anz->semester; + if (!is_null($row_anz->verband) && !empty($row_anz->verband)) + { + $lvb.=$row_anz->verband; + if (!is_null($row_anz->gruppe) && !empty($row_anz->gruppe) ) + $lvb.=$row_anz->gruppe; + } + if (!empty($k_anz)) + $tooltip.='
'. date('d M Y',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).' '.$row->show_beginn.' - '.$row->show_ende.'Anzahl
stundenplan_id:$row_anz->stundenplandev_id).'\'>'.trim($row_anz->ort_kurzbz).' ort_kurzbz).'\' target=\'_blank\' titel=\'Studiengang Kz '.$row_anz->studiengang_kz.'\'>'.$lvb.' '.$row_anz->gruppe_kurzbz.' '.(!$row_anz->anz?'':'').$row_anz->bezeichnung.(!$row_anz->anz?'':'').' '.$row_anz->anz.'
max.Personen:'.$max_person.' Belegung:'. number_format($gefunden_anz / $max_person,2)*100 .'% Ges.:'.$gefunden_anz.'
'; + + + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($uid); + if($rechte->isBerechtigt('admin')) + { + echo ''; + echo ''; + + echo ''; + echo ''; + for ($i=0; $i'.strftime('%a',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).' '. date('d M Y',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).''; + } + echo ''; + $stunde_proz=0; + $stunde=0; + $stunde_max=0; + for ($k=0; $k<$num_rows_stunde; $k++) + { + $row = $db->db_fetch_object($results, $k); + $row->show_beginn=substr($row->beginn,0,5); + $row->show_ende=substr($row->ende,0,5); + $row->check_beginn=str_replace(':','',substr($row->beginn,0,5)); + $row->check_ende=str_replace(':','',substr($row->ende,0,5)); + echo ''; + echo ''; + echo ''; + + $stunde=$stunde+$max_person_array[$k]['stunde']; + $stunde_max=$stunde_max+$max_person_array[$k]['stunde_max']; + + for ($i=0; $i'; + echo 'anz.:'.$max_person_array[$i][$k]['tag_stunde']; + echo '
'; + echo 'FH   max.:'. $raum_max_anz; + echo '
'; + echo ' '.($max_person_array[$i][$k]['tag_stunde']?number_format($max_person_array[$i][$k]['tag_stunde'] / $raum_max_anz,2)*100:0).'%'; + echo '
'; + echo 'Raum max.:'. $max_person_array[$i][$k]['tag_stunde_max']; + echo '
'; + echo ' '.($max_person_array[$i][$k]['tag_stunde']?number_format($max_person_array[$i][$k]['tag_stunde'] / $max_person_array[$i][$k]['tag_stunde_max'],2)*100:0).'%'; + echo ''; + } + echo '
'; + } + + + echo ''; + echo ''; + + echo ''; + + + for ($i=0; $i'; + echo 'FH      Ø '.($max_person_array[$i]['tag']?number_format($max_person_array[$i]['tag'] / ($raum_max_anz *$num_rows_stunde),2)*100:0).'%'; + echo '
'; + echo 'Raum Ø '.($max_person_array[$i]['tag']?number_format($max_person_array[$i]['tag'] / $max_person_array[$i]['tag_max'],2)*100:0).'%'; + echo ''; + } + + echo '
'; + + + echo '
'. $fh_name .'      '. (date('Ym',$montag)==date('Ym',$letzterTagAnzeige)?$tag:(date('Y',$montag)==date('Y',$letzterTagAnzeige)?$tag_monat:$tag_monat_jahr)) .' - '. $letzter_tag_monat_jahr.'
Zeit / Datum – 
'.$row->show_beginn.'
'.$row->show_ende.'
'; + echo 'anz.:'.$max_person_array[$k]['stunde']; + echo '
'; + echo 'FH   '.($raum_max_anz*TAGE_PRO_WOCHE); + echo '
'; + echo ' Ø '.($max_person_array[$k]['stunde']?number_format(($max_person_array[$k]['stunde'])/TAGE_PRO_WOCHE / ($raum_max_anz),2)*100:0).'%'; + echo '
'; + echo 'Raum '.$max_person_array[$k]['stunde_max']; + echo '
'; + echo ' Ø '.($max_person_array[$k]['stunde']?number_format(($max_person_array[$k]['stunde']/TAGE_PRO_WOCHE) / ($max_person_array[$k]['stunde_max']/TAGE_PRO_WOCHE),2)*100:0).'%'; + echo '
Ø'; + echo 'FH      Ø '.($stunde?number_format(($stunde)/$num_rows_stunde/TAGE_PRO_WOCHE / ($raum_max_anz),2)*100:0).'%'; + echo '
'; + echo 'Raum Ø '.($stunde_max?number_format(($stunde/$num_rows_stunde/TAGE_PRO_WOCHE) / ($stunde_max/$num_rows_stunde/TAGE_PRO_WOCHE),2)*100:0).'%'; + echo '
'; + } +?> + + From 1cf06681d3efa138706769b623304d73658a6a7f Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Wed, 18 Nov 2020 17:45:37 +0100 Subject: [PATCH 62/80] =?UTF-8?q?bpk=20vorr=C3=BCbergehend=20auskommentier?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vilesci/bis/lehrgangsmeldung.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/vilesci/bis/lehrgangsmeldung.php b/vilesci/bis/lehrgangsmeldung.php index 07a62a9ae..9cc560d32 100644 --- a/vilesci/bis/lehrgangsmeldung.php +++ b/vilesci/bis/lehrgangsmeldung.php @@ -379,7 +379,7 @@ if($result = $db->db_query($qry)) } } } - if($row->bpk == '' || $row->bpk == null) + /*if($row->bpk == '' || $row->bpk == null) { $error_log .= (!empty($error_log) ? ', ' : '') . "bPK fehlt"; } @@ -395,7 +395,7 @@ if($result = $db->db_query($qry)) { $error_log.=(!empty($error_log) ? ', ' : ''). "bPK ist nicht 28 Zeichen lang"; } - } + }*/ if ($zustell_plz == '' || $zustell_plz == null) { @@ -626,9 +626,9 @@ if($result = $db->db_query($qry)) ".$row->ersatzkennzeichen.""; } - $datei.=" + /*$datei.=" ".$row->bpk." - "; + ";*/ $datei.=" ".$row->staatsbuergerschaft." From 451e0e784382c82088bde507477036186f932008 Mon Sep 17 00:00:00 2001 From: Paolo Date: Thu, 19 Nov 2020 00:09:53 +0100 Subject: [PATCH 63/80] Fixed MessageLib->_sendNoticeEmails: date and array comparisons --- application/libraries/MessageLib.php | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/application/libraries/MessageLib.php b/application/libraries/MessageLib.php index 8c58d1a90..2970fbd6d 100644 --- a/application/libraries/MessageLib.php +++ b/application/libraries/MessageLib.php @@ -606,7 +606,7 @@ class MessageLib if (hasData($benutzerResult)) { // Checks if the user was NOT created in the last 24 hours - if (getData($benutzerResult)[0]->insertamum > date('Y-m-d H:i:s', strtotime('+1 day'))) + if (getData($benutzerResult)[0]->insertamum > date('Y-m-d H:i:s', strtotime('-1 day'))) { // Use the uid + domain email $message->receiverContact = getData($benutzerResult)[0]->uid .'@'.DOMAIN; @@ -657,7 +657,7 @@ class MessageLib // If there are presetudent if (hasData($prestudentResults)) { - $inArray = true; + $privateOnly = false; $organisationUnits = getData($prestudentResults); // Look if any of the organization units of this prestudent are in the list of the @@ -665,16 +665,21 @@ class MessageLib foreach ($organisationUnits as $organisationUnit) { // If the recipient organisation unit is NOT in the list of organisation units that sent only to private emails + // NOTE: done in this way because it is easyer to check the result of array_search if (array_search($organisationUnit, $this->_ci->config->item(self::CFG_OU_RECEIVERS_PRIVATE)) === false) { - $inArray = false; + // NOP + } + else // otherwise If the recipient organisation unit is the list of organisation units that sent only to private emails + { + $privateOnly = true; break; } } // If the recipient prestudent organization unit is not in in the list of the // organization units that will not send the notice email to the internal account - if (!$inArray) + if ($privateOnly) { // Then use the private email $privateEmailResult = $this->_getPrivateEmail($message->receiver_id); @@ -703,7 +708,7 @@ class MessageLib foreach (getData($benutzerResult) as $benutzer) { // Checks if the user was NOT created in the last 24 hours - if (getData($benutzerResult)[0]->insertamum > date('Y-m-d H:i:s', strtotime('+1 day'))) + if (getData($benutzerResult)[0]->insertamum > date('Y-m-d H:i:s', strtotime('-1 day'))) { // Use the uid + domain as email address $message->receiverContact = getData($benutzerResult)[0]->uid .'@'.DOMAIN; From 119d5d99df73ca398e689bd7f50b926ab497307b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Mon, 23 Nov 2020 16:18:43 +0100 Subject: [PATCH 64/80] Fixed Query to get User for Messages by PersonID and OrganisationUnit --- application/models/person/Benutzer_model.php | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/application/models/person/Benutzer_model.php b/application/models/person/Benutzer_model.php index 3c5a6d08a..c1e76ce38 100644 --- a/application/models/person/Benutzer_model.php +++ b/application/models/person/Benutzer_model.php @@ -23,14 +23,17 @@ class Benutzer_model extends DB_Model */ public function getActiveUserByPersonIdAndOrganisationUnit($person_id, $oe_kurzbz) { - $sql = 'SELECT b.uid, - b.insertamum - FROM public.tbl_benutzer b - JOIN public.tbl_prestudent ps USING (person_id) - JOIN public.tbl_studiengang sg USING (studiengang_kz) - WHERE ps.person_id = ? - AND sg.oe_kurzbz = ? - AND b.aktiv = TRUE'; + $sql = 'SELECT + b.uid, + b.insertamum + FROM + public.tbl_prestudent ps + JOIN public.tbl_studiengang sg USING (studiengang_kz) + JOIN public.tbl_student USING(prestudent_id) + JOIN public.tbl_benutzer b ON(uid = student_uid) + WHERE ps.person_id = ? + AND sg.oe_kurzbz = ? + AND b.aktiv = TRUE'; return $this->execQuery($sql, array($person_id, $oe_kurzbz)); } @@ -98,4 +101,3 @@ class Benutzer_model extends DB_Model return mb_strtolower(str_replace(' ','_', $str)); } } - From 6e5c555a40dcc9b2e28d512e5b8cf2aaf149fc22 Mon Sep 17 00:00:00 2001 From: Paolo Date: Mon, 23 Nov 2020 16:19:23 +0100 Subject: [PATCH 65/80] Fixed MessageLib->_sendNoticeEmail --- application/libraries/MessageLib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/libraries/MessageLib.php b/application/libraries/MessageLib.php index 2970fbd6d..db760ec03 100644 --- a/application/libraries/MessageLib.php +++ b/application/libraries/MessageLib.php @@ -606,7 +606,7 @@ class MessageLib if (hasData($benutzerResult)) { // Checks if the user was NOT created in the last 24 hours - if (getData($benutzerResult)[0]->insertamum > date('Y-m-d H:i:s', strtotime('-1 day'))) + if (getData($benutzerResult)[0]->insertamum < date('Y-m-d H:i:s', strtotime('-1 day'))) { // Use the uid + domain email $message->receiverContact = getData($benutzerResult)[0]->uid .'@'.DOMAIN; @@ -708,7 +708,7 @@ class MessageLib foreach (getData($benutzerResult) as $benutzer) { // Checks if the user was NOT created in the last 24 hours - if (getData($benutzerResult)[0]->insertamum > date('Y-m-d H:i:s', strtotime('-1 day'))) + if (getData($benutzerResult)[0]->insertamum < date('Y-m-d H:i:s', strtotime('-1 day'))) { // Use the uid + domain as email address $message->receiverContact = getData($benutzerResult)[0]->uid .'@'.DOMAIN; From 562fab9281de94d22265eee2f3dfd0e446e1490e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 25 Nov 2020 14:43:22 +0100 Subject: [PATCH 66/80] ZGV-Nation in Infocenter Filter per Default sichtbar --- system/filtersupdate.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/system/filtersupdate.php b/system/filtersupdate.php index 9fbaf936f..2a9b26d1c 100644 --- a/system/filtersupdate.php +++ b/system/filtersupdate.php @@ -33,6 +33,7 @@ $filters = array( {"name": "Vorname"}, {"name": "Nachname"}, {"name": "Nation"}, + {"name": "ZGVNation"}, {"name": "StgAbgeschickt"}, {"name": "Studiensemester"}, {"name": "LastAction"}, @@ -66,6 +67,7 @@ $filters = array( {"name": "Vorname"}, {"name": "Nachname"}, {"name": "Nation"}, + {"name": "ZGVNation"}, {"name": "StgAbgeschickt"}, {"name": "Studiensemester"}, {"name": "LastAction"}, @@ -105,6 +107,7 @@ $filters = array( {"name": "Vorname"}, {"name": "Nachname"}, {"name": "Nation"}, + {"name": "ZGVNation"}, {"name": "LastAction"}, {"name": "LastActionType"}, {"name": "User/Operator"}, @@ -140,6 +143,7 @@ $filters = array( {"name": "Vorname"}, {"name": "Nachname"}, {"name": "Nation"}, + {"name": "ZGVNation"}, {"name": "LastAction"}, {"name": "User/Operator"}, {"name": "LockUser"}, @@ -180,6 +184,7 @@ $filters = array( {"name": "Vorname"}, {"name": "Nachname"}, {"name": "Nation"}, + {"name": "ZGVNation"}, {"name": "StgAbgeschickt"}, {"name": "Studiensemester"}, {"name": "LastAction"}, @@ -218,6 +223,7 @@ $filters = array( {"name": "Vorname"}, {"name": "Nachname"}, {"name": "Nation"}, + {"name": "ZGVNation"}, {"name": "LastAction"}, {"name": "User/Operator"}, {"name": "LockUser"}, From 9b6cb231c0b68acb52dbff2ea2901e51d94230bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 25 Nov 2020 16:54:44 +0100 Subject: [PATCH 67/80] Messages in FAS show the Date of the last Status change (read/unread-status) --- content/messages.xul.php | 5 +++++ rdf/messages.rdf.php | 9 +++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/content/messages.xul.php b/content/messages.xul.php index eb3ace222..2ee733c82 100644 --- a/content/messages.xul.php +++ b/content/messages.xul.php @@ -122,6 +122,10 @@ echo ']> class="sortDirectionIndicator" sort="rdf:http://www.technikum-wien.at/messages/rdf#status"/> +