diff --git a/application/controllers/components/SearchBar.php b/application/controllers/components/SearchBar.php index 0ff299817..eac1a4cbc 100644 --- a/application/controllers/components/SearchBar.php +++ b/application/controllers/components/SearchBar.php @@ -21,7 +21,7 @@ class SearchBar extends FHC_Controller // NOTE: // - A user must be authenticated via another controller to access this one // - It is loaded to be able to call the isLogged function later - $this->load->library('AuthLib', array(false)); + $this->load->library('AuthLib'); // Load the library SearchBarLib $this->load->library('SearchBarLib'); diff --git a/application/controllers/system/MigrateContract.php b/application/controllers/system/MigrateContract.php index 99b894473..f011be356 100644 --- a/application/controllers/system/MigrateContract.php +++ b/application/controllers/system/MigrateContract.php @@ -677,4 +677,35 @@ class MigrateContract extends CLI_Controller else return 0; } + + /** + * Habilitation wird aus der Tabelle bis.tbl_bisverwendung in die Tabelle public.tbl_mitarbeiter uebernommen + * Sofern die Person einmal in den Verwendungen eine habiliation eingetragen hat wird diese in den MA-Datensatz übernommen + * Da es in der regel öfter vorkommt dass das hakerl vergessen wurde beim Vertragswechsel als dass die person die habiliation verliert. + */ + public function migrateHabilitation() + { + $this->load->model('ressource/Mitarbeiter_model','MitarbeiterModel'); + $db = new DB_Model(); + + $qry = " + SELECT + distinct mitarbeiter_uid + FROM + bis.tbl_bisverwendung + WHERE + habilitation=true"; + + $resultHabilitation = $db->execReadOnlyQuery($qry); + + if (isSuccess($resultHabilitation) && hasData($resultHabilitation)) + { + $habilitationen = getData($resultHabilitation); + + foreach ($habilitationen as $row_habilitationen) + { + $this->MitarbeiterModel->update($row_habilitationen->mitarbeiter_uid, array('habilitation'=>true)); + } + } + } } diff --git a/application/libraries/vertragsbestandteil/Dienstverhaeltnis.php b/application/libraries/vertragsbestandteil/Dienstverhaeltnis.php index 5745c2196..309d3dfdc 100644 --- a/application/libraries/vertragsbestandteil/Dienstverhaeltnis.php +++ b/application/libraries/vertragsbestandteil/Dienstverhaeltnis.php @@ -247,7 +247,7 @@ EOTXT; $this->validationerrors[] = 'Das Beginndatum muss vor dem Endedatum liegen.'; } - if( $this->checkoverlap && !($this->vertragsart_kurzbz === 'werkvertrag') + if( $this->checkoverlap && !(in_array($this->vertragsart_kurzbz, array('werkvertrag', 'studentischehilfskr')) ) && $ci->VertragsbestandteilLib->isOverlappingExistingDV($this) ) { $this->validationerrors[] = 'Es existiert bereits ein überlappendes Dienstverhältnis'; diff --git a/application/libraries/vertragsbestandteil/VertragsbestandteilLib.php b/application/libraries/vertragsbestandteil/VertragsbestandteilLib.php index 8fb3900d5..297896a02 100644 --- a/application/libraries/vertragsbestandteil/VertragsbestandteilLib.php +++ b/application/libraries/vertragsbestandteil/VertragsbestandteilLib.php @@ -26,30 +26,35 @@ class VertragsbestandteilLib { const INCLUDE_FUTURE = true; const DO_NOT_INCLUDE_FUTURE = false; - + protected $CI; /** @var Dienstverhaeltnis_model */ protected $DienstverhaeltnisModel; /** @var Vertragsbestandteil_model */ protected $VertragsbestandteilModel; - /** + /** @var Benutzer_model */ + protected $BenutzerModel; + /** * @var GehaltsbestandteilLib */ protected $GehaltsbestandteilLib; - + protected $loggedInUser; - + public function __construct() { $this->loggedInUser = getAuthUID(); $this->CI = get_instance(); - $this->CI->load->model('vertragsbestandteil/Dienstverhaeltnis_model', + $this->CI->load->model('vertragsbestandteil/Dienstverhaeltnis_model', 'DienstverhaeltnisModel'); $this->DienstverhaeltnisModel = $this->CI->DienstverhaeltnisModel; - $this->CI->load->model('vertragsbestandteil/Vertragsbestandteil_model', + $this->CI->load->model('vertragsbestandteil/Vertragsbestandteil_model', 'VertragsbestandteilModel'); $this->VertragsbestandteilModel = $this->CI->VertragsbestandteilModel; - $this->CI->load->library('vertragsbestandteil/GehaltsbestandteilLib', + $this->CI->load->model('person/benutzer_model', + 'BenutzerModel'); + $this->BenutzerModel = $this->CI->BenutzerModel; + $this->CI->load->library('vertragsbestandteil/GehaltsbestandteilLib', null, 'GehaltsbestandteilLib'); $this->GehaltsbestandteilLib = $this->CI->GehaltsbestandteilLib; } @@ -63,49 +68,54 @@ class VertragsbestandteilLib } catch (Exception $ex) { log_message('debug', "Error handling json data from GUI. " . $ex->getMessage()); - } + } return $ret; } + public function fetchDienstverhaeltnisse($unternehmen, $stichtag=null, $mitarbeiteruid=null) { + $dvs = $this->DienstverhaeltnisModel->fetchDienstverhaeltnisse($unternehmen, $stichtag, $mitarbeiteruid); + return $dvs; + } + public function fetchDienstverhaeltnis($dienstverhaeltnis_id) { $result = $this->DienstverhaeltnisModel->load($dienstverhaeltnis_id); $dv = null; - if(null !== ($row = getData($result))) + if(null !== ($row = getData($result))) { $dv = new Dienstverhaeltnis(); $dv->hydrateByStdClass($row[0], true); } return $dv; } - + public function fetchVertragsbestandteile($dienstverhaeltnis_id, $stichtag=null, $includefuture=false) { $vbs = $this->VertragsbestandteilModel->getVertragsbestandteile($dienstverhaeltnis_id, $stichtag, $includefuture); $gbs = $this->GehaltsbestandteilLib->fetchGehaltsbestandteile($dienstverhaeltnis_id, $stichtag, $includefuture); - + $gbsByVBid = array(); - foreach( $gbs as $gb ) + foreach( $gbs as $gb ) { - if( intval($gb->getVertragsbestandteil_id()) > 0 ) + if( intval($gb->getVertragsbestandteil_id()) > 0 ) { - if( !isset($gbsByVBid[$gb->getVertragsbestandteil_id()]) + if( !isset($gbsByVBid[$gb->getVertragsbestandteil_id()]) || !is_array($gbsByVBid[$gb->getVertragsbestandteil_id()]) ) { $gbsByVBid[$gb->getVertragsbestandteil_id()] = array(); } $gbsByVBid[$gb->getVertragsbestandteil_id()][] = $gb; } } - + foreach ($vbs as $vb) { - if( isset($gbsByVBid[$vb->getVertragsbestandteil_id()]) ) + if( isset($gbsByVBid[$vb->getVertragsbestandteil_id()]) ) { $vb->setGehaltsbestandteile($gbsByVBid[$vb->getVertragsbestandteil_id()]); } } - + return $vbs; } @@ -113,22 +123,22 @@ class VertragsbestandteilLib { return $this->VertragsbestandteilModel->getVertragsbestandteil($vertragsbestandteil_id); } - + public function storeDienstverhaeltnis(Dienstverhaeltnis $dv) { if( intval($dv->getDienstverhaeltnis_id()) > 0 ) { $this->updateDienstverhaeltnis($dv); } - else + else { - $this->insertDienstverhaeltnis($dv); + $this->insertDienstverhaeltnis($dv); } } - - public function storeVertragsbestandteil(Vertragsbestandteil $vertragsbestandteil) + + public function storeVertragsbestandteil(Vertragsbestandteil $vertragsbestandteil) { - $this->CI->db->trans_begin(); + $this->CI->db->trans_begin(); try { $this->setUIDtoPGSQL(); @@ -144,7 +154,7 @@ class VertragsbestandteilLib { log_message('debug', "Transaction failed"); throw new Exception("Transaction failed"); - } + } $this->CI->db->trans_commit(); } catch (Exception $ex) @@ -152,7 +162,7 @@ class VertragsbestandteilLib log_message('debug', "Transaction rolled back. " . $ex->getMessage()); $this->CI->db->trans_rollback(); throw new Exception('Storing Vertragsbestandteil failed.'); - } + } } public function deleteDienstverhaeltnis(Dienstverhaeltnis $dv) @@ -220,13 +230,13 @@ class VertragsbestandteilLib throw new Exception('Delete Vertragsbestandteil failed.'); } } - + protected function insertDienstverhaeltnis(Dienstverhaeltnis $dv) { $dv->setInsertvon($this->loggedInUser) ->setInsertamum(strftime('%Y-%m-%d %H:%M:%S')); $ret = $this->DienstverhaeltnisModel->insert($dv->toStdClass()); - if( hasData($ret) ) + if( hasData($ret) ) { $dv->setDienstverhaeltnis_id(getData($ret)); } @@ -235,14 +245,14 @@ class VertragsbestandteilLib throw new Exception('error inserting dienstverhaeltnis'); } } - + protected function insertVertragsbestandteil(Vertragsbestandteil $vertragsbestandteil) { $vertragsbestandteil->setInsertvon($this->loggedInUser) ->setInsertamum(strftime('%Y-%m-%d %H:%M:%S')); $vertragsbestandteil->beforePersist(); $ret = $this->VertragsbestandteilModel->insert($vertragsbestandteil->baseToStdClass()); - if( hasData($ret) ) + if( hasData($ret) ) { $vertragsbestandteil->setVertragsbestandteil_id(getData($ret)); } @@ -254,19 +264,19 @@ class VertragsbestandteilLib $specialisedModel = VertragsbestandteilFactory::getVertragsbestandteilDBModel( $vertragsbestandteil->getVertragsbestandteiltyp_kurzbz()); $retspecial = $specialisedModel->insert($vertragsbestandteil->toStdClass()); - + if(isError($retspecial) ) { - throw new Exception('error updating vertragsbestandteil ' + throw new Exception('error updating vertragsbestandteil ' . $vertragsbestandteil->getVertragsbestandteiltyp_kurzbz()); } - - try + + try { $gehaltsbestandteile = $vertragsbestandteil->getGehaltsbestandteile(); $this->GehaltsbestandteilLib->storeGehaltsbestandteile($gehaltsbestandteile); - } - catch(Exception $ex) + } + catch(Exception $ex) { throw new Exception('VertragsbestandteilLib insertVertragsbestandteil ' . 'failed to store Gehaltsbestandteile. ' . $ex->getMessage()); @@ -278,7 +288,7 @@ class VertragsbestandteilLib if(!$dv->isDirty()) { return; } - + $dv->setUpdatevon($this->loggedInUser) ->setUpdateamum(strftime('%Y-%m-%d %H:%M:%S')); $ret = $this->DienstverhaeltnisModel->update($dv->getDienstverhaeltnis_id(), @@ -288,20 +298,20 @@ class VertragsbestandteilLib throw new Exception('error updating dienstverhaeltnis'); } } - + private function deleteVertragsbestandteilHelper(Vertragsbestandteil $vertragsbestandteil) { $specialisedModel = VertragsbestandteilFactory::getVertragsbestandteilDBModel( $vertragsbestandteil->getVertragsbestandteiltyp_kurzbz()); $retspecial = $specialisedModel->delete($vertragsbestandteil->getVertragsbestandteil_id()); - + if(isError($retspecial) ) { throw new Exception('error deleting vertragsbestandteil ' . $vertragsbestandteil->getVertragsbestandteiltyp_kurzbz()); } - + try { $gehaltsbestandteile = $vertragsbestandteil->getGehaltsbestandteile(); @@ -320,76 +330,118 @@ class VertragsbestandteilLib { throw new Exception('error deleting vertragsbestandteil'); } - + $vertragsbestandteil->afterDelete(); } protected function updateVertragsbestandteil(Vertragsbestandteil $vertragsbestandteil) { - if($vertragsbestandteil->isDirty()) { + if($vertragsbestandteil->isDirty()) { $vertragsbestandteil->setUpdatevon($this->loggedInUser) ->setUpdateamum(strftime('%Y-%m-%d %H:%M:%S')); $vertragsbestandteil->beforePersist(); $basedata = $vertragsbestandteil->baseToStdClass(); - if( count((array) $basedata) > 0 ) + if( count((array) $basedata) > 0 ) { $ret = $this->VertragsbestandteilModel->update( - $vertragsbestandteil->getVertragsbestandteil_id(), + $vertragsbestandteil->getVertragsbestandteil_id(), $basedata); if(isError($ret) ) { throw new Exception('error updating vertragsbestandteil'); - } + } } $specialisedData = $vertragsbestandteil->toStdClass(); - if( count((array) $specialisedData) > 0 ) + if( count((array) $specialisedData) > 0 ) { $specialisedModel = VertragsbestandteilFactory::getVertragsbestandteilDBModel( $vertragsbestandteil->getVertragsbestandteiltyp_kurzbz()); $retspecial = $specialisedModel->update( - $vertragsbestandteil->getVertragsbestandteil_id(), + $vertragsbestandteil->getVertragsbestandteil_id(), $specialisedData); if(isError($retspecial) ) { - throw new Exception('error updating vertragsbestandteil ' + throw new Exception('error updating vertragsbestandteil ' . $vertragsbestandteil->getVertragsbestandteiltyp_kurzbz()); } } } - - try + + try { $gehaltsbestandteile = $vertragsbestandteil->getGehaltsbestandteile(); $this->GehaltsbestandteilLib->storeGehaltsbestandteile($gehaltsbestandteile); - } - catch(Exception $ex) + } + catch(Exception $ex) { throw new Exception('VertragsbestandteilLib updateVertragsbestandteil ' . 'failed to store Gehaltsbestandteile. ' . $ex->getMessage()); } } - - public function isOverlappingExistingDV(Dienstverhaeltnis $dv) + + public function isOverlappingExistingDV(Dienstverhaeltnis $dv) { return $this->DienstverhaeltnisModel->isOverlappingExistingDV( - $dv->getMitarbeiter_uid(), - $dv->getOe_kurzbz(), - $dv->getVon(), + $dv->getMitarbeiter_uid(), + $dv->getOe_kurzbz(), + $dv->getVon(), $dv->getBis(), $dv->getDienstverhaeltnis_id() ); } - + + protected function hasOtherActiveDV(Dienstverhaeltnis $dv, $duedate) + { + $hasotheractivedv = false; + $result = $this->DienstverhaeltnisModel->getDVByPersonUID($dv->getMitarbeiter_uid(), null, $duedate); + $dvs = getData($result); + foreach ($dvs as $tmpdv) + { + if(intval($tmpdv->dienstverhaeltnis_id) !== intval($dv->getDienstverhaeltnis_id())) + { + $hasotheractivedv = true; + break; + } + } + return $hasotheractivedv; + } + + /** + * like endDienstverhaeltnis, but also sets aktiv flag to false + */ + public function deactivateDienstverhaeltnis(Dienstverhaeltnis $dv, $enddate, $deactivate) + { + $result = $this->endDienstverhaeltnis($dv, $enddate); + if ( $result === true) + { + if (!$deactivate) return $result; + + if(!$this->hasOtherActiveDV($dv, $enddate)) + { + $result = $this->BenutzerModel->update( + array('uid' => $dv->getMitarbeiter_uid()), + array( + 'aktiv' => false, + 'updateaktivam' => date('Y-m-d'), + 'updateaktivvon' => $this->loggedInUser + ) + ); + } + } + + return $result; + } + public function endDienstverhaeltnis(Dienstverhaeltnis $dv, $enddate) { - if( $dv->getBis() !== null && $dv->getBis() < $enddate ) + if( $dv->getBis() !== null && $dv->getBis() < $enddate ) { return 'Dienstverhältnis ist bereits beendet.'; } - + $this->CI->db->trans_begin(); try { @@ -401,13 +453,13 @@ class VertragsbestandteilLib { $this->GehaltsbestandteilLib->endGehaltsbestandteil($gb, $enddate); } - + $vbs = $this->fetchVertragsbestandteile($dv->getDienstverhaeltnis_id()); foreach ($vbs as $vb) { $this->endVertragsbestandteil($vb, $enddate); - } - + } + $dv->setBis($enddate); $this->updateDienstverhaeltnis($dv); @@ -428,23 +480,23 @@ class VertragsbestandteilLib } return true; } - + public function endVertragsbestandteil(Vertragsbestandteil $vertragsbestandteil, $enddate) { - if( $vertragsbestandteil->getBis() !== null && $vertragsbestandteil->getBis() < $enddate ) + if( $vertragsbestandteil->getBis() !== null && $vertragsbestandteil->getBis() < $enddate ) { return; } - + $vertragsbestandteil->setBis($enddate); $this->updateVertragsbestandteil($vertragsbestandteil); } - + protected function setUIDtoPGSQL() { $ret = $this->VertragsbestandteilModel - ->execReadOnlyQuery('SET LOCAL pv21.uid TO \'' + ->execReadOnlyQuery('SET LOCAL pv21.uid TO \'' . $this->loggedInUser . '\''); - if(isError($ret)) + if(isError($ret)) { throw new Exception('error setting uid to pgsql'); } diff --git a/application/models/codex/Bismeldestichtag_model.php b/application/models/codex/Bismeldestichtag_model.php index 1a45f0fbd..6ab755c8b 100644 --- a/application/models/codex/Bismeldestichtag_model.php +++ b/application/models/codex/Bismeldestichtag_model.php @@ -11,4 +11,25 @@ class Bismeldestichtag_model extends DB_Model $this->dbTable = 'bis.tbl_bismeldestichtag'; $this->pk = 'meldestichtag_id'; } + + /** + * Gets last Bismeldestichtag for a Studiensemester. + * @param $studiensemester_kurzbz + * @return object success or error + */ + public function getByStudiensemester($studiensemester_kurzbz) + { + $query = ' + SELECT + meldestichtag + FROM + bis.tbl_bismeldestichtag + JOIN public.tbl_studiensemester USING (studiensemester_kurzbz) + WHERE + studiensemester_kurzbz = ? + ORDER BY meldestichtag DESC + LIMIT 1'; + + return $this->execQuery($query, array($studiensemester_kurzbz)); + } } diff --git a/application/models/ressource/Zeitaufzeichnung_model.php b/application/models/ressource/Zeitaufzeichnung_model.php index b44861d13..8639a716a 100644 --- a/application/models/ressource/Zeitaufzeichnung_model.php +++ b/application/models/ressource/Zeitaufzeichnung_model.php @@ -21,4 +21,26 @@ class Zeitaufzeichnung_model extends DB_Model return $this->execQuery($qry); } + + public function getFullInterval($uid, $fromDate, $toDate) + { + $qry = <<execQuery($qry, array($uid, $fromDate, $toDate, $uid, $fromDate, $toDate, $fromDate, $toDate)); + } } diff --git a/application/models/vertragsbestandteil/Dienstverhaeltnis_model.php b/application/models/vertragsbestandteil/Dienstverhaeltnis_model.php index 12842e2a3..2fdfcffe2 100644 --- a/application/models/vertragsbestandteil/Dienstverhaeltnis_model.php +++ b/application/models/vertragsbestandteil/Dienstverhaeltnis_model.php @@ -143,7 +143,7 @@ EODVIDC; AND dv.oe_kurzbz = ? AND - dv.vertragsart_kurzbz != 'werkvertrag' + dv.vertragsart_kurzbz NOT IN ('werkvertrag', 'studentischehilfskr') AND ?::date <= COALESCE(dv.bis, '2170-12-31'::date) AND @@ -224,4 +224,22 @@ EOSQL; } + public function fetchDienstverhaeltnisse($unternehmen, $stichtag=null, $mitarbeiteruid=null) { + $where = "oe_kurzbz = " . $this->escape($unternehmen); + if( !is_null($stichtag) ) + { + $where .= " AND " . $this->escape($stichtag) . " BETWEEN COALESCE(von, '1970-01-01') AND COALESCE(bis, '2070-12-31')"; + } + if( !is_null($mitarbeiteruid) ) + { + $where .= " AND mitarbeiter_uid = " . $this->escape($mitarbeiteruid); + } + $res = $this->loadWhere($where); + $dvs = array(); + if(hasData($res) ) + { + $dvs = getData($res); + } + return $dvs; + } } diff --git a/cis/private/lehre/anwesenheitsliste.php b/cis/private/lehre/anwesenheitsliste.php index 8b1f28408..0ba5531c8 100644 --- a/cis/private/lehre/anwesenheitsliste.php +++ b/cis/private/lehre/anwesenheitsliste.php @@ -62,7 +62,7 @@ $stsem = $_GET['stsem']; else die($p->t('anwesenheitsliste/studiensemesterIstUngueltig')); - + $covidhelper = new CovidHelper(); ?> "; - $qry = "SELECT *, tbl_lehreinheitgruppe.studiengang_kz, tbl_lehreinheitgruppe.semester FROM lehre.tbl_lehreinheit JOIN lehre.tbl_lehreinheitgruppe USING(lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) - WHERE lehrveranstaltung_id='$lvid' AND studiensemester_kurzbz=".$db->db_add_param($stsem); - $qry = "SELECT *, tbl_lehreinheitgruppe.studiengang_kz, tbl_lehreinheitgruppe.semester ,tbl_lehreinheit.lehrform_kurzbz FROM lehre.tbl_lehreinheit JOIN lehre.tbl_lehreinheitgruppe USING(lehreinheit_id) @@ -213,7 +210,7 @@ $covidhelper = new CovidHelper(); $covid_content = "".$covid_content."

".$p->t('anwesenheitsliste/covidstatuslisten')."

"; else $covid_content = ($covidhelper->isUdfDefined()) ? $p->t('anwesenheitsliste/keineStudentenVorhanden') : ''; - + if($aw_content!='') $aw_content = "".$aw_content."

".$p->t('anwesenheitsliste/anwesenheitslisten')."

"; else @@ -241,9 +238,9 @@ $covidhelper = new CovidHelper(); { $covid_content = ''; } - + echo " - + diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php index 6dce2b6ae..a799c9fad 100644 --- a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php +++ b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php @@ -102,6 +102,22 @@ $noten_obj->getAll(); $sprachen = new sprache(); $sprachen->getAll(true); + +$noten_array = array(); +$js_noten=''; +foreach ($noten_obj->result as $row) +{ + $js_noten .= " noten_array['" . $row->note . "']='" . addslashes($row->bezeichnung) . "';\n"; + $noten_array[$row->note]['bezeichnung'] = $row->bezeichnung; + $noten_array[$row->note]['positiv'] = $row->positiv; + $noten_array[$row->note]['aktiv'] = $row->aktiv; + $noten_array[$row->note]['lehre'] = $row->lehre; + $noten_array[$row->note]['lkt_ueberschreibbar'] = $row->lkt_ueberschreibbar; + $noten_array[$row->note]['anmerkung'] = $row->anmerkung; + foreach ($sprachen->result as $s) + $noten_array[$row->note]['bezeichnung_mehrsprachig'][$s->sprache] = $row->bezeichnung_mehrsprachig[$s->sprache]; +} + $errormsg = ''; // eingetragene lv-gesamtnoten freigeben @@ -326,19 +342,7 @@ echo ' var noten_array = Array(); '; -$noten_array = array(); -foreach ($noten_obj->result as $row) -{ - echo " noten_array['" . $row->note . "']='" . addslashes($row->bezeichnung) . "';\n"; - $noten_array[$row->note]['bezeichnung'] = $row->bezeichnung; - $noten_array[$row->note]['positiv'] = $row->positiv; - $noten_array[$row->note]['aktiv'] = $row->aktiv; - $noten_array[$row->note]['lehre'] = $row->lehre; - $noten_array[$row->note]['lkt_ueberschreibbar'] = $row->lkt_ueberschreibbar; - $noten_array[$row->note]['anmerkung'] = $row->anmerkung; - foreach ($sprachen->result as $s) - $noten_array[$row->note]['bezeichnung_mehrsprachig'][$s->sprache] = $row->bezeichnung_mehrsprachig[$s->sprache]; -} +echo $js_noten; ?> @@ -806,16 +810,16 @@ foreach ($noten_obj->result as $row) for(row in rows) { linenumber++; - if( rows[row] == '' ) + if( rows[row] == '' ) { //skip empty lines continue; } zeile = rows[row].split(" "); - + if( zeile.length < 2 ) { - alertMsg = alertMsg + "Zeile " + linenumber + ': ' + alertMsg = alertMsg + "Zeile " + linenumber + ': ' + 'Zu wenig Paramter - 2 erforderlich. ' + 'Die Zeile wurde uebersprungen.' + "\n\n"; continue; @@ -917,36 +921,36 @@ foreach ($noten_obj->result as $row) for(row in rows) { linenumber++; - if( rows[row] == '' ) + if( rows[row] == '' ) { //skip empty lines continue; } zeile = rows[row].split(" "); - + if( zeile.length < 3 ) { - alertMsg = alertMsg + "Zeile " + linenumber + ': ' + alertMsg = alertMsg + "Zeile " + linenumber + ': ' + 'Zu wenig Paramter - 3 erforderlich. ' + 'Die Zeile wurde uebersprungen.' + "\n\n"; continue; } - + if( zeile[1] == '' && zeile[2] == '' ) { - // ignore lines just copied from excel + // ignore lines just copied from excel continue; } - - if( zeile[2] == '' ) + + if( zeile[2] == '' ) { alertMsg = alertMsg + "Zeile " + linenumber + ': ' + "Die Note oder Punkte fehlen. " + "Die Zeile wurde uebersprungen. \n\n"; - continue; + continue; } - - if (CIS_GESAMTNOTE_PUNKTE == false) + + if (CIS_GESAMTNOTE_PUNKTE == false) { // check for valid grades if (validGrades.indexOf(zeile[2]) === -1) @@ -958,7 +962,7 @@ foreach ($noten_obj->result as $row) } } - if( !zeile[1].match(/[0-9]{2}\.[0-9]{2}\.[0-9]{4}/) ) + if( !zeile[1].match(/[0-9]{2}\.[0-9]{2}\.[0-9]{4}/) ) { alertMsg = alertMsg + "Zeile " + linenumber + ': ' + "Das Datum "+zeile[1]+" fehlt oder ist nicht zulaessig. " diff --git a/cis/private/lehre/benotungstool/nachpruefungeintragen.php b/cis/private/lehre/benotungstool/nachpruefungeintragen.php index 873c0f173..55954fcda 100644 --- a/cis/private/lehre/benotungstool/nachpruefungeintragen.php +++ b/cis/private/lehre/benotungstool/nachpruefungeintragen.php @@ -251,7 +251,7 @@ else // deshalb wird hier versucht eine passende Lehreinheit zu ermitteln. $lehreinheit_id = getLehreinheit($db, $lvid, $student_uid, $stsem); - $response = savePruefung($lvid, $student_uid, $stsem, $lehreinheit_id, $datum, $typ, $note); + $response = savePruefung($lvid, $student_uid, $stsem, $lehreinheit_id, $datum, $typ, $note, $punkte); echo $response; } else diff --git a/cis/private/pdfExport.php b/cis/private/pdfExport.php index 6db6f885a..ad2bb1fae 100644 --- a/cis/private/pdfExport.php +++ b/cis/private/pdfExport.php @@ -65,6 +65,11 @@ $xsl_stg_kz = 0; $sign = false; +/* Signing on CIS disabled +if(isset($_GET['sign'])) + $sign = true; +*/ + // Direkte uebergabe des Studienganges dessen Vorlage verwendet werden soll if (isset($_GET['xsl_stg_kz'])) $xsl_stg_kz = $_GET['xsl_stg_kz']; @@ -298,22 +303,18 @@ if ((((isset($_GET["uid"]) && $user == $_GET["uid"])) || $rechte->isBerechtigt(' $dokument->setFilename($filename); - if (!$dokument->create($output)) - die($dokument->errormsg); - if ($sign === true) { - if ($dokument->sign($user)) - { - $dokument->output(); - } - else + if (!$dokument->sign($user)) { echo $dokument->errormsg; } } - else - $dokument->output(); + + if (!$dokument->create($output)) + die($dokument->errormsg); + + $dokument->output(); $dokument->close(); } else diff --git a/cis/private/tools/zeitaufzeichnung_projektliste.php b/cis/private/tools/zeitaufzeichnung_projektliste.php index c96e816df..817f266a2 100644 --- a/cis/private/tools/zeitaufzeichnung_projektliste.php +++ b/cis/private/tools/zeitaufzeichnung_projektliste.php @@ -60,7 +60,7 @@ if (isset($_GET['uid'])) $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($uid); - if ($rechte->isBerechtigt('admin') || (in_array($_GET['uid'], $untergebenen_arr))) + if ($rechte->isBerechtigt('admin') || $rechte->isBerechtigt('mitarbeiter/zeitsperre') || (in_array($_GET['uid'], $untergebenen_arr))) { $uid = $_GET['uid']; } diff --git a/content/mitarbeiter/mitarbeiterDBDML.php b/content/mitarbeiter/mitarbeiterDBDML.php index 5515710e6..465c545f8 100644 --- a/content/mitarbeiter/mitarbeiterDBDML.php +++ b/content/mitarbeiter/mitarbeiterDBDML.php @@ -280,7 +280,7 @@ if(!$error) if($_POST['neu']!='true') { - if(!$entwt->load($_POST['mitarbeiter_uid'],$_POST['studiengang_kz_old'])) + if(!$entwt->load($_POST['entwicklungsteam_id'])) { $error = true; $return = false; @@ -291,12 +291,6 @@ if(!$error) else { - if($entwt->exists($_POST['mitarbeiter_uid'],$_POST['studiengang_kz'])) - { - $error = true; - $errormsg = 'Es existiert bereits ein Eintrag fuer diesen Studiengang'; - $return = false; - } $entwt->new = true; $entwt->insertamum = date('Y-m-d H:i:s'); $entwt->insertvon = $user; @@ -304,6 +298,7 @@ if(!$error) if(!$error) { + $entwt->entwicklungsteam_id= $_POST['entwicklungsteam_id']; $entwt->mitarbeiter_uid = $_POST['mitarbeiter_uid']; $entwt->studiengang_kz = $_POST['studiengang_kz']; $entwt->studiengang_kz_old = $_POST['studiengang_kz_old']; @@ -328,15 +323,17 @@ if(!$error) elseif(isset($_POST['type']) && $_POST['type']=='entwicklungsteamdelete') { //Loescht einen Entwicklungsteameintrag + $entwicklungsteam_id = $_POST['entwicklungsteam_id']; + $entwt = new entwicklungsteam(); - if($entwt->delete($_POST['mitarbeiter_uid'],$_POST['studiengang_kz'])) + if($entwt->delete($entwicklungsteam_id)) { $return = true; } else { $return = false; - $errormsg = $entwt->errormsg; + $errormsg = $entwt->errormsg; } } elseif(isset($_POST['type']) && $_POST['type']=='buchungsave') @@ -803,6 +800,7 @@ if(!$error) $errormsg = $konto->errormsg; } else + { $error = false; $return = true; diff --git a/content/mitarbeiter/mitarbeiterfunktionoverlay.xul.php b/content/mitarbeiter/mitarbeiterfunktionoverlay.xul.php index 6a50145eb..dd685c5da 100644 --- a/content/mitarbeiter/mitarbeiterfunktionoverlay.xul.php +++ b/content/mitarbeiter/mitarbeiterfunktionoverlay.xul.php @@ -199,7 +199,7 @@ echo ''; class="sortDirectionIndicator" sort="rdf:http://www.technikum-wien.at/bisfunktion/rdf#sws" onclick="MitarbeiterTreeFunktionSort()"/> - '; - $anzahl_spalten = $this->db_num_fields($this->data); - for($spalte=0;$spalte<$anzahl_spalten;$spalte++) - { - $this->html.= ''; - $this->csv.='"'.$this->db_field_name($this->data,$spalte).'",'; - } - $this->html.= ''; - $this->csv=substr($this->csv,0,-1)."\n"; - while($row = $this->db_fetch_object($this->data)) - { - $this->html.= ''; - $anzahl_spalten = $this->db_num_fields($this->data); - - for($spalte=0;$spalte<$anzahl_spalten;$spalte++) - { - $name = $this->db_field_name($this->data,$spalte); - $this->html.= ''; - // Umwandeln von Punkt in Komma bei Float-Werten - if (is_numeric($row->$name)) - { - if (strpos($row->$name,'.') != false) - $row->$name = number_format($row->$name,2,",",""); - } - $this->csv.= '"'.$row->$name.'",'; - } - - $this->json[] = $row; - $this->html.= ''; - $this->csv=substr($this->csv,0,-1)."\n"; - $this->countRows++; - } - $this->html.= ''; - } - return true; - } - else - { - $this->errormsg= 'Zu dieser Statistik gibt es keine SQL Abfrage'; - return false; - } - } - - function getHtmlTable($id, $class='') - { - return '

'.$this->countRows.' Zeilen

$aw_content $covid_content
'.$this->convert_html_chars($this->db_field_name($this->data,$spalte)).'
'.$this->convert_html_chars($row->$name).'
'.$this->html.'
'; - } - - function getCSV() - { - return $this->csv; - } - - function writeCSV($filename, $delimiter=',', $enclosure='"') - { - $fh=fopen($filename,'w'); - - $fieldnames=array(); - for ($i=0; $i < $this->db_num_fields($this->data); $i++) - $fieldnames[]=$this->db_field_name($this->data,$i); - fputcsv($fh, $fieldnames, $delimiter, $enclosure); - $this->db_result_seek($this->data,0); - while ($row = $this->db_fetch_row($this->data)) - fputcsv($fh, $row, $delimiter, $enclosure); - fclose($fh); - return true; - } - - function getJSON() - { - return json_encode($this->json); - } - - function getArray() - { - return $this->json; - } - - /** - * - * Parst Variablen aus einem String und liefert diese als Array zurueck - * @param $value String mit Variablen - * z.B.: "Select * from tbl_person where person_id<'$person_id'" - * oder "../content/statistik/bewerberstatistik.php?stsem=$StSem&stg_kz=$stg_kz" - * - * @return Array mit den Variablennamen - */ - function parseVars($value) - { - $result = array(); - - $check = '/\$[0-9A-z]+/'; - preg_match_all($check, $value, $result); - $result = $result[0]; - $vars = array(); - for($i=0;$i, + * Andreas Oesterreicher + * Karl Burkhart . + */ +require_once(dirname(__FILE__).'/basis_db.class.php'); + +class statistik extends basis_db +{ + public $new; + public $statistik_obj=array(); + public $result=array(); + + public $statistik_kurzbz; + public $content_id; + public $bezeichnung; + public $url; + public $sql; + public $gruppe; + public $publish; + public $insertamum; + public $insertvon; + public $updateamum; + public $udpatevon; + public $berechtigung_kurzbz; + public $preferences; + + public $studiengang_kz; // integer + public $prestudent_id; // integer + public $geschlecht; // char(1) + public $studiensemester_kurzbz;// varchar(16) + public $ausbildungssemester;// smallint + + public $anzahl; //Hilfsvariable fuer Group BY Abfragen + + // Daten der Statistik + public $data; // DB ressource + public $html; + public $countRows; + public $csv; + public $json; + + /** + * Konstruktor + */ + public function __construct($statistik_kurzbz=null) + { + parent::__construct(); + + if(!is_null($statistik_kurzbz)) + $this->load($statistik_kurzbz); + else + $this->new=true; + } + + /** + * Laedt eine Statistik + * @param $statistik_kurzbz + */ + public function load($statistik_kurzbz) + { + $qry = "SELECT + * + FROM + public.tbl_statistik + WHERE + statistik_kurzbz = " . $this->db_add_param($statistik_kurzbz); + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + $this->statistik_kurzbz = $row->statistik_kurzbz; + $this->content_id = $row->content_id; + $this->bezeichnung = $row->bezeichnung; + $this->url = $row->url; + $this->sql = $row->sql; + $this->gruppe = $row->gruppe; + $this->publish = $this->db_parse_bool($row->publish); + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->updateamum = $row->updateamum; + $this->udpatevon = $row->updatevon; + $this->berechtigung_kurzbz = $row->berechtigung_kurzbz; + $this->preferences = $row->preferences; + $this->new = false; + + return true; + } + else + { + $this->errormsg = 'Dieser Eintrag wurde nicht gefunden: ' . $statistik_kurzbz; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Laedt alle Statistiken + * @return true wenn ok, sonst false + */ + public function getAll($order = FALSE) + { + $qry = 'SELECT * FROM public.tbl_statistik'; + + if($order) + $qry .= ' ORDER BY ' . $order; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new statistik(); + + $obj->statistik_kurzbz = $row->statistik_kurzbz; + $obj->content_id = $row->content_id; + $obj->bezeichnung = $row->bezeichnung; + $obj->url = $row->url; + $obj->sql = $row->sql; + $obj->gruppe = $row->gruppe; + $obj->publish = $this->db_parse_bool($row->publish); + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + $obj->berechtigung_kurzbz = $row->berechtigung_kurzbz; + $obj->preferences = $row->preferences; + + $this->result[] = $obj; + } + + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + /** + * Laedt alle Statistiken einer Gruppe, Parameter publish zum Filtern. + * @return true wenn ok, sonst false + */ + public function getGruppe($gruppe,$publish=null) + { + $qry = "SELECT * FROM public.tbl_statistik WHERE gruppe=".$this->db_add_param($gruppe); + if ($publish===true) + $qry.=' AND publish '; + elseif ($publish===false) + $qry.=' AND NOT publish '; + $qry.=' ORDER BY bezeichnung;'; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new statistik(); + + $obj->statistik_kurzbz = $row->statistik_kurzbz; + $obj->content_id = $row->content_id; + $obj->bezeichnung = $row->bezeichnung; + $obj->url = $row->url; + $obj->sql = $row->sql; + $obj->gruppe = $row->gruppe; + $obj->publish = $this->db_parse_bool($row->publish); + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->updateamum = $row->updateamum; + $obj->udpatevon = $row->updatevon; + $obj->berechtigung_kurzbz = $row->berechtigung_kurzbz; + $obj->preferences = $row->preferences; + + $this->result[] = $obj; + } + + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + /** + * Laedt alle Statistik Gruppen, Parameter publish zum Filtern. + * @return true wenn ok, sonst false + */ + public function getAnzahlGruppe($publish = null) + { + $qry = 'SELECT gruppe, count(*) AS anzahl FROM public.tbl_statistik '; + + if($publish === true) + { + $qry .= 'WHERE publish '; + } + elseif($publish === false) + { + $qry .= 'WHERE NOT publish '; + } + + $qry .= ' GROUP BY gruppe ORDER BY gruppe;'; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new statistik(); + + $obj->gruppe = $row->gruppe; + $obj->anzahl = $row->anzahl; + + $this->result[] = $obj; + } + + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + /** + * Speichert einen Statistik Datensatz + * @param $new boolean + * @return boolean true wenn ok false im Fehlerfalls + */ + public function save($new=null) + { + if(is_null($new)) + $new = $this->new; + + /* Da derzeit die statistik_kurzbz der primary key in der DB ist, + * darf er vorerst nur [a-zA-Z0-9_] (\w) enthalten. (bis auf autoincrement + * integer umgestellt ist) + */ + $this->statistik_kurzbz = preg_replace('/\W/', '', $this->statistik_kurzbz); + + if($new) + { + $qry = 'INSERT INTO public.tbl_statistik(statistik_kurzbz, content_id, bezeichnung, url, sql, + gruppe, publish, insertamum, insertvon, updateamum, updatevon, preferences, berechtigung_kurzbz) VALUES('. + $this->db_add_param($this->statistik_kurzbz).','. + $this->db_add_param($this->content_id,FHC_INTEGER).','. + $this->db_add_param($this->bezeichnung).','. + $this->db_add_param($this->url).','. + $this->db_add_param($this->sql).','. + $this->db_add_param($this->gruppe).','. + $this->db_add_param($this->publish, FHC_BOOLEAN).','. + $this->db_add_param($this->insertamum).','. + $this->db_add_param($this->insertvon).','. + $this->db_add_param($this->updateamum).','. + $this->db_add_param($this->updatevon).','. + $this->db_add_param($this->preferences).','. + $this->db_add_param($this->berechtigung_kurzbz).');'; + } + else + { + if($this->statistik_kurzbz_orig=='') + $this->statistik_kurzbz_orig=$this->statistik_kurzbz; + $qry = 'UPDATE public.tbl_statistik SET + content_id='.$this->db_add_param($this->content_id,FHC_INTEGER).','. + ' bezeichnung='.$this->db_add_param($this->bezeichnung).','. + ' statistik_kurzbz='.$this->db_add_param($this->statistik_kurzbz).','. + ' url='.$this->db_add_param($this->url).','. + ' sql='.$this->db_add_param($this->sql).','. + ' gruppe='.$this->db_add_param($this->gruppe).','. + ' publish='.$this->db_add_param($this->publish, FHC_BOOLEAN).','. + ' insertamum='.$this->db_add_param($this->insertamum).','. + ' insertvon='.$this->db_add_param($this->insertvon).','. + ' updateamum='.$this->db_add_param($this->updateamum).','. + ' updatevon='.$this->db_add_param($this->updatevon).','. + ' preferences='.$this->db_add_param($this->preferences).','. + ' berechtigung_kurzbz='.$this->db_add_param($this->berechtigung_kurzbz). + ' WHERE statistik_kurzbz='.$this->db_add_param($this->statistik_kurzbz_orig,FHC_STRING,false); + } + //echo $qry; + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg='Fehler beim Speichern der Daten'; + return false; + } + } + + /** + * Liefert ein Array mit den Menueeintraegen der Statistiken + * Mit dem Returnwert dieser Funktion wird die entsprechende Stelle im + * Menue ueberschrieben + * @return Array fuer Menue + */ + public function getMenueArray() + { + $arr = array(); + + $qry = "SELECT + * + FROM + public.tbl_statistik + ORDER BY gruppe, bezeichnung, statistik_kurzbz"; + + if($result = $this->db_query($qry)) + { + $lastgruppe=''; + while($row = $this->db_fetch_object($result)) + { + if($row->gruppe!='' && $row->gruppe!=$lastgruppe) + { + $arr[$row->gruppe]=array('name'=>$row->gruppe); + $lastgruppe=$row->gruppe; + } + if($row->gruppe!='') + { + $arr[$row->gruppe][$row->statistik_kurzbz]=array('name'=>$row->bezeichnung, 'link'=>APP_ROOT.'vilesci/statistik/statistik_frameset.php?statistik_kurzbz='.$row->statistik_kurzbz, 'target'=>'main'); + if($row->berechtigung_kurzbz!='') + $arr[$row->gruppe][$row->statistik_kurzbz]['permissions']=array($row->berechtigung_kurzbz); + } + else + { + $arr[$row->statistik_kurzbz]=array('name'=>$row->bezeichnung, 'link'=>APP_ROOT.'vilesci/statistik/statistik_frameset.php?statistik_kurzbz='.$row->statistik_kurzbz, 'target'=>'main'); + if($row->berechtigung_kurzbz!='') + $arr[$row->statistik_kurzbz]['permissions']=array($row->berechtigung_kurzbz); + } + } + } + return $arr; + } + + /** + * Loescht einen Eintrag + * + * @param $statistik_kurzbz + * @return true wenn ok, sonst false + */ + public function delete($statistik_kurzbz) + { + $qry = "DELETE FROM public.tbl_statistik WHERE statistik_kurzbz=".$this->db_add_param($statistik_kurzbz).";"; + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg='Fehler beim Löschen des Eintrages'; + return false; + } + } + + + + /** + * Laedt bestimmte PreStudenten + * @param studiengang_kz KZ des Studienganges der zu Laden ist + * @param studiensemester_kurzbz Studiensemester + * @param ausbildungssemester KZ Ausbildungssemester + * @param datum_stichtag Stichtag im ISO-Format, Ergebniss filtert auf <= (kleiner,gleich) + * @return true wenn ok, false im Fehlerfall + */ + public function get_prestudenten($studiengang_kz, $studiensemester_kurzbz, $ausbildungssemester=null, $datum_stichtag=null) + { + if(!is_numeric($studiengang_kz)) + { + $this->errormsg = 'Studiengang_kz muss eine gueltige Zahl sein'; + return false; + } + + if($ausbildungssemester!='' && !is_numeric($ausbildungssemester)) + { + $this->errormsg = 'Ausbildungssemester muss eine gueltige Zahl sein'; + return false; + } + + // Neue Studenten ermitteln + $qry=" + SELECT + DISTINCT prestudent_id, geschlecht, studiengang_kz, ausbildungssemester, studiensemester_kurzbz + FROM + public.tbl_prestudent + JOIN public.tbl_prestudentstatus status USING (prestudent_id) + JOIN public.tbl_person USING (person_id) + WHERE + status_kurzbz='Student' + AND NOT EXISTS(SELECT 1 FROM public.tbl_prestudentstatus WHERE status_kurzbz='Student' AND datumdb_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $stat_obj = new statistik(); + $stat_obj->studiengang_kz=$row->studiengang_kz; + $stat_obj->ausbildungssemester=$row->ausbildungssemester; + $stat_obj->prestudent_id=$row->prestudent_id; + $stat_obj->geschlecht=$row->geschlecht; + $stat_obj->studiensemester_kurzbz=$row->studiensemester_kurzbz; + $this->statistik_obj[]=$stat_obj; + } + } + else + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + + return true; + } + + /** + * + * Liefert die DropOut Rate + * @param unknown_type $studiengang_kz + * @param unknown_type $studiensemester_kurzbz + * @param unknown_type $ausbildungssemester + * @param unknown_type $datum_stichtag + */ + public function get_DropOut($studiengang_kz, $studiensemester_kurzbz, $ausbildungssemester=null, $datum_stichtag=null) + { + $this->statistik_obj=array(); + + if(!is_numeric($studiengang_kz)) + { + $this->errormsg = 'Studiengang_kz muss eine gueltige Zahl sein'; + return false; + } + + if($ausbildungssemester!='' && !is_numeric($ausbildungssemester)) + { + $this->errormsg = 'Ausbildungssemester muss eine gueltige Zahl sein'; + return false; + } + + // Neue Studenten ermitteln + $qry="SELECT DISTINCT prestudent_id, geschlecht, studiengang_kz, ausbildungssemester, studiensemester_kurzbz + FROM tbl_prestudent JOIN tbl_prestudentstatus USING (prestudent_id) JOIN tbl_person USING (person_id) + WHERE (status_kurzbz='Abbrecher') + AND studiengang_kz=".$this->db_add_param($studiengang_kz); + if($ausbildungssemester!='') + $qry.=" AND ausbildungssemester=".$this->db_add_param($ausbildungssemester); + + $qry.=" AND (studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + if (!is_null($datum_stichtag)) + $qry.=" AND datum <=".$this->db_add_param($datum_stichtag); + $qry.=') '; + $qry.=" ORDER BY prestudent_id;"; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $stat_obj = new statistik(); + $stat_obj->studiengang_kz=$row->studiengang_kz; + $stat_obj->ausbildungssemester=$row->ausbildungssemester; + $stat_obj->prestudent_id=$row->prestudent_id; + $stat_obj->geschlecht=$row->geschlecht; + $stat_obj->studiensemester_kurzbz=$row->studiensemester_kurzbz; + $this->statistik_obj[]=$stat_obj; + } + } + else + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + + return true; + } + + /** + * Laedt die Daten einer Statistik (derzeit nur SQL) + * @param $statistik_kurzbz + */ + public function loadData() + { + $this->html=''; + $this->csv=''; + $this->json=array(); + $this->countRows=0; + set_time_limit(600); + + // In case a decryption function is used then perform password substitution + $this->sql = $this->replaceSQLDecryptionPassword($this->sql); + + if($this->sql!='') + { + $sql = $this->sql; + + // Wenn im SQL ein $user vorkommt wird das durch den eingeloggten User ersetzt + if(strpos($sql, '$user')!==false) + { + $uid = get_uid(); + $sql = str_replace('$user',$this->db_add_param($uid),$sql); + } + + foreach($_REQUEST as $name=>$value) + { + // Inputs, die in eckigen Klammern stehen, werden als Array interpretiert + if (is_string($value) && substr($value, 0, 1) == '[' && substr($value, -1) == ']') + { + //Eckige Klammern entfernen und String aufsplitten + $value = substr($value, 1); + $value = substr($value, 0, -1); + $value = explode(',', $value); + } + if (is_array($value)) + { + $in = $this->db_implode4SQL($value); + $sql = str_replace('$'.$name,$in,$sql); + } + else + $sql = str_replace('$'.$name,$this->db_add_param($value),$sql); + } + if($this->data = $this->db_query($sql)) + { + $this->html.= ''; + $anzahl_spalten = $this->db_num_fields($this->data); + for($spalte=0;$spalte<$anzahl_spalten;$spalte++) + { + $this->html.= ''.$this->convert_html_chars($this->db_field_name($this->data,$spalte)).''; + $this->csv.='"'.$this->db_field_name($this->data,$spalte).'",'; + } + $this->html.= ''; + $this->csv=substr($this->csv,0,-1)."\n"; + while($row = $this->db_fetch_object($this->data)) + { + $this->html.= ''; + $anzahl_spalten = $this->db_num_fields($this->data); + + for($spalte=0;$spalte<$anzahl_spalten;$spalte++) + { + $name = $this->db_field_name($this->data,$spalte); + $this->html.= ''.$this->convert_html_chars($row->$name).''; + // Umwandeln von Punkt in Komma bei Float-Werten + if (is_numeric($row->$name)) + { + if (strpos($row->$name,'.') != false) + $row->$name = number_format($row->$name,2,",",""); + } + $this->csv.= '"'.$row->$name.'",'; + } + + $this->json[] = $row; + $this->html.= ''; + $this->csv=substr($this->csv,0,-1)."\n"; + $this->countRows++; + } + $this->html.= ''; + } + return true; + } + else + { + $this->errormsg= 'Zu dieser Statistik gibt es keine SQL Abfrage'; + return false; + } + } + + function getHtmlTable($id, $class='') + { + return '

'.$this->countRows.' Zeilen

'.$this->html.'
'; + } + + function getCSV() + { + return $this->csv; + } + + function writeCSV($filename, $delimiter=',', $enclosure='"') + { + $fh=fopen($filename,'w'); + + $fieldnames=array(); + for ($i=0; $i < $this->db_num_fields($this->data); $i++) + $fieldnames[]=$this->db_field_name($this->data,$i); + fputcsv($fh, $fieldnames, $delimiter, $enclosure); + $this->db_result_seek($this->data,0); + while ($row = $this->db_fetch_row($this->data)) + fputcsv($fh, $row, $delimiter, $enclosure); + fclose($fh); + return true; + } + + function getJSON() + { + return json_encode($this->json); + } + + function getArray() + { + return $this->json; + } + + /** + * + * Parst Variablen aus einem String und liefert diese als Array zurueck + * @param $value String mit Variablen + * z.B.: "Select * from tbl_person where person_id<'$person_id'" + * oder "../content/statistik/bewerberstatistik.php?stsem=$StSem&stg_kz=$stg_kz" + * + * @return Array mit den Variablennamen + */ + function parseVars($value) + { + $result = array(); + + $check = '/\$[0-9A-z]+/'; + preg_match_all($check, $value, $result); + $result = $result[0]; + $vars = array(); + for($i=0;$i'Mitarbeiter','permissions'=>array('admin','mitarbeiter','support'), 'Übersicht'=>array('name'=>'Übersicht', 'link'=>'personen/lektor_uebersicht.php', 'target'=>'main'), 'Zeitsperren'=>array('name'=>'Zeitsperren/Urlaub', 'link'=>'personen/urlaubsverwaltung.php', 'target'=>'main','permissions'=>array('mitarbeiter/zeitsperre:begrenzt')), + 'Projektexport'=>array('name'=>'Projektexport', 'link'=>'personen/projektexport.php', 'target'=>'main','permissions'=>array('mitarbeiter/zeitsperre')), ), 'Betriebsmittel'=>array('name'=>'Betriebsmittel', 'link'=>'stammdaten/betriebsmittel_frameset.php', 'target'=>'main','permissions'=>array('basis/betriebsmittel')), 'AnwesenheitslistenBarcode'=>array('name'=>'Anwesenheitslisten mit Barcodes', 'link'=>'personen/anwesenheitslisten_barcode.php', 'target'=>'main','permissions'=>array('basis/person')), diff --git a/public/js/components/Studierendenantrag/Leitung/Table.js b/public/js/components/Studierendenantrag/Leitung/Table.js index b08ed2e90..45c8f373a 100644 --- a/public/js/components/Studierendenantrag/Leitung/Table.js +++ b/public/js/components/Studierendenantrag/Leitung/Table.js @@ -201,7 +201,7 @@ export default { }, { field: 'name', title: this.$p.t('global', 'name'), - mutator: (value, data) => (data.vorname + ' ' + data.nachname).replace(/^\s*(.*)\s*$/, '$1'), + mutator: (value, data) => (data.nachname + ' ' + data.vorname).replace(/^\s*(.*)\s*$/, '$1'), headerFilter: 'input' }, { field: 'datum', diff --git a/public/js/components/searchbar/searchbar.js b/public/js/components/searchbar/searchbar.js index be3ebec7a..1f4dfc94b 100644 --- a/public/js/components/searchbar/searchbar.js +++ b/public/js/components/searchbar/searchbar.js @@ -103,7 +103,11 @@ export default { this.showsearchresult(); this.searchfunction(this.searchsettings) .then(function(response) { - that.searchresult = response.data.data; + if( response.data?.error === 1 ) { + that.error = 'Bei der Suche ist ein Fehler aufgetreten.'; + } else { + that.searchresult = response.data.data; + } }) .catch(function(error) { that.error = 'Bei der Suche ist ein Fehler aufgetreten.' diff --git a/rdf/diplomasupplement.xml.php b/rdf/diplomasupplement.xml.php index 4f19566d2..189aa0c05 100644 --- a/rdf/diplomasupplement.xml.php +++ b/rdf/diplomasupplement.xml.php @@ -34,19 +34,22 @@ require_once('../include/studiensemester.class.php'); require_once('../include/student.class.php'); require_once('../include/firma.class.php'); require_once('../include/note.class.php'); +require_once('../include/studienplan.class.php'); +require_once('../include/lehrveranstaltung.class.php'); +require_once('../include/lehrform.class.php'); +require_once('../include/sprache.class.php'); $datum = new datum(); $db = new basis_db(); if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") { - if(isset($_GET['uid'])) $uid = $_GET['uid']; else $uid = null; - $uid_arr = explode(";",$uid); + $uid_arr = explode(";", $uid); echo " "; echo ""; @@ -60,9 +63,11 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") vw_student.matrikelnr, vw_student.prestudent_id, tbl_studiengang.bezeichnung, tbl_studiengang.english, tbl_studiengang.studiengang_kz, tbl_studiengang.typ, tbl_studiengang.mischform, tbl_studiengang.max_semester, - tbl_studiengang.orgform_kurzbz + tbl_studiengang.orgform_kurzbz, tbl_person.matr_nr FROM campus.vw_student JOIN public.tbl_studiengang USING(studiengang_kz) + JOIN + public.tbl_person USING (person_id) WHERE uid = ".$db->db_add_param($uid_arr[$i]); @@ -96,7 +101,12 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") echo ' vornamen.']]>'; echo ' vorname.' '.$row->nachname.']]>'; echo ' convertISODate($row->gebdatum).']]>'; + + //Print in Transcript of Record echo ' '.TRIM($row->matrikelnr).''; + + //Angaben zur Person /Information identifying the holder of the qualification + echo ' matr_nr.']]>'; echo ' '.$studiengang_kz.''; $prestudent = new prestudent($row->prestudent_id); @@ -108,6 +118,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") { $studiengangbezeichnung = $studienordnung->__get('studiengangbezeichnung'); $studiengangbezeichnung_englisch = $studienordnung->__get('studiengangbezeichnung_englisch'); + $studienordnung_id =$studienordnung->__get('studienordnung_id'); } } $studiengang_bezeichnung = empty($studiengangbezeichnung) ? $row->bezeichnung : $studiengangbezeichnung; @@ -115,6 +126,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") echo ' '; echo ' '; + echo ''.$studienordnung_id.''; $prestudent = new prestudent(); $prestudent->getFirstStatus($row->prestudent_id, 'Student'); @@ -126,8 +138,12 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") { $angerechneteECTS=($semesterNumberStart-1)*30; // 30 ECTS pro Semester echo ' '.$angerechneteECTS.''; + + $end_semester_anrechnung = $semesterNumberStart - 1; + echo ' 1'; + echo ' '. $end_semester_anrechnung .''; } - echo ' '.substr($prestudent->studiensemester_kurzbz,2,6).''; + echo ' '.substr($prestudent->studiensemester_kurzbz, 2, 6).''; echo ' '.$prestudent->ausbildungssemester.''; $prestudent->getLastStatus($row->prestudent_id, null); $semesterNumberEnd = $prestudent->ausbildungssemester; @@ -254,6 +270,25 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") break; } + //Anforderungen durch Lernergebnisse des Studiums ersetzen + $addon_obj = new addon(); + $addonStgAktiv = $addon_obj->checkActiveAddon("studiengangsverwaltung"); + + if($addonStgAktiv) + { + + require_once('../addons/studiengangsverwaltung/include/qualifikationsziel.class.php'); + $qualifikationsziel = new qualifikationsziel(); + $qualifikationsziel->getAll($studienordnung_id); + if (isset($qualifikationsziel->result[0])) + { + $qualifikation_beschreibung = $qualifikationsziel->result[0]->data[1]->elements[0]; + $qualifikation_beschreibung = json2odt($qualifikation_beschreibung); + echo ""; + } + + } + if($row->typ=='d') { echo ' UNESCO ISCED 7'; @@ -275,8 +310,8 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") echo ' '; echo ' '; echo ' '; - echo ' Masterstudium (UNESCO ISCED 7)'; - echo ' Master degree program (UNESCO ISCED 7)'; + echo ' Masterstudium: UNESCO ISCED 7; Zuordnung nationaler Qualifikationsrahmen 7'; + echo ' Master degree program: UNESCO ISCED 7; Classification national qualification framework 7'; } elseif($row->typ=='b') { @@ -287,8 +322,8 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") echo ' '; echo ' '; echo ' '; - echo ' Bachelorstudium (UNESCO ISCED 6)'; - echo ' Bachelor degree program (UNESCO ISCED 6)'; + echo ' Bachelorstudium: UNESCO ISCED 6; Zuordnung nationaler Qualifikationsrahmen 6'; + echo ' Bachelor degree program: UNESCO ISCED 6; Classification national qualification framework 6'; } elseif($row->typ=='r') { @@ -329,6 +364,9 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") echo " Not applicable within this curriculum."; } + echo " Zugang zu reglementierten Berufen nach Maßgabe der berufsrechtlichen Vorschriften; Diplom im Sinne des Art.11 lit.c/d/e der Richtlinie 2005/36/EG über die Anerkennung von Berufsqualifikationen"; + echo " Access to regulated professions according to professional regulations; diploma in the sense of Art.11 lit.(c)/(d)/(e) of directive 2005/36/EG"; + $qry = "SELECT * FROM lehre.tbl_akadgrad WHERE akadgrad_id=".$db->db_add_param($akadgrad_id); $titel_de = ''; $titel_en = ''; @@ -411,7 +449,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $abschlussbeurteilung=''; // Hole Datum der Sponsion -> wenn keine vorhanden nimm aktuelles datum $qry = "SELECT - sponsion, tbl_abschlussbeurteilung.bezeichnung_english, datum, pruefungstyp_kurzbz + sponsion, tbl_abschlussbeurteilung.bezeichnung_english, datum, pruefungstyp_kurzbz, bezeichnung FROM lehre.tbl_abschlusspruefung JOIN lehre.tbl_abschlussbeurteilung USING(abschlussbeurteilung_kurzbz) @@ -431,11 +469,13 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $sponsion_datum = $datum->formatDatum($row1->sponsion, 'd.m.Y'); $abschlusspruefungsdatum = $datum->formatDatum($row1->datum, 'd.m.Y'); $abschlussbeurteilung = $row1->bezeichnung_english; + $abschlussbeurteilung_deutsch = $row1->bezeichnung; $pruefungstyp_kurzbz = $row1->pruefungstyp_kurzbz; } } echo " $pruefungstyp_kurzbz"; echo " $abschlussbeurteilung"; + echo " $abschlussbeurteilung_deutsch"; echo " $abschlusspruefungsdatum"; echo " $sponsion_datum"; @@ -578,6 +618,41 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $ects_total = 0; $ects_total_positiv = 0; + //Anrechnung Quereinsteiger + echo ' '; + + //Version Studienordnung + if($semesterNumberStart>1) + { + $maxSemester = $semesterNumberStart; + $summe_ects_orgform = 0; + $summe_sws_orgform = 0; + for($j = 1; $j <$maxSemester; $j++) + { + $summe_ects_semester = 0; + $summe_sws_semester = 0; + echo ' '; + echo ' '; + + $lv = new lehrveranstaltung(); + $lv->loadLehrveranstaltungStudienplan($studienplan_id, $j); + $tree = $lv->getLehrveranstaltungTree(); + + printLehrveranstaltungTree($tree); + + //if ($lv->lehrtyp_kurzbz!='modul') + // $summe += $lv->ects; + + echo ' '; + echo ' '; + + $summe_ects_orgform += $summe_ects_semester; + $summe_sws_orgform += $summe_sws_semester; + echo ''; + } + } + echo ' '; + echo ""; for($start = $semesterNumberStart; $start <= $semesterNumberEnd; $start++) { @@ -615,16 +690,16 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") // Array der Semester $aktuellesSemester = $semester_kurzbz; - $semester = mb_substr($semester_kurzbz[0],0,2); - $year = mb_substr($semester_kurzbz[0], 2,4); + $semester = mb_substr($semester_kurzbz[0], 0, 2); + $year = mb_substr($semester_kurzbz[0], 2, 4); if($semester == 'SS') $semester_kurzbz = 'Summer Semester '.$year; - else if($semester == 'WS') + elseif($semester == 'WS') { - $helpyear = mb_substr($year, 2,2); + $helpyear = mb_substr($year, 2, 2); $helpyear +=1; - $helpyear = sprintf("%02d",$helpyear); + $helpyear = sprintf("%02d", $helpyear); $semester_kurzbz = 'Winter Semester '.$year.'/'.$helpyear; } @@ -763,11 +838,12 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") if($result_lehrform = $db->db_query($qry_lehrform)) { while($row_lehrform = $db->db_fetch_object($result_lehrform)) - { if($y != 0) - $lehrform_kurzbz = $lehrform_kurzbz.', '.$row_lehrform->lehrform_kurzbz; - else - $lehrform_kurzbz = $row_lehrform->lehrform_kurzbz; - $y++; + { + if($y != 0) + $lehrform_kurzbz = $lehrform_kurzbz.', '.$row_lehrform->lehrform_kurzbz; + else + $lehrform_kurzbz = $row_lehrform->lehrform_kurzbz; + $y++; } } $arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['lehrform_kurzbz']= $lehrform_kurzbz; @@ -791,7 +867,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") } $datum = new datum(); - $benotungsdatum = $datum->formatDatum($benotungsdatum,'d/m/Y'); + $benotungsdatum = $datum->formatDatum($benotungsdatum, 'd/m/Y'); $arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['benotungsdatum']= $benotungsdatum; $bezeichnung_englisch = $row_stud->bezeichnung_english; @@ -1052,4 +1128,108 @@ function checkNote($note_alt, $note_neu) return false; } +//Funktionen für Andruck Studienordnung +function cmp($a, $b) +{ + return strcmp($a->bezeichnung, $b->bezeichnung); +} + +//newline \n durch string '\n' ersetzen (für Qualifikationsziele) +function json2odt($str) +{ + $str = str_replace(array("\r\n", "\r", "\n"), '\n', $str); + + return $str; +} + +function printLehrveranstaltungTree($tree) +{ + global $summe_ects_semester, $summe_sws_semester; + usort($tree, "cmp"); + foreach($tree as $lv) + { + if ($lv->export) + { + $db = new basis_db(); + $lv_alvs = new lehrveranstaltung(); + if(!$alvs = $lv_alvs->getALVS($lv->lehrveranstaltung_id, $lv->semester)) + $alvs = ''; + //Semesterwochen zum berechnen der SWS ermitteln + $qry = ' SELECT + wochen + FROM + public.tbl_semesterwochen + WHERE + studiengang_kz='.$lv->studiengang_kz.' + AND + semester='.$lv->semester; + if($wochen_stg = $db->db_query($qry)) + { + if($db->db_num_rows($wochen_stg)==1) + { + $row_wochen = $db->db_fetch_object($wochen_stg); + $wochen = $row_wochen->wochen; + } + else + $wochen = '15'; + } + if ($lv->semesterstunden!='') + $sws = ($lv->semesterstunden / $wochen); + else + $sws = 0; + + //Bezeichnung der Lehrform + $lehrform_kurzbz = new lehrform(); + $lehrform_kurzbz->load($lv->lehrform_kurzbz); + + //Klasse "sprache" instanzieren, um anschließend die Sprache(e.g. "German") in der richtigen Sprache zu bekommen("Deutsch") + $sp = new sprache(); + + + echo ' '; + echo ' semester.']]>'; + echo ' lehrtyp_kurzbz.']]>'; + echo ' bezeichnung.']]>'; + echo ' bezeichnung_english.']]>'; + echo ' kurzbz.']]>'; + echo ' lehrform_kurzbz.']]>'; + echo ' bezeichnung.']]>'; + echo ' '; + echo ' ects.']]>'; + echo ' semesterstunden.']]>'; + echo ' sws.']]>'; + echo ' lvs.']]>'; + echo ' stpllv_pflicht.']]>'; + echo ' export.']]>'; + echo ' genehmigung.']]>'; + echo ' anmerkung).']]>'; + echo ' getBezeichnung($lv->sprache, constant("DEFAULT_LANGUAGE")).']]>'; + + //Wenn Modul verpflichtend und alle Childs frei wählbar, soll Modul für ects gezählt werden + $allChildsFree = true; + foreach ($lv->childs as $child) + { + if($child->stpllv_pflicht) + { + $allChildsFree = false; + } + } + + if(($lv->lehrtyp_kurzbz!='modul' && $lv->stpllv_pflicht) || ($allChildsFree && $lv->lehrtyp_kurzbz=='modul' && $lv->stpllv_pflicht)) + { + $summe_ects_semester += $lv->ects; + $summe_sws_semester += $sws; + } + + // Darunterliegende LVs/Module + if(isset($lv->childs) && count($lv->childs)>0) + { + echo ''; + printLehrveranstaltungTree($lv->childs, count($lv->childs)); + echo ''; + } + echo ''; + } + } +} ?> diff --git a/rdf/entwicklungsteam.rdf.php b/rdf/entwicklungsteam.rdf.php index aa4f0a51a..fde2112ed 100644 --- a/rdf/entwicklungsteam.rdf.php +++ b/rdf/entwicklungsteam.rdf.php @@ -34,6 +34,11 @@ require_once('../include/entwicklungsteam.class.php'); require_once('../include/datum.class.php'); require_once('../include/studiengang.class.php'); +if(isset($_GET['entwicklungsteam_id'])) + $entwicklungsteam_id = $_GET['entwicklungsteam_id']; +else + $entwicklungsteam_id = ''; + if(isset($_GET['mitarbeiter_uid'])) $mitarbeiter_uid = $_GET['mitarbeiter_uid']; else @@ -44,6 +49,7 @@ if(isset($_GET['studiengang_kz'])) else $studiengang_kz = ''; + $datum = new datum(); $stg = new studiengang(); $stg->getAll(null, false); @@ -70,8 +76,10 @@ foreach ($entwicklungsteam->result as $row) { echo ' - - mitarbeiter_uid.']]> + + entwicklungsteam_id.']]> + mitarbeiter_uid.']]> studiengang_kz.']]> besqualcode.']]> besqual.']]> @@ -86,4 +94,4 @@ foreach ($entwicklungsteam->result as $row) } ?> - \ No newline at end of file + diff --git a/rdf/studienerfolg.rdf.php b/rdf/studienerfolg.rdf.php index 9d686cf51..7c7ff3e25 100644 --- a/rdf/studienerfolg.rdf.php +++ b/rdf/studienerfolg.rdf.php @@ -80,6 +80,10 @@ function draw_studienerfolg($uid, $studiensemester_kurzbz) $prestudentstatus = new prestudent(); $prestudentstatus->getLastStatus($student->prestudent_id,'','Student'); + $prestudent = new prestudent(); + $prestudent->getLastStatus($student->prestudent_id); + $last_status = $prestudent->status_kurzbz; + if($studiensemester_aktuell!=$prestudentstatus->studiensemester_kurzbz) $studiensemester_aktuell = $prestudentstatus->studiensemester_kurzbz; @@ -154,6 +158,7 @@ function draw_studienerfolg($uid, $studiensemester_kurzbz) $xml .= " "; $xml .= " ".DOC_ROOT."skin/images/"; $xml .= " ".$row->sembezeichnung.""; + $xml .= " ".$last_status.""; $xml .= " ".$studiensemester_aktuell.""; $xml .= " ".(($studiensemester->beschreibung != NULL) ? $studiensemester->beschreibung : $studiensemester_aktuell).""; $xml .= " ".$row->semester.""; diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index edbe7585e..f96e5d3fd 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -6826,7 +6826,7 @@ $tabellen=array( "bis.tbl_bisstandort" => array("standort_code","bezeichnung","aktiv","insertamum","insertvon","updateamum","updatevon"), "bis.tbl_bisverwendung" => array("bisverwendung_id","ba1code","ba2code","vertragsstunden","beschausmasscode","verwendung_code","mitarbeiter_uid","hauptberufcode","hauptberuflich","habilitation","beginn","ende","updateamum","updatevon","insertamum","insertvon","ext_id","dv_art","inkludierte_lehre","zeitaufzeichnungspflichtig","azgrelevant", "homeoffice"), "bis.tbl_bundesland" => array("bundesland_code","kurzbz","bezeichnung"), - "bis.tbl_entwicklungsteam" => array("mitarbeiter_uid","studiengang_kz","besqualcode","beginn","ende","updateamum","updatevon","insertamum","insertvon","ext_id"), + "bis.tbl_entwicklungsteam" => array("entwicklungsteam_id","mitarbeiter_uid","studiengang_kz","besqualcode","beginn","ende","updateamum","updatevon","insertamum","insertvon","ext_id"), "bis.tbl_gemeinde" => array("gemeinde_id","plz","name","ortschaftskennziffer","ortschaftsname","bulacode","bulabez","kennziffer"), "bis.tbl_gsstudientyp" => array("gsstudientyp_kurzbz","bezeichnung","studientyp_code"), "bis.tbl_gsprogrammtyp" => array("gsprogrammtyp_kurzbz","bezeichnung","programmtyp_code"), diff --git a/system/dbupdate_3.4.php b/system/dbupdate_3.4.php index 7baeca953..3a3f0be78 100644 --- a/system/dbupdate_3.4.php +++ b/system/dbupdate_3.4.php @@ -27,8 +27,7 @@ require_once('dbupdate_3.4/example.php'); require_once('dbupdate_3.4/example2.php'); ... */ -require_once('dbupdate_3.4/25003_notenimport_nachpruefung.php'); - +//require_once('dbupdate_3.4/25003_notenimport_nachpruefung.php'); require_once('dbupdate_3.4/26173_index_webservicelog.php'); require_once('dbupdate_3.4/24682_reihungstest_zugangscode_fuer_login.php'); require_once('dbupdate_3.4/17512_fehlercode_constraints.php'); @@ -49,10 +48,12 @@ require_once('dbupdate_3.4/30181_tabelle_anrechnung_neue_attribute_fuer_begruend require_once('dbupdate_3.4/29529_infocenter_anpassungen.php'); require_once('dbupdate_3.4/29835_uhstat1_erfassung_der_uhstat1_daten_ueber_das_bewerbungstool.php'); require_once('dbupdate_3.4/33714_erhoehter_studienbeitrag_fuer_drittsaatenangehoerig.php'); +require_once('dbupdate_3.4/33003_bis_meldung_personal.php'); require_once('dbupdate_3.4/36275_zeitaufzeichnung_karenz.php'); require_once('dbupdate_3.4/21620_neues_feld_zum_erfassen_des_ESI.php'); require_once('dbupdate_3.4/36530_bis_internationsalisierung_codextabelle_neuerungen.php'); require_once('dbupdate_3.4/34543_ux_template.php'); +require_once('dbupdate_3.4/17513_Entwicklungsteam.php'); // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -76,7 +77,7 @@ $tabellen=array( "bis.tbl_bisstandort" => array("standort_code","bezeichnung","aktiv","insertamum","insertvon","updateamum","updatevon"), "bis.tbl_bisverwendung" => array("bisverwendung_id","ba1code","ba2code","vertragsstunden","beschausmasscode","verwendung_code","mitarbeiter_uid","hauptberufcode","hauptberuflich","habilitation","beginn","ende","updateamum","updatevon","insertamum","insertvon","ext_id","dv_art","inkludierte_lehre","zeitaufzeichnungspflichtig","azgrelevant", "homeoffice"), "bis.tbl_bundesland" => array("bundesland_code","kurzbz","bezeichnung"), - "bis.tbl_entwicklungsteam" => array("mitarbeiter_uid","studiengang_kz","besqualcode","beginn","ende","updateamum","updatevon","insertamum","insertvon","ext_id"), + "bis.tbl_entwicklungsteam" => array("mitarbeiter_uid","studiengang_kz","besqualcode","beginn","ende","updateamum","updatevon","insertamum","insertvon","ext_id","entwicklungsteam_id"), "bis.tbl_gemeinde" => array("gemeinde_id","plz","name","ortschaftskennziffer","ortschaftsname","bulacode","bulabez","kennziffer"), "bis.tbl_gsstudientyp" => array("gsstudientyp_kurzbz","bezeichnung","studientyp_code"), "bis.tbl_gsprogrammtyp" => array("gsprogrammtyp_kurzbz","bezeichnung","programmtyp_code"), @@ -166,12 +167,10 @@ $tabellen=array( "fue.tbl_ressource" => array("ressource_id","student_uid","mitarbeiter_uid","betriebsmittel_id","firma_id","bezeichnung","beschreibung","insertamum","insertvon","updateamum","updatevon"), "fue.tbl_scrumteam" => array("scrumteam_kurzbz","bezeichnung","punkteprosprint","tasksprosprint","gruppe_kurzbz"), "fue.tbl_scrumsprint" => array("scrumsprint_id","scrumteam_kurzbz","sprint_kurzbz","sprintstart","sprintende","insertamum","insertvon","updateamum","updatevon"), - "hr.tbl_audit_log" => array("audit_log_id","mtime","action","username","table_name","diff_data","row_data"), "hr.tbl_sachaufwand" => array("sachaufwand_id","mitarbeiter_uid","sachaufwandtyp_kurzbz","dienstverhaeltnis_id","beginn","ende","anmerkung","insertamum","insertvon","updateamum","updatevon"), "hr.tbl_sachaufwandtyp" => array("sachaufwandtyp_kurzbz","bezeichnung","sort", "aktiv"), "hr.tbl_stundensatz" => array("stundensatz_id","uid","stundensatztyp","stundensatz","oe_kurzbz","gueltig_von","gueltig_bis","insertamum","insertvon","updateamum","updatevon"), "hr.tbl_stundensatztyp" => array("stundensatztyp","bezeichnung","aktiv","insertamum","insertvon","updateamum","updatevon"), - "hr.tbl_tmp_store" => array("tmp_store_id","typ","mitarbeiter_uid","formdata","insertvon","insertamum","updatevon","updateamum"), "hr.tbl_dienstverhaeltnis" => array("dienstverhaeltnis_id","mitarbeiter_uid","vertragsart_kurzbz","oe_kurzbz","von","bis","insertamum","insertvon","updateamum","updatevon"), "hr.tbl_vertragsart" => array("vertragsart_kurzbz","bezeichnung","anmerkung","dienstverhaeltnis","vertragsart_kurzbz_parent","aktiv","sort"), "hr.tbl_vertragsbestandteil" => array("vertragsbestandteil_id","dienstverhaeltnis_id","vertragsbestandteiltyp_kurzbz","von", "bis","insertamum", "insertvon","updateamum","updatevon"), @@ -282,7 +281,7 @@ $tabellen=array( "public.tbl_konto" => array("buchungsnr","person_id","studiengang_kz","studiensemester_kurzbz","buchungstyp_kurzbz","buchungsnr_verweis","betrag","buchungsdatum","buchungstext","mahnspanne","updateamum","updatevon","insertamum","insertvon","ext_id","credit_points", "zahlungsreferenz", "anmerkung"), "public.tbl_lehrverband" => array("studiengang_kz","semester","verband","gruppe","aktiv","bezeichnung","ext_id","orgform_kurzbz","gid"), "public.tbl_log" => array("log_id","executetime","mitarbeiter_uid","beschreibung","sql","sqlundo"), - "public.tbl_mitarbeiter" => array("mitarbeiter_uid","personalnummer","telefonklappe","kurzbz","lektor","fixangestellt","bismelden","stundensatz","ausbildungcode","ort_kurzbz","standort_id","anmerkung","insertamum","insertvon","updateamum","updatevon","ext_id","kleriker"), + "public.tbl_mitarbeiter" => array("mitarbeiter_uid","personalnummer","telefonklappe","kurzbz","lektor","fixangestellt","bismelden","stundensatz","ausbildungcode","ort_kurzbz","standort_id","anmerkung","insertamum","insertvon","updateamum","updatevon","ext_id","kleriker","habilitation"), "public.tbl_msg_attachment" => array("attachment_id","message_id","name","filename"), "public.tbl_msg_message" => array("message_id","person_id","subject","body","priority","relationmessage_id","oe_kurzbz","insertamum","insertvon"), "public.tbl_msg_recipient" => array("message_id","person_id","token","sent","sentinfo","insertamum","insertvon","oe_kurzbz"), diff --git a/system/dbupdate_3.4/17513_Entwicklungsteam.php b/system/dbupdate_3.4/17513_Entwicklungsteam.php new file mode 100644 index 000000000..ec25a0017 --- /dev/null +++ b/system/dbupdate_3.4/17513_Entwicklungsteam.php @@ -0,0 +1,121 @@ +db_query("SELECT entwicklungsteam_id FROM bis.tbl_entwicklungsteam LIMIT 1")) +{ + $qry = 'ALTER TABLE bis.tbl_entwicklungsteam ADD COLUMN entwicklungsteam_id integer;'; + + if(!$db->db_query($qry)) + echo ' bis.tbl_entwicklungsteam '.$db->db_last_error().'
'; + else + echo '
bis.tbl_entwicklungsteam: Neue Spalte entwicklungsteam_id hinzugefügt'; +} + +//Column entwicklungsteam_id mit Werten befüllen +if($result = @$db->db_query("SELECT entwicklungsteam_id FROM bis.tbl_entwicklungsteam where entwicklungsteam_id is not null LIMIT 1")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = 'UPDATE bis.tbl_entwicklungsteam et SET entwicklungsteam_id = + (SELECT rownumber FROM (SELECT ROW_NUMBER() OVER (ORDER BY mitarbeiter_uid, studiengang_kz) + AS rownumber, t.* FROM bis.tbl_entwicklungsteam t ORDER BY mitarbeiter_uid, studiengang_kz) rn + WHERE rn.mitarbeiter_uid = et.mitarbeiter_uid + AND rn.studiengang_kz = et.studiengang_kz); + '; + + if(!$db->db_query($qry)) + echo ' bis.tbl_entwicklungsteam '.$db->db_last_error().'
'; + else + echo '
bis.tbl_entwicklungsteam: Spalte bis.tbl_entwicklungsteam_id mit Werten aufgefüllt'; + } +} + +//Create Sequence bis.tbl_entwicklungsteam and grant Rights +if ($result = @$db->db_query("SELECT * FROM pg_class WHERE relname = 'tbl_entwicklungsteam_entwicklungsteam_id_seq'")) +{ + if ($db->db_num_rows($result) == 0) + { + if ($count = @$db->db_query("SELECT * FROM bis.tbl_entwicklungsteam")) + { + $count = $db->db_num_rows($count) + 1; + $qry = 'CREATE SEQUENCE bis.tbl_entwicklungsteam_entwicklungsteam_id_seq START '; + $qry .= $count; + if(!$db->db_query($qry)) + { + echo ' bis.tbl_entwicklungsteam '.$db->db_last_error().'
'; + } + else + { + echo '
bis.tbl_entwicklungsteam: Sequence bis.tbl_entwicklungsteam_entwicklungsteam_id_seq mit Startwert ' . $count . ' erstellt'; + $qry2 = "GRANT SELECT, UPDATE ON bis.tbl_entwicklungsteam_entwicklungsteam_id_seq TO vilesci; + GRANT SELECT, UPDATE ON bis.tbl_entwicklungsteam_entwicklungsteam_id_seq TO web;"; + if(!$db->db_query($qry2)) + { + echo 'bis.tbl_entwicklungsteam_entwicklungsteam_id_seqBerechtigungen: '.$db->db_last_error().'
'; + } + else + { + echo '
bis.tbl_entwicklungsteam: Rechte auf bis.tbl_entwicklungsteam_entwicklungsteam_id_seq fuer web user und vilesci gesetzt '; + } + } + + } + } +} + +//Bis.tbl_entwicklungsteam auf NOTNULL setzen +if ($result = @$db->db_query("SELECT is_nullable FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tbl_entwicklungsteam' AND column_name = 'entwicklungsteam_id' and is_nullable = 'NO'")) +{ + if($db->db_num_rows($result)==0) + { + $qry = 'ALTER TABLE bis.tbl_entwicklungsteam ALTER COLUMN entwicklungsteam_id SET NOT NULL'; + + if(!$db->db_query($qry)) + echo ' bis.tbl_entwicklungsteam '.$db->db_last_error().'
'; + else + echo '
bis.tbl_entwicklungsteam: Spalte bis.tbl_entwicklungsteam_id auf NOT NULL gesetzt'; + } +} + +//Bis.tbl_entwicklungsteam DEFAULT einstellen +if ($result = @$db->db_query("SELECT column_default FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'tbl_entwicklungsteam'AND column_name = 'entwicklungsteam_id' and column_default is null")) +{ + if($db->db_num_rows($result)==1) + { + $qry = "ALTER TABLE bis.tbl_entwicklungsteam ALTER COLUMN entwicklungsteam_id SET DEFAULT nextval('bis.tbl_entwicklungsteam_entwicklungsteam_id_seq'::regclass);"; + + if(!$db->db_query($qry)) + echo ' bis.tbl_entwicklungsteam '.$db->db_last_error().'
'; + else + echo '
bis.tbl_entwicklungsteam: Defaultwert bei Spalte bis.tbl_entwicklungsteam_id gesetzt'; + } +} + +//DELETE Constraint PRIMARY KEY pk_tbl_entwicklungsteam (mitarbeiter_uid, studiengang_kz) entfernen +if ($result = @$db->db_query("SELECT conname FROM pg_constraint WHERE conname = 'pk_tbl_entwicklungsteam'")) +{ + if($db->db_num_rows($result)==1) + { + $qry = "ALTER TABLE bis.tbl_entwicklungsteam DROP CONSTRAINT pk_tbl_entwicklungsteam;"; + + if (!$db->db_query($qry)) + echo 'bis.tbl_entwicklungsteam: '.$db->db_last_error().'
'; + else + echo '
bis.tbl_entwicklungsteam: Primary Key pk_tbl_entwicklungsteam (mitarbeiter_uid, studiengang_kz) entfernt '; + } +} + +// ADD PRIMARY KEY tbl_entwicklungsteam_pk to bis.tbl_entwicklungsteam +if ($result = @$db->db_query("SELECT conname FROM pg_constraint WHERE conname = 'tbl_entwicklungsteam_pk'")) +{ + if ($db->db_num_rows($result) == 0) + { + $qry = "ALTER TABLE bis.tbl_entwicklungsteam ADD CONSTRAINT tbl_entwicklungsteam_pk PRIMARY KEY(entwicklungsteam_id);"; + + if (!$db->db_query($qry)) + echo 'sbis.tbl_entwicklungsteam: '.$db->db_last_error().'
'; + else + echo '
bis.tbl_entwicklungsteam: Primary Key tbl_entwicklungsteam_pk (entwicklungsteam_id) hinzugefügt'; + } +} diff --git a/system/dbupdate_3.4/33003_bis_meldung_personal.php b/system/dbupdate_3.4/33003_bis_meldung_personal.php new file mode 100644 index 000000000..eb49217ea --- /dev/null +++ b/system/dbupdate_3.4/33003_bis_meldung_personal.php @@ -0,0 +1,14 @@ +db_query("SELECT habilitation FROM public.tbl_mitarbeiter LIMIT 1")) +{ + $qry = "ALTER TABLE public.tbl_mitarbeiter ADD COLUMN habilitation boolean NOT NULL DEFAULT false; + COMMENT ON COLUMN public.tbl_mitarbeiter.habilitation IS 'Zeigt an, ob Mitarbeiter habilitiert ist (BIS relevant).';"; + + if(!$db->db_query($qry)) + echo 'public.tbl_mitarbeiter '.$db->db_last_error().'
'; + else + echo '
Spalte habilitation zu Tabelle public.tbl_mitarbeiter hinzugefügt'; +} diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 1144eed90..12e251133 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -19947,6 +19947,26 @@ array( ) ) ), + array( + 'app' => 'core', + 'category' => 'ui', + 'phrase' => 'suche', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Suche', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Search', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'core', 'category' => 'studierendenantrag', @@ -22911,6 +22931,46 @@ array( ) ) ), + array( + 'app' => 'core', + 'category' => 'person', + 'phrase' => 'maennlich', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Männlich', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Male', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'person', + 'phrase' => 'weiblich', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Weiblich', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Female', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'core', 'category' => 'person', @@ -23978,6 +24038,26 @@ array( ) ) ), + array( + 'app' => 'personalverwaltung', + 'category' => 'person', + 'phrase' => 'habilitation', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Habilitation', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Habilitation', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'personalverwaltung', 'category' => 'person', @@ -24298,6 +24378,26 @@ array( ) ) ), + array( + 'app' => 'personalverwaltung', + 'category' => 'zeitaufzeichnung', + 'phrase' => 'id', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'ID', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'ID', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), // Personalverwaltung end array( 'app' => 'core', diff --git a/vilesci/bis/personalmeldung.php b/vilesci/bis/personalmeldung.php index d5a998635..cd929c24b 100644 --- a/vilesci/bis/personalmeldung.php +++ b/vilesci/bis/personalmeldung.php @@ -36,7 +36,7 @@ $uid = get_uid(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($uid); -if(!$rechte->isBerechtigt('mitarbeiter/stammdaten',null,'suid')) +if(!$rechte->isBerechtigt('mitarbeiter/stammdaten', null, 'suid')) die('Sie haben keine Berechtigung für diese Seite'); if (!$db = new basis_db()) @@ -141,11 +141,11 @@ $studiensemester = new studiensemester(); $stsem = (isset($_GET['stsem'])) ? $_GET['stsem'] : $studiensemester->getaktorNext(); // aktuelles Studiensemester $datum_obj = new datum(); -if(mb_strstr($stsem,'SS')) +if(mb_strstr($stsem, 'SS')) { $studiensemester->load($stsem); $jahr = $datum_obj->formatDatum($studiensemester->start, 'Y'); - $stichtag = date("Y-m-d", mktime(0, 0, 0, 12, 31, $jahr - 1)); // 31.12. des vorangehenden Kalenderjahres zur BIS Meldung TODO: oder Abfragetag mitgeben? + $stichtag = date("Y-m-d", mktime(0, 0, 0, 12, 31, $jahr - 1)); // 31.12. des vorangehenden Kalenderjahres zur BIS Meldung TODO: oder Abfragetag mitgeben? } else { @@ -219,7 +219,7 @@ foreach ($mitarbeiter_arr as $mitarbeiter) * - nebenberuflich Lehrender: Hauptberufscode der letzten BIS-Verwendung */ $person_obj->hauptberufcode = ($is_hauptberuflich == true) - ? NULL + ? null : $bisverwendung_arr[count($bisverwendung_arr) - 1]->hauptberufcode; @@ -258,7 +258,6 @@ foreach ($mitarbeiter_arr as $mitarbeiter) // Loop innerhalb Verwendungen mit selben Beschaeftigungsverhaeltnissen und Verwendung_codes foreach ($verwendung_tmp_arr as $verwendung_tmp) { - // Jahresvollzeitaequivalenz JVZAE ermitteln // ----------------------------------------------------------------------------------------------------- /** @@ -299,7 +298,7 @@ foreach ($mitarbeiter_arr as $mitarbeiter) } // Neue Verwendung im finalen Verwendungcontainer speichern - $verwendung_arr [] = $verwendung_obj; + $verwendung_arr[] = $verwendung_obj; } } @@ -316,7 +315,8 @@ foreach ($mitarbeiter_arr as $mitarbeiter) // Alle Benutzerfunktionen im BIS Meldungsjahr holen $benutzerfunktion = new Benutzerfunktion(); $benutzerfunktion->getBenutzerFunktionByUid( - $person_obj->uid, null, + $person_obj->uid, + null, $beginn_imJahr->format('Y-m-d'), $ende_imJahr->format('Y-m-d') ); @@ -334,7 +334,7 @@ foreach ($mitarbeiter_arr as $mitarbeiter) * Exkludiert Funktionen, die einem Lehrgang bzw. STG, die nicht BIS-gemeldet werden, zugeordnet sind. */ // ------------------------------------------------------------------------------------------------------------- - $funktion_arr = _addFunktionscontainer_Funktionscode7($person_obj->uid, $funktion_arr); + $funktion_arr = _addFunktionscontainer_Funktionscode7($person_obj->uid, $funktion_arr, $stichtag); // Container Funktion dem Container Person anhaengen // ----------------------------------------------------------------------------------------------------------------- @@ -368,7 +368,7 @@ foreach ($mitarbeiter_arr as $mitarbeiter) // Container Person dem Gesamt-Container anhaengen // ----------------------------------------------------------------------------------------------------------------- - $person_arr []= $person_obj; + $person_arr[]= $person_obj; } // ********************************************************************************************************************* @@ -380,7 +380,7 @@ _outputHTML($person_arr); $xml = _generateXML($person_arr); $xml_datei = 'bisdaten/bismeldung_mitarbeiter.xml'; -$dateiausgabe = fopen($xml_datei,'w'); +$dateiausgabe = fopen($xml_datei, 'w'); fwrite($dateiausgabe, $xml); fclose($dateiausgabe); @@ -449,7 +449,7 @@ function _add_relativesBA_und_anteiligeJVZAE($uid, $bisverwendung_arr) // Echter Dienstvertrag - d.h. Vertragsstunden sind vorhanden // Bsp. angestellte Lektoren, angestellte MA in Verwaltung/Management/Wartung // ------------------------------------------------------------------------------------------------------------- - else if ($has_vertragsstunden) + elseif ($has_vertragsstunden) { // Vertragsstunden koennen max. VZ Aequivalenz-Basiswert haben if ($bisverwendung->vertragsstunden > BIS_VOLLZEIT_ARBEITSSTUNDEN) @@ -523,7 +523,7 @@ function _add_relativesBA_und_anteiligeJVZAE($uid, $bisverwendung_arr) * (durch Abzug der eben erstellten anteiligen JVZAE fuer Lehrtaetigkeiten) */ $bisverwendung->jvzae_anteilig -= $verwendung_lehre_obj->jvzae_anteilig; - $bisverwendung_arr [] = $verwendung_lehre_obj; + $bisverwendung_arr[] = $verwendung_lehre_obj; } } } @@ -532,7 +532,7 @@ function _add_relativesBA_und_anteiligeJVZAE($uid, $bisverwendung_arr) // Sonstige Beschaeftigungsverhaeltnisse ohne Vertragsstunden // Freie Dienstvertraege auf Stundenbasis // ------------------------------------------------------------------------------------------------------------- - else if (!$has_vertragsstunden && $has_lehrtaetigkeit) + elseif (!$has_vertragsstunden && $has_lehrtaetigkeit) { /** * Verwendungen ergänzen, wenn die BIS-Verwendung als externer Mitarbeiter in Sommer- / Wintersemester @@ -565,7 +565,7 @@ function _add_relativesBA_und_anteiligeJVZAE($uid, $bisverwendung_arr) $verwendung_lehre_obj->beschaeftigungsausmass_relativ = round($lehre_sws / BIS_VOLLZEIT_SWS_EINZELSTUNDENBASIS, 2); // VZ-Basis nach BIS-Vorgabe fuer Stundenbasis $verwendung_lehre_obj->gewichtung = BIS_HALBJAHRES_GEWICHTUNG_SWS; $verwendung_lehre_obj->jvzae_anteilig = round($verwendung_lehre_obj->beschaeftigungsausmass_relativ * $verwendung_lehre_obj->gewichtung, 2); - $bisverwendung_arr []= $verwendung_lehre_obj; + $bisverwendung_arr[]= $verwendung_lehre_obj; } } } @@ -723,13 +723,13 @@ function _addVerwendung_fuerLehre_Stundenbasis($bisverwendung) * @param array $bisfunktion_arr * @return array */ -function _getFunktionscontainer_Funktionscode123456($bisfunktion_arr) +function _getFunktionscontainer_Funktionscode123456($bisfunktion_arr) { $funktion_arr = array(); foreach ($bisfunktion_arr as $bisfunktion) { - $funktion_code = NULL; + $funktion_code = null; $has_oe_lehrgang = false; // default $studiengang = new Studiengang(); @@ -784,15 +784,15 @@ function _getFunktionscontainer_Funktionscode123456($bisfunktion_arr) { $funktion_obj = new StdClass(); $funktion_obj->funktionscode = $funktion_code; - $funktion_obj->besondereQualifikationCode = NULL; + $funktion_obj->besondereQualifikationCode = null; $funktion_obj->studiengang = ($funktion_code == 5) ? array(setLeadingZero(intval($studiengang->studiengang_kz), 4)) // STG bei Funktionscode 5 melden - : NULL; + : null; // Funktionsobjekt dem Funktionscontainer anhaengen - $funktion_arr []= $funktion_obj; + $funktion_arr[]= $funktion_obj; } - else if ($funktion_code == 5) // Funktionscontainer vorhanden und Funktionscode 5 + elseif ($funktion_code == 5)// Funktionscontainer vorhanden und Funktionscode 5 { $funktion_obj_arr = array_filter($funktion_arr, function (&$obj) { return $obj->funktionscode == 5; @@ -812,17 +812,17 @@ function _getFunktionscontainer_Funktionscode123456($bisfunktion_arr) * @return array * */ -function _addFunktionscontainer_Funktionscode7($uid, $funktion_arr) +function _addFunktionscontainer_Funktionscode7($uid, $funktion_arr, $stichtag) { $entwicklungsteam = new Entwicklungsteam(); - $entwicklungsteam->getEntwicklungsteam($uid); + //nur aktuelle bzw EW-Teameinträge ohne Datumseinträgen werden berücksichtigt + $entwicklungsteam->getEntwicklungsteamBis($uid, $stichtag); $entwicklungsteam_arr = $entwicklungsteam->result; if (!empty($entwicklungsteam_arr)) { // Lehrgaenge und STG, die nicht BIS gemeldet werden, extrahieren - $entwicklungsteam_arr = array_filter($entwicklungsteam_arr, function ($obj) - { + $entwicklungsteam_arr = array_filter($entwicklungsteam_arr, function ($obj) { return !in_array($obj->studiengang_kz, BIS_EXCLUDE_STG) && $obj->studiengang_kz > 0 && @@ -834,15 +834,14 @@ function _addFunktionscontainer_Funktionscode7($uid, $funktion_arr) { // Hoechste besondere Qualifikation $besondere_qualifikation_code_arr = array(); - foreach($entwicklungsteam_arr as $row_entw) - $besondere_qualifikation_code_arr[] = $row_entw->besqualcode; - - $besondere_qualifikation_code = max($besondere_qualifikation_code_arr); - // Studiengaenge, wo Person Teil des Entwicklungsteams gewesen ist $studiengang_kz_arr = array(); foreach($entwicklungsteam_arr as $row_entw) + { + $besondere_qualifikation_code_arr[] = $row_entw->besqualcode; $studiengang_kz_arr[] = $row_entw->studiengang_kz; + } + $besondere_qualifikation_code = max($besondere_qualifikation_code_arr); sort($studiengang_kz_arr); // sortieren foreach($studiengang_kz_arr as &$studiengang_kz) // fuehrende Nullen fuer STG @@ -855,7 +854,7 @@ function _addFunktionscontainer_Funktionscode7($uid, $funktion_arr) $funktion_obj->funktionscode = 7; $funktion_obj->besondereQualifikationCode = $besondere_qualifikation_code; $funktion_obj->studiengang = $studiengang_kz_arr; - $funktion_arr []= $funktion_obj; + $funktion_arr[] = $funktion_obj; } return $funktion_arr; @@ -873,13 +872,12 @@ function _getLehrecontainer($sws_proStg_arr) if (!empty($sws_proStg_arr)) { // Lehrgaenge und STG, die nicht BIS gemeldet werden, extrahieren - $sws_proStg_arr = array_filter($sws_proStg_arr, function ($obj) - { - return - !in_array($obj->studiengang_kz, BIS_EXCLUDE_STG) && - $obj->studiengang_kz > 0 && - $obj->studiengang_kz < 10000; - }); + $sws_proStg_arr = array_filter($sws_proStg_arr, function ($obj) { + return + !in_array($obj->studiengang_kz, BIS_EXCLUDE_STG) && + $obj->studiengang_kz > 0 && + $obj->studiengang_kz < 10000; + }); } if (!empty($sws_proStg_arr)) @@ -899,7 +897,7 @@ function _getLehrecontainer($sws_proStg_arr) $lehre_obj->WintersemesterSWS = $is_wintersemester ? $sws_proStg->sws : 0.00; // Lehreobjekt dem Lehrecontainer anhaengen - $lehre_arr []= $lehre_obj; + $lehre_arr[]= $lehre_obj; } else // Lehrecontainer mit STG schon vorhanden { @@ -912,7 +910,7 @@ function _getLehrecontainer($sws_proStg_arr) { current($lehre_obj_arr)->SommersemesterSWS = $sws_proStg->sws; } - else if ($is_wintersemester) + elseif ($is_wintersemester) { current($lehre_obj_arr)->WintersemesterSWS = $sws_proStg->sws; } @@ -934,7 +932,7 @@ function _generateXML($person_arr) if(isset($erhalter->result[0])) { - $erhalter = sprintf("%03s",trim($erhalter->result[0]->erhalter_kz)); + $erhalter = sprintf("%03s", trim($erhalter->result[0]->erhalter_kz)); } else $erhalter = ''; @@ -966,8 +964,8 @@ function _generateXML($person_arr) $xml .= 'verwendung_code. ']]>'; $xml .= 'ba1code. ']]>'; $xml .= 'ba2code. ']]>'; - $xml .= 'vzae,2,'.',''). ']]>'; - $xml .= 'jvzae,2,'.',''). ']]>'; + $xml .= 'vzae, 2, '.', ''). ']]>'; + $xml .= 'jvzae, 2, '.', ''). ']]>'; $xml .= ''; } @@ -979,7 +977,7 @@ function _generateXML($person_arr) ? 'besondereQualifikationCode. ']]>' : ''; - if ($funktion->funktionscode == 5 || $funktion->funktionscode == 7) + if (($funktion->funktionscode == 5) || ($funktion->funktionscode == 7)) { if (is_array($funktion->studiengang)) { @@ -990,7 +988,7 @@ function _generateXML($person_arr) $xml .= ''; } } - else if (!is_null($funktion->studiengang)) + elseif (!is_null($funktion->studiengang)) { $xml .= ''; $xml .= 'studiengang. ']]>'; @@ -998,6 +996,24 @@ function _generateXML($person_arr) } } + // if ($funktion->funktionscode == 7) + // { + // if (is_array($funktion->studiengang)) + // { + // foreach ($funktion->studiengang as $studiengang) + // { + // $xml .= ''; + // $xml .= ''; + // $xml .= ''; + // } + // } + // elseif (!is_null($funktion->studiengang)) + // { + // $xml .= ''; + // $xml .= 'studiengang. ']]>'; + // $xml .= ''; + // } + // } $xml .= ''; } @@ -1154,7 +1170,7 @@ function _outputHTML($person_arr) '. $funktion->besondereQualifikationCode. ' '; - if ($funktion->funktionscode == 5 || $funktion->funktionscode == 7) + if (($funktion->funktionscode == 5) || ($funktion->funktionscode == 7)) { if (is_array($funktion->studiengang)) { @@ -1163,11 +1179,12 @@ function _outputHTML($person_arr) echo $studiengang.' '; } } - else if (!is_null($funktion->studiengang)) + elseif (!is_null($funktion->studiengang)) { echo $funktion->studiengang.' '; } } + echo ' '; } @@ -1306,7 +1323,7 @@ function outputPlausibilitaetschecks($person_arr) if (count($msg) > 0) { - echo "Fehler bei ".$row->vorname.' '.$row->nachname.' : '.implode($msg,', '); + echo "Fehler bei ".$row->vorname.' '.$row->nachname.' : '.implode($msg, ', '); echo "\n
"; } } diff --git a/vilesci/cronjobs/cronjob.php b/vilesci/cronjobs/cronjob.php index db38eb0e3..e40f68d37 100644 --- a/vilesci/cronjobs/cronjob.php +++ b/vilesci/cronjobs/cronjob.php @@ -48,7 +48,7 @@ foreach ($cj->result as $cronjob) if($cronjob->execute()) { echo "\n".date('d.m.Y H:i:s').' '.$cronjob->titel.'('.$cronjob->cronjob_id.') executed
'."\n"; - echo implode($cronjob->output,"\n"); + echo implode("\n",$cronjob->output); } else { diff --git a/vilesci/lehre/lehreinheiten_vorrueckung.php b/vilesci/lehre/lehreinheiten_vorrueckung.php index 9b0daff69..5afe1f3df 100644 --- a/vilesci/lehre/lehreinheiten_vorrueckung.php +++ b/vilesci/lehre/lehreinheiten_vorrueckung.php @@ -92,6 +92,18 @@ echo ' Lehreinheit Vorrueckung + +

Lehreinheiten Vorrückung

@@ -132,9 +144,9 @@ for ($i = 1;$i <= 10;$i++) } echo ''; -echo ' Von: '; $stsem_obj = new studiensemester(); -$stsem_obj->getAll(); +$stsem_obj->getAll('desc'); foreach ($stsem_obj->studiensemester as $stsem) { @@ -147,7 +159,7 @@ foreach ($stsem_obj->studiensemester as $stsem) } echo ''; -echo ' Nach: '; foreach ($stsem_obj->studiensemester as $stsem) { diff --git a/vilesci/lehre/studienplan_vorrueckung.php b/vilesci/lehre/studienplan_vorrueckung.php index e6817c5d1..c9c5f9786 100644 --- a/vilesci/lehre/studienplan_vorrueckung.php +++ b/vilesci/lehre/studienplan_vorrueckung.php @@ -108,7 +108,7 @@ echo '
'; echo ' Quelle: + + + + Monat + + + + + + + Jahr + + + + + +   +   + + + + + + + +
'; + +echo ''; +?>