diff --git a/application/models/CL/Messages_model.php b/application/models/CL/Messages_model.php index b987102dd..1361e851b 100644 --- a/application/models/CL/Messages_model.php +++ b/application/models/CL/Messages_model.php @@ -22,6 +22,7 @@ class Messages_model extends CI_Model const NO_AUTH_UID = 'online'; // hard coded uid if no authentication is performed + const CRON_PREFIX = 'cron_'; // Recipients types const TYPE_PERSONS = 'persons'; const TYPE_PRESTUDENTS = 'prestudents'; @@ -744,7 +745,13 @@ class Messages_model extends CI_Model { // In case the message is accessed via ViewMessage controller -> no authentication // If no authentication is performed then use a hard coded uid - $loggedUserUID = isLogged() ? getAuthUID() : self::NO_AUTH_UID; + // In case if a cron is performed then use the prefix and the classname + if (is_cli()) + { + $loggedUserUID = substr(self::CRON_PREFIX . $this->router->class, 0, 32); + } + else + $loggedUserUID = isLogged() ? getAuthUID() : self::NO_AUTH_UID; $message = 'Message sent from person '.$sender_id.' to '.$receiver_id.', message id: '.$message_id; if (!isEmptyString($receiverOU)) $message .= ', receiverOU: '.$receiverOU; diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php index de2bd1bca..50f0e4550 100644 --- a/application/views/system/infocenter/infocenterData.php +++ b/application/views/system/infocenter/infocenterData.php @@ -16,6 +16,8 @@ $STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\''; $ORG_NAME = '\'InfoCenter\''; $ONLINE = '\'online\''; + $SYSTEM = '\'system\''; + $CRON_PREFIX = '\'cron_%\''; $query = ' SELECT @@ -56,9 +58,22 @@ a.dokument_kurzbz in ('.$AKTE_TYP.') ) AS "AnzahlAkte", ( - SELECT CASE WHEN student.student_uid IS NULL THEN - (CASE WHEN sp.nachname IS NULL THEN l.insertvon ELSE sp.nachname END) - ELSE '. $ONLINE .' END + SELECT + CASE WHEN l.insertvon LIKE '. $CRON_PREFIX .' THEN + '. $SYSTEM .' + ELSE ( + CASE WHEN student.student_uid IS NULL THEN ( + CASE WHEN sp.nachname IS NULL THEN + l.insertvon + ELSE + sp.nachname + END + ) + ELSE + '. $ONLINE .' + END + ) + END FROM system.tbl_log l LEFT JOIN public.tbl_benutzer on l.insertvon = tbl_benutzer.uid LEFT JOIN public.tbl_person sp on tbl_benutzer.person_id = sp.person_id @@ -275,22 +290,30 @@ LIMIT 1 ) AS "ZGVMNationGruppe", ( - SELECT tbl_organisationseinheit.bezeichnung - FROM public.tbl_benutzerfunktion - JOIN public.tbl_organisationseinheit USING(oe_kurzbz) - WHERE (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von <= now()) - AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis >= now()) - AND tbl_organisationseinheit.bezeichnung = '.$ORG_NAME.' - AND tbl_benutzerfunktion.uid = ( - SELECT l.insertvon - FROM system.tbl_log l - WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.') - AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.') - AND l.person_id = p.person_id - ORDER BY l.log_id DESC - LIMIT 1 - ) - LIMIT 1 + SELECT + CASE WHEN (l.insertvon LIKE '. $CRON_PREFIX .') THEN + true + ELSE ( + CASE WHEN (tbl_organisationseinheit.bezeichnung = '. $ORG_NAME .') THEN + true + ELSE + false + END + ) + END + FROM system.tbl_log l + LEFT JOIN public.tbl_benutzerfunktion ON l.insertvon = tbl_benutzerfunktion.uid + LEFT JOIN public.tbl_organisationseinheit ON tbl_benutzerfunktion.oe_kurzbz = tbl_organisationseinheit.oe_kurzbz + WHERE l.taetigkeit_kurzbz IN ('. $TAETIGKEIT_KURZBZ . ') + AND l.logdata->>\'name\' NOT IN ('. $LOGDATA_NAME .') + AND l.person_id = p.person_id + AND ( + (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von <= now()) + AND + (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis >= now()) + ) + ORDER BY l.log_id DESC + LIMIT 1 ) AS "InfoCenterMitarbeiter" FROM public.tbl_person p LEFT JOIN ( @@ -484,7 +507,7 @@ $datasetRaw->{'ZGVMNationGruppe'} = '-'; } - if ($datasetRaw->{'InfoCenterMitarbeiter'} === null) + if ($datasetRaw->{'InfoCenterMitarbeiter'} === 'false') { $datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein'; } diff --git a/application/views/system/infocenter/infocenterFreigegebenData.php b/application/views/system/infocenter/infocenterFreigegebenData.php index 13e1d5549..9cce9f052 100644 --- a/application/views/system/infocenter/infocenterFreigegebenData.php +++ b/application/views/system/infocenter/infocenterFreigegebenData.php @@ -13,6 +13,8 @@ $ORG_NAME = '\'InfoCenter\''; $IDENTITY = '\'identity\''; $ONLINE = '\'online\''; + $SYSTEM = '\'system\''; + $CRON_PREFIX = '\'cron_%\''; $query = ' SELECT @@ -43,9 +45,23 @@ $query = ' LIMIT 1 ) AS "LastActionType", ( - SELECT CASE WHEN student.student_uid IS NULL THEN - (CASE WHEN sp.nachname IS NULL THEN l.insertvon ELSE sp.nachname END) - ELSE '. $ONLINE .' END + SELECT + CASE WHEN l.insertvon LIKE '. $CRON_PREFIX .' THEN + '. $SYSTEM .' + ELSE ( + CASE WHEN student.student_uid IS NULL THEN + ( + CASE WHEN sp.nachname IS NULL THEN + l.insertvon + ELSE + sp.nachname + END + ) + ELSE + ' . $ONLINE . ' + END + ) + END FROM system.tbl_log l LEFT JOIN public.tbl_benutzer on l.insertvon = tbl_benutzer.uid LEFT JOIN public.tbl_person sp on tbl_benutzer.person_id = sp.person_id @@ -240,21 +256,29 @@ $query = ' LIMIT 1 ) AS "ZGVMNation", ( - SELECT tbl_organisationseinheit.bezeichnung - FROM public.tbl_benutzerfunktion - JOIN public.tbl_organisationseinheit USING(oe_kurzbz) - WHERE (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von <= now()) - AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis >= now()) - AND tbl_organisationseinheit.bezeichnung = '.$ORG_NAME.' - AND tbl_benutzerfunktion.uid = ( - SELECT l.insertvon - FROM system.tbl_log l - WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.') - AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.') - AND l.person_id = p.person_id - ORDER BY l.log_id DESC - LIMIT 1 - ) + SELECT + CASE WHEN (l.insertvon LIKE '. $CRON_PREFIX .') THEN + true + ELSE ( + CASE WHEN (tbl_organisationseinheit.bezeichnung = '. $ORG_NAME .') THEN + true + ELSE + false + END + ) + END + FROM system.tbl_log l + LEFT JOIN public.tbl_benutzerfunktion ON l.insertvon = tbl_benutzerfunktion.uid + LEFT JOIN public.tbl_organisationseinheit ON tbl_benutzerfunktion.oe_kurzbz = tbl_organisationseinheit.oe_kurzbz + WHERE l.taetigkeit_kurzbz IN ('. $TAETIGKEIT_KURZBZ . ') + AND l.logdata->>\'name\' NOT IN ('. $LOGDATA_NAME .') + AND l.person_id = p.person_id + AND ( + (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von <= now()) + AND + (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis >= now()) + ) + ORDER BY l.log_id DESC LIMIT 1 ) AS "InfoCenterMitarbeiter", ( @@ -432,7 +456,7 @@ $query = ' $datasetRaw->{'ZGVMNation'} = '-'; } - if ($datasetRaw->{'InfoCenterMitarbeiter'} === null) + if ($datasetRaw->{'InfoCenterMitarbeiter'} === 'false') { $datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein'; } diff --git a/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php b/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php index ea1fab83c..7172b476e 100644 --- a/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php +++ b/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php @@ -9,6 +9,8 @@ $ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz'); $STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\''; $ORG_NAME = '\'InfoCenter\''; + $SYSTEM = '\'system\''; + $CRON_PREFIX = '\'cron_%\''; $query = ' SELECT @@ -30,7 +32,12 @@ $query = ' LIMIT 1 ) AS "LastAction", ( - SELECT l.insertvon + SELECT + CASE WHEN l.insertvon LIKE '. $CRON_PREFIX .' THEN + '. $SYSTEM .' + ELSE + l.insertvon + END FROM system.tbl_log l WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.') AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.') @@ -179,22 +186,30 @@ $query = ' LIMIT 1 ) AS "ZGVMNation", ( - SELECT tbl_organisationseinheit.bezeichnung - FROM public.tbl_benutzerfunktion - JOIN public.tbl_organisationseinheit USING(oe_kurzbz) - WHERE (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von <= now()) - AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis >= now()) - AND tbl_organisationseinheit.bezeichnung = '.$ORG_NAME.' - AND tbl_benutzerfunktion.uid = ( - SELECT l.insertvon - FROM system.tbl_log l - WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.') - AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.') - AND l.person_id = p.person_id - ORDER BY l.log_id DESC - LIMIT 1 - ) - LIMIT 1 + SELECT + CASE WHEN (l.insertvon LIKE '. $CRON_PREFIX .') THEN + true + ELSE ( + CASE WHEN (tbl_organisationseinheit.bezeichnung = '. $ORG_NAME .') THEN + true + ELSE + false + END + ) + END + FROM system.tbl_log l + LEFT JOIN public.tbl_benutzerfunktion ON l.insertvon = tbl_benutzerfunktion.uid + LEFT JOIN public.tbl_organisationseinheit ON tbl_benutzerfunktion.oe_kurzbz = tbl_organisationseinheit.oe_kurzbz + WHERE l.taetigkeit_kurzbz IN ('. $TAETIGKEIT_KURZBZ . ') + AND l.logdata->>\'name\' NOT IN ('. $LOGDATA_NAME .') + AND l.person_id = p.person_id + AND ( + (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von <= now()) + AND + (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis >= now()) + ) + ORDER BY l.log_id DESC + LIMIT 1 ) AS "InfoCenterMitarbeiter" FROM public.tbl_person p LEFT JOIN ( @@ -226,6 +241,7 @@ $query = ' ) ORDER BY "LastAction" DESC'; + $filterWidgetArray = array( 'query' => $query, 'app' => InfoCenter::APP, @@ -350,7 +366,7 @@ $query = ' $datasetRaw->{'ZGVMNation'} = '-'; } - if ($datasetRaw->{'InfoCenterMitarbeiter'} === null) + if ($datasetRaw->{'InfoCenterMitarbeiter'} === 'false') { $datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein'; }