diff --git a/application/config/fhcomplete.php b/application/config/fhcomplete.php index e5f28acde..daf66411a 100644 --- a/application/config/fhcomplete.php +++ b/application/config/fhcomplete.php @@ -189,6 +189,7 @@ $config['fhc_acl'] = array 'public.tbl_variable' => 'basis/variable', 'public.tbl_vorlage' => 'basis/vorlage', 'public.tbl_vorlagestudiengang' => 'basis/vorlagestudiengang', + 'public.vw_studiensemester' => 'basis/vw_studiensemester', 'system.tbl_appdaten' => 'basis/appdaten', 'system.tbl_benutzerrolle' => 'basis/benutzerrolle', 'system.tbl_berechtigung' => 'basis/berechtigung', diff --git a/application/controllers/api/v1/codex/Nation.php b/application/controllers/api/v1/codex/Nation.php index 2597b696e..196772958 100644 --- a/application/controllers/api/v1/codex/Nation.php +++ b/application/controllers/api/v1/codex/Nation.php @@ -28,6 +28,22 @@ class Nation extends APIv1_Controller $this->NationModel->setUID($this->_getUID()); } + public function getNation() + { + $nation_code = $this->get("nation_code"); + + if (isset($nation_code)) + { + $result = $this->NationModel->loadWhere(array('nation_code' => $nation_code)); + + $this->response($result, REST_Controller::HTTP_OK); + } + else + { + $this->response(); + } + } + public function getAll() { if (!$this->get('orderEnglish')) diff --git a/application/controllers/api/v1/codex/Orgform.php b/application/controllers/api/v1/codex/Orgform.php index be3b058de..6fa6ccf65 100644 --- a/application/controllers/api/v1/codex/Orgform.php +++ b/application/controllers/api/v1/codex/Orgform.php @@ -46,6 +46,26 @@ class Orgform extends APIv1_Controller $this->response(); } } + + /** + * @return void + */ + public function getAll() + { + $result = $this->OrgformModel->loadWhole(); + + $this->response($result, REST_Controller::HTTP_OK); + } + + /** + * @return void + */ + public function getOrgformLV() + { + $result = $this->OrgformModel->getOrgformLV(); + + $this->response($result, REST_Controller::HTTP_OK); + } /** * @return void @@ -71,13 +91,6 @@ class Orgform extends APIv1_Controller } } - public function getAll() - { - $result = $this->OrgformModel->loadWhole(); - - $this->response($result, REST_Controller::HTTP_OK); - } - private function _validate($orgform = NULL) { return true; diff --git a/application/controllers/api/v1/organisation/Studiensemester.php b/application/controllers/api/v1/organisation/Studiensemester.php index 4f1bf2ce7..6c97f5050 100644 --- a/application/controllers/api/v1/organisation/Studiensemester.php +++ b/application/controllers/api/v1/organisation/Studiensemester.php @@ -54,25 +54,212 @@ class Studiensemester extends APIv1_Controller { $art = $this->get('art'); - $result = $this->StudiensemesterModel->addOrder('start'); - if ($result->error == EXIT_SUCCESS) + $this->StudiensemesterModel->addOrder('start'); + $this->StudiensemesterModel->addLimit(1); + + if (isset($art)) { - $result = $this->StudiensemesterModel->addLimit(1); - if ($result->error == EXIT_SUCCESS) - { - if (isset($art)) - { - $result = $this->StudiensemesterModel->loadWhere(array('start >' => 'NOW()', 'SUBSTRING(studiensemester_kurzbz FROM 1 FOR 2) = ' => $art)); - } - else - { - $result = $this->StudiensemesterModel->loadWhere(array('start >' => 'NOW()')); - } - } + $result = $this->StudiensemesterModel->loadWhere( + array('start >' => 'NOW()', + 'SUBSTRING(studiensemester_kurzbz FROM 1 FOR 2) = ' => $art + ) + ); + } + else + { + $result = $this->StudiensemesterModel->loadWhere(array('start >' => 'NOW()')); } $this->response($result, REST_Controller::HTTP_OK); } + + /** + * @return void + */ + public function getAll() + { + $order = $this->get('order'); + + if (strcasecmp($order, 'DESC') == 0) + { + $this->StudiensemesterModel->addOrder('ende', 'DESC'); + } + else + { + $this->StudiensemesterModel->addOrder('ende', 'ASC'); + } + + $result = $this->StudiensemesterModel->loadWhole(); + + $this->response($result, REST_Controller::HTTP_OK); + } + + /** + * @return void + */ + public function getAkt() + { + $result = $this->StudiensemesterModel->loadWhere(array('start <=' => 'NOW()', 'ende >=' => 'NOW()')); + + $this->response($result, REST_Controller::HTTP_OK); + } + + /** + * @return void + */ + public function getAktNext() + { + $semester = $this->get('semester'); + + $result = null; + + if (!is_numeric($semester)) + { + $result = $this->StudiensemesterModel->loadWhere(array('start <=' => 'NOW()', 'ende >=' => 'NOW()')); + } + + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval) && + count($result->retval) > 0) + { + // Return $result + } + else + { + $this->StudiensemesterModel->addOrder('ende'); + $this->StudiensemesterModel->addLimit(1); + + $whereArray = array('ende >=' => 'NOW()'); + + if (is_numeric($semester)) + { + if ($semester % 2 == 0) + { + $ss = 'SS'; + } + else + { + $ss = 'WS'; + } + + $whereArray['SUBSTRING(studiensemester_kurzbz FROM 1 FOR 2) ='] = $ss; + } + + $result = $this->StudiensemesterModel->loadWhere($whereArray); + } + + $this->response($result, REST_Controller::HTTP_OK); + } + + /** + * @return void + */ + public function getLastOrAktSemester() + { + $result = $this->StudiensemesterModel->getLastOrAktSemester($this->get('days')); + + $this->response($result, REST_Controller::HTTP_OK); + } + + /** + * @return void + */ + public function getNextFrom() + { + $result = $this->StudiensemesterModel->getNextFrom($this->get('studiensemester_kurzbz')); + + $this->response($result, REST_Controller::HTTP_OK); + } + + /** + * @return void + */ + public function getPrevious() + { + $this->StudiensemesterModel->addOrder('ende', 'DESC'); + $this->StudiensemesterModel->addLimit(1); + + $result = $this->StudiensemesterModel->loadWhere(array('ende <' => 'NOW()')); + + $this->response($result, REST_Controller::HTTP_OK); + } + + /** + * @return void + */ + public function getNearest() + { + $result = $this->StudiensemesterModel->getNearest($this->get('semester')); + + $this->response($result, REST_Controller::HTTP_OK); + } + + /** + * @return void + */ + public function getFinished() + { + $limit = $this->get('limit'); + + $this->StudiensemesterModel->addOrder('ende', 'DESC'); + $this->StudiensemesterModel->addLimit($limit); + + $result = $this->StudiensemesterModel->loadWhere(array('start <=' => 'NOW()')); + + $this->response($result, REST_Controller::HTTP_OK); + } + + /** + * @return void + */ + public function getTimestamp() + { + $studiensemester_kurzbz = $this->get('studiensemester_kurzbz'); + + if (isset($studiensemester_kurzbz)) + { + $result = $this->StudiensemesterModel->load($studiensemester_kurzbz); + + if (is_array($result->retval) && count($result->retval) > 0) + { + $studiensemester = $result->retval[0]; + + if (is_object($studiensemester)) + { + $start = ""; + if (isset($studiensemester->start)) + { + $start = mktime(0, 0, 0, + mb_substr($studiensemester->start, 5, 2), + mb_substr($studiensemester->start, 8, 2), + mb_substr($studiensemester->start, 0, 4) + ); + } + + $ende = ""; + if (isset($studiensemester->ende)) + { + $ende = mktime(0, 0, 0, + mb_substr($studiensemester->ende, 5, 2), + mb_substr($studiensemester->ende, 8, 2), + mb_substr($studiensemester->ende, 0, 4) + ); + } + + $result->retval = array( + 'studiensemester_kurzbz' => $studiensemester_kurzbz, + 'start' => $start, + 'ende' => $ende + ); + } + } + + $this->response($result, REST_Controller::HTTP_OK); + } + else + { + $this->response(); + } + } /** * @return void diff --git a/application/controllers/api/v1/person/Kontakt.php b/application/controllers/api/v1/person/Kontakt.php index 00015ff78..9c08518b2 100644 --- a/application/controllers/api/v1/person/Kontakt.php +++ b/application/controllers/api/v1/person/Kontakt.php @@ -29,25 +29,82 @@ class Kontakt extends APIv1_Controller $this->KontaktModel->setUID($this->_getUID()); } - public function getKontakt() + public function getKontakt() { - $personID = $this->get("person_id"); + $kontakt_id = $this->get("kontakt_id"); - if (isset($personID)) + if (isset($kontakt_id)) { - $result = $this->KontaktModel->loadWhere(array('person_id' => $personID)); + $result = $this->KontaktModel->addJoin('public.tbl_standort', 'standort_id', 'LEFT'); + if ($result->error == EXIT_SUCCESS) + { + $result = $this->KontaktModel->addJoin('public.tbl_firma', 'firma_id', 'LEFT'); + if ($result->error == EXIT_SUCCESS) + { + $result = $this->KontaktModel->loadWhere(array('kontakt_id' => $kontakt_id)); + } + } $this->response($result, REST_Controller::HTTP_OK); } else { - $this->response(); + $this->response(); + } + } + + public function getKontaktByPersonID() + { + $person_id = $this->get("person_id"); + + if (isset($person_id)) + { + $result = $this->KontaktModel->addJoin('public.tbl_standort', 'standort_id', 'LEFT'); + if ($result->error == EXIT_SUCCESS) + { + $result = $this->KontaktModel->addJoin('public.tbl_firma', 'firma_id', 'LEFT'); + if ($result->error == EXIT_SUCCESS) + { + $result = $this->KontaktModel->loadWhere(array('person_id' => $person_id)); + } + } + + $this->response($result, REST_Controller::HTTP_OK); + } + else + { + $this->response(); + } + } + + public function getKontaktByPersonIDKontaktTyp() + { + $person_id = $this->get("person_id"); + $kontakttyp = $this->get("kontakttyp"); + + if (isset($person_id) && isset($kontakttyp)) + { + $result = $this->KontaktModel->addJoin('public.tbl_standort', 'standort_id', 'LEFT'); + if ($result->error == EXIT_SUCCESS) + { + $result = $this->KontaktModel->addJoin('public.tbl_firma', 'firma_id', 'LEFT'); + if ($result->error == EXIT_SUCCESS) + { + $result = $this->KontaktModel->loadWhere(array('person_id' => $person_id, 'kontakttyp' => $kontakttyp)); + } + } + + $this->response($result, REST_Controller::HTTP_OK); + } + else + { + $this->response(); } } public function postKontakt() { - $post = $this->_parseData($this->post()); + $post = $this->_parseData($this->post()); if (is_array($post)) { diff --git a/application/core/FHC_Model.php b/application/core/FHC_Model.php index 4bd19aeb8..a4cc9b4e7 100644 --- a/application/core/FHC_Model.php +++ b/application/core/FHC_Model.php @@ -11,11 +11,19 @@ class FHC_Model extends CI_Model $this->lang->load('fhc_model'); $this->lang->load('fhcomplete'); - $uid = NULL; - if (is_null($uid) && isset($this->session->uid)) + $uid = null; + + // Get UID from CI session + if(isset($this->session->uid)) { $uid = $this->session->uid; } + // Get UID from the environment (HTTP authentication via authentication.class.php) + else if(isset($_SERVER['PHP_AUTH_USER'])) + { + $uid = $_SERVER['PHP_AUTH_USER']; + } + $this->load->library('FHC_DB_ACL', array('uid' => $uid)); } diff --git a/application/models/codex/Orgform_model.php b/application/models/codex/Orgform_model.php index 509a617cc..1a08b17e3 100644 --- a/application/models/codex/Orgform_model.php +++ b/application/models/codex/Orgform_model.php @@ -1,7 +1,7 @@ dbTable = 'bis.tbl_orgform'; $this->pk = 'orgform_kurzbz'; } -} + + public function getOrgformLV() + { + // Checks if the operation is permitted by the API caller + if (! $this->fhc_db_acl->isBerechtigt($this->acl['bis.tbl_orgform'], 's')) + return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl['bis.tbl_orgform'], FHC_MODEL_ERROR); + + $query = "SELECT * + FROM bis.tbl_orgform + WHERE orgform_kurzbz NOT IN ('VBB', 'ZGS') + ORDER BY orgform_kurzbz"; + + $result = $this->db->query($query); + + if (is_object($result)) + return $this->_success($result->result()); + else + return $this->_error($this->db->error(), FHC_DB_ERROR); + } +} \ No newline at end of file diff --git a/application/models/organisation/Studiensemester_model.php b/application/models/organisation/Studiensemester_model.php index ebf0654ac..e7eb26b18 100644 --- a/application/models/organisation/Studiensemester_model.php +++ b/application/models/organisation/Studiensemester_model.php @@ -1,7 +1,7 @@ dbTable = 'public.tbl_studiensemester'; $this->pk = 'studiensemester_kurzbz'; } -} + + public function getLastOrAktSemester($days = 60) + { + // Checks if the operation is permitted by the API caller + if (! $this->fhc_db_acl->isBerechtigt($this->acl['public.tbl_studiensemester'], 's')) + return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl['public.tbl_studiensemester'], FHC_MODEL_ERROR); + + if (!is_numeric($days)) + { + $days = 60; + } + + $query = "SELECT studiensemester_kurzbz + FROM public.tbl_studiensemester + WHERE start < NOW() - '" . $days . " DAYS'::INTERVAL + ORDER BY start DESC + LIMIT 1"; + + $result = $this->db->query($query); + + if (is_object($result)) + return $this->_success($result->result()); + else + return $this->_error($this->db->error(), FHC_DB_ERROR); + } + + public function getNextFrom($studiensemester_kurzbz) + { + // Checks if the operation is permitted by the API caller + if (! $this->fhc_db_acl->isBerechtigt($this->acl['public.tbl_studiensemester'], 's')) + return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl['public.tbl_studiensemester'], FHC_MODEL_ERROR); + + $query = "SELECT studiensemester_kurzbz, + start, + ende + FROM public.tbl_studiensemester + WHERE start > ( + SELECT ende + FROM public.tbl_studiensemester + WHERE studiensemester_kurzbz = ? + ) + ORDER BY start + LIMIT 1"; + + $result = $this->db->query($query, array($studiensemester_kurzbz)); + + if (is_object($result)) + return $this->_success($result->result()); + else + return $this->_error($this->db->error(), FHC_DB_ERROR); + } + + /** + * @return void + */ + public function getNearest($semester = '') + { + // Checks if the operation is permitted by the API caller + if (! $this->fhc_db_acl->isBerechtigt($this->acl['public.vw_studiensemester'], 's')) + return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl['public.vw_studiensemester'], FHC_MODEL_ERROR); + + $query = "SELECT studiensemester_kurzbz, + start, + ende + FROM public.vw_studiensemester"; + + if (is_numeric($semester)) + { + if ($semester % 2 == 0) + { + $ss = 'SS'; + } + else + { + $ss = 'WS'; + } + + $query .= " WHERE SUBSTRING(studiensemester_kurzbz FROM 1 FOR 2) = '" . $ss . "'"; + } + + $query .= " ORDER BY delta LIMIT 1"; + + $result = $this->db->query($query); + + if (is_object($result)) + return $this->_success($result->result()); + else + return $this->_error($this->db->error(), FHC_DB_ERROR); + } +} \ No newline at end of file diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php index f14de0bd8..a186ce08e 100644 --- a/application/models/person/Person_model.php +++ b/application/models/person/Person_model.php @@ -15,7 +15,7 @@ class Person_model extends DB_Model /** * */ - public function checkBewerbung($email, $studiensemester_kurzbz = NULL) + public function checkBewerbung($email, $studiensemester_kurzbz = null) { // Checks if the operation is permitted by the API caller if (! $this->fhc_db_acl->isBerechtigt($this->acl['public.tbl_person'], 's')) @@ -33,9 +33,9 @@ class Person_model extends DB_Model if (! $this->fhc_db_acl->isBerechtigt($this->acl['public.tbl_prestudentstatus'], 's')) return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl['public.tbl_prestudentstatus'], FHC_MODEL_ERROR); - $result = NULL; + $result = null; - if(is_null($studiensemester_kurzbz)) + if (is_null($studiensemester_kurzbz)) { $checkBewerbungQuery = "SELECT DISTINCT p.person_id, p.zugangscode, p.insertamum FROM public.tbl_person p JOIN public.tbl_kontakt k ON p.person_id = k.person_id @@ -63,9 +63,9 @@ class Person_model extends DB_Model $result = $this->db->query($checkBewerbungQuery, array($email, $email, $email, $studiensemester_kurzbz)); } - if(is_object($result)) + if (is_object($result)) return $this->_success($result->result()); else return $this->_error($this->db->error(), FHC_DB_ERROR); } -} +} \ No newline at end of file diff --git a/include/AddonAuthentication.php b/include/AddonAuthentication.php index 337eee88a..a67ea260b 100644 --- a/include/AddonAuthentication.php +++ b/include/AddonAuthentication.php @@ -1,5 +1,7 @@ db_add_param($code).';'; + $result = parent::loadWhere(array('nation_code' => $code)); - if(!$this->db_query($qry)) + if (!is_object($result) || (is_object($result) && $result->error != EXIT_SUCCESS)) { $this->errormsg = 'Fehler bei einer Datenbankabfrage'; return false; } - if($row = $this->db_fetch_object()) + if(is_array($result->retval) && count($result->retval) == 1) { $this->code = $code; + + $row = $result->retval[0]; $this->sperre = $this->db_parse_bool($row->sperre); $this->kontinent = $row->kontinent; @@ -104,19 +106,40 @@ class nation extends Nation_model * @param ohnesperre wenn dieser Parameter auf true gesetzt ist werden * nur die nationen geliefert dessen Buerger bei uns studieren duerfen */ - public function getAll($ohnesperre=false, $orderEnglish=false) + public function getAll($ohnesperre = false, $orderEnglish = false) { //Lesen der Daten aus der Datenbank - $qry = $this->_getNationQuery($ohnesperre, $orderEnglish); + if (!$orderEnglish) + { + $result = parent::addOrder('kurztext'); + } + else + { + $result = parent::addOrder('engltext'); + } + + if ($result->error == EXIT_SUCCESS) + { + if ($ohnesperre) + { + $result = parent::loadWhere('sperre IS NULL'); + } + else + { + $result = parent::loadWhole(); + } + } - if(!$this->db_query($qry)) + if (!is_object($result) || (is_object($result) && ($result->error != EXIT_SUCCESS || !is_array($result->retval)))) { $this->errormsg = 'Fehler bei einer Datenbankabfrage'; return false; } - while($row = $this->db_fetch_object()) + for ($i = 0; $i < count($result->retval); $i++) { + $row = $result->retval[$i]; + $nation = new nation(); $nation->code = $row->nation_code; diff --git a/include/organisationsform.class.php b/include/organisationsform.class.php index b568aefe0..37f444bd8 100644 --- a/include/organisationsform.class.php +++ b/include/organisationsform.class.php @@ -139,19 +139,22 @@ class organisationsform extends Orgform_model */ public function getOrgformLV() { - $qry = "SELECT * FROM bis.tbl_orgform WHERE orgform_kurzbz NOT IN ('VBB', 'ZGS') ORDER BY orgform_kurzbz"; - if($result = $this->db_query($qry)) + $result = parent::getOrgformLV(); + + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval)) { - while($row = $this->db_fetch_object($result)) + for ($i = 0; $i < count($result->retval); $i++) { - $orgform = new organisationsform(); + $row = $result->retval[$i]; - $orgform->orgform_kurzbz = $row->orgform_kurzbz; - $orgform->code = $row->code; - $orgform->bezeichnung = $row->bezeichnung; - $orgform->rolle = $row->rolle; + $orgform = new organisationsform(); - $this->result[] = $orgform; + $orgform->orgform_kurzbz = $row->orgform_kurzbz; + $orgform->code = $row->code; + $orgform->bezeichnung = $row->bezeichnung; + $orgform->rolle = $row->rolle; + + $this->result[] = $orgform; } return true; } @@ -159,6 +162,6 @@ class organisationsform extends Orgform_model { $this->errormsg = 'Fehler beim Laden der Daten'; return false; - } + } } -} +} \ No newline at end of file diff --git a/include/person.class.php b/include/person.class.php index cc83fa701..ef20a5821 100644 --- a/include/person.class.php +++ b/include/person.class.php @@ -92,18 +92,18 @@ class person extends Person_model //person_id auf gueltigkeit pruefen if (is_numeric($personId) && $personId != '') { - $result = $this->getPerson($personId); + $result = parent::load($personId); - if (!is_object($result)) + if (!is_object($result) || (is_object($result) && $result->error != EXIT_SUCCESS)) { $this->errormsg = "Fehler beim Lesen der Personendaten\n"; return false; } - - $row = $result->row(); - if (isset($row)) + if(is_array($result->retval) && count($result->retval) == 1) { + $row = $result->retval[0]; + $this->person_id = $row->person_id; $this->sprache = $row->sprache; $this->anrede = $row->anrede; diff --git a/include/studiensemester.class.php b/include/studiensemester.class.php index 325888189..c2158c3e9 100644 --- a/include/studiensemester.class.php +++ b/include/studiensemester.class.php @@ -59,30 +59,34 @@ class studiensemester extends Studiensemester_model */ public function load($studiensemester_kurzbz) { - $qry = "SELECT * FROM public.tbl_studiensemester WHERE studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + $result = parent::load($studiensemester_kurzbz); + + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval)) + { + if (count($result->retval) > 0) + { + $row = $result->retval[0]; + + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $this->start = $row->start; + $this->ende = $row->ende; + $this->bezeichnung = $row->bezeichnung; + $this->studienjahr_kurzbz = $row->studienjahr_kurzbz; + $this->beschreibung = $row->beschreibung; - if(!$this->db_query($qry)) + return true; + } + else + { + $this->errormsg = "Es ist kein Studiensemester mit dieser Kurzbezeichung vorhanden"; + return false; + } + } + else { $this->errormsg = 'Fehler beim Lesen des Studiensemesters'; return false; } - - if($row = $this->db_fetch_object()) - { - $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $this->start = $row->start; - $this->ende = $row->ende; - $this->bezeichnung = $row->bezeichnung; - $this->studienjahr_kurzbz = $row->studienjahr_kurzbz; - $this->beschreibung = $row->beschreibung; - } - else - { - $this->errormsg = "Es ist kein Studiensemester mit dieser Kurzbezeichung vorhanden"; - return false; - } - - return true; } /** @@ -158,22 +162,23 @@ class studiensemester extends Studiensemester_model */ public function getakt() { - $qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE start <= now() AND ende >= now()"; + $result = parent::loadWhere(array('start <=' => 'NOW()', 'ende >=' => 'NOW()')); - if(!$this->db_query($qry)) + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval)) { - $this->errormsg = $this->db_last_error(); - return false; - } - - if($this->db_num_rows()>0) - { - $erg = $this->db_fetch_object(); - return $erg->studiensemester_kurzbz; + if (count($result->retval) > 0) + { + return $result->retval[0]->studiensemester_kurzbz; + } + else + { + $this->errormsg = "Kein aktuelles Studiensemester vorhanden"; + return false; + } } else { - $this->errormsg = "Kein aktuelles Studiensemester vorhanden"; + $this->errormsg = $result->msg; return false; } } @@ -210,38 +215,50 @@ class studiensemester extends Studiensemester_model * geliefert die in dieses semester fallen (Bei geradem semester nur SS sonst WS) * @return Studiensemester oder false wenn es keines gibt */ - public function getaktorNext($semester='') + public function getaktorNext($semester = '') { - if(($stsem=$this->getakt()) && $semester=='') - return $stsem; + if (($result = $this->getakt()) && !is_numeric($semester)) + { + return $result; + } else { - $qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE true"; - - if($semester!='') + parent::addOrder('ende'); + parent::addLimit(1); + + $whereArray = array('ende >=' => 'NOW()'); + + if (is_numeric($semester)) { - if($semester%2==0) - $ss='SS'; + if ($semester %2 == 0) + { + $ss = 'SS'; + } else - $ss='WS'; + { + $ss = 'WS'; + } - $qry.= " AND substring(studiensemester_kurzbz from 1 for 2)='$ss' "; + $whereArray['SUBSTRING(studiensemester_kurzbz FROM 1 FOR 2) ='] = $ss; } - $qry.= " AND ende >= now() ORDER BY ende LIMIT 1"; - - if(!$this->db_query($qry)) + + $result = parent::loadWhere($whereArray); + + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval)) { - $this->errormsg = $this->db_last_error(); - return false; - } - - if($erg = $this->db_fetch_object()) - { - return $erg->studiensemester_kurzbz; + if (count($result->retval) > 0) + { + return $result->retval[0]->studiensemester_kurzbz; + } + else + { + $this->errormsg = "Kein aktuelles Studiensemester vorhanden"; + return false; + } } else { - $this->errormsg = "Kein aktuelles Studiensemester vorhanden"; + $this->errormsg = $result->msg; return false; } } @@ -254,36 +271,31 @@ class studiensemester extends Studiensemester_model * geliefert die in dieses semester fallen (Bei geradem semester nur SS sonst WS) * @return Studiensemester oder false wenn es keines gibt */ - public function getNearest($semester='') + public function getNearest($semester = '') { - $qry = "SELECT studiensemester_kurzbz, start, ende FROM public.vw_studiensemester "; - if($semester!='') + $result = parent::getNearest($semester); + + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval)) { - if($semester%2==0) - $ss='SS'; + if(count($result->retval) > 0) + { + $row = $result->retval[0]; + + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $this->start = $row->start; + $this->ende = $row->ende; + + return $row->studiensemester_kurzbz; + } else - $ss='WS'; - - $qry.= " WHERE substring(studiensemester_kurzbz from 1 for 2)='$ss' "; - } - $qry.=' ORDER BY delta LIMIT 1'; - - if(!$this->db_query($qry)) - { - $this->errormsg = $this->db_last_error(); - return false; - } - - if($erg = $this->db_fetch_object()) - { - $this->studiensemester_kurzbz=$erg->studiensemester_kurzbz; - $this->start=$erg->start; - $this->ende=$erg->ende; - return $erg->studiensemester_kurzbz; + { + $this->errormsg = "Kein aktuelles Studiensemester vorhanden"; + return false; + } } else { - $this->errormsg = "Kein aktuelles Studiensemester vorhanden"; + $this->errormsg = $this->db_last_error(); return false; } } @@ -295,17 +307,25 @@ class studiensemester extends Studiensemester_model */ public function getAll($order = null) { - $qry = "SELECT * FROM public.tbl_studiensemester ORDER BY ende"; - - if($order == "desc") - $qry .= " DESC"; - - if($this->db_query($qry)) + if (strcasecmp($order, 'DESC') == 0) { - while($row = $this->db_fetch_object()) - { - $stsem_obj = new studiensemester(); + parent::addOrder('ende', 'DESC'); + } + else + { + parent::addOrder('ende', 'ASC'); + } + + $result = parent::loadWhole(); + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval)) + { + for ($i = 0; $i < count($result->retval); $i++) + { + $row = $result->retval[$i]; + + $stsem_obj = new studiensemester(); + $stsem_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; $stsem_obj->start = $row->start; $stsem_obj->ende = $row->ende; @@ -331,34 +351,47 @@ class studiensemester extends Studiensemester_model * Wenn art=SS dann wird das naechste Sommersemester geliefert * @return true wenn ok, false wenn kein entsprechendes vorhanden ist */ - public function getNextStudiensemester($art='') + public function getNextStudiensemester($art = '') { - $qry = "SELECT * FROM public.tbl_studiensemester WHERE start>now() "; + parent::addOrder('start'); + parent::addLimit(1); + + if (isset($art)) + { + $result = parent::loadWhere( + array('start >' => 'NOW()', + 'SUBSTRING(studiensemester_kurzbz FROM 1 FOR 2) = ' => $art + ) + ); + } + else + { + $result = parent::loadWhere(array('start >' => 'NOW()')); + } - if($art!='') - $qry.= " AND substring(studiensemester_kurzbz from 1 for 2)=".$this->db_add_param($art); - - $qry.=" ORDER BY start LIMIT 1"; - - if(!$this->db_query($qry)) + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval)) + { + if (count($result->retval) > 0) + { + $row = $result->retval[0]; + + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $this->start = $row->start; + $this->ende = $row->ende; + + return true; + } + else + { + $this->errormsg = "Es wurde kein entsprechendes Studiensemester gefunden"; + return false; + } + } + else { $this->errormsg = 'Fehler beim Lesen des Studiensemesters'; return false; } - - if($row = $this->db_fetch_object()) - { - $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $this->start = $row->start; - $this->ende = $row->ende; - } - else - { - $this->errormsg = "Es wurde kein entsprechendes Studiensemester gefunden"; - return false; - } - - return true; } /** @@ -413,13 +446,16 @@ class studiensemester extends Studiensemester_model */ public function getPrevious() { - $qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE ende 'NOW()')); - if($this->db_query($qry)) + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval)) { - if($row = $this->db_fetch_object()) + if (count($result->retval) > 0) { - return $row->studiensemester_kurzbz; + return $result->retval[0]->studiensemester_kurzbz; } else { @@ -510,18 +546,18 @@ class studiensemester extends Studiensemester_model */ public function getNextFrom($studiensemester_kurzbz) { - $qry = "SELECT studiensemester_kurzbz, start, ende FROM public.tbl_studiensemester - WHERE start>(SELECT ende FROM public.tbl_studiensemester - WHERE studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).") - ORDER BY start LIMIT 1"; + $result = parent::getNextFrom($studiensemester_kurzbz); - if($this->db_query($qry)) + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval)) { - if($row = $this->db_fetch_object()) + if (count($result->retval) > 0) { + $row = $result->retval[0]; + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; $this->start = $row->start; $this->ende = $row->ende; + return $row->studiensemester_kurzbz; } else @@ -633,24 +669,28 @@ class studiensemester extends Studiensemester_model * @param limit maximale Anzahl * @return true wenn ok, sonst false */ - public function getFinished($limit=null) + public function getFinished($limit = null) { - $qry = "SELECT * FROM public.tbl_studiensemester where start<=now() ORDER BY ende DESC"; - if(!is_null($limit) && is_numeric($limit)) - $qry.=' LIMIT '.$limit; + parent::addOrder('ende', 'DESC'); + parent::addLimit($limit); + + $result = parent::loadWhere(array('start <=' => 'NOW()')); - if($this->db_query($qry)) + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval)) { - while($row = $this->db_fetch_object()) + for ($i = 0; $i < count($result->retval); $i++) { $stsem_obj = new studiensemester(); + $row = $result->retval[$i]; + $stsem_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; $stsem_obj->start = $row->start; $stsem_obj->ende = $row->ende; $this->studiensemester[] = $stsem_obj; } + return true; } else @@ -667,15 +707,15 @@ class studiensemester extends Studiensemester_model * * @return studiensemester_kurzbz oder false wenn keines vorhanden */ - public function getLastOrAktSemester($days=60) + public function getLastOrAktSemester($days = 60) { - $qry = "SELECT studiensemester_kurzbz FROM public.tbl_studiensemester WHERE startdb_query($qry)) + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval)) { - if($row = $this->db_fetch_object()) + if (count($result->retval) > 0) { - return $row->studiensemester_kurzbz; + return $result->retval[0]->studiensemester_kurzbz; } else { @@ -727,19 +767,32 @@ class studiensemester extends Studiensemester_model */ public function getTimestamp($studiensemester_kurzbz) { - $qry = "SELECT start,ende,studiensemester_kurzbz FROM public.tbl_studiensemester - WHERE studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz).""; + $result = parent::load($studiensemester_kurzbz); - if($this->db_query($qry)) + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval)) { - if($row = $this->db_fetch_object()) + if (count($result->retval)) { - if(!isset($this->begin)) - $this->begin=new stdclass(); - $this->begin->start=mktime(0,0,0,mb_substr($row->start,5,2),mb_substr($row->start,8,2),mb_substr($row->start,0,4)); - if(!isset($this->end)) - $this->ende=new stdclass(); - $this->ende->ende=mktime(0,0,0,mb_substr($row->ende,5,2),mb_substr($row->ende,8,2),mb_substr($row->ende,0,4)); + $row = $result->retval[0]; + + if (!isset($this->begin)) + $this->begin = new stdclass(); + + $this->begin->start = mktime(0, 0, 0, + mb_substr($row->start, 5, 2), + mb_substr($row->start, 8, 2), + mb_substr($row->start, 0, 4) + ); + + if (!isset($this->end)) + $this->ende = new stdclass(); + + $this->ende->ende = mktime(0, 0, 0, + mb_substr($row->ende, 5, 2), + mb_substr($row->ende, 8, 2), + mb_substr($row->ende, 0, 4) + ); + return true; } else diff --git a/tests/codeception/_data/dump.sql b/tests/codeception/_data/dump.sql index bf016d0ae..8238e5158 100644 --- a/tests/codeception/_data/dump.sql +++ b/tests/codeception/_data/dump.sql @@ -413,7 +413,13 @@ DELETE FROM system.tbl_rolleberechtigung WHERE berechtigung_kurzbz IN ( 'basis/rechnungstyp', 'basis/zahlungstyp', 'basis/studienplan_semester', - 'basis/dms_version' + 'basis/dms_version', + 'student/stammdaten', + 'mitarbeiter/stammdaten', + 'basis/vw_studiensemester', + 'lehre/reservierung', + 'lehre/reihungstest', + 'wawi/inventar:begrenzt' ); -- DELETE FROM system.tbl_berechtigung @@ -632,7 +638,13 @@ DELETE FROM system.tbl_berechtigung WHERE berechtigung_kurzbz IN ( 'basis/rechnungstyp', 'basis/zahlungstyp', 'basis/studienplan_semester', - 'basis/dms_version' + 'basis/dms_version', + 'student/stammdaten', + 'mitarbeiter/stammdaten', + 'basis/vw_studiensemester', + 'lehre/reservierung', + 'lehre/reihungstest', + 'wawi/inventar:begrenzt' ); -- INSERT Permissions @@ -851,6 +863,12 @@ INSERT INTO system.tbl_berechtigung (berechtigung_kurzbz, beschreibung) VALUES(' INSERT INTO system.tbl_berechtigung (berechtigung_kurzbz, beschreibung) VALUES('basis/zahlungstyp', 'Tbl_zahlungstyp'); INSERT INTO system.tbl_berechtigung (berechtigung_kurzbz, beschreibung) VALUES('basis/studienplan_semester', 'Tbl_studienplan_semester'); INSERT INTO system.tbl_berechtigung (berechtigung_kurzbz, beschreibung) VALUES('basis/dms_version', 'Tbl_dms_version'); +INSERT INTO system.tbl_berechtigung (berechtigung_kurzbz, beschreibung) VALUES('student/stammdaten', ''); +INSERT INTO system.tbl_berechtigung (berechtigung_kurzbz, beschreibung) VALUES('mitarbeiter/stammdaten', ''); +INSERT INTO system.tbl_berechtigung (berechtigung_kurzbz, beschreibung) VALUES('basis/vw_studiensemester', ''); +INSERT INTO system.tbl_berechtigung (berechtigung_kurzbz, beschreibung) VALUES('lehre/reservierung', ''); +INSERT INTO system.tbl_berechtigung (berechtigung_kurzbz, beschreibung) VALUES('lehre/reihungstest', ''); +INSERT INTO system.tbl_berechtigung (berechtigung_kurzbz, beschreibung) VALUES('wawi/inventar:begrenzt', ''); -- INSERT link between user admin and permissions INSERT INTO system.tbl_rolleberechtigung (berechtigung_kurzbz, rolle_kurzbz, art) VALUES('basis/archiv', 'admin', 'suid'); @@ -1067,4 +1085,10 @@ INSERT INTO system.tbl_rolleberechtigung (berechtigung_kurzbz, rolle_kurzbz, art INSERT INTO system.tbl_rolleberechtigung (berechtigung_kurzbz, rolle_kurzbz, art) VALUES('basis/rechnungstyp', 'admin', 'suid'); INSERT INTO system.tbl_rolleberechtigung (berechtigung_kurzbz, rolle_kurzbz, art) VALUES('basis/zahlungstyp', 'admin', 'suid'); INSERT INTO system.tbl_rolleberechtigung (berechtigung_kurzbz, rolle_kurzbz, art) VALUES('basis/studienplan_semester', 'admin', 'suid'); -INSERT INTO system.tbl_rolleberechtigung (berechtigung_kurzbz, rolle_kurzbz, art) VALUES('basis/dms_version', 'admin', 'suid'); \ No newline at end of file +INSERT INTO system.tbl_rolleberechtigung (berechtigung_kurzbz, rolle_kurzbz, art) VALUES('basis/dms_version', 'admin', 'suid'); +INSERT INTO system.tbl_rolleberechtigung (berechtigung_kurzbz, rolle_kurzbz, art) VALUES('student/stammdaten', 'admin', 'suid'); +INSERT INTO system.tbl_rolleberechtigung (berechtigung_kurzbz, rolle_kurzbz, art) VALUES('mitarbeiter/stammdaten', 'admin', 'suid'); +INSERT INTO system.tbl_rolleberechtigung (berechtigung_kurzbz, rolle_kurzbz, art) VALUES('basis/vw_studiensemester', 'admin', 'suid'); +INSERT INTO system.tbl_rolleberechtigung (berechtigung_kurzbz, rolle_kurzbz, art) VALUES('lehre/reservierung', 'admin', 'suid'); +INSERT INTO system.tbl_rolleberechtigung (berechtigung_kurzbz, rolle_kurzbz, art) VALUES('lehre/reihungstest', 'admin', 'suid'); +INSERT INTO system.tbl_rolleberechtigung (berechtigung_kurzbz, rolle_kurzbz, art) VALUES('wawi/inventar:begrenzt', 'admin', 'suid'); \ No newline at end of file diff --git a/tests/codeception/tests/api/v1/KontactCept.php b/tests/codeception/tests/api/v1/KontactCept.php index 99e466ae4..6bf510ac8 100644 --- a/tests/codeception/tests/api/v1/KontactCept.php +++ b/tests/codeception/tests/api/v1/KontactCept.php @@ -5,7 +5,7 @@ $I->wantTo('Test API call v1/person/kontakt/kontakt'); $I->amHttpAuthenticated("admin", "1q2w3"); $I->haveHttpHeader('FHC-API-KEY', 'testapikey@fhcomplete.org'); -$I->sendGET('v1/person/kontakt/kontakt', array('person_id' => 1)); +$I->sendGET('v1/person/kontakt/kontakt', array('kontakt_id' => 1)); $I->seeResponseCodeIs(200); $I->seeResponseIsJson(); $I->seeResponseContainsJson(['error' => 0]); \ No newline at end of file