Compare commits

...

71 Commits

Author SHA1 Message Date
Andreas Österreicher 7ec1653dd4 Merge branch 'master' into feature-9893/Add_Link_to_ICAL 2021-01-29 15:33:28 +01:00
Andreas Österreicher 7dc21fde5a FAS Länge der Betriebsmittel Nummer auf 32 Zeichen erhöht damit Schlüsselnummern gespeichert werden können 2021-01-22 13:57:28 +01:00
Nikolaus Krondraf 5c1c9f1df4 Beim Löschen eines Prüfungstermins kann ein Infomail versendet werden 2021-01-20 10:18:00 +01:00
Manfred Kindl adcb865cbf Merge remote-tracking branch 'origin/master' 2021-01-19 13:47:20 +01:00
Manfred Kindl 0c40452b4d Statusgrund in Excel-Export Studierende 2021-01-19 13:47:07 +01:00
Manfred Kindl 9e0febdff6 Abfrage der Gebiete angepasst
Damit auch QuereinsteigerInnen des 2. Semesters die Gebiete sehen
2021-01-19 13:46:15 +01:00
Andreas Österreicher 407d8d9613 Fehler behoben wodurch nicht alle Semester eines Studiengangs im FAS angezeigt wurden wenn nur direkte Inskriptionsgruppen vorhanden sind und keine Spezialgruppen oder Verbandsgruppen 2021-01-18 21:04:17 +01:00
Andreas Österreicher 57c0f3020a Bei den Zahlungsbestätigungen werden nur noch Zahlungen angezeigt bei denen das Buchungsdatum nicht in der Zukunft liegt um zu verhindern, dass Studierende die Zahlungen tätigen bevor sie eine Rechnung bekommen 2021-01-07 16:52:26 +01:00
Andreas Österreicher 6a9871c0d5 Feldgroesse für ZGV angepasst für Darstellung auf kleinen Devices 2020-12-22 09:42:35 +01:00
Andreas Österreicher 095c11f167 Jobwatcher verschickt Infomail an Administrator falls Cronjobs im Status Running hängen bleiben 2020-12-11 11:10:29 +01:00
Andreas Österreicher 7ed9266b0a Neuen Config-Eintrag hinzugefügt um die Mahnspanne bei den Zahlungen im FAS auszublenden 2020-12-07 10:58:29 +01:00
Andreas Österreicher 33cc431267 Added Phrases for Additional Informations 2020-12-04 15:41:59 +01:00
Manfred Kindl 8109fd6757 Merge remote-tracking branch 'origin/master' 2020-12-02 13:57:32 +01:00
Manfred Kindl 47d09ec7eb Tablesorter für Meldungsübersicht 2020-12-02 13:57:26 +01:00
Andreas Österreicher b5510f023e Fixed Corner Case where wrong actual Studysemester ist retrieved if Start and End Dates are overlapping 2020-12-02 12:18:02 +01:00
Andreas Österreicher c7605b2107 Merge branch 'feature-7434/Messages_Neue_Felder_zu_eingeloggtem_User_ergaenzen' 2020-11-26 13:30:21 +01:00
Andreas Österreicher 73688eec83 Merge branch 'master' into feature-7434/Messages_Neue_Felder_zu_eingeloggtem_User_ergaenzen 2020-11-26 12:52:24 +01:00
Andreas Österreicher d0d133b3ba Infocenter Nation aus Defaultfilter entfernt 2020-11-26 12:49:52 +01:00
Andreas Österreicher 9b6cb231c0 Messages in FAS show the Date of the last Status change (read/unread-status) 2020-11-25 16:54:44 +01:00
Andreas Österreicher 0738f28144 Merge branch 'master' into feature-7434/Messages_Neue_Felder_zu_eingeloggtem_User_ergaenzen 2020-11-25 14:52:22 +01:00
Andreas Österreicher 562fab9281 ZGV-Nation in Infocenter Filter per Default sichtbar 2020-11-25 14:43:22 +01:00
Andreas Österreicher 34560fe78b Merge branch 'bug-10179/Message_recipient_without_internal_account' 2020-11-25 14:31:47 +01:00
Paolo 6e5c555a40 Fixed MessageLib->_sendNoticeEmail 2020-11-23 16:19:23 +01:00
Andreas Österreicher 119d5d99df Fixed Query to get User for Messages by PersonID and OrganisationUnit 2020-11-23 16:18:43 +01:00
OliiverHacker 39d7fd9e5b fixed typo 2020-11-23 13:33:38 +01:00
OliiverHacker f3f66199c5 refactor moodle functionality for iCal and CalDav 2020-11-20 18:31:57 +01:00
Paolo 451e0e7843 Fixed MessageLib->_sendNoticeEmails: date and array comparisons 2020-11-19 00:09:53 +01:00
Manfred Kindl 1cf06681d3 bpk vorrübergehend auskommentiert 2020-11-18 17:45:37 +01:00
Manfred Kindl 798ff3db24 Bugfix Abfrage Rechte 2020-11-18 17:44:15 +01:00
Manfred Kindl 73a38a0835 Formatierung XML-Output 2020-11-18 17:41:30 +01:00
Manfred Kindl b31585af98 Bugfix ical_coodle
Leeres VEVENT entfernt, wenn kein Termin vorhanden
2020-11-18 17:40:35 +01:00
Paolo 9d2c004c6d Checks if the benutzer exists MessageLib->_sendNoticeEmails 2020-11-18 08:51:48 +01:00
Andreas Österreicher 232f261a76 Merge branch 'bugfix-8370/Fehlermeldung_korrigieren_in_LehrauftragBestellen' 2020-11-17 17:56:46 +01:00
Andreas Österreicher a1d2eb51a7 Loading Name of a Person doesnt load all person Data 2020-11-17 17:49:32 +01:00
Andreas Österreicher 2103e78dcc Merge branch 'feature-9858/Freigegebene_Urlaube_loeschen_wenn_in_Zukunft' 2020-11-17 17:44:31 +01:00
Andreas Österreicher 594faabf0c Merge branch 'feature-10352/dvuh_ernp_meldung' 2020-11-17 17:38:49 +01:00
OliiverHacker 0944f803d9 add title to exports 2020-11-09 11:29:47 +01:00
Paolo 443caa91f2 Messaging sysntem: the internal email account is used only if the user
account is older then 24 hours
2020-11-09 10:45:25 +01:00
alex 4465fbc877 DVUH Meldung: Renamed Ersatzkennzeichen input field text to SVNR/Ersatzkennzeichen 2020-11-04 22:43:45 +01:00
OliiverHacker 1d35e88542 add moodle link to caldav 2020-11-04 09:56:54 +01:00
alex 2ceefabec9 DVUH Meldung: Dokumenttyp can be entered for ERNP Meldung (Dropdown) 2020-10-30 15:47:15 +01:00
alex 6e37edd30b DVUH ERNP Meldung: added noticetext as warning, different country example (D instead of A) 2020-10-30 13:27:34 +01:00
OliiverHacker 34bed51ff7 include moodle link in iCal export if moodle addon is installed 2020-10-30 10:04:51 +01:00
alex d78308d43f DVUH Meldung: added ERNP Meldung for retrieving bpk for e.g. foreign residents 2020-10-29 23:40:02 +01:00
OliiverHacker 6cce9781c8 make pop-up-window larger 2020-10-21 14:04:35 +02:00
OliiverHacker 7ba1e39110 send all courses in json 2020-10-21 10:00:58 +02:00
OliiverHacker cb67b2be64 cleanup 2020-10-20 16:20:22 +02:00
OliiverHacker 9adce4b491 add moodle links 2020-10-20 14:40:34 +02:00
OliiverHacker 83bb92e270 Merge branch 'master' of https://github.com/FH-Complete/FHC-Core into feature-9896/Add_Link_to_CIS_Details 2020-10-17 15:39:53 +02:00
OliiverHacker 14fa1b24ad Display Full Name instead of Email Adress of Supervisor 2020-10-14 13:23:19 +02:00
OliiverHacker df667b1eec merge 2020-10-14 12:44:32 +02:00
Cris c1e4278e71 Changed permission denying - text in 'Lehrauftrag bestellen'
If a permission is correctly set, but the permission is restricted on
organisational units Department or Kompetenzfeld, the error-text gives now
meaningful information about the abort.

Signed-off-by: Cris <hainberg@technikum-wien.at>
2020-10-13 15:45:37 +02:00
OliiverHacker 4ced199e88 Freigegebenen Urlaub löschen auch in Zeitsperren 2020-10-13 12:26:06 +02:00
OliiverHacker 5802ca8ea2 versende Email an Vorgesetzten wenn freigegebener Urlaub gelöscht wird 2020-10-13 09:26:06 +02:00
OliiverHacker 6128a7ae6e add X to delete approved vacation 2020-10-12 15:31:37 +02:00
OliiverHacker 0f43f630ad stash changes 2020-10-12 12:52:49 +02:00
OliiverHacker c485400142 user is able to delete approved vacation if in the future 2020-09-29 14:56:15 +02:00
OliiverHacker 08536d63df display Full Name of Supervisors for vacation reqeust 2020-09-25 12:19:18 +02:00
Cris 742c9fa857 Check that user is an active employee in message-cronjob
Signed-off-by: Cris <hainberg@technikum-wien.at>
2020-06-04 11:33:58 +02:00
Cris 8304b4a1ae Adapted GUI: display user fields in tinymce-editor on doubleclick
Signed-off-by: Cris <hainberg@technikum-wien.at>
2020-06-02 16:31:52 +02:00
Cris 2906c1803e 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 <hainberg@technikum-wien.at>
2020-06-02 16:29:51 +02:00
Cris d35ee0c834 Adapted method to retrieve user fields when method is called by a cronjob
Signed-off-by: Cris <hainberg@technikum-wien.at>
2020-06-02 15:06:22 +02:00
Cris 8b80f2226e Added logic for cronjob to add senders fields into message body
Signed-off-by: Cris <hainberg@technikum-wien.at>
2020-06-02 15:03:31 +02:00
Cris 4f1796ee9d Added logic to add message vars data of logged in user into message body
Signed-off-by: Cris <hainberg@technikum-wien.at>
2020-05-28 09:48:31 +02:00
Cris ebd9c2c0ba 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 <hainberg@technikum-wien.at>
2020-05-28 09:46:15 +02:00
Cris 634401485a Renamed 'Meine Felder'-msg names and small method adaptation to retrieve fields
Signed-off-by: Cris <hainberg@technikum-wien.at>
2020-05-28 09:42:51 +02:00
Cris 046994f14b Added phrase 'meineFelder'
Signed-off-by: Cris <hainberg@technikum-wien.at>
2020-05-27 11:53:56 +02:00
Cris a5e0c9ca5a Added logic to provide fields of logged in user in Messaging system
Signed-off-by: Cris <hainberg@technikum-wien.at>
2020-05-27 11:52:12 +02:00
Cris 7ab2155d6a Added method to retrieve data of logged in user in Message model
Signed-off-by: Cris <hainberg@technikum-wien.at>
2020-05-27 11:49:35 +02:00
Cris 1be1d1c8e9 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 <hainberg@technikum-wien.at>
2020-05-27 11:48:05 +02:00
Cris 21e43d7a08 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.
2020-05-27 11:37:49 +02:00
44 changed files with 1917 additions and 654 deletions
@@ -92,7 +92,8 @@ class Lehrauftrag extends Auth_Controller
// Retrieve studiengaenge the user is entitled for to populate studiengang dropdown
if (!$studiengang_kz_arr = $this->permissionlib->getSTG_isEntitledFor(self::BERECHTIGUNG_LEHRAUFTRAG_BESTELLEN)) {
show_error('Fehler bei Berechtigungsprüfung');
show_error('Keine Studiengänge gefunden.<br>
Es muss eine passende Organisationseinheit hinterlegt werden.<br>');
}
// If studiengang_kz get param was set, check against entitled stg
+78 -8
View File
@@ -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->getMsgVarsLoggedInUser();
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['{'.str_replace(' ', '_', strtolower($tmpVariablesArray[$i])).'}']
= 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
@@ -595,11 +620,24 @@ class MessageLib
$this->_ci->load->model('person/Benutzer_model', 'BenutzerModel');
// And the receiver has an active account for the given organisation unit
$benutzerResult = $this->_ci->BenutzerModel->getActiveUserByPersonIdAndOrganisationUnit($message->receiver_id, $message->sender_ou);
$benutzerResult = $this->_ci->BenutzerModel->getActiveUserByPersonIdAndOrganisationUnit(
$message->receiver_id,
$message->sender_ou
);
if (isError($benutzerResult)) return $benutzerResult; // if an error occured then return it
// Use the uid + domain email
if (hasData($benutzerResult)) $message->receiverContact = getData($benutzerResult)[0]->uid .'@'.DOMAIN;
// If an active user for the given organization unit was found
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')))
{
// Use the uid + domain email
$message->receiverContact = getData($benutzerResult)[0]->uid .'@'.DOMAIN;
}
// otherwise do NOT use the internal email account
}
}
// Otherwise try with the private email
@@ -644,7 +682,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
@@ -652,16 +690,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);
@@ -676,10 +719,37 @@ class MessageLib
$this->_ci->BenutzerModel->addOrder('updateamum', 'DESC');
$this->_ci->BenutzerModel->addOrder('insertamum', 'DESC');
$benutzerResult = $this->_ci->BenutzerModel->loadWhere(array('person_id' => $message->receiver_id));
$benutzerResult = $this->_ci->BenutzerModel->loadWhere(
array(
'person_id' => $message->receiver_id
)
);
if (isError($benutzerResult)) return $benutzerResult; // if an error occured then return it
$message->receiverContact = getData($benutzerResult)[0]->uid .'@'.DOMAIN; // Use the uid + domain email
// If an active user for the given organization unit was found
if (hasData($benutzerResult))
{
// For each benutzer found for this person
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')))
{
// Use the uid + domain as email address
$message->receiverContact = getData($benutzerResult)[0]->uid .'@'.DOMAIN;
}
}
}
// Otherwise try with the private email
if (isEmptyString($message->receiverContact))
{
// Then use the private email
$privateEmailResult = $this->_getPrivateEmail($message->receiver_id);
if (isError($privateEmailResult)) return $privateEmailResult; // if an error occured then return it
if (hasData($privateEmailResult)) $message->receiverContact = getData($privateEmailResult);
}
}
}
}
+79 -3
View File
@@ -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');
}
//------------------------------------------------------------------------------------------------------------------
@@ -402,7 +405,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);
@@ -466,6 +472,15 @@ class Messages_model extends CI_Model
if (!hasData($msgVarsData)) show_error('No recipients were given');
$prestudentsData = $this->PrestudentModel->getOrganisationunits($prestudents);
// 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');
}
$sender_uid = $result[0]->uid;
// Adds the organisation unit to each prestudent
if (isEmptyString($oe_kurzbz) && hasData($msgVarsData) && hasData($prestudentsData))
@@ -475,7 +490,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);
@@ -606,6 +629,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))
{
@@ -629,7 +655,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(
@@ -839,6 +868,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
@@ -859,6 +908,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,
@@ -867,4 +917,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, $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');
// 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($uid))[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))));
}
}
@@ -132,7 +132,7 @@ class Studiensemester_model extends DB_Model
$query .= ' WHERE SUBSTRING(studiensemester_kurzbz FROM 1 FOR 2) = \'' . $ss . '\'';
}
$query .= ' ORDER BY delta LIMIT 1';
$query .= ' ORDER BY delta, start LIMIT 1';
return $this->execQuery($query);
}
@@ -188,7 +188,7 @@ class Studiensemester_model extends DB_Model
{
$query = "SELECT studiensemester_kurzbz, start, ende FROM public.vw_studiensemester
WHERE studiensemester_kurzbz <> ?
ORDER BY delta LIMIT 1";
ORDER BY delta, start LIMIT 1";
return $this->execQuery($query, array($studiensemester_kurzbz));
}
+11 -7
View File
@@ -23,13 +23,17 @@ class Benutzer_model extends DB_Model
*/
public function getActiveUserByPersonIdAndOrganisationUnit($person_id, $oe_kurzbz)
{
$sql = 'SELECT b.uid
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));
}
@@ -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
@@ -191,4 +208,26 @@ class Message_model extends DB_Model
return $this->execQuery(sprintf($query, is_array($person_id) ? 'IN' : '='), array($person_id));
}
/**
* 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($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, $params);
}
}
@@ -83,19 +83,41 @@
</label>
<?php
$size = count($variables) > 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
)
);
?>
</div>
<br>
<div class="form-group">
<label>
<?php echo ucfirst($this->p->t('ui', 'meineFelder')); ?>:
</label>
<?php
$size = count($user_fields) > 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
)
);
?>
</div>
</div>
</div>
<br>
@@ -111,14 +133,15 @@
?>
</div>
<div class="col-lg-7 col-xs-9 text-right">
<button id="sendButton" class="btn btn-default" type="button">
<div class="col-xs-6">
<button id="sendButton" class="btn btn-default pull-right" type="button">
<?php echo $this->p->t('ui', 'senden'); ?>
</button>
</div>
</div>
<br>
<hr>
<div class="row">
<div class="col-lg-12">
+33 -2
View File
@@ -1626,8 +1626,9 @@ function loadPruefungsDetails(prfId)
{
$("#termin"+j+"sammelklausur").text("false");
}
$("#termin"+j+"Id").closest("tr").append("<td><a href='#' onclick='terminLoeschen(\""+d.pruefung.pruefung_id+"\", \""+t.pruefungstermin_id+"\");'><?php echo $p->t('global/löschen'); ?></a></td>");
$("#termin"+j+"Id").closest("tr").append("<td><a href='#' onclick='window.open(\"pruefungstermin_aendern.php?termin_id="+t.pruefungstermin_id+"\",\"edit\",\"height=600,width=500,toolbar=no,titlebar=no,status=no,menubar=no\");'><?php echo $p->t('global/editieren'); ?></a></td>");
//$("#termin"+j+"Id").closest("tr").append("<td><a href='#' onclick='terminLoeschen(\""+d.pruefung.pruefung_id+"\", \""+t.pruefungstermin_id+"\");'><?php //echo $p->t('global/löschen'); ?></a></td>");
$("#termin"+j+"Id").closest("tr").append("<td><a href='#' onclick='window.open(\"pruefungstermin_loeschen.php?pruefung_id="+d.pruefung.pruefung_id+"&termin_id="+t.pruefungstermin_id+"\",\"delete\",\"height=600,width=500,toolbar=no,titlebar=no,status=no,menubar=no\");'><?php echo $p->t('global/löschen'); ?></a></td>");
$("#termin"+j+"Id").closest("tr").append("<td><a href='#' onclick='window.open(\"pruefungstermin_aendern.php?termin_id="+t.pruefungstermin_id+"\",\"edit\",\"height=600,width=500,toolbar=no,titlebar=no,status=no,menubar=no\");'><?php echo $p->t('global/editieren'); ?></a></td>");
terminHinzufuegen("span");
}
});
@@ -1971,6 +1972,36 @@ function terminLoeschen(pruefung_id, pruefungstermin_id)
});
}
/**
* Löscht einen Termin ohne im Anschluss die Prüfungen neu zu laden
* @param {int} pruefung_id ID der Prüfung
* @param {int} pruefungstermin_id ID des Prüfungstermines
* @returns {undefined}
*/
function terminLoeschenOhneLaden(pruefung_id, pruefungstermin_id)
{
$.ajax({
dataType: 'json',
url: "./pruefungstermin.json.php",
type: "POST",
data: {
method: "deleteTermin",
pruefung_id: pruefung_id,
pruefungstermin_id: pruefungstermin_id
},
error: loadError
}).done(function(data){
if(data.error === "false")
{
messageBox("message", "<?php echo $p->t('pruefung/terminGeloescht'); ?>", "green", "highlight", 10000);
}
else
{
messageBox("message", data.errormsg, "red", "highlight", 10000);
}
});
}
/**
* Lädt alle Prüfungen
* @returns {void}
@@ -0,0 +1,223 @@
<?php
/*
* Copyright 2021 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*
*
* Authors: Nikolaus Krondraf <krondraf@technikum-wien.at>
*/
require_once('../../../../config/cis.config.inc.php');
require_once('../../../../include/functions.inc.php');
require_once('../../../../include/benutzerberechtigung.class.php');
require_once('../../../../include/studiensemester.class.php');
require_once('../../../../include/datum.class.php');
require_once('../../../../include/pruefungsfenster.class.php');
require_once('../../../../include/pruefungsanmeldung.class.php');
require_once('../../../../include/lehrveranstaltung.class.php');
require_once('../../../../include/pruefungstermin.class.php');
require_once('../../../../include/studiengang.class.php');
require_once('../../../../include/pruefungCis.class.php');
require_once('../../../../include/mitarbeiter.class.php');
require_once('../../../../include/phrasen.class.php');
require_once('../../../../include/globals.inc.php');
require_once('../../../../include/sprache.class.php');
require_once('../../../../include/mail.class.php');
$sprache = getSprache();
$lang = new sprache();
$lang->load($sprache);
$p = new phrasen($sprache);
$maildebug = '';
$uid = get_uid();
$db = new basis_db();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
$studiensemester = new studiensemester();
$lehrveranstaltung = new lehrveranstaltung();
$lehrveranstaltung->loadLVAfromMitarbeiter(0, $uid, $studiensemester->getaktorNext());
if(empty($lehrveranstaltung->lehrveranstaltungen) && !$rechte->isBerechtigt('lehre/pruefungsterminAdmin'))
die('Sie haben keine Berechtigung für diese Seite');
if (!ctype_digit($_GET['termin_id']) || !ctype_digit($_GET['pruefung_id']))
die('Wrong Parameter');
else
{
$termin_id = $_GET['termin_id'];
$pruefung_id = $_GET['pruefung_id'];
}
if (isset($_GET["sendmail"], $_GET["message"]) && $_GET["message"] != "")
{
$pruefung = new pruefungCis($pruefung_id);
$pruefung->getLehrveranstaltungenByPruefung();
$lvstr = "";
foreach ($pruefung->lehrveranstaltungen as $lv)
{
$lv_objekt = new lehrveranstaltung($lv->lehrveranstaltung_id);
$lvstr .= "*".$lv_objekt->bezeichnung."* ";
}
$maildebug = 'Mail gesendet an:<br>';
$anmeldung = new pruefungsanmeldung();
$anmeldungen = $anmeldung->getAnmeldungenByTermin($termin_id);
foreach ($anmeldungen as $row)
{
$uid = $row->uid;
$to = $uid.'@'.DOMAIN;
$from = 'no-reply@'.DOMAIN;
$subject = $p->t('pruefung/pruefungStorniert');
$text = $_GET["message"];
$msg = new mail($to, $from, $subject, $text);
if ($msg->send())
$maildebug .= $to." OK<br>";
else
$maildebug .= $to.' Fehler<br>';
}
}
$prfgtermin = new pruefungstermin($termin_id);
$datum = new DateTime(explode(" ", $prfgtermin->von)[0]);
$datum = $datum->format('d.m.Y');
$vonzeit = substr(explode(" ", $prfgtermin->von)[1],0,5);
$biszeit = substr(explode(" ", $prfgtermin->bis)[1],0,5);
$pruefung_id = $prfgtermin->pruefung_id;
$pruefung = new pruefungCis($pruefung_id);
$pruefung->getLehrveranstaltungenByPruefung();
$lvstr = "";
foreach ($pruefung->lehrveranstaltungen as $lv)
{
$lv_objekt = new lehrveranstaltung($lv->lehrveranstaltung_id);
$lvstr .= "*".$lv_objekt->bezeichnung."*";
}
$uids = '';
$anmeldung = new pruefungsanmeldung();
$anmeldungen = $anmeldung->getAnmeldungenByTermin($termin_id);
foreach ($anmeldungen as $row)
{
$uids .= $row->uid.'@'.DOMAIN.'<br>';
}
$nachricht = "Sehr geehrte Studierende,\n\ndie Prüfung zur LV $lvstr am $datum um $vonzeit Uhr wurde abgesagt.";
?><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><?php echo $p->t('pruefung/titlePruefungstermin'); ?></title>
<script src="../../../../include/js/datecheck.js"></script>
<script type="text/javascript" src="../../../../vendor/components/jquery/jquery.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/jquery.tablesorter.widgets.min.js"></script>
<script type="text/javascript" src="../../../../vendor/mottie/tablesorter/dist/js/extras/jquery.tablesorter.pager.min.js"></script>
<script type="text/javascript" src="../../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../../../vendor/components/jqueryui/ui/i18n/datepicker-de.js"></script>
<link rel="stylesheet" href="../../../../vendor/components/jqueryui/themes/base/jquery-ui.min.css">
<script src="./pruefung.js.php"></script>
<link rel="stylesheet" href="../../../../skin/fhcomplete.css">
<link rel="stylesheet" href="../../../../skin/style.css.php">
<link rel="stylesheet" href="../../../../vendor/mottie/tablesorter/dist/css/theme.default.min.css">
<link rel="stylesheet" href="../../../../vendor/mottie/tablesorter/dist/css/jquery.tablesorter.pager.min.css">
<style type="text/css">
#message {
position: fixed;
top: 0px;
right: 0px;
width: 50%;
height: 2em;
font-size: 1.5em;
font-weight: bold;
}
.missingFormData {
border: 2px solid red;
outline: 2px solid red;
}
.modalOverlay {
position: fixed;
width: 100%;
height: 100%;
top: 0px;
left: 0px;
background-color: rgba(0,0,0,0.3); /* black semi-transparent */
}
#prfDetails, #prfVerwaltung {
margin: 1em;
}
</style>
</head>
<body style="padding-top:20px">
<center>
<div id="message"></div>
<form name="delete_termin" action="./pruefungstermin_loeschen.php" method="get">
<table>
<tr>
<td><?php echo $p->t('global/lehrveranstaltung'); ?></td>
<td><b><?php echo $lvstr; ?></b></td>
</tr>
<tr>
<td><?php echo $p->t('global/datum'); ?></td>
<td><?php echo $datum ?></td>
</tr>
<tr>
<td><?php echo $p->t('global/von'); ?></td>
<td><?php echo $vonzeit ?> Uhr</td>
</tr>
<tr>
<td><?php echo $p->t('global/bis'); ?></td>
<td><?php echo $biszeit ?> Uhr</td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td><?php echo $p->t('pruefung/pruefungsbewertungAnmeldungen'); ?>:</td>
<td><?php echo $uids; ?></td>
</tr>
<tr>
<td colspan="2">
<br>***<br>
<textarea cols="30" rows="10" name="message" placeholder="Bitte Nachricht an Studierende eingeben"><?php echo $nachricht ?></textarea>
<br>***<br>
</td>
</tr>
<tr>
<td colspan="2">
<p style="color: red; font-weight: bold;">Das Infomail ist optional und muss bei Bedarf vor dem Löschen des Termins versendet werden!</p>
<input type="submit" value="Sende Infomail">
<a href='#' onclick='terminLoeschenOhneLaden("<?php echo $pruefung_id ?>", "<?php echo $termin_id ?>");'>
<input type="button" name="loeschen" value="<?php echo $p->t('global/loeschen'); ?>">
</a>
</td>
</tr>
<tr><td colspan="2"><?php echo $maildebug; ?></td></tr>
</table>
<input type="hidden" name="pruefung_id" value="<?php echo $pruefung_id ?>"/>
<input type="hidden" name="termin_id" value="<?php echo $termin_id; ?>"/>
<input type="hidden" name="sendmail" value="1"/>
</form>
</center>
</body>
</html>
+42 -4
View File
@@ -181,11 +181,29 @@ $sql_query.=' ORDER BY titel LIMIT 100';
$erg_repl = $db->db_query($sql_query);
$num_rows_repl = $db->db_num_rows($erg_repl);
$courses=array();
?>
<?php include('../../../include/meta/jquery.php');?>
<?php
echo '<html>
<head>
<title>'.$p->t('lvplan/lehrveranstaltungsplanDetails').'</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../../skin/style.css.php" type="text/css">
<script type="text/javascript" src="../../../vendor/components/jqueryui/jquery-ui.min.js"></script>';
// ADDONS laden
$addon_obj = new addon();
$addon_obj->loadAddons();
foreach($addon_obj->result as $addon)
{
if(file_exists('../../../addons/'.$addon->kurzbz.'/cis/init.js.php'))
echo '<script type="application/x-javascript" src="../../../addons/'.$addon->kurzbz.'/cis/init.js.php" ></script>';
}
echo '
</head>
<body id="inhalt">
<H2>'.$p->t('lvplan/lehrveranstaltungsplan').' &rArr; '.$p->t('abgabetool/details').'</H2>
@@ -198,7 +216,7 @@ if ($num_rows_stpl>0)
{
echo '
<table class="stdplan">
<tr>
<tr id="stdplantablerow">
<th>'.$p->t('lvplan/unr').'</th>
<th>'.$p->t('lvaliste/lektor').'</th>
<th>'.$p->t('lvplan/ort').'</th>
@@ -211,9 +229,11 @@ if ($num_rows_stpl>0)
$ort = new ort();
$i=0;
$moodlerow = -1;
while($row = $db->db_fetch_object($erg_stpl))
{
$i++;
$moodlerow++;
$unr = $row->unr;
$ortkurzbz = $row->ort_kurzbz;
$lehrfachkurzbz = $row->lehrfach;
@@ -235,6 +255,9 @@ if ($num_rows_stpl>0)
$gesamtanzahl = ($anzahl_grp!=0?$anzahl_grp:$anzahl_lvb);
$ort->load($ortkurzbz);
$lvdata = ['lvId'=> $row->lehrveranstaltung_id, 'leId'=>$row->lehreinheit_id];
array_push($courses, $lvdata);
// no profile link for fake Mitarbeiter like Dummylektor, Personalnr must be > 0
$profileLink = true;
$mitarbeiter = new mitarbeiter();
@@ -262,8 +285,8 @@ if ($num_rows_stpl>0)
<td><A class="Item" title="'.$anzahl_grp.' Studierende" href="mailto:'.mb_strtolower($gruppe_kurzbz).'@'.DOMAIN.'">
'.$db->convert_html_chars($gruppe_kurzbz).'</A></td>
<td>'.$db->convert_html_chars($titel).'</td>
</tr>';
<td id="moodlelink'.$moodlerow.'"></td>
</tr>';
}
echo '</table><BR>';
}
@@ -305,5 +328,20 @@ if ($num_rows_repl>0)
echo '</table><br>';
}
echo '<P>'.$p->t('lvplan/fehlerUndFeedback').' <A class="Item" href="mailto:'.MAIL_LVPLAN.'">'.$p->t('lvplan/lvKoordinationsstelle').'</A>.</P>
</body></html>';
</body>';
echo '
<script>
$( document ).ready(function()
{
if(typeof addon !== \'undefined\')
{
for(i in addon)
{
addon[i].init("cis/private/lvplan/stpl_detail.php", {courses:'.json_encode($courses).', stsem:\''.$db->convert_html_chars($stsem).'\'});
}
}
});
</script>
</html>';
?>
+1
View File
@@ -78,6 +78,7 @@ $target=(isset($_GET['target'])?$_GET['target']:null);
$stsem=(isset($_GET['stsem'])?$_GET['stsem']:'');
$lva=(isset($_GET['lva'])?$_GET['lva']:'');
$moodle=(isset($_GET['moodle'])?$_GET['moodle']:'');
if(isset($_GET["cal"]))
{
+9 -2
View File
@@ -106,6 +106,7 @@ else if (isset($_GET['gruppe_kurzbz']))
else
$gruppe_kurzbz=null;
if (isset($_POST['user_uid']))
$user_uid=$_POST['user_uid'];
if (isset($_POST['reserve']))
@@ -265,14 +266,18 @@ if (isset($_POST['titel']))
</script>
<?php
// ADDONS laden
$moolde='';
$addon_obj = new addon();
$addon_obj->loadAddons();
foreach($addon_obj->result as $addon)
{
if(file_exists('../../../addons/'.$addon->kurzbz.'/cis/init.js.php'))
echo '<script type="application/x-javascript" src="../../../addons/'.$addon->kurzbz.'/cis/init.js.php" ></script>';
if($addon->kurzbz === "moodle")
{
$moolde = 'true';
}
}
// Wenn Seite fertig geladen ist Addons aufrufen
echo '
<script>
@@ -489,13 +494,15 @@ $stdplan=new wochenplan($type);
if (!isset($datum))
$datum=time();
$stdplan->moodle=$moolde;
// Benutzergruppe
$stdplan->user=$user;
// aktueller Benutzer
$stdplan->user_uid=$uid;
// Zusaetzliche Daten laden
if (! $stdplan->load_data($type,$pers_uid,$ort_kurzbz,$stg_kz,$sem,$ver,$grp,$gruppe_kurzbz,null,$lva) )
if (! $stdplan->load_data($type, $pers_uid,$ort_kurzbz,$stg_kz,$sem,$ver,$grp,$gruppe_kurzbz,null,$lva) )
{
die(htmlentities($stdplan->errormsg));
}
+451 -451
View File
@@ -1,456 +1,456 @@
<?php
/* Copyright (C) 2009 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
* Rudolf Hangl <rudolf.hangl@technikum-wien.at> and
* Gerald Simane-Sequens <gerald.simane@technikum-wien.at>.
*/
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/benutzer.class.php');
require_once('../../../include/student.class.php');
require_once('../../../include/studiengang.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/studiensemester.class.php');
if (!$db = new basis_db())
die('Fehler beim Oeffnen der Datenbankverbindung');
$uid=isset($_GET['uid'])?$_GET['uid']:(isset($_POST['uid'])?$_POST['uid']:get_uid());
$uid=trim($uid);
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
if(!$rechte->isBerechtigt('lehre/reservierung:begrenzt', null, 's') || !$rechte->isBerechtigt('admin'))
die($rechte->errormsg);
unset($rechte);
header('Content-Type: text/html;charset=UTF-8');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Anzahl Studenten Lehrveranstaltungsplan FH Technikum-Wien</title>
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
<?php
/* Copyright (C) 2009 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
* Rudolf Hangl <rudolf.hangl@technikum-wien.at> and
* Gerald Simane-Sequens <gerald.simane@technikum-wien.at>.
*/
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/benutzer.class.php');
require_once('../../../include/student.class.php');
require_once('../../../include/studiengang.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/studiensemester.class.php');
if (!$db = new basis_db())
die('Fehler beim Oeffnen der Datenbankverbindung');
$uid=isset($_GET['uid'])?$_GET['uid']:(isset($_POST['uid'])?$_POST['uid']:get_uid());
$uid=trim($uid);
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
if(!$rechte->isBerechtigt('lehre/reservierung:begrenzt', null, 's') && !$rechte->isBerechtigt('admin'))
die($rechte->errormsg);
unset($rechte);
header('Content-Type: text/html;charset=UTF-8');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Anzahl Studenten Lehrveranstaltungsplan FH Technikum-Wien</title>
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="../../../skin/jquery-ui-1.9.2.custom.min.css">
<script type="text/javascript" src="../../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../../include/js/jquery.ui.datepicker.translation.js"></script>
<script type="text/javascript" src="../../../vendor/jquery/sizzle/sizzle.js"></script>
<script src="../../../vendor/components/jqueryui/jquery-ui.min.js" type="text/javascript"></script>
<style type="text/css">
<!--
li { list-style : outside url("../../../skin/images/right.gif");}
/* ----------------------------------
Resizable
---------------------------------- */
.ui-resizable { position: relative;}
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}
div.info {top:5%;position: absolute;display:none;padding: 5px 5px 5px 5px;border: 1px solid Black;empty-cells : hide;text-align:center;vertical-align: top;z-index: 99;background-color: white; position:absolute;}
div.infoclose {border: 7px outset #008381;padding: 0px 10px 0px 10px;}
div.infodetail {font-size:medium;text-align:left;background-color: #F5F5F5;padding: 15px 15px 15px 15px;}
-->
</style>
<script type="text/javascript" language="JavaScript1.2">
<!--
$(function()
{
$("#info").resizable();
$("#ui-resizable").draggable();
});
-->
</script>
</head>
<body id="inhalt">
<div id="ui-resizable" class="ui-resizable">
<div style="-moz-user-select: none;" class="ui-resizable-handle ui-resizable-e"></div>
<div style="-moz-user-select: none;" class="ui-resizable-handle ui-resizable-s"></div>
<div style="z-index: 1001; -moz-user-select: none;" class="ui-resizable-handle ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se"></div>
<div id="info" class="info">
<div style="border: 7px outset #393939;padding: 10px 10px 10px 10px;">
<table width="100%" border="0" cellpadding="0" cellspacing="0"><tr style="color:#FFF;" class="ContentHeader">
<td id="info_print" align="left" style="color:#FFF;cursor: default;" class="ContentHeader">
<div>drucken <img border="0" src="../../../skin/images/printer.png" title="drucken" ><br /></div>
<script type="text/javascript">
$(document).ready(function()
{
$("td#info_print").click(function()
{
el='div#infodetail';
var doc=null;
var tab=false;;
var iframe=false;
if ($.browser.opera || $.browser.mozilla)
{
var tab = window.open("","jqPrint-preview");
tab.document.open();
var doc = tab.document;
}
else
{
var iframe=document.createElement('IFRAME');
document.body.appendChild(iframe);
doc=iframe.contentWindow.document;
}
var links=window.document.getElementsByTagName("link");
for(var i=0;i<links.length;i++)
{
if(links[i].rel.toLowerCase()=="stylesheet")
{
doc.write('<link type="text/css" rel="stylesheet" href="'+links[i].href+'"></link>');
}
}
doc.write('<div class="'+$(el).attr("class")+'">'+$(el).html()+'</div>');
doc.close();
(tab ? tab : iframe.contentWindow).focus();
setTimeout( function() { ( tab ? tab : iframe.contentWindow).print(); if (tab) { tab.close(); } }, 1000);
});
});
</script>
</td>
<td id="info_close" align="right" style="color:#FFF;cursor: default;" class="ContentHeader">
<div>schliessen <img border="0" src="../../../skin/images/cross.png" title="schliessen">&nbsp;</div>
<script type="text/javascript">
$(document).ready(function()
{
$("td#info_close").click(function(event)
{
$("div#info").hide("slow"); // div# langsam oeffnen
});
});
</script>
</td>
</tr></table>
<div id="infodetail" style="font-size:medium;text-align:left;background-color: #F5F5F5;padding: 15px 15px 15px 15px;"></div>
<br>
</div>
</div>
</div>
<?php
// Variablen uebernehmen
$datum=(isset($_GET['datum'])?$_GET['datum']:(isset($_POST['datum'])?$_POST['datum']:time()));
$stpl_table=(isset($_GET['stpl_table'])?$_GET['stpl_table']:'stundenplan');
$montag=montag($datum);
$letzterTag=mktime(0,0,0,date('m',$montag),date('d',$montag) + TAGE_PRO_WOCHE,date('Y',$montag));
$letzterTagAnzeige=mktime(0,0,0,date('m',$montag),date('d',$montag) + ( TAGE_PRO_WOCHE - 1),date('Y',$montag));
// Vorbelegen der Wochennavigation
$kwRet=mktime(0,0,0,date('m',$montag),date('d',$montag) -7 ,date('Y',$montag));
$kwVor=mktime(0,0,0,date('m',$montag),date('d',$montag) +7 ,date('Y',$montag));
$kw=strftime('%W',mktime(0,0,0,date('m',$montag),date('d',$montag),date('Y',$montag)));
$adresse_id=(isset($_GET['adresse_id'])?$_GET['adresse_id']:(isset($_POST['adresse_id'])?$_POST['adresse_id']:1));
// Datum Anzeige Header
$tag=strftime('%a %d',mktime(0,0,0,date('m',$montag),date('d',$montag) ,date('Y',$montag)));
$tag_monat=strftime('%a %d %b',mktime(0,0,0,date('m',$montag),date('d',$montag) ,date('Y',$montag)));
$tag_monat_jahr=strftime('%a %d %b %Y',mktime(0,0,0,date('m',$montag),date('d',$montag),date('Y',$montag)));
$letzter_tag_monat_jahr=strftime('%a %d %b %Y',mktime(0,0,0,date('m',$letzterTagAnzeige),date('d',$letzterTagAnzeige),date('Y',$letzterTagAnzeige)));
// Beginn Ende setzen
$objSS=new studiensemester();
$ss=$objSS->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 '<H2><table class="tabcontent"><tr><td>
&nbsp;Lehrveranstaltungsplan &gt;&gt; <a class="Item" href="index.php">Wochenplan</a> - Anzahl Studenten
&nbsp;&nbsp;&nbsp;<a class="Item" href="'.$_SERVER['PHP_SELF'].'?uid='.$uid.'&amp;datum='.$kwRet.'&amp;stpl_table='.$stpl_table.'">&lt;&lt;</a>
Wochenplan &nbsp;<a class="Item" href="'.$_SERVER['PHP_SELF'].'?uid='.$uid.'&amp;datum='.$datum.'&amp;stpl_table='.$stpl_table.'">Kw '.$kw.'</a>
&nbsp;<a class="Item" href="'.$_SERVER['PHP_SELF'].'?uid='.$uid.'&amp;datum='.$kwVor.'&amp;stpl_table='.$stpl_table.'">&gt;&gt;</a>
&nbsp;&nbsp;&nbsp;<a class="Item" href="'.$_SERVER['PHP_SELF'].'?uid='.$uid.'&amp;datum='.time().'&amp;stpl_table='.$stpl_table.'">Heute</a>
</td></tr></table></H2>';
// 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 '<table class="tabcontent" style=" z-index: 1;">';
echo '<tr><td style="text-align:center;color:#FFF;" class="ContentHeader" colspan="'. ( TAGE_PRO_WOCHE + 1 ) .'">'. $fh_name .'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'. (date('Ym',$montag)==date('Ym',$letzterTagAnzeige)?$tag:(date('Y',$montag)==date('Y',$letzterTagAnzeige)?$tag_monat:$tag_monat_jahr)) .' - '. $letzter_tag_monat_jahr.'</td></tr>';
echo '<tr>';
echo '<td style="text-align:center;color:#FFF;" class="ContentHeader">Stunde</td>';
for ($i=0; $i<TAGE_PRO_WOCHE; $i++)
{
echo '<td style="text-align:center;color:#FFF;" class="ContentHeader">'.strftime('%a',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).'&nbsp;'.date('d M',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).'</td>';
}
echo '</tr>';
$max_person_array=array();
$num_rows_stunde=$db->db_num_rows($results);
echo '<tr>';
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 '<td style="text-align:center;color:#FFF;" class="ContentHeader">'.$row->show_beginn.'<br>'.$row->show_ende.'</td>';
$lehreinheiten=array();
for ($i=0; $i<TAGE_PRO_WOCHE; $i++)
{
// Init je Tag und Std.
$fehler=false;
$aktiv=false;
$max_person=0;
$day= date('Ymd',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag)));
if ($day== date('Ymd') && date('Hi') >= $row->check_beginn && date('Hi')<=$row->check_ende )
$aktiv=true;
echo '<td style="border-bottom: 1px solid Black;'.($aktiv?'background-color:#009e84;color:#FFF;':'').'" valign="top" '.($k % 2==0?'':' class="MarkLine" ').' >';
$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.='</tr><tr>';
else
$tooltip.='<tr><th colspan=\'4\'>'. date('d M Y',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).' '.$row->show_beginn.' - '.$row->show_ende.'</th><th>Anzahl</th></tr>';
$tooltip.='<td title=\'Stundenplan ID '.($stpl_table=='stundenplan'?$row_anz->stundenplan_id:$row_anz->stundenplandev_id).'\'><b>'.trim($row_anz->ort_kurzbz).'</b>&nbsp;</td><td><a href=\'stpl_detail.php?type=ort&datum='.date('Y-m-d',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).'&stunde='.$row->stunde.'&pers_uid='.$uid.'&stg_kz=&sem=&ver=&grp=&ort_kurzbz='.trim($row_anz->ort_kurzbz).'\' target=\'_blank\' titel=\'Studiengang Kz '.$row_anz->studiengang_kz.'\'>'.$lvb.'</a>&nbsp;</td><td>'.$row_anz->gruppe_kurzbz.'&nbsp;</td><td>'.(!$row_anz->anz?'<font color=\'Maroon\'>':'').$row_anz->bezeichnung.(!$row_anz->anz?'</font>':'').'&nbsp;</td><td>'.$row_anz->anz.'</td>';
$gefunden_anz+=$row_anz->anz;
}
if (!empty($gefunden_anz))
{
$tooltip.='<tr><td colspan=\'4\' align=\'right\'>max.Personen:'.$max_person.' Belegung:'. number_format($gefunden_anz / $max_person,2)*100 .'% <b>Ges.:</b></td><td><b>'.$gefunden_anz.'</b></td></tr>';
echo '<br><img id="img_'.$i.'_'.$k.'" src="../../../skin/images/sticky.png" title="Detailanzeige"> <b'.($fehler?' style="color:red;" ':'').'> Gesamt: </b>'.$gefunden_anz;
echo '<script type="text/javascript">
$(document).ready(function()
{
$("img#img_'.$i.'_'.$k.'").click(function(event)
{
$("div#infodetail").html("<table border=\"0\"><tr>'.$tooltip.'</tr></table>");
$("div#info").show("slow"); // div# langsam oeffnen
});
});
</script>';
}
echo '</td>';
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 '</tr>';
}
echo '</table>';
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
if($rechte->isBerechtigt('admin'))
{
echo '<table class="tabcontent" style=" z-index: 1;">';
echo '<tr><td style="text-align:center;color:#FFF;" class="ContentHeader" colspan="'. ( TAGE_PRO_WOCHE + 2 ) .'">'. $fh_name .'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'. (date('Ym',$montag)==date('Ym',$letzterTagAnzeige)?$tag:(date('Y',$montag)==date('Y',$letzterTagAnzeige)?$tag_monat:$tag_monat_jahr)) .' - '. $letzter_tag_monat_jahr.'</td></tr>';
echo '<tr>';
echo '<td colspan="2" style="text-align:center;color:#FFF;" class="ContentHeader">Zeit / Datum &ndash;&nbsp;</td>';
for ($i=0; $i<TAGE_PRO_WOCHE; $i++)
{
echo '<td style="text-align:center;color:#FFF;" class="ContentHeader">'.strftime('%a',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).'&nbsp;'. date('d M Y',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).'</td>';
}
echo '</tr>';
$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 '<tr>';
echo '<td style="text-align:center;color:#FFF;" class="ContentHeader">'.$row->show_beginn.'<br>'.$row->show_ende.'</td>';
echo '<td style="border-bottom: 1px solid Black;'.($aktiv?'background-color:#009e84;color:#FFF;':'').'" valign="top" '.($k % 2==0?'':' class="MarkLine" ').' >';
echo 'anz.:'.$max_person_array[$k]['stunde'];
echo '<br>';
echo 'FH&nbsp;&nbsp;&nbsp;'.($raum_max_anz*TAGE_PRO_WOCHE);
echo '<br>';
echo ' &Oslash;&nbsp;'.($max_person_array[$k]['stunde']?number_format(($max_person_array[$k]['stunde'])/TAGE_PRO_WOCHE / ($raum_max_anz),2)*100:0).'%';
echo '<br>';
echo 'Raum&nbsp;'.$max_person_array[$k]['stunde_max'];
echo '<br>';
echo ' &Oslash;&nbsp;'.($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 '</td>';
$stunde=$stunde+$max_person_array[$k]['stunde'];
$stunde_max=$stunde_max+$max_person_array[$k]['stunde_max'];
for ($i=0; $i<TAGE_PRO_WOCHE; $i++)
{
echo '<td style="border-bottom: 1px solid Black;'.($aktiv?'background-color:#009e84;color:#FFF;':'').'" valign="top" '.($k % 2==0?'':' class="MarkLine" ').' >';
echo 'anz.:'.$max_person_array[$i][$k]['tag_stunde'];
echo '<br>';
echo 'FH&nbsp;&nbsp;&nbsp;max.:'. $raum_max_anz;
echo '<br>';
echo ' '.($max_person_array[$i][$k]['tag_stunde']?number_format($max_person_array[$i][$k]['tag_stunde'] / $raum_max_anz,2)*100:0).'%';
echo '<br>';
echo 'Raum max.:'. $max_person_array[$i][$k]['tag_stunde_max'];
echo '<br>';
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 '</td>';
}
echo '</tr>';
}
echo '<tr>';
echo '<td style="text-align:center;color:#FFF;" class="ContentHeader">&Oslash;</td>';
echo '<td style="text-align:center;color:#FFF;" class="ContentHeader">';
echo 'FH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&Oslash;&nbsp;'.($stunde?number_format(($stunde)/$num_rows_stunde/TAGE_PRO_WOCHE / ($raum_max_anz),2)*100:0).'%';
echo '<br>';
echo 'Raum&nbsp;&Oslash;&nbsp;'.($stunde_max?number_format(($stunde/$num_rows_stunde/TAGE_PRO_WOCHE) / ($stunde_max/$num_rows_stunde/TAGE_PRO_WOCHE),2)*100:0).'%';
echo '</td>';
for ($i=0; $i<TAGE_PRO_WOCHE; $i++)
{
echo '<td style="text-align:center;color:#FFF;" class="ContentHeader">';
echo 'FH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&Oslash;&nbsp;'.($max_person_array[$i]['tag']?number_format($max_person_array[$i]['tag'] / ($raum_max_anz *$num_rows_stunde),2)*100:0).'%';
echo '<br>';
echo 'Raum&nbsp;&Oslash;&nbsp;'.($max_person_array[$i]['tag']?number_format($max_person_array[$i]['tag'] / $max_person_array[$i]['tag_max'],2)*100:0).'%';
echo '</td>';
}
echo '</tr>';
echo '</table>';
}
?>
</BODY>
</HTML>
<script type="text/javascript" src="../../../vendor/jquery/sizzle/sizzle.js"></script>
<script src="../../../vendor/components/jqueryui/jquery-ui.min.js" type="text/javascript"></script>
<style type="text/css">
<!--
li { list-style : outside url("../../../skin/images/right.gif");}
/* ----------------------------------
Resizable
---------------------------------- */
.ui-resizable { position: relative;}
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}
div.info {top:5%;position: absolute;display:none;padding: 5px 5px 5px 5px;border: 1px solid Black;empty-cells : hide;text-align:center;vertical-align: top;z-index: 99;background-color: white; position:absolute;}
div.infoclose {border: 7px outset #008381;padding: 0px 10px 0px 10px;}
div.infodetail {font-size:medium;text-align:left;background-color: #F5F5F5;padding: 15px 15px 15px 15px;}
-->
</style>
<script type="text/javascript" language="JavaScript1.2">
<!--
$(function()
{
$("#info").resizable();
$("#ui-resizable").draggable();
});
-->
</script>
</head>
<body id="inhalt">
<div id="ui-resizable" class="ui-resizable">
<div style="-moz-user-select: none;" class="ui-resizable-handle ui-resizable-e"></div>
<div style="-moz-user-select: none;" class="ui-resizable-handle ui-resizable-s"></div>
<div style="z-index: 1001; -moz-user-select: none;" class="ui-resizable-handle ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se"></div>
<div id="info" class="info">
<div style="border: 7px outset #393939;padding: 10px 10px 10px 10px;">
<table width="100%" border="0" cellpadding="0" cellspacing="0"><tr style="color:#FFF;" class="ContentHeader">
<td id="info_print" align="left" style="color:#FFF;cursor: default;" class="ContentHeader">
<div>drucken <img border="0" src="../../../skin/images/printer.png" title="drucken" ><br /></div>
<script type="text/javascript">
$(document).ready(function()
{
$("td#info_print").click(function()
{
el='div#infodetail';
var doc=null;
var tab=false;;
var iframe=false;
if ($.browser.opera || $.browser.mozilla)
{
var tab = window.open("","jqPrint-preview");
tab.document.open();
var doc = tab.document;
}
else
{
var iframe=document.createElement('IFRAME');
document.body.appendChild(iframe);
doc=iframe.contentWindow.document;
}
var links=window.document.getElementsByTagName("link");
for(var i=0;i<links.length;i++)
{
if(links[i].rel.toLowerCase()=="stylesheet")
{
doc.write('<link type="text/css" rel="stylesheet" href="'+links[i].href+'"></link>');
}
}
doc.write('<div class="'+$(el).attr("class")+'">'+$(el).html()+'</div>');
doc.close();
(tab ? tab : iframe.contentWindow).focus();
setTimeout( function() { ( tab ? tab : iframe.contentWindow).print(); if (tab) { tab.close(); } }, 1000);
});
});
</script>
</td>
<td id="info_close" align="right" style="color:#FFF;cursor: default;" class="ContentHeader">
<div>schliessen <img border="0" src="../../../skin/images/cross.png" title="schliessen">&nbsp;</div>
<script type="text/javascript">
$(document).ready(function()
{
$("td#info_close").click(function(event)
{
$("div#info").hide("slow"); // div# langsam oeffnen
});
});
</script>
</td>
</tr></table>
<div id="infodetail" style="font-size:medium;text-align:left;background-color: #F5F5F5;padding: 15px 15px 15px 15px;"></div>
<br>
</div>
</div>
</div>
<?php
// Variablen uebernehmen
$datum=(isset($_GET['datum'])?$_GET['datum']:(isset($_POST['datum'])?$_POST['datum']:time()));
$stpl_table=(isset($_GET['stpl_table'])?$_GET['stpl_table']:'stundenplan');
$montag=montag($datum);
$letzterTag=mktime(0,0,0,date('m',$montag),date('d',$montag) + TAGE_PRO_WOCHE,date('Y',$montag));
$letzterTagAnzeige=mktime(0,0,0,date('m',$montag),date('d',$montag) + ( TAGE_PRO_WOCHE - 1),date('Y',$montag));
// Vorbelegen der Wochennavigation
$kwRet=mktime(0,0,0,date('m',$montag),date('d',$montag) -7 ,date('Y',$montag));
$kwVor=mktime(0,0,0,date('m',$montag),date('d',$montag) +7 ,date('Y',$montag));
$kw=strftime('%W',mktime(0,0,0,date('m',$montag),date('d',$montag),date('Y',$montag)));
$adresse_id=(isset($_GET['adresse_id'])?$_GET['adresse_id']:(isset($_POST['adresse_id'])?$_POST['adresse_id']:1));
// Datum Anzeige Header
$tag=strftime('%a %d',mktime(0,0,0,date('m',$montag),date('d',$montag) ,date('Y',$montag)));
$tag_monat=strftime('%a %d %b',mktime(0,0,0,date('m',$montag),date('d',$montag) ,date('Y',$montag)));
$tag_monat_jahr=strftime('%a %d %b %Y',mktime(0,0,0,date('m',$montag),date('d',$montag),date('Y',$montag)));
$letzter_tag_monat_jahr=strftime('%a %d %b %Y',mktime(0,0,0,date('m',$letzterTagAnzeige),date('d',$letzterTagAnzeige),date('Y',$letzterTagAnzeige)));
// Beginn Ende setzen
$objSS=new studiensemester();
$ss=$objSS->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 '<H2><table class="tabcontent"><tr><td>
&nbsp;Lehrveranstaltungsplan &gt;&gt; <a class="Item" href="index.php">Wochenplan</a> - Anzahl Studenten
&nbsp;&nbsp;&nbsp;<a class="Item" href="'.$_SERVER['PHP_SELF'].'?uid='.$uid.'&amp;datum='.$kwRet.'&amp;stpl_table='.$stpl_table.'">&lt;&lt;</a>
Wochenplan &nbsp;<a class="Item" href="'.$_SERVER['PHP_SELF'].'?uid='.$uid.'&amp;datum='.$datum.'&amp;stpl_table='.$stpl_table.'">Kw '.$kw.'</a>
&nbsp;<a class="Item" href="'.$_SERVER['PHP_SELF'].'?uid='.$uid.'&amp;datum='.$kwVor.'&amp;stpl_table='.$stpl_table.'">&gt;&gt;</a>
&nbsp;&nbsp;&nbsp;<a class="Item" href="'.$_SERVER['PHP_SELF'].'?uid='.$uid.'&amp;datum='.time().'&amp;stpl_table='.$stpl_table.'">Heute</a>
</td></tr></table></H2>';
// 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 '<table class="tabcontent" style=" z-index: 1;">';
echo '<tr><td style="text-align:center;color:#FFF;" class="ContentHeader" colspan="'. ( TAGE_PRO_WOCHE + 1 ) .'">'. $fh_name .'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'. (date('Ym',$montag)==date('Ym',$letzterTagAnzeige)?$tag:(date('Y',$montag)==date('Y',$letzterTagAnzeige)?$tag_monat:$tag_monat_jahr)) .' - '. $letzter_tag_monat_jahr.'</td></tr>';
echo '<tr>';
echo '<td style="text-align:center;color:#FFF;" class="ContentHeader">Stunde</td>';
for ($i=0; $i<TAGE_PRO_WOCHE; $i++)
{
echo '<td style="text-align:center;color:#FFF;" class="ContentHeader">'.strftime('%a',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).'&nbsp;'.date('d M',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).'</td>';
}
echo '</tr>';
$max_person_array=array();
$num_rows_stunde=$db->db_num_rows($results);
echo '<tr>';
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 '<td style="text-align:center;color:#FFF;" class="ContentHeader">'.$row->show_beginn.'<br>'.$row->show_ende.'</td>';
$lehreinheiten=array();
for ($i=0; $i<TAGE_PRO_WOCHE; $i++)
{
// Init je Tag und Std.
$fehler=false;
$aktiv=false;
$max_person=0;
$day= date('Ymd',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag)));
if ($day== date('Ymd') && date('Hi') >= $row->check_beginn && date('Hi')<=$row->check_ende )
$aktiv=true;
echo '<td style="border-bottom: 1px solid Black;'.($aktiv?'background-color:#009e84;color:#FFF;':'').'" valign="top" '.($k % 2==0?'':' class="MarkLine" ').' >';
$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.='</tr><tr>';
else
$tooltip.='<tr><th colspan=\'4\'>'. date('d M Y',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).' '.$row->show_beginn.' - '.$row->show_ende.'</th><th>Anzahl</th></tr>';
$tooltip.='<td title=\'Stundenplan ID '.($stpl_table=='stundenplan'?$row_anz->stundenplan_id:$row_anz->stundenplandev_id).'\'><b>'.trim($row_anz->ort_kurzbz).'</b>&nbsp;</td><td><a href=\'stpl_detail.php?type=ort&datum='.date('Y-m-d',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).'&stunde='.$row->stunde.'&pers_uid='.$uid.'&stg_kz=&sem=&ver=&grp=&ort_kurzbz='.trim($row_anz->ort_kurzbz).'\' target=\'_blank\' titel=\'Studiengang Kz '.$row_anz->studiengang_kz.'\'>'.$lvb.'</a>&nbsp;</td><td>'.$row_anz->gruppe_kurzbz.'&nbsp;</td><td>'.(!$row_anz->anz?'<font color=\'Maroon\'>':'').$row_anz->bezeichnung.(!$row_anz->anz?'</font>':'').'&nbsp;</td><td>'.$row_anz->anz.'</td>';
$gefunden_anz+=$row_anz->anz;
}
if (!empty($gefunden_anz))
{
$tooltip.='<tr><td colspan=\'4\' align=\'right\'>max.Personen:'.$max_person.' Belegung:'. number_format($gefunden_anz / $max_person,2)*100 .'% <b>Ges.:</b></td><td><b>'.$gefunden_anz.'</b></td></tr>';
echo '<br><img id="img_'.$i.'_'.$k.'" src="../../../skin/images/sticky.png" title="Detailanzeige"> <b'.($fehler?' style="color:red;" ':'').'> Gesamt: </b>'.$gefunden_anz;
echo '<script type="text/javascript">
$(document).ready(function()
{
$("img#img_'.$i.'_'.$k.'").click(function(event)
{
$("div#infodetail").html("<table border=\"0\"><tr>'.$tooltip.'</tr></table>");
$("div#info").show("slow"); // div# langsam oeffnen
});
});
</script>';
}
echo '</td>';
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 '</tr>';
}
echo '</table>';
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
if($rechte->isBerechtigt('admin'))
{
echo '<table class="tabcontent" style=" z-index: 1;">';
echo '<tr><td style="text-align:center;color:#FFF;" class="ContentHeader" colspan="'. ( TAGE_PRO_WOCHE + 2 ) .'">'. $fh_name .'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'. (date('Ym',$montag)==date('Ym',$letzterTagAnzeige)?$tag:(date('Y',$montag)==date('Y',$letzterTagAnzeige)?$tag_monat:$tag_monat_jahr)) .' - '. $letzter_tag_monat_jahr.'</td></tr>';
echo '<tr>';
echo '<td colspan="2" style="text-align:center;color:#FFF;" class="ContentHeader">Zeit / Datum &ndash;&nbsp;</td>';
for ($i=0; $i<TAGE_PRO_WOCHE; $i++)
{
echo '<td style="text-align:center;color:#FFF;" class="ContentHeader">'.strftime('%a',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).'&nbsp;'. date('d M Y',mktime(0,0,0,date('m',$montag),date('d',$montag) + $i,date('Y',$montag))).'</td>';
}
echo '</tr>';
$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 '<tr>';
echo '<td style="text-align:center;color:#FFF;" class="ContentHeader">'.$row->show_beginn.'<br>'.$row->show_ende.'</td>';
echo '<td style="border-bottom: 1px solid Black;'.($aktiv?'background-color:#009e84;color:#FFF;':'').'" valign="top" '.($k % 2==0?'':' class="MarkLine" ').' >';
echo 'anz.:'.$max_person_array[$k]['stunde'];
echo '<br>';
echo 'FH&nbsp;&nbsp;&nbsp;'.($raum_max_anz*TAGE_PRO_WOCHE);
echo '<br>';
echo ' &Oslash;&nbsp;'.($max_person_array[$k]['stunde']?number_format(($max_person_array[$k]['stunde'])/TAGE_PRO_WOCHE / ($raum_max_anz),2)*100:0).'%';
echo '<br>';
echo 'Raum&nbsp;'.$max_person_array[$k]['stunde_max'];
echo '<br>';
echo ' &Oslash;&nbsp;'.($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 '</td>';
$stunde=$stunde+$max_person_array[$k]['stunde'];
$stunde_max=$stunde_max+$max_person_array[$k]['stunde_max'];
for ($i=0; $i<TAGE_PRO_WOCHE; $i++)
{
echo '<td style="border-bottom: 1px solid Black;'.($aktiv?'background-color:#009e84;color:#FFF;':'').'" valign="top" '.($k % 2==0?'':' class="MarkLine" ').' >';
echo 'anz.:'.$max_person_array[$i][$k]['tag_stunde'];
echo '<br>';
echo 'FH&nbsp;&nbsp;&nbsp;max.:'. $raum_max_anz;
echo '<br>';
echo ' '.($max_person_array[$i][$k]['tag_stunde']?number_format($max_person_array[$i][$k]['tag_stunde'] / $raum_max_anz,2)*100:0).'%';
echo '<br>';
echo 'Raum max.:'. $max_person_array[$i][$k]['tag_stunde_max'];
echo '<br>';
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 '</td>';
}
echo '</tr>';
}
echo '<tr>';
echo '<td style="text-align:center;color:#FFF;" class="ContentHeader">&Oslash;</td>';
echo '<td style="text-align:center;color:#FFF;" class="ContentHeader">';
echo 'FH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&Oslash;&nbsp;'.($stunde?number_format(($stunde)/$num_rows_stunde/TAGE_PRO_WOCHE / ($raum_max_anz),2)*100:0).'%';
echo '<br>';
echo 'Raum&nbsp;&Oslash;&nbsp;'.($stunde_max?number_format(($stunde/$num_rows_stunde/TAGE_PRO_WOCHE) / ($stunde_max/$num_rows_stunde/TAGE_PRO_WOCHE),2)*100:0).'%';
echo '</td>';
for ($i=0; $i<TAGE_PRO_WOCHE; $i++)
{
echo '<td style="text-align:center;color:#FFF;" class="ContentHeader">';
echo 'FH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&Oslash;&nbsp;'.($max_person_array[$i]['tag']?number_format($max_person_array[$i]['tag'] / ($raum_max_anz *$num_rows_stunde),2)*100:0).'%';
echo '<br>';
echo 'Raum&nbsp;&Oslash;&nbsp;'.($max_person_array[$i]['tag']?number_format($max_person_array[$i]['tag'] / $max_person_array[$i]['tag_max'],2)*100:0).'%';
echo '</td>';
}
echo '</tr>';
echo '</table>';
}
?>
</BODY>
</HTML>
+84 -5
View File
@@ -163,6 +163,68 @@ if (isset($_GET['rechts_x']) || isset($_POST['rechts_x']))
$wjahr=$wjahr;
}
}
//Bereits freigegebenen Eintrag löschen
//Eintragung löschen
if((isset($_GET['delete']) && isset($_GET['informSupervisor'])) || (isset($_POST['delete']) && isset($_POST['informSupervisor'])))
{
$zeitsperre = new zeitsperre();
$zeitsperre->load($_GET['delete']);
$vondatum = $zeitsperre->getVonDatum();
$bisdatum = $zeitsperre->getBisDatum();
if(!$zeitsperre->delete($_GET['delete']))
echo $zeitsperre->errormsg;
//Mail an Vorgesetzten
$prsn = new person();
$vorgesetzter = $ma->getVorgesetzte($uid);
if($vorgesetzter)
{
$to='';
$fullName ='';
foreach($ma->vorgesetzte as $vg)
{
if($to!='')
{
$to.=', '.$vg.'@'.DOMAIN;
$name = $prsn->getFullNameFromBenutzer($vg);
$fullName.=', '.$name;
}
else
{
$to.=$vg.'@'.DOMAIN;
$name = $prsn->getFullNameFromBenutzer($vg);
$fullName.=$name;
}
}
$benutzer = new benutzer();
$benutzer->load($uid);
$message = $p->t('urlaubstool/diesIstEineAutomatischeMail')."\n".
$p->t('urlaubstool/xHatUrlaubGeloescht',array($benutzer->nachname,$benutzer->vorname)).":\n";
$message.= $p->t('urlaubstool/von')." ".date("d.m.Y", strtotime($vondatum))." ".$p->t('urlaubstool/bis')." ".date("d.m.Y", strtotime($bisdatum))."\n";
$mail = new mail($to, 'vilesci@'.DOMAIN,$p->t('urlaubstool/freigegebenerUrlaubGeloescht'), $message);
if($mail->send())
{
$vgmail="<span style='color:green;'>".$p->t('urlaubstool/VorgesetzteInformiert',array($fullName))."</span>";
}
else
{
$vgmail="<br><span class='error'>".$p->t('urlaubstool/fehlerBeimSendenAufgetreten',array($fullName))."!</span>";
}
}
else
{
$vgmail="<br><span class='error'>".$p->t('urlaubstool/konnteKeinFreigabemailVersendetWerden')."</span>";
}
}
//Eintragung löschen
if((isset($_GET['delete']) || isset($_POST['delete'])))
{
@@ -257,19 +319,26 @@ if(isset($_GET['speichern']) && isset($_GET['wtag']))
if(!$error)
{
//Mail an Vorgesetzten
$prsn = new person();
$vorgesetzter = $ma->getVorgesetzte($uid);
if($vorgesetzter)
{
$to='';
$fullName ='';
foreach($ma->vorgesetzte as $vg)
{
if($to!='')
{
$to.=', '.$vg.'@'.DOMAIN;
$name = $prsn->getFullNameFromBenutzer($vg);
$fullName.=', '.$name;
}
else
{
$to.=$vg.'@'.DOMAIN;
$name = $prsn->getFullNameFromBenutzer($vg);
$fullName.=$name;
}
}
@@ -295,7 +364,7 @@ if(isset($_GET['speichern']) && isset($_GET['wtag']))
$mail = new mail($to, 'vilesci@'.DOMAIN,$p->t('urlaubstool/freigabeansuchenUrlaub'), $message);
if($mail->send())
{
$vgmail="<span style='color:green;'>".$p->t('urlaubstool/freigabemailWurdeVersandt',array($to))."</span>";
$vgmail="<span style='color:green;'>".$p->t('urlaubstool/freigabemailWurdeVersandt',array($fullName))."</span>";
}
else
{
@@ -373,10 +442,14 @@ if ((isset($wmonat) || isset($wmonat))&&(isset($wjahr) || isset($wjahr)))
if(date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $i-$wotag+1, $jahre[$wjahr]))>=$row->vondatum
&& date("Y-m-d",mktime(0, 0, 0, ($wmonat+1) , $i-$wotag+1, $jahre[$wjahr]))<=$row->bisdatum)
{
if($row->freigabevon!='' || $row->bisdatum<date("Y-m-d",time()))
if($row->freigabevon!='' && $row->vondatum<=date("Y-m-d",time()))
{
$hgfarbe[$i]='#bbb';
}
elseif ($row->freigabevon!='' && $row->vondatum>date("Y-m-d",time()))
{
$hgfarbe[$i]='#CDDDEE';
}
else
{
$hgfarbe[$i]='#FFFC7F';
@@ -389,7 +462,7 @@ if ((isset($wmonat) || isset($wmonat))&&(isset($wjahr) || isset($wjahr)))
}
else
{
if($hgfarbe[$i]!='#FFFC7F' && $hgfarbe[$i]!='#bbb')
if($hgfarbe[$i]!='#FFFC7F' && $hgfarbe[$i]!='#bbb' && $hgfarbe[$i]!='#CDDDEE')
{
$hgfarbe[$i]='#E9ECEE';
@@ -696,7 +769,7 @@ for ($i=0;$i<6;$i++)
}
if($tage[$j+7*$i]!='')
{
if($hgfarbe[$j+7*$i]=='#FFFC7F')
if($hgfarbe[$j+7*$i]=='#FFFC7F' )//|| $hgfarbe[$j+7*$i]=='#CDDDEE')
{
echo '<b title='.$p->t('urlaubstool/vertretung').': '.$vertretung_uid[$j+7*$i].' - '.$p->t('urlaubstool/erreichbar').': '.$erreichbarkeit_kurzbz[$j+7*$i].'">'.$tage[$j+7*$i].'</b><br>';;
$k=$j+7*$i;
@@ -724,7 +797,13 @@ for ($i=0;$i<6;$i++)
}
elseif(isset($freigabeamum[$j+7*$i]))
{
echo '<img src="../../../skin/images/flag-green.png" alt="freigegeben" title="'.$p->t('urlaubstool/freigegebenDurchAm', array($freigabevon[$j+7*$i])).' '.date("d-m-Y",strtotime($freigabeamum[$j+7*$i])).'"></td>';
echo '<img src="../../../skin/images/flag-green.png" alt="freigegeben" title="'.$p->t('urlaubstool/freigegebenDurch', array($freigabevon[$j+7*$i])).': '.$freigabevon[$j+7*$i].'"><span> </span>';
if($hgfarbe[$j+7*$i]=='#CDDDEE')
{
$k=$j+7*$i;
echo "<a href='$PHP_SELF?wmonat=$wmonat&wjahr=$wjahr&delete=$datensatz[$k]&informSupervisor=True' onclick='return conf_del()'>";
echo '<img src="../../../skin/images/delete_x.png" alt="loeschen" title="'.$p->t('urlaubstool/eintragungLoeschen').'"></a></td>';
}
}
else
{
+69 -63
View File
@@ -15,7 +15,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
@@ -31,16 +31,16 @@
require_once('../../../include/studiengang.class.php');
require_once('../../../include/phrasen.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
$sprache = getSprache();
$p = new phrasen($sprache);
$uid=get_uid();
if(isset($_GET['uid']))
{
// Administratoren duerfen die UID als Parameter uebergeben um die Zahlungen
// von anderen Personen anzuzeigen
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
if($rechte->isBerechtigt('admin'))
@@ -58,7 +58,7 @@
{
die('Um diese Seite anzuzeigen, ist ein entsprechender Eintrag in der Konfigurationsdatei nötig.');
}
$datum_obj = new datum();
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
@@ -127,20 +127,20 @@ echo ' <script type="text/javascript" src="../../../vendor/components/jqueryui
type: "numeric"
});
// Parser für Studiensemester
$.tablesorter.addParser({
// set a unique id
id: "studiensemester",
is: function(s) {
// return false so this parser is not auto detected
return false;
},
format: function(s) {
// format data for normalization
$.tablesorter.addParser({
// set a unique id
id: "studiensemester",
is: function(s) {
// return false so this parser is not auto detected
return false;
},
format: function(s) {
// format data for normalization
var result = s.substr(2) + s.substr(0, 2);
return result;
},
// set type, either numeric or text
type: "text"
},
// set type, either numeric or text
type: "text"
});
// For correct sorting of Umlauts
$.tablesorter.characterEquivalents = {
@@ -159,8 +159,8 @@ echo ' <script type="text/javascript" src="../../../vendor/components/jqueryui
"u" : "\u00fa\u00f9\u00fb\u00fc\u016f", // úùûüů
"U" : "\u00da\u00d9\u00db\u00dc\u016e" // ÚÙÛÜŮ
};
$(document).ready(function()
{
$(document).ready(function()
{
$("#t1").tablesorter(
{
// Adding Function for sorting images by title
@@ -173,31 +173,31 @@ echo ' <script type="text/javascript" src="../../../vendor/components/jqueryui
widgets: ["zebra"],
sortLocaleCompare : true,
headers: { 0: { sorter: "customDate"}, 3: { sorter: "studiensemester"}, 5: { sorter: "customCurrancy"}, 6: { sorter: false}}
});
});
});
</script>
<body>';
$studiengang = new studiengang();
$studiengang->getAll(null,null);
$stg_arr = array();
foreach ($studiengang->result as $row)
$stg_arr[$row->studiengang_kz]=$row->kuerzel;
$benutzer = new benutzer();
if(!$benutzer->load($uid))
die('Benutzer wurde nicht gefunden');
echo '<h1>'.$p->t('tools/zahlungen').' - '.$benutzer->vorname.' '.$benutzer->nachname.'</h1>';
$konto = new konto();
$konto->getBuchungstyp();
$buchungstyp = array();
foreach ($konto->result as $row)
$buchungstyp[$row->buchungstyp_kurzbz]=$row->beschreibung;
$konto = new konto();
$konto->getBuchungen($benutzer->person_id);
if(count($konto->result)>0)
@@ -211,9 +211,9 @@ echo ' <script type="text/javascript" src="../../../vendor/components/jqueryui
<th>'.$p->t('global/studiensemester').'</th>
<th>'.$p->t('tools/buchungstext').'</th>
<th>'.$p->t('tools/betrag').'</th>
<th>'.$p->t('tools/zahlungsbestaetigung').'</th>';
<th>'.$p->t('tools/zahlungsbestaetigung').'</th>';
echo '</tr></thead><tbody>';
foreach ($konto->result as $row)
{
$i=0; //Zaehler fuer Anzahl Gegenbuchungen
@@ -226,12 +226,12 @@ echo ' <script type="text/javascript" src="../../../vendor/components/jqueryui
$is_lehrgang = $row['parent']->studiengang_kz < 0 ? true : false;
if ($is_lehrgang) continue;
}
if(!isset($row['parent']))
continue;
$betrag = $row['parent']->betrag;
$count_studiengangszahlung ++;
if(isset($row['childs']))
{
foreach ($row['childs'] as $key => $row_child)
@@ -243,57 +243,63 @@ echo ' <script type="text/javascript" src="../../../vendor/components/jqueryui
$i = $key; //Zaehler auf letzten Gegenbuchungseintrag setzen
}
}
else
else
$buchungsnummern = $row['parent']->buchungsnr;
if($betrag<0)
$style='style="background-color: #FF8888;"';
elseif($betrag>0)
$style='style="background-color: #88DD88;"';
else
else
$style='';
echo "<tr>";
echo '<td '.$style.'>'.date('d.m.Y',$datum_obj->mktime_fromdate(isset($row['childs'][$i])?$row['childs'][$i]->buchungsdatum:$row['parent']->buchungsdatum)).'</td>';
echo '<td '.$style.'>'.$buchungstyp[$row['parent']->buchungstyp_kurzbz].'</td>';
echo '<td '.$style.'>'.$stg_arr[$row['parent']->studiengang_kz].'</td>';
echo '<td '.$style.'>'.$row['parent']->studiensemester_kurzbz.'</td>';
echo '<td '.$style.'>'.$row['parent']->buchungstext.'</td>';
echo '<td align="right" '.$style.'>€ '.($betrag<0?'-':($betrag>0?'+':'')).sprintf('%.2f',abs($row['parent']->betrag)).'</td>';
echo '<td align="center" '.$style.'>';
if($betrag>=0 && $row['parent']->betrag<=0)
$buchungsdatum = $datum_obj->mktime_fromdate(isset($row['childs'][$i])?$row['childs'][$i]->buchungsdatum:$row['parent']->buchungsdatum);
$aktdatum = time();
// Zukünftige Zahlungen werden nicht angezeigt
if ($buchungsdatum <= $aktdatum)
{
echo '<a href="../pdfExport.php?xml=konto.rdf.php&xsl=Zahlung&uid='.$uid.'&buchungsnummern='.$buchungsnummern.'" title="'.$p->t('tools/bestaetigungDrucken').'"><img src="../../../skin/images/pdfpic.gif" alt="'.$p->t('tools/bestaetigungDrucken').'"></a>';
echo "<tr>";
echo '<td '.$style.'>'.date('d.m.Y',$buchungsdatum).'</td>';
echo '<td '.$style.'>'.$buchungstyp[$row['parent']->buchungstyp_kurzbz].'</td>';
echo '<td '.$style.'>'.$stg_arr[$row['parent']->studiengang_kz].'</td>';
echo '<td '.$style.'>'.$row['parent']->studiensemester_kurzbz.'</td>';
echo '<td '.$style.'>'.$row['parent']->buchungstext.'</td>';
echo '<td align="right" '.$style.'>€ '.($betrag<0?'-':($betrag>0?'+':'')).sprintf('%.2f',abs($row['parent']->betrag)).'</td>';
echo '<td align="center" '.$style.'>';
if($betrag>=0 && $row['parent']->betrag<=0)
{
echo '<a href="../pdfExport.php?xml=konto.rdf.php&xsl=Zahlung&uid='.$uid.'&buchungsnummern='.$buchungsnummern.'" title="'.$p->t('tools/bestaetigungDrucken').'"><img src="../../../skin/images/pdfpic.gif" alt="'.$p->t('tools/bestaetigungDrucken').'"></a>';
}
elseif($row['parent']->betrag>0)
{
//Auszahlung
}
else
{
echo '<a onclick="window.open(';
echo "'zahlungen_details.php?buchungsnr=".$row['parent']->buchungsnr.$getParam."','Zahlungsdetails','height=500,width=550,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=no,toolbar=no,location=no,menubar=no,dependent=yes');return false;";
echo '" href="#">'.$p->t('tools/offen').'</a>(€ '.sprintf('%.2f',$betrag*-1).')';
echo '</td>';
}
echo '</tr>';
}
elseif($row['parent']->betrag>0)
{
//Auszahlung
}
else
{
echo '<a onclick="window.open(';
echo "'zahlungen_details.php?buchungsnr=".$row['parent']->buchungsnr.$getParam."','Zahlungsdetails','height=500,width=550,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=no,toolbar=no,location=no,menubar=no,dependent=yes');return false;";
echo '" href="#">'.$p->t('tools/offen').'</a>(€ '.sprintf('%.2f',$betrag*-1).')';
echo '</td>';
}
echo '</tr>';
}
// Wenn die Tabelle keine Eintraege hat, wird eine Tabellenzeile mit entsprechender Information angezeigt.
if ($count_studiengangszahlung == 0)
{
echo "<tr><td colspan='7' style='background-color: white;'>" .$p->t('tools/keineZahlungenVorhanden'). "</td></tr>";
}
echo '</tbody></table>';
}
else
else
{
echo $p->t('tools/keineZahlungenVorhanden');
}
}
echo '</td></tr></table';
echo '</body></html>';
echo '</body></html>';
?>
+79 -6
View File
@@ -413,15 +413,23 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_
if($zeitsperre->new && $zeitsperre->zeitsperretyp_kurzbz=='Urlaub')
{
//Beim Anlegen von neuen Urlauben wird ein Mail an den Vorgesetzten versendet um diesen Freizugeben
$vorgesetzter = $ma->getVorgesetzte($uid);
$prsn = new person();
$vorgesetzter = $ma->getVorgesetzte($uid);
if($vorgesetzter)
{
$to='';
$fullName='';
foreach($ma->vorgesetzte as $vg)
{
if (!empty($to))
{
$to.=',';
$fullName.=',';
}
$to.=trim($vg.'@'.DOMAIN);
$name = $prsn->getFullNameFromBenutzer($vg);
$fullName.=$name;
}
$benutzer = new benutzer();
@@ -440,11 +448,11 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_
$mail = new mail($to, $from, 'Freigabeansuchen', $message);
if($mail->send())
{
echo "<br><b>".$p->t('urlaubstool/freigabemailWurdeVersandt',array($to))."</b>";
echo "<br><b>".$p->t('urlaubstool/freigabemailWurdeVersandt',array($fullName))."</b>";
}
else
{
echo "<br><span class='error'>".$p->t('urlaubstool/fehlerBeimSendenAufgetreten',array($to))."</span>";
echo "<br><span class='error'>".$p->t('urlaubstool/fehlerBeimSendenAufgetreten',array($fullName))."</span>";
}
}
else
@@ -461,8 +469,69 @@ if(isset($_GET['type']) && ($_GET['type']=='edit_sperre' || $_GET['type']=='new_
echo "<span class='error'>$error_msg</span>";
}
//loeschen eines bereits freigegebenen Urlaubs
if((isset($_GET['type']) && $_GET['type']=='delete_sperre' && isset($_GET['informSupervisor'])))
{
$zeitsperre = new zeitsperre();
$zeitsperre->load($_GET['id']);
$vondatum = $zeitsperre->getVonDatum();
$bisdatum = $zeitsperre->getBisDatum();
if(!$zeitsperre->delete($_GET['id']))
echo $zeitsperre->errormsg;
//Mail an Vorgesetzten
$prsn = new person();
$vorgesetzter = $ma->getVorgesetzte($uid);
if($vorgesetzter)
{
$to='';
$fullName ='';
foreach($ma->vorgesetzte as $vg)
{
if($to!='')
{
$to.=', '.$vg.'@'.DOMAIN;
$name = $prsn->getFullNameFromBenutzer($vg);
$fullName.=', '.$name;
}
else
{
$to.=$vg.'@'.DOMAIN;
$name = $prsn->getFullNameFromBenutzer($vg);
$fullName.=$name;
}
}
$benutzer = new benutzer();
$benutzer->load($uid);
$message = $p->t('urlaubstool/diesIstEineAutomatischeMail')."\n".
$p->t('urlaubstool/xHatUrlaubGeloescht',array($benutzer->nachname,$benutzer->vorname)).":\n";
$message.= $p->t('urlaubstool/von')." ".date("d.m.Y", strtotime($vondatum))." ".$p->t('urlaubstool/bis')." ".date("d.m.Y", strtotime($bisdatum))."\n";
$mail = new mail($to, 'vilesci@'.DOMAIN,$p->t('urlaubstool/freigegebenerUrlaubGeloescht'), $message);
if($mail->send())
{
echo "<br><b>".$p->t('urlaubstool/VorgesetzteInformiert',array($fullName))."</b>";
}
else
{
echo "<br><span class='error'>".$p->t('urlaubstool/fehlerBeimSendenAufgetreten',array($fullName))."!</span>";
}
}
else
{
$vgmail="<br><span class='error'>".$p->t('urlaubstool/konnteKeinFreigabemailVersendetWerden')."</span>";
}
}
//loeschen einer zeitsperre
if(isset($_GET['type']) && $_GET['type']=='delete_sperre')
if(isset($_GET['type']) && $_GET['type']=='delete_sperre' && !isset($_GET['informSupervisor']) )
{
$zeit = new zeitsperre();
$zeit->load($_GET['id']);
@@ -532,10 +601,14 @@ if(count($zeit->result)>0)
$content_table.="<td><a href='$PHP_SELF?type=edit&id=$row->zeitsperre_id' class='Item'>".$p->t('zeitsperre/edit')."</a></td>";
if ($row->vondatum < $gesperrt_bis AND in_array($row->zeitsperretyp_kurzbz,$typen_arr))
$content_table .= '<td>&nbsp;</td>';
else if($row->freigabeamum=='' || $row->zeitsperretyp_kurzbz!='Urlaub')
else if($row->vondatum>=date("Y-m-d",time()) && $row->zeitsperretyp_kurzbz=='Urlaub')
{
$content_table.="\n<td><a href='$PHP_SELF?type=delete_sperre&id=$row->zeitsperre_id' onclick='return conf_del()' class='Item'>".$p->t('zeitsperre/loeschen')."</a></td>";
$content_table.="\n<td><a href='$PHP_SELF?type=delete_sperre&id=$row->zeitsperre_id&informSupervisor=True' onclick='return conf_del()' class='Item'>".$p->t('zeitsperre/loeschen')."</a></td>";
}
elseif($row->zeitsperretyp_kurzbz!='Urlaub')
{
$content_table.="\n<td><a href='$PHP_SELF?type=delete_sperre&id=$row->zeitsperre_id' onclick='return conf_del()' class='Item'>".$p->t('zeitsperre/loeschen')."</a></td>";
}
else
$content_table .= '<td>&nbsp;</td>';
$content_table.="</tr>";
+6 -5
View File
@@ -62,11 +62,15 @@ TZOFFSETTO:+0100
END:STANDARD
END:VTIMEZONE\n";
//echo 'URL:',APP_ROOT,'cis/public/ical_coodle.php/',$uid,"\n";
echo "BEGIN:VEVENT";
// Alle Umfragen holen an denen der User beteiligt ist
$umfragen = new coodle();
$umfragen->getCoodleFromUser($uid);
$i = 0;
if (count($umfragen->result) > 0)
{
//echo "BEGIN:VEVENT";
}
foreach($umfragen->result as $umfrage)
{
if($umfrage->coodle_status_kurzbz=='laufend')
@@ -88,10 +92,7 @@ foreach($umfragen->result as $umfrage)
$uhrzeit_ende = $date->format('H:i:s');
$dtende = $date->format('Ymd\THis');
if ($i > 0)
{
echo "\nBEGIN:VEVENT";
}
echo "\nBEGIN:VEVENT";
echo "\nUID:Coodle_Terminoption".$dtstart."_".$dtende."";
echo "\nSUMMARY:Coodle Terminoption";
echo "\nDTSTART;TZID=Europe/Vienna:$dtstart";
+2
View File
@@ -224,6 +224,8 @@ if (isset($_SESSION['pruefling_id']))
(
(prestudent_data.semester= 1 AND tbl_ablauf.semester = 1)
OR
(prestudent_data.semester= 2 AND tbl_ablauf.semester = 2)
OR
(prestudent_data.semester= 3 AND tbl_ablauf.semester IN (1,3))
)
AND (
+3
View File
@@ -260,6 +260,9 @@ define('KOLLISIONSFREIE_USER',serialize(array('_DummyLektor')));
//Wenn auf 'true' gesetzt, dann wird im FAS beim Konto das Feld fuer die CreditPoints angezeigt
define('FAS_KONTO_SHOW_CREDIT_POINTS','false');
//Wenn auf true gesetzt, dann wird im FAS beim Konto das Feld fuer die Mahnspanne angezeigt
define('FAS_KONTO_SHOW_MAHNSPANNE', true);
// Wenn definiert, wird bei der Vorrückung der Lehreinheiten nicht der Stundensatz des Vorjahres eingetragen.
// Erlaubt sind numerische Werte oder der Wert "default".
// Bei "default" wird der Standard-Stundensatz des Lektors (aus tbl_mitarbeiter) ermittelt, und dieser eingetragen.
+2 -2
View File
@@ -197,7 +197,7 @@ else
<label value="Nummer" control="betriebsmittel-textbox-nummer"/>
<hbox>
<textbox id="betriebsmittel-textbox-nummerold" hidden="true"/>
<textbox id="betriebsmittel-textbox-nummer" disabled="true" maxlength="12"/>
<textbox id="betriebsmittel-textbox-nummer" disabled="true" maxlength="32"/>
<spacer flex="1" />
</hbox>
</row>
@@ -269,4 +269,4 @@ else
</hbox>
<spacer flex="1" />
</vbox>
</window>
</window>
+5
View File
@@ -122,6 +122,10 @@ echo ']>
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/messages/rdf#status"/>
<splitter class="tree-splitter"/>
<treecol id="messages-tree-status" label="Letzte Statusänderung" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/messages/rdf#statusdatum"/>
<splitter class="tree-splitter"/>
</treecols>
<template>
@@ -137,6 +141,7 @@ echo ']>
<treecell label="rdf:http://www.technikum-wien.at/messages/rdf#sender_id"/>
<treecell label="rdf:http://www.technikum-wien.at/messages/rdf#recipient_id"/>
<treecell label="rdf:http://www.technikum-wien.at/messages/rdf#status"/>
<treecell label="rdf:http://www.technikum-wien.at/messages/rdf#statusdatum"/>
</treerow>
</treeitem>
</treechildren>
@@ -35,6 +35,7 @@ require_once('../../include/person.class.php');
require_once('../../include/benutzer.class.php');
require_once('../../include/student.class.php');
require_once('../../include/prestudent.class.php');
require_once('../../include/statusgrund.class.php');
require_once('../../include/datum.class.php');
require_once('../../include/Excel/excel.php');
require_once('../../include/udf.class.php');
@@ -156,6 +157,8 @@ $maxlength[$i] = 16;
$worksheet->write($zeile, ++$i, "STATUS", $format_bold);
$maxlength[$i] = 6;
$worksheet->write($zeile, ++$i, "STATUSGRUND", $format_bold);
$maxlength[$i] = 6;
$worksheet->write($zeile, ++$i, "STATUS IN ANDEREN STUDIENGÄNGEN", $format_bold);
$maxlength[$i] = 8;
$worksheet->write($zeile, ++$i, "EMail Intern", $format_bold);
@@ -258,6 +261,8 @@ function draw_content($row)
$prestudent = new prestudent();
$prestudent->getLastStatus($row->prestudent_id);
$statusgrundObj = new statusgrund($prestudent->statusgrund_id);
$statusgrund = $statusgrundObj->bezeichnung_mehrsprachig[DEFAULT_LANGUAGE];
$status = $prestudent->status_kurzbz;
$orgform = $prestudent->orgform_kurzbz;
$prio_relativ = new prestudent();
@@ -523,6 +528,12 @@ function draw_content($row)
$worksheet->write($zeile, $i, $status);
$i++;
//Statusgrund
if (mb_strlen($statusgrund) > $maxlength[$i])
$maxlength[$i] = mb_strlen($statusgrund);
$worksheet->write($zeile, $i, $statusgrund);
$i++;
//Stati in anderen Studiengaengen
$stati='';
$qry_1 = "
+8 -4
View File
@@ -300,7 +300,8 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<label value="ZGV" control="student-prestudent-menulist-zgvcode"/>
<menulist id="student-prestudent-menulist-zgvcode" disabled="true"
datasources="<?php echo APP_ROOT ?>rdf/zgv.rdf.php?optional=true" flex="1"
ref="http://www.technikum-wien.at/zgv/alle" >
ref="http://www.technikum-wien.at/zgv/alle"
style="min-width: 130px">
<template>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/zgv/rdf#code"
@@ -320,7 +321,8 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<hbox>
<menulist id="student-prestudent-menulist-zgvnation" disabled="true"
datasources="<?php echo APP_ROOT ?>rdf/nation.rdf.php?optional=true" flex="1"
ref="http://www.technikum-wien.at/nation/liste">
ref="http://www.technikum-wien.at/nation/liste"
style="min-width: 100px">
<template>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/nation/rdf#nation_code"
@@ -335,7 +337,8 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<label value="ZGV Master" control="student-prestudent-menulist-zgvmastercode"/>
<menulist id="student-prestudent-menulist-zgvmastercode" disabled="true"
datasources="<?php echo APP_ROOT ?>rdf/zgvmaster.rdf.php?optional=true" flex="1"
ref="http://www.technikum-wien.at/zgvmaster/alle" >
ref="http://www.technikum-wien.at/zgvmaster/alle"
style="min-width: 130px" >
<template>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/zgvmaster/rdf#code"
@@ -354,7 +357,8 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<hbox>
<menulist id="student-prestudent-menulist-zgvmasternation" disabled="true"
datasources="<?php echo APP_ROOT ?>rdf/nation.rdf.php?optional=true" flex="1"
ref="http://www.technikum-wien.at/nation/liste" >
ref="http://www.technikum-wien.at/nation/liste"
style="min-width: 100px">
<template>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/nation/rdf#nation_code"
@@ -96,7 +96,14 @@ echo '<?xml-stylesheet href="'.APP_ROOT.'content/datepicker/datepicker.css" type
<label value="Buchungstext" control="student-konto-neu-textbox-buchungstext"/>
<textbox id="student-konto-neu-textbox-buchungstext" maxlength="256"/>
</row>
<row>
<?php
// Mahnspanne wird nur angezeigt, wenn diese im Config aktiviert wurden
if(!defined('FAS_KONTO_SHOW_MAHNSPANNE') || FAS_KONTO_SHOW_MAHNSPANNE===true)
$hidden='';
else
$hidden='hidden="true"';
?>
<row <?php echo $hidden;?>>
<label value="Mahnspanne" control="student-konto-neu-textbox-mahnspanne"/>
<hbox>
<textbox id="student-konto-neu-textbox-mahnspanne" value="30" maxlength="4" size="4"/>
@@ -144,4 +151,4 @@ echo '<?xml-stylesheet href="'.APP_ROOT.'content/datepicker/datepicker.css" type
</hbox>
</groupbox>
</vbox>
</window>
</window>
+9 -2
View File
@@ -237,7 +237,14 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<label value="Buchungstext" control="student-konto-textbox-buchungstext"/>
<textbox id="student-konto-textbox-buchungstext" disabled="true" maxlength="256"/>
</row>
<row>
<?php
// Mahnspanne wird nur angezeigt, wenn diese im Config aktiviert wurden
if(!defined('FAS_KONTO_SHOW_MAHNSPANNE') || FAS_KONTO_SHOW_MAHNSPANNE===true)
$hidden='';
else
$hidden='hidden="true"';
?>
<row <?php echo $hidden; ?>>
<label value="Mahnspanne" control="student-konto-textbox-mahnspanne"/>
<hbox>
<textbox id="student-konto-textbox-mahnspanne" disabled="true" maxlength="4" size="4"/>
@@ -346,4 +353,4 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
</grid>
</hbox>
</vbox>
</overlay>
</overlay>
+163
View File
@@ -1013,6 +1013,134 @@ class dvb extends basis_db
}
}
public function setMatrikelnummerErnp($bildungseinrichtung, $person, $reisepass)
{
$this->debug('ernpMeldung');
$uuid = $this->getUUID();
if ($this->tokenIsExpired())
{
$result = $this->authenticate();
if (ErrorHandler::isError($result))
return ErrorHandler::error();
}
$data = '<?xml version="1.0" encoding="UTF-8"?>';
$data .= '<matrikelnummernmeldung xmlns="http://www.brz.gv.at/datenverbund-unis">
<uuid>'.$uuid.'</uuid>';
$data .= $this->getPersonmeldungXml($bildungseinrichtung, $person);
$data .= '
<ernpmeldung xmlns="http://www.brz.gv.at/datenverbund-unis">
<ausgabedatum>'.$reisepass->ausgabedatum.'</ausgabedatum>
<ausstellBehoerde>'.$reisepass->ausstellBehoerde.'</ausstellBehoerde>
<ausstellland>'.$reisepass->ausstellland.'</ausstellland>
<dokumentnr>'.$reisepass->dokumentnr.'</dokumentnr>
<dokumenttyp>'.$reisepass->dokumenttyp.'</dokumenttyp>
</ernpmeldung>
';
$data .= '</matrikelnummernmeldung>';
$curl = curl_init();
$url = self::DVB_URL_WEBSERVICE_MELDUNG;
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$headers = array(
'Accept: application/xml',
'Content-Type: application/xml',
'Authorization: Bearer '.$this->authentication->access_token,
'User-Agent: FHComplete',
'Connection: Keep-Alive',
'Expect:'
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$this->debug('Request URL:'.$url);
$this->debug('Request Data:'.$data);
$response = curl_exec($curl);
$curl_info = curl_getinfo($curl);
curl_close($curl);
$this->debug('Response: '.$curl_info['http_code']);
$this->debug('Response: '.print_r($response, true));
if ($curl_info['http_code'] == '200')
{
$dom = new DOMDocument();
$dom->loadXML($response);
$domnodes_fehlerliste = $dom->getElementsByTagName('fehlerliste');
$fehleranzahl = $domnodes_fehlerliste->item(0)->getAttribute('fehleranzahl');
if ($fehleranzahl === '0')
{
// Keine Fehler -> Meldung erfolgreich
$retval = new stdClass();
$retval->matrikelnummer = $person->matrikelnummer;
return ErrorHandler::success($retval);
}
else
{
$this->errormsg = 'Es gab '.$fehleranzahl.' Fehler:';
$domnodes_fehler = $dom->getElementsByTagName('fehler');
foreach ($domnodes_fehler as $row)
{
$fehlernummer = $row->getElementsByTagName('fehlernummer');
/**
* Bei Fehlernummer ED10065 wurde die Matrikelnummer korrekt gesetzt.
* Das BPK wurde vom Datenverbund versucht zu ermitteln und wird in der Fehlermeldung
* zurückgeliefert. Dieses sollte dann gespeichert werden.
* Es muss eine erneute Vergabemeldung mit korrigierten Daten vorgenommen werden um die Daten im
* DVB zu aktualisieren
* Dies gilt nur, wenn ED10065 alleine geliefert wird und keine sonstigen Fehler auftreten
*/
if ($fehlernummer->length == 1 && $fehlernummer->item(0)->textContent == 'ED10065')
{
$this->debug('ED10065 Response');
$domnodes_feldinhalt = $row->getElementsByTagName('feldinhalt');
if ($domnodes_feldinhalt->length > 0 && $domnodes_feldinhalt->item(0)->textContent!='')
{
$bpk = $domnodes_feldinhalt->item(0)->textContent;
$retval = new stdClass();
$retval->matrikelnummer = $person->matrikelnummer;
if ($bpk != 'keine bPK gefunden')
$retval->bpk = $bpk;
$this->errormsg .= 'ED10065 Response';
$this->errormsg .= 'Eine Personendatenprüfung ist erforderlich';
$this->errormsg .= 'Danach muss eine erneute Vergabemeldung mit dieser Matrikelnummer erfolgen.';
$this->debug('BPK:'.$bpk);
$this->debug('MatrNr:'.$person->matrikelnummer);
return ErrorHandler::success($retval);
}
}
else
{
$datenfeld = $row->getElementsByTagName('datenfeld');
$fehlertext = $row->getElementsByTagName('fehlertext');
$this->errormsg .= ' Datenfeld:'.$datenfeld->item(0)->textContent;
$this->errormsg .= ' Fehlertext:'.$fehlertext->item(0)->textContent;
}
}
return ErrorHandler::error();
}
}
else
{
$errormsg = 'Request Failed with HTTP Code:'.$curl_info['http_code'].' and Response:'.$response;
return ErrorHandler::error($errormsg);
}
}
/**
* Get BPK from Person
* @param string $person_id ID of the Person.
@@ -1737,6 +1865,41 @@ class dvb extends basis_db
$this->debug_output .= "\n".date('Y-m-d H:i:s').': '.$msg;
}
private function getPersonmeldungXml($bildungseinrichtung, $person)
{
$gebdat = str_replace("-", "", $person->geburtsdatum);
$data = '<personmeldung xmlns="http://www.brz.gv.at/datenverbund-unis">
<be>'.$bildungseinrichtung.'</be>
<gebdat>'.$gebdat.'</gebdat>
<geschlecht>'.$person->geschlecht.'</geschlecht>
<matrikelnummer>'.$person->matrikelnummer.'</matrikelnummer>';
if (isset($person->matura) && $person->matura != '')
$data .= '<matura>'.$person->matura.'</matura>';
else
$data .= '<matura>00000000</matura>';
$data .= '<nachname>'.$person->nachname.'</nachname>';
if (isset($person->plz) && $person->plz != '')
$data .= '<plz>'.$person->plz.'</plz>';
$data .= '<staat>'.$person->staat.'</staat>';
if (isset($person->svnr) && $person->svnr != '')
$data .= '<svnr>'.$person->svnr.'</svnr>';
$data .= '<vorname>'.$person->vorname.'</vorname>';
if (isset($person->writeonerror) && $person->writeonerror === true)
$data .= '<writeOnError>J</writeOnError>';
$data .= '
</personmeldung>';
return $data;
}
/**
* Erstellt einen Logeintrag
* @param object $person Personen objekt.
+30 -1
View File
@@ -374,7 +374,7 @@ class person extends basis_db
$this->errormsg = 'Staatsbuergerschaft darf nicht laenger als 3 Zeichen sein';
return false;
}
//Pruefen ob das Geburtsdatum mit der SVNR uebereinstimmt.
if ($this->svnr != '' && $this->gebdatum != '')
{
@@ -1018,4 +1018,33 @@ class person extends basis_db
return false;
}
}
public function getFullNameFromBenutzer($uid)
{
$qry = "SELECT
vorname, nachname
FROM
public.tbl_person
JOIN public.tbl_benutzer USING(person_id)
WHERE
uid=".$this->db_add_param($uid, FHC_STRING);
if ($this->db_query($qry))
{
if ($row = $this->db_fetch_object())
{
return (string)$row->vorname.' '.$row->nachname;
}
else
{
$this->errormsg = 'Keine Personendaten zu dieser UID gefunden';
return false;
}
}
else
{
$this->errormsg = "Fehler beim Laden der Personendaten";
return false;
}
}
}
+17 -17
View File
@@ -287,7 +287,7 @@ class studiensemester extends basis_db
$qry.= " WHERE substring(studiensemester_kurzbz from 1 for 2)='$ss' ";
}
$qry.=' ORDER BY delta LIMIT 1';
$qry.=' ORDER BY delta, start LIMIT 1';
if(!$this->db_query($qry))
{
@@ -573,7 +573,7 @@ class studiensemester extends basis_db
{
$qry = "SELECT studiensemester_kurzbz, start, ende FROM public.vw_studiensemester
WHERE studiensemester_kurzbz<>".$this->db_add_param($studiensemester_kurzbz)."
ORDER BY delta LIMIT 1";
ORDER BY delta, start LIMIT 1";
if($this->db_query($qry))
{
@@ -907,13 +907,13 @@ class studiensemester extends basis_db
ORDER BY ende ASC";
if ($plus != '')
$qry .= " LIMIT ".$this->db_add_param($plus, FHC_INTEGER);
$qry .= ") UNION
(SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE start <= now()
ORDER BY start DESC ";
if ($minus != '')
$qry .= " LIMIT ".$this->db_add_param($minus, FHC_INTEGER);
$qry .= ")) ORDER BY ".$order;
if($this->db_query($qry))
@@ -967,7 +967,7 @@ class studiensemester extends basis_db
FROM tbl_studiensemester
) a
WHERE a.studiensemester_kurzbz!=".$this->db_add_param($studiensemester_kurzbz)."
ORDER BY delta LIMIT 1";
ORDER BY delta, start LIMIT 1";
if($this->db_query($qry))
{
@@ -1029,7 +1029,7 @@ class studiensemester extends basis_db
return false;
}
}
/**
* Gibt das Wintersemester eines Studienjahres zurück (zb WS2017)
*
@@ -1040,10 +1040,10 @@ class studiensemester extends basis_db
{
$qry = "
SELECT studiensemester_kurzbz
FROM tbl_studiensemester
FROM tbl_studiensemester
WHERE studienjahr_kurzbz LIKE " . $this->db_add_param($studienjahr_kurzbz) . "
AND studiensemester_kurzbz LIKE 'WS%';";
if ($result = $this->db_query($qry))
{
if ($row = $this->db_fetch_object())
@@ -1063,7 +1063,7 @@ class studiensemester extends basis_db
return false;
}
}
/**
* Gibt das Sommersemester eines Studienjahres zurück (zb SS2018)
*
@@ -1074,10 +1074,10 @@ class studiensemester extends basis_db
{
$qry = "
SELECT studiensemester_kurzbz
FROM tbl_studiensemester
FROM tbl_studiensemester
WHERE studienjahr_kurzbz LIKE " . $this->db_add_param($studienjahr_kurzbz) . "
AND studiensemester_kurzbz LIKE 'SS%';";
if ($result = $this->db_query($qry))
{
if ($row = $this->db_fetch_object())
@@ -1097,7 +1097,7 @@ class studiensemester extends basis_db
return false;
}
}
/**
* Gibt die Studiensemester zwischen $studiensemesterStart und $studiensemesterEnde zurück
* Wenn $inklusive true ist (default), werden auch $studiensemesterStart und $studiensemesterEnde selbst zurückgegeben
@@ -1116,7 +1116,7 @@ class studiensemester extends basis_db
}
if ($inklusive = true)
$equalSign = '=';
else
else
$equalSign = '';
$qry = "
SELECT *
@@ -1132,13 +1132,13 @@ class studiensemester extends basis_db
WHERE studiensemester_kurzbz = " . $this->db_add_param($studiensemesterEnde) . "
)
ORDER BY start DESC;";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$stsem_obj = new studiensemester();
$stsem_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$stsem_obj->start = $row->start;
$stsem_obj->ende = $row->ende;
@@ -1146,7 +1146,7 @@ class studiensemester extends basis_db
$stsem_obj->studienjahr_kurzbz = $row->studienjahr_kurzbz;
$stsem_obj->beschreibung = $row->beschreibung;
$stsem_obj->onlinebewerbung = $row->onlinebewerbung;
$this->studiensemester[] = $stsem_obj;
}
return true;
@@ -1158,4 +1158,4 @@ class studiensemester extends basis_db
}
}
}
?>
?>
+79 -35
View File
@@ -100,6 +100,8 @@ class wochenplan extends basis_db
public $errormsg;
public $fachbereich_kurzbz;
public $moodle;
public $raeume = array();
/**
@@ -508,7 +510,7 @@ class wochenplan extends basis_db
echo ' <tr><td style="padding:3px 15px 0px 15px; margin: 0,0,20px,0;" align="center">'.$this->crlf;
//Kalender
$this->kal_link.='&pers_uid='.$this->pers_uid.'&ort_kurzbz='.$this->ort_kurzbz.'&stg_kz='.$this->stg_kz.'&sem='.$this->sem.'&ver='.$this->ver.'&grp='.$this->grp.'&gruppe_kurzbz='.$this->gruppe_kurzbz.'&lva='.$this->lva;
$this->kal_link.='&pers_uid='.$this->pers_uid.'&ort_kurzbz='.$this->ort_kurzbz.'&stg_kz='.$this->stg_kz.'&sem='.$this->sem.'&ver='.$this->ver.'&grp='.$this->grp.'&gruppe_kurzbz='.$this->gruppe_kurzbz.'&lva='.$this->lva.'&moodle='.$this->moodle;
$kal_link_ws=$this->kal_link.'&begin='.$this->studiensemester_now->start.'&ende='.$this->studiensemester_now->ende;
$kal_link_ss=$this->kal_link.'&begin='.$this->studiensemester_next->start.'&ende='.$this->studiensemester_next->ende;
@@ -864,7 +866,7 @@ class wochenplan extends basis_db
echo '&ver='.$this->ver;
echo '&grp='.$this->grp;
echo '&ort_kurzbz='.$ort;
echo "','Details', 'height=320,width=550,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=no,toolbar=no,location=no,menubar=no,dependent=yes');return false;";
echo "','Details', 'height=420,width=950,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=no,toolbar=no,location=no,menubar=no,dependent=yes');return false;";
echo '" title="'.$this->convert_html_chars($titel).'" ';
echo ' href="#">';
@@ -936,7 +938,7 @@ class wochenplan extends basis_db
echo '&ver='.$this->ver;
echo '&grp='.$this->grp;
echo '&ort_kurzbz='.$uEinheit['ort'][0];
echo "','Details', 'height=320,width=550,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=no,toolbar=no,location=no,menubar=no,dependent=yes');return false;";
echo "','Details', 'height=420,width=950,left=0,top=0,hotkeys=0,resizable=yes,status=no,scrollbars=no,toolbar=no,location=no,menubar=no,dependent=yes');return false;";
echo '" title="'.$this->convert_html_chars($uEinheit['titel'][0]).'" ';
echo ' href="#">';
@@ -2317,7 +2319,6 @@ class wochenplan extends basis_db
return true;
}
/**
* Funktion draw_week_csv Stundenplan im CSV-Format
*
@@ -2326,9 +2327,25 @@ class wochenplan extends basis_db
*/
public function draw_week_csv($target, $lvplan_kategorie)
{
//Check if moodle addon is active
$moodle_addon_active = false;
// ADDONS laden
$addon_obj = new addon();
$addon_obj->loadAddons();
foreach ($addon_obj->result as $addon)
{
if($addon->addon_name === 'Moodle')
{
$moodle_addon_active = true;
include_once(dirname(__FILE__) . '/../addons/moodle/lib/LogicCourses.php');
}
}
$return = array();
if (!date("w",$this->datum))
$this->datum=jump_day($this->datum,1);
$d = date("Y-m-d",$this->datum);
$stsem = getStudiensemesterFromDatum($d);
$num_rows_stunde=$this->db_num_rows($this->stunde);
for ($i=1; $i<=TAGE_PRO_WOCHE; $i++)
{
@@ -2417,6 +2434,33 @@ class wochenplan extends basis_db
for ($idx=0;$idx<count($this->std_plan[$i][$j]);$idx++)
{
$moodle_link = '';
if ($moodle_addon_active)
{
$leId = (isset($this->std_plan[$i][$j][$idx]->unr) ? $this->std_plan[$i][$j][$idx]->unr : '');
$lvId = (isset($this->std_plan[$i][$j][$idx]->lehrfach_id) ? $this->std_plan[$i][$j][$idx]->lehrfach_id : '');
$countLV = LogicCourses::coursesMdlCourseIDForLehrveranstaltungStudiensemesterExists($lvId, $stsem);
$countLE = LogicCourses::coursesMdlCourseIDExists($leId);
if (Database::fetchRow($countLV)->count > 0)
{
$moodle_courses = LogicCourses::getCoursesByLehrveranstaltungStudiensemester($lvId, $stsem);
while ($moodle_course = Database::fetchRow($moodle_courses))
{
$moodle_link .= 'moodle.technikum-wien.at/course/view.php?id=' . $moodle_course->mdl_course_id . '\n';
}
}
elseif (Database::fetchRow($countLE)->count > 0)
{
$moodle_course = LogicCourses::getCoursesByLehreinheit($leId);
$moodle_link .= 'moodle.technikum-wien.at/course/view.php?id=' . Database::fetchRow($moodle_course)->mdl_course_id . '\n';
}
}
if (!isset($this->std_plan[$i][$j][$idx]))
{
continue;
@@ -2561,8 +2605,8 @@ class wochenplan extends basis_db
echo $this->crlf.'BEGIN:VEVENT'.$this->crlf
.'UID:'.'FH'.str_replace(',',' ',$lvb.$this->std_plan[$i][$j][$idx]->ort.$this->std_plan[$i][$j][$idx]->lektor.$lehrfach[$idx].$start_date_time_ical.$end_date_time_ical.$this->crlf)
.'SUMMARY:'.str_replace(',',' ',$lehrfach[$idx].' '.$this->std_plan[$i][$j][$idx]->ort.' - '.$lvb.$this->crlf)
.'DESCRIPTION:'.str_replace(',',' ',$lehrfach[$idx].'\n'.$this->std_plan[$i][$j][$idx]->lektor.'\n'.$lvb.'\n'.$this->std_plan[$i][$j][$idx]->ort.(LVPLAN_ANMERKUNG_ANZEIGEN?'\n'.$this->std_plan[$i][$j][$idx]->anmerkung:'').$this->crlf)
.'SUMMARY:'.$this->convert_html_chars($titel).'\n'.str_replace(',',' ',$lehrfach[$idx].' '.$this->std_plan[$i][$j][$idx]->ort.' - '.$lvb.$this->crlf)
.'DESCRIPTION:'.$moodle_link.'\n'.str_replace(',',' ',$lehrfach[$idx].'\n'.$this->std_plan[$i][$j][$idx]->lektor.'\n'.$lvb.'\n'.$this->std_plan[$i][$j][$idx]->ort.(LVPLAN_ANMERKUNG_ANZEIGEN?'\n'.$this->std_plan[$i][$j][$idx]->anmerkung:'').$this->crlf)
.'LOCATION:'.$this->std_plan[$i][$j][$idx]->ort.$this->crlf
.'CATEGORIES:'.$lvplan_kategorie.$this->crlf
.'DTSTART;TZID=Europe/Vienna:'.$start_date_time_ical.$this->crlf
@@ -2603,41 +2647,41 @@ class wochenplan extends basis_db
$end_date_time_ical = $eda[2].$eda[1].$eda[0].'T'.sprintf('%02s',($eta[0])).$eta[1].$eta[2]; //neu gruppieren der Startzeit und des Startdatums
$UID = 'FH'.$lvb.$this->std_plan[$i][$j][$idx]->ort.$this->std_plan[$i][$j][$idx]->lektor.$lehrfach[$idx].$start_date_time_ical.$end_date_time_ical;
$Summary = $lehrfach[$idx].' '.$this->std_plan[$i][$j][$idx]->ort.' - '.$lvb;
$description = $lehrfach[$idx].'\n'.$this->std_plan[$i][$j][$idx]->lektor.'\n'.$lvb.'\n'.$this->std_plan[$i][$j][$idx]->ort.(LVPLAN_ANMERKUNG_ANZEIGEN?'\n'.$this->std_plan[$i][$j][$idx]->anmerkung:'');
$Summary = $this->convert_html_chars($titel).' '.$lehrfach[$idx].' '.$this->std_plan[$i][$j][$idx]->ort.' - '.$lvb;
$description = $moodle_link.'\n'.$lehrfach[$idx].'\n'.$this->std_plan[$i][$j][$idx]->lektor.'\n'.$lvb.'\n'.$this->std_plan[$i][$j][$idx]->ort.(LVPLAN_ANMERKUNG_ANZEIGEN?'\n'.$this->std_plan[$i][$j][$idx]->anmerkung:'');
$UID = str_replace(',',' ',$UID);
$Summary = str_replace(',',' ',$Summary);
$description = str_replace(',',' ',$description);
$return[]=array('UID'=>$UID,
'lehrfach_id'=>(isset($this->std_plan[$i][$j][$idx]->lehrfach_id)?$this->std_plan[$i][$j][$idx]->lehrfach_id:''),
'ort'=>$this->std_plan[$i][$j][$idx]->ort,
'lektor_uid'=>array_unique($lektor_uids),
'gruppen'=>array_unique($lehrverband),
'stunden'=>array_unique($stunden_arr),
'titel'=>$this->std_plan[$i][$j][$idx]->titel,
'unr'=>$unr,
'Summary'=>$Summary,
'Description'=>$description,
'start_date'=>$start_date,
'end_date'=>$end_date,
'start_time'=>$start_time,
'end_time'=>$end_time,
'dtstart'=>$start_date_time_ical,
'dtend'=>$end_date_time_ical,
'reservierung'=>$this->std_plan[$i][$j][$idx]->reservierung,
'reservierung_id'=>($this->std_plan[$i][$j][$idx]->reservierung?$this->std_plan[$i][$j][$idx]->stundenplan_id:''),
'updateamum'=>$this->std_plan[$i][$j][$idx]->updateamum,
'data'=>'BEGIN:VEVENT'.$this->crlf
.'UID:'.$UID.$this->crlf
.'SUMMARY:'.$Summary.$this->crlf
.'DESCRIPTION:'.$description.$this->crlf
.'LOCATION:'.$this->std_plan[$i][$j][$idx]->ort.$this->crlf
.'CATEGORIES:'.$lvplan_kategorie.$this->crlf
.'DTSTART;TZID=Europe/Vienna:'.$start_date_time_ical.$this->crlf
.'DTEND;TZID=Europe/Vienna:'.$end_date_time_ical.$this->crlf
.'END:VEVENT');
'lehrfach_id'=>(isset($this->std_plan[$i][$j][$idx]->lehrfach_id)?$this->std_plan[$i][$j][$idx]->lehrfach_id:''),
'ort'=>$this->std_plan[$i][$j][$idx]->ort,
'lektor_uid'=>array_unique($lektor_uids),
'gruppen'=>array_unique($lehrverband),
'stunden'=>array_unique($stunden_arr),
'titel'=>$this->std_plan[$i][$j][$idx]->titel,
'unr'=>$unr,
'Summary'=>$Summary,
'Description'=>$description,
'start_date'=>$start_date,
'end_date'=>$end_date,
'start_time'=>$start_time,
'end_time'=>$end_time,
'dtstart'=>$start_date_time_ical,
'dtend'=>$end_date_time_ical,
'reservierung'=>$this->std_plan[$i][$j][$idx]->reservierung,
'reservierung_id'=>($this->std_plan[$i][$j][$idx]->reservierung?$this->std_plan[$i][$j][$idx]->stundenplan_id:''),
'updateamum'=>$this->std_plan[$i][$j][$idx]->updateamum,
'data'=>'BEGIN:VEVENT'.$this->crlf
.'UID:'.$UID.$this->crlf
.'SUMMARY:'.$Summary.$this->crlf
.'DESCRIPTION:'.$description.$this->crlf
.'LOCATION:'.$this->std_plan[$i][$j][$idx]->ort.$this->crlf
.'CATEGORIES:'.$lvplan_kategorie.$this->crlf
.'DTSTART;TZID=Europe/Vienna:'.$start_date_time_ical.$this->crlf
.'DTEND;TZID=Europe/Vienna:'.$end_date_time_ical.$this->crlf
.'END:VEVENT');
}
else
{
+9
View File
@@ -510,6 +510,15 @@ class zeitsperre extends basis_db
}
}
public function getVonDatum()
{
return $this->vondatum;
}
public function getBisDatum()
{
return $this->bisdatum;
}
}
?>
+1 -1
View File
@@ -184,7 +184,7 @@ $this->phrasen['global/keineDatenGefunden']='Keine Daten gefunden';
$this->phrasen['global/erfolgreichAngelegt']='Erfolgreich angelegt';
$this->phrasen['global/keineSuchergebnisse']='Es liegen keine Daten zu Ihrer Suchanfrage vor';
$this->phrasen['global/bitteWaehlen']='Bitte wählen Sie';
$this->phrasen['global/zusaetzlicheInformationen']='Zusätzliche Informationen';
//infrastruktur
+4
View File
@@ -36,4 +36,8 @@ $this->phrasen['urlaubstool/meineZeitsperren']='Meine Zeitsperren';
$this->phrasen['urlaubstool/sieKoennenDiesenUnterFolgenderAdresseFreigeben']='Sie können diesen unter folgender Adresse freigeben';
$this->phrasen['urlaubstool/freigabeansuchenUrlaub']='Freigabeansuchen Urlaub';
$this->phrasen['urlaubstool/freigabeFehlt']='Urlaub wurde noch nicht freigegeben';
$this->phrasen['urlaubstool/freigegebenerUrlaubGeloescht']='Bereits Freigegebener Urlaub wurde gelöscht';
$this->phrasen['urlaubstool/VorgesetzteInformiert']='Email wurde an %s versandt';
$this->phrasen['urlaubstool/konnteKeinInformationsemailVersendetWerden']='Es konnte kein Email versendet werden, da kein Vorgesetzter eingetragen ist!';
$this->phrasen['urlaubstool/xHatUrlaubGeloescht']='%s %s hat bereits freigegebenen Urlaub gelöscht';
?>
+1
View File
@@ -182,6 +182,7 @@ $this->phrasen['global/keineDatenGefunden']='No data found';
$this->phrasen['global/erfolgreichAngelegt']='Created successfully';
$this->phrasen['global/keineSuchergebnisse']='No matches found';
$this->phrasen['global/bitteWaehlen']='Please select';
$this->phrasen['global/zusaetzlicheInformationen']='Additional Informations';
//infrastruktur
+21 -1
View File
@@ -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({
@@ -73,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);
+8 -3
View File
@@ -105,10 +105,15 @@ if (count($berechtigt_studiengang)>0)
tbl_lehrverband.bezeichnung AS lvb_bezeichnung, tbl_gruppe.bezeichnung AS grp_bezeichnung
FROM
(public.tbl_studiengang JOIN public.tbl_lehrverband USING (studiengang_kz))
LEFT OUTER JOIN public.tbl_gruppe ON (tbl_lehrverband.studiengang_kz=tbl_gruppe.studiengang_kz AND tbl_lehrverband.semester=tbl_gruppe.semester AND (tbl_lehrverband.verband='') AND tbl_gruppe.lehre AND tbl_gruppe.aktiv)
LEFT OUTER JOIN public.tbl_gruppe ON (
tbl_lehrverband.studiengang_kz=tbl_gruppe.studiengang_kz
AND tbl_lehrverband.semester=tbl_gruppe.semester
AND (tbl_lehrverband.verband='')
AND tbl_gruppe.lehre AND tbl_gruppe.aktiv
AND (tbl_gruppe.direktinskription is null or tbl_gruppe.direktinskription=false)
)
WHERE
(tbl_gruppe.direktinskription is null or tbl_gruppe.direktinskription=false)
AND tbl_lehrverband.aktiv $stg_kz_query
tbl_lehrverband.aktiv $stg_kz_query
ORDER BY
erhalter_kz,typ, kurzbz, semester,verband,gruppe, gruppe_kurzbz;";
}
+7 -2
View File
@@ -22,10 +22,12 @@
require_once('../config/vilesci.config.inc.php');
require_once('../include/basis_db.class.php');
require_once('../include/rdf.class.php');
require_once('../include/datum.class.php');
require_once('../include/functions.inc.php');
require_once('../include/benutzerberechtigung.class.php');
$uid = get_uid();
$datum_obj = new datum();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
if(!$rechte->isBerechtigt('basis/message', null, 's'))
@@ -50,7 +52,8 @@ SELECT
(SELECT COALESCE(titelpre,'') || ' ' || COALESCE(vorname,'') || ' ' || COALESCE(nachname,'') || ' ' || COALESCE(titelpost,'') FROM public.tbl_person WHERE person_id = r.person_id) as recipient,
m.person_id as sender_id,
r.person_id as recipient_id,
MAX(ss.status) as status
MAX(ss.status) as status,
MAX(ss.insertamum) as statusdatum
FROM public.tbl_msg_message m
JOIN public.tbl_msg_recipient r USING(message_id)
JOIN public.tbl_msg_status ss ON(r.message_id = ss.message_id AND ss.person_id = r.person_id)
@@ -67,7 +70,8 @@ SELECT
(SELECT COALESCE(titelpre,'') || ' ' || COALESCE(vorname,'') || ' ' || COALESCE(nachname,'') || ' ' || COALESCE(titelpost,'') FROM public.tbl_person WHERE person_id = r.person_id) as recipient,
m.person_id as sender_id,
r.person_id as recipient_id,
MAX(ss.status) as status
MAX(ss.status) as status,
MAX(ss.insertamum) as statusdatum
FROM public.tbl_msg_recipient r
JOIN public.tbl_msg_status ss USING(message_id, person_id)
JOIN public.tbl_msg_message m USING(message_id)
@@ -104,6 +108,7 @@ if($db->db_query($qry))
$oRdf->obj[$i]->setAttribut('message_id',$row->message_id,true);
$oRdf->obj[$i]->setAttribut('insertamum',$row->insertamum,true);
$oRdf->obj[$i]->setAttribut('status',$status,true);
$oRdf->obj[$i]->setAttribut('statusdatum',$datum_obj->formatDatum($row->statusdatum,'d.m.Y H:i'),true);
$oRdf->obj[$i]->setAttribut('sender',$row->sender,true);
$oRdf->obj[$i]->setAttribut('recipient',$row->recipient,true);
$oRdf->obj[$i]->setAttribut('sender_id',$row->sender_id,true);
+112 -7
View File
@@ -57,6 +57,12 @@ $ersatzkennzeichen = filter_input(INPUT_POST, 'ersatzkennzeichen');
$person_id = filter_input(INPUT_POST, 'person_id');
$strasse = filter_input(INPUT_POST, 'strasse');
$dokumenttyp = filter_input(INPUT_POST, 'dokumenttyp');
$ausgabedatum = filter_input(INPUT_POST, 'ausgabedatum');
$ausstellbehoerde = filter_input(INPUT_POST, 'ausstellbehoerde');
$ausstellland = filter_input(INPUT_POST, 'ausstellland');
$dokumentnr = filter_input(INPUT_POST, 'dokumentnr');
?><!DOCTYPE html>
<html>
<head>
@@ -79,6 +85,7 @@ $strasse = filter_input(INPUT_POST, 'strasse');
<li><a href="datenverbund_client.php?action=getReservations">Matrikelnummer Reservierungen anzeigen</a></li>
<li><a href="datenverbund_client.php?action=getKontingent">Matrikelnummer Kontingent anfordern</a></li>
<li><a href="datenverbund_client.php?action=setMatrikelnummer">Matrikelnummer Vergabe melden</a></li>
<li><a href="datenverbund_client.php?action=setMatrikelnummerErnp">ERNP-Eintragung anfordern</a></li>
<li><a href="datenverbund_client.php?action=assignMatrikelnummer">Gesamtprozess (Abfrage, ggf Vergabemeldung, Speichern bei Person)</a></li>
<li><a href="datenverbund_client.php?action=getBPK">BPK ermitteln</a></li>
<li><a href="datenverbund_client.php?action=pruefeBPK">BPK ermitteln manuell</a></li>
@@ -114,6 +121,50 @@ $strasse = filter_input(INPUT_POST, 'strasse');
</tr>';
}
/**
* Erstellt eine Tabllezeile mit Input-Feld
* @param string $name Name des Inputs.
* @param string $title Titel der Zeile.
* @param string $value Value des Inputs.
* @param string $hint Hinweistext zu Inputfeld.
* @param int $maxlength Maximallaenge des Eingabefeldes.
* @return void
*/
function printDropdownRow($name, $title, $values, $selectedValue = '', $hint = '')
{
global $db;
echo '
<tr>
<td align="right">'.$title.':</td>
<td>
<select name="'.$name.'">';
foreach ($values as $idx => $value)
{
$selected = $selectedValue === $value ? ' selected' : '';
echo '<option value="'.$db->convert_html_chars($value).'"'.$selected.'>'.$idx.'</option>';
}
echo '</select>'.$hint.'
</td>
</tr>';
}
/**
* Prints Stammdaten inputfields for setMatrikelnummer form
*/
function printSetMatrikelnrRows()
{
global $matrikelnr, $nachname, $vorname, $geburtsdatum, $geschlecht, $postleitzahl;
printrow('matrikelnummer', 'Matrikelnummer', $matrikelnr);
printrow('nachname', 'Nachname', $nachname, '', 255);
printrow('vorname', 'Vorname', $vorname, '', 30);
printrow('geburtsdatum', 'Geburtsdatum', $geburtsdatum, 'Format: YYYYMMDD', 10);
printrow('geschlecht', 'Geschlecht', $geschlecht, 'Format: M | W', 1);
printrow('postleitzahl', 'Postleitzahl', $postleitzahl, '', 10);
}
switch($action)
{
case 'getOAuth':
@@ -144,17 +195,37 @@ $strasse = filter_input(INPUT_POST, 'strasse');
break;
case 'setMatrikelnummer':
printrow('matrikelnummer', 'Matrikelnummer', $matrikelnr);
printrow('nachname', 'Nachname', $nachname, '', 255);
printrow('vorname', 'Vorname', $vorname, '', 30);
printrow('geburtsdatum', 'Geburtsdatum', $geburtsdatum, 'Format: YYYYMMDD', 10);
printrow('geschlecht', 'Geschlecht', $geschlecht, 'Format: M | W', 1);
printrow('postleitzahl', 'Postleitzahl', $postleitzahl, '', 10);
printSetMatrikelnrRows();
printrow('staat', 'Staat', $staat, '1-3 Stellen Codex (zb A für Österreich)', 3);
printrow('svnr', 'SVNR', $svnr);
printrow('matura', 'Maturadatum', $matura, 'Format: YYYYMMDD (optional)', 10);
break;
case 'setMatrikelnummerErnp':
echo '<b>HINWEIS: Die Eintragung ins ERnP (Ergänzungsregister für natürliche Personen) sollte nur dann durchgeführt werden, <br />wenn für die Person bei "Matrikelnummer Vergabe melden" keine BPK ermittelt werden kann.
<br />Beim Punkt "BPK ermitteln" sollte dementsprechend keine BPK zurückgegeben werden.</b></br></br>';
echo '
<tr>
<td colspan="2"><b>Personmeldung</b></td>
</tr>';
printSetMatrikelnrRows();
printrow('staat', 'Staat', $staat, '1-3 Stellen Codex (zb D für Deutschland)', 3);
printrow('svnr', 'SVNR/Ersatzkennzeichen', $svnr);
printrow('matura', 'Maturadatum', $matura, 'Format: YYYYMMDD (optional)', 10);
echo '
<tr>
<td colspan="2"><b>Ernpmeldung</b></td>
</tr>';
printDropdownRow('dokumenttyp', 'Dokumenttyp', array('Reisepass' => 'REISEP', 'Personalausweis' => 'PERSAUSW'), $dokumenttyp,'');
printrow('dokumentnr', 'Dokumentnummer', $dokumentnr, '', 60);
printrow('ausgabedatum', 'Ausgabedatum', $ausgabedatum, 'Format: YYYYMMDD', 10);
printrow('ausstellbehoerde', 'Ausstellbehörde', $ausstellbehoerde, '', 40);
printrow('ausstellland', 'Ausstellland', $ausstellland, '1-3 Stellen Codex (zb D für Deutschland)', 60);
break;
case 'assignMatrikelnummer':
printrow('person_id', 'PersonID', $person_id);
break;
@@ -337,6 +408,33 @@ if (isset($_REQUEST['submit']))
echo '<br><b>Fehlgeschlagen:</b>'.$result->errormsg;
break;
case 'setMatrikelnummerErnp':
$person = new stdClass();
$person->matrikelnummer = $matrikelnr;
$person->vorname = $vorname;
$person->nachname = $nachname;
$person->geburtsdatum = $geburtsdatum;
$person->geschlecht = $geschlecht;
$person->staat = $staat;
$person->plz = $postleitzahl;
$person->matura = $matura; // Optional
$person->svnr = $svnr; // Optional
$reisepass = new stdClass();
$reisepass->dokumenttyp = $dokumenttyp;
$reisepass->ausgabedatum = $ausgabedatum;
$reisepass->ausstellBehoerde = $ausstellbehoerde;
$reisepass->ausstellland = $ausstellland;
$reisepass->dokumentnr = $dokumentnr;
$result = $dvb->setMatrikelnummerErnp(DVB_BILDUNGSEINRICHTUNG_CODE, $person, $reisepass);
if (ErrorHandler::isSuccess($result))
echo '<br><b>Erfolgreich gemeldet</b>';
else
echo '<br><b>Fehlgeschlagen:</b>'.$result->errormsg;
break;
case 'assignMatrikelnummer':
$result = $dvb->assignMatrikelnummer($person_id);
if(ErrorHandler::isSuccess($result))
@@ -371,7 +469,14 @@ if (isset($_REQUEST['submit']))
break;
}
if (isset($_POST['debug']))
echo '<div style="color: gray">'.nl2br(htmlentities($dvb->debug_output)).'</div>';
{
$output = nl2br(htmlentities($dvb->debug_output));
$output = str_replace('&gt;&lt;','&gt;<br>&lt;',$output);
$output = preg_replace('/(&lt;uni:.*?&gt;)/','<span style="color: deepskyblue">$1</span>',$output);
$output = preg_replace('/(&lt;\/uni:.*?&gt;)/','<span style="color: deepskyblue">$1</span>',$output);
echo '<div style="color: gray">'.$output.'</div>';
}
}
?>
+37
View File
@@ -196,6 +196,43 @@ if(!$result = @$db->db_query("SELECT 1 FROM public.vw_msg_vars_person LIMIT 1"))
echo '<br>Granted privileges to <strong>vilesci</strong> 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 AS "my_uid",
p.vorname AS "my_vorname",
p.nachname AS "my_nachname",
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)
JOIN public.tbl_mitarbeiter ma ON ma.mitarbeiter_uid = b.uid
WHERE ma.personalnummer > 0
);';
if(!$db->db_query($qry))
echo '<strong>public.vw_msg_vars_user: '.$db->db_last_error().'</strong><br>';
else
echo '<br>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 '<strong>public.vw_msg_vars_user: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>web</strong> on public.vw_msg_vars_user';
$qry = 'GRANT SELECT ON TABLE public.vw_msg_vars_user TO vilesci;';
if(!$db->db_query($qry))
echo '<strong>public.vw_msg_vars_user: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Granted privileges to <strong>vilesci</strong> 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"))
{
+6 -6
View File
@@ -32,7 +32,7 @@ $filters = array(
"columns": [
{"name": "Vorname"},
{"name": "Nachname"},
{"name": "Nation"},
{"name": "ZGVNation"},
{"name": "StgAbgeschickt"},
{"name": "Studiensemester"},
{"name": "LastAction"},
@@ -65,7 +65,7 @@ $filters = array(
"columns": [
{"name": "Vorname"},
{"name": "Nachname"},
{"name": "Nation"},
{"name": "ZGVNation"},
{"name": "StgAbgeschickt"},
{"name": "Studiensemester"},
{"name": "LastAction"},
@@ -104,7 +104,7 @@ $filters = array(
"columns": [
{"name": "Vorname"},
{"name": "Nachname"},
{"name": "Nation"},
{"name": "ZGVNation"},
{"name": "LastAction"},
{"name": "LastActionType"},
{"name": "User/Operator"},
@@ -139,7 +139,7 @@ $filters = array(
"columns": [
{"name": "Vorname"},
{"name": "Nachname"},
{"name": "Nation"},
{"name": "ZGVNation"},
{"name": "LastAction"},
{"name": "User/Operator"},
{"name": "LockUser"},
@@ -179,7 +179,7 @@ $filters = array(
"columns": [
{"name": "Vorname"},
{"name": "Nachname"},
{"name": "Nation"},
{"name": "ZGVNation"},
{"name": "StgAbgeschickt"},
{"name": "Studiensemester"},
{"name": "LastAction"},
@@ -217,7 +217,7 @@ $filters = array(
"columns": [
{"name": "Vorname"},
{"name": "Nachname"},
{"name": "Nation"},
{"name": "ZGVNation"},
{"name": "LastAction"},
{"name": "User/Operator"},
{"name": "LockUser"},
+20
View File
@@ -7949,6 +7949,26 @@ Any unusual occurrences
)
)
),
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'
)
)
),
array(
'app' => 'core',
'category' => 'ui',
+4 -4
View File
@@ -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))
<ErsKz>".$row->ersatzkennzeichen."</ErsKz>";
}
$datei.="
/*$datei.="
<bPK>".$row->bpk."</bPK>
";
";*/
$datei.="
<StaatsangehoerigkeitCode>".$row->staatsbuergerschaft."</StaatsangehoerigkeitCode>
+52 -4
View File
@@ -359,8 +359,46 @@ echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<head>
<title>BIS - Meldung Student - ('.$stg_kz.')</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="../../skin/vilesci.css" rel="stylesheet" type="text/css">
</head>
<link href="../../skin/vilesci.css" rel="stylesheet" type="text/css">';
include('../../include/meta/jquery.php');
include('../../include/meta/jquery-tablesorter.php');
echo ' </head>
<style>
#t1, #t2
{
width: auto;
}
</style>
<script language="JavaScript" type="text/javascript">
$(document).ready(function()
{
$("#t1").tablesorter(
{
sortList: [[6,1],[5,1],[4,1],[2,0],[3,0]],
widgets: ["zebra", "filter", "stickyHeaders"],
widgetOptions : { filter_functions:
{
// Add select menu to this column
4 : {
"Abbrecher" : function(e, n, f, i, $r, c, data) { return /Abbrecher/.test(e); },
"Absolvent" : function(e, n, f, i, $r, c, data) { return /Absolvent/.test(e); },
"Diplomand" : function(e, n, f, i, $r, c, data) { return /Diplomand/.test(e); },
"Incoming" : function(e, n, f, i, $r, c, data) { return /Incoming/.test(e); },
"Student" : function(e, n, f, i, $r, c, data) { return /Student/.test(e); },
"Unterbrecher" : function(e, n, f, i, $r, c, data) { return /Unterbrecher/.test(e); },
}
}
}
});
$("#t2").tablesorter(
{
sortList: [[0,0],[1,0]],
widgets: ["zebra", "filter", "stickyHeaders"]
});
});
</script>
<body>';
if ($rechte->isBerechtigt('admin'))
{
@@ -570,7 +608,8 @@ if(file_exists($eee))
echo '<a href="'.$eee.'">BIS-Melde&uuml;bersicht der BIS-Meldung Stg '.$stg_kz.'</a><br><br>';
}
echo '<table border=1>
echo '<table id="t1" class="tablesorter">
<thead>
<tr align=center>
<th>UID</th>
<th>PersKZ</th>
@@ -580,16 +619,25 @@ echo '<table border=1>
<th>Semester</th>
<th>Orgform</th>
</tr>
</thead>
<tbody>
',$stlist,'
</tbody>
</table>';
echo '<br>Bewerber&uuml;bersicht';
echo '<table border=1>
echo '<table id="t2" class="tablesorter">
<thead>
<tr align=center>
<th>Nachname</th>
<th>Vorname</th>
<th>Orgform</th>
<th>Geschlecht</th>
</tr>
</thead>
<tbody>
',$bwlist,'
</tbody>
</table>';
echo '</body></html>';
+61
View File
@@ -0,0 +1,61 @@
<?php
/* Copyright (C) 2020 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
*/
/**
* Prueft ob aktuelle Jobs sich im Status running befinden.
* Falls dies der Fall ist wird ein Warn Mail an den Admin verschickt.
* Dies soll verhindern dass Jobs die stecken geblieben sind nicht mehr gestartet werden da diese im
* Running Status hängen und daher nicht erneut gestartet werden.
*/
require_once(dirname(__FILE__).'/../../config/vilesci.config.inc.php');
require_once(dirname(__FILE__).'/../../include/mail.class.php');
require_once(dirname(__FILE__).'/../../include/cronjob.class.php');
//ID des Cronjobs holen
$cj = new cronjob();
if($cj->isJobRunning())
{
$cj->getAll();
$text = '';
$found = false;
foreach($cj->result as $row)
{
if($row->running && (mb_strstr($row->file, 'jobwatcher.php')===false))
{
$found = true;
$text.="Der Cronjob \"$row->titel\" mit ID $row->cronjob_id ist im Status RUNNING\n";
$text.="Er wurde zuletzt am \"$row->last_execute\" Uhr gestartet.\n";
}
}
if ($found)
{
$text.="Der Status muss gegebenenfalls manuell zurückgesetzt werden da der Job sonst nicht erneut startet\n";
$mail = new mail(MAIL_ADMIN, 'no-reply@'.DOMAIN,'CronJob - RUNNING ALERT',$text);
if(!$mail->send())
die('Fehler beim Senden des Mails!');
else
echo 'Cronjob Running Alert verschickt';
}
}
?>
+1
View File
@@ -207,6 +207,7 @@ class MySabre_CalDAV_Backend extends \Sabre\CalDAV\Backend\AbstractBackend
{
die($stdplan->errormsg);
}
$val = $stdplan->draw_week_csv('return', LVPLAN_KATEGORIE);
if(!is_null($objectUri))
{