From 0dc605df3c58031d6380263af9971b9a6c2ed0c5 Mon Sep 17 00:00:00 2001 From: paolo Date: Mon, 6 Jun 2016 16:36:23 +0200 Subject: [PATCH 1/3] - Modified FHC_Model, now it is saving uid in CI session - Added codeception tests - Added statistik to dump.sql - Moved old libraries to CI --- .../api/v1/organisation/Statistik.php | 26 ++++++++ application/core/FHC_Model.php | 6 ++ include/dms.class.php | 2 + include/kontakt.class.php | 2 + include/organisationsform.class.php | 2 + include/person.class.php | 2 +- include/preinteressent.class.php | 2 + include/prestudent.class.php | 1 + include/statistik.class.php | 57 ++++++++++------- include/studiensemester.class.php | 2 + tests/codeception/_data/dump.sql | 19 +++++- .../codeception/tests/api/v1/KontactCept.php | 12 +++- tests/codeception/tests/api/v1/NationCept.php | 7 ++- .../codeception/tests/api/v1/OrgformCept.php | 7 ++- tests/codeception/tests/api/v1/PersonCept.php | 9 ++- .../tests/api/v1/PreinteressentCept.php | 2 +- .../tests/api/v1/PrestudentCept.php | 2 +- .../tests/api/v1/StatistiksCept.php | 21 +++++++ .../tests/api/v1/StudiensemesterCept.php | 62 ++++++++++++++++++- 19 files changed, 209 insertions(+), 34 deletions(-) create mode 100644 tests/codeception/tests/api/v1/StatistiksCept.php diff --git a/application/controllers/api/v1/organisation/Statistik.php b/application/controllers/api/v1/organisation/Statistik.php index 8d72fbadf..beeaaae22 100644 --- a/application/controllers/api/v1/organisation/Statistik.php +++ b/application/controllers/api/v1/organisation/Statistik.php @@ -46,6 +46,32 @@ class Statistik extends APIv1_Controller $this->response(); } } + + /** + * @return void + */ + public function getAll() + { + $this->StatistikModel->addOrder($this->get('order')); + + $result = $this->StatistikModel->loadWhole(); + + $this->response($result, REST_Controller::HTTP_OK); + } + + /** + * @return void + */ + public function getMenueArray() + { + $this->StatistikModel->addOrder('gruppe'); + $this->StatistikModel->addOrder('bezeichnung'); + $this->StatistikModel->addOrder('statistik_kurzbz'); + + $result = $this->StatistikModel->loadWhole(); + + $this->response($result, REST_Controller::HTTP_OK); + } /** * @return void diff --git a/application/core/FHC_Model.php b/application/core/FHC_Model.php index a4cc9b4e7..2539c7203 100644 --- a/application/core/FHC_Model.php +++ b/application/core/FHC_Model.php @@ -23,6 +23,12 @@ class FHC_Model extends CI_Model { $uid = $_SERVER['PHP_AUTH_USER']; } + + // After getting UID for the first time, it saves it in CI session + if (isset($uid) && !isset($this->session->uid)) + { + $this->session->uid = $uid; + } $this->load->library('FHC_DB_ACL', array('uid' => $uid)); } diff --git a/include/dms.class.php b/include/dms.class.php index f8fb930e6..55ed1d02f 100644 --- a/include/dms.class.php +++ b/include/dms.class.php @@ -32,6 +32,8 @@ require_once(dirname(__FILE__).'/../application/models/content/Dms_model.php'); class dms extends Dms_model { + use db_extra; //CI Hack + public $new; public $result=array(); diff --git a/include/kontakt.class.php b/include/kontakt.class.php index d5a46b3eb..88c3a6db9 100644 --- a/include/kontakt.class.php +++ b/include/kontakt.class.php @@ -31,6 +31,8 @@ require_once(dirname(__FILE__).'/../application/models/person/Kontakt_model.php' class kontakt extends Kontakt_model { + use db_extra; //CI Hack + public $new; // boolean public $result = array(); // adresse Objekt diff --git a/include/organisationsform.class.php b/include/organisationsform.class.php index 37f444bd8..cfaf45648 100644 --- a/include/organisationsform.class.php +++ b/include/organisationsform.class.php @@ -32,6 +32,8 @@ require_once(dirname(__FILE__).'/../application/models/codex/Orgform_model.php') class organisationsform extends Orgform_model { + use db_extra; //CI Hack + public $orgform_kurzbz; public $code; public $bezeichnung; diff --git a/include/person.class.php b/include/person.class.php index ef20a5821..79f98f113 100644 --- a/include/person.class.php +++ b/include/person.class.php @@ -31,7 +31,7 @@ require_once(dirname(__FILE__).'/../application/models/person/Person_model.php') class person extends Person_model { use db_extra; //CI Hack - + public $errormsg; // string public $new; // boolean public $personen = array(); // person Objekt diff --git a/include/preinteressent.class.php b/include/preinteressent.class.php index 2326e4580..d71f09e8a 100644 --- a/include/preinteressent.class.php +++ b/include/preinteressent.class.php @@ -27,6 +27,8 @@ require_once(dirname(__FILE__).'/../application/models/crm/Preinteressent_model. class preinteressent extends Preinteressent_model { + use db_extra; //CI Hack + public $new; // boolean public $result = array(); diff --git a/include/prestudent.class.php b/include/prestudent.class.php index 0b9fa2099..14217c498 100755 --- a/include/prestudent.class.php +++ b/include/prestudent.class.php @@ -30,6 +30,7 @@ require_once(dirname(__FILE__).'/../application/models/crm/Prestudent_model.php' class prestudent extends Prestudent_model { use db_extra; //CI Hack + public $errormsg; // string //Tabellenspalten diff --git a/include/statistik.class.php b/include/statistik.class.php index 85fb6e834..73be1b34d 100644 --- a/include/statistik.class.php +++ b/include/statistik.class.php @@ -19,10 +19,16 @@ * Andreas Oesterreicher * Karl Burkhart . */ -require_once(dirname(__FILE__).'/basis_db.class.php'); +require_once(dirname(__FILE__).'/datum.class.php'); -class statistik extends basis_db +// CI +require_once(dirname(__FILE__).'/../ci_hack.php'); +require_once(dirname(__FILE__).'/../application/models/organisation/Statistik_model.php'); + +class statistik extends Statistik_model { + use db_extra; //CI Hack + public $new; public $statistik_obj=array(); public $result; @@ -76,17 +82,14 @@ class statistik extends basis_db */ public function load($statistik_kurzbz) { - $qry = "SELECT - * - FROM - public.tbl_statistik - WHERE - statistik_kurzbz = " . $this->db_add_param($statistik_kurzbz); + $result = parent::load($statistik_kurzbz); - if($result = $this->db_query($qry)) + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval)) { - if($row = $this->db_fetch_object($result)) + if(count($result->retval) > 0) { + $row = $result->retval[0]; + $this->statistik_kurzbz = $row->statistik_kurzbz; $this->content_id = $row->content_id; $this->bezeichnung = $row->bezeichnung; @@ -125,15 +128,19 @@ class statistik extends basis_db */ public function getAll($order = FALSE) { - $qry = 'SELECT * FROM public.tbl_statistik'; - - if($order) - $qry .= ' ORDER BY ' . $order; - - if($result = $this->db_query($qry)) + if ($order) { - while($row = $this->db_fetch_object($result)) + parent::addOrder($order); + } + + $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]; + $obj = new statistik(); $obj->statistik_kurzbz = $row->statistik_kurzbz; @@ -328,17 +335,19 @@ class statistik extends basis_db { $arr = array(); - $qry = "SELECT - * - FROM - public.tbl_statistik - ORDER BY gruppe, bezeichnung, statistik_kurzbz"; + parent::addOrder('gruppe'); + parent::addOrder('bezeichnung'); + parent::addOrder('statistik_kurzbz'); + + $result = parent::loadWhole(); - if($result = $this->db_query($qry)) + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval)) { $lastgruppe=''; - while($row = $this->db_fetch_object($result)) + for ($i = 0; $i < count($result->retval); $i++) { + $row = $result->retval[$i]; + if($row->gruppe!='' && $row->gruppe!=$lastgruppe) { $arr[$row->gruppe]=array('name'=>$row->gruppe); diff --git a/include/studiensemester.class.php b/include/studiensemester.class.php index c2158c3e9..12e48ee1b 100644 --- a/include/studiensemester.class.php +++ b/include/studiensemester.class.php @@ -28,6 +28,8 @@ require_once(dirname(__FILE__).'/../application/models/organisation/Studiensemes class studiensemester extends Studiensemester_model { + use db_extra; //CI Hack + public $new; // boolean public $studiensemester = array(); // studiensemester Objekt diff --git a/tests/codeception/_data/dump.sql b/tests/codeception/_data/dump.sql index 8238e5158..552d65f75 100644 --- a/tests/codeception/_data/dump.sql +++ b/tests/codeception/_data/dump.sql @@ -1091,4 +1091,21 @@ INSERT INTO system.tbl_rolleberechtigung (berechtigung_kurzbz, rolle_kurzbz, art 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 +INSERT INTO system.tbl_rolleberechtigung (berechtigung_kurzbz, rolle_kurzbz, art) VALUES('wawi/inventar:begrenzt', 'admin', 'suid'); + +-- EMPTY public.tbl_statistik +DELETE FROM public.tbl_statistik; + +-- INSERT Statistiks (public.tbl_statistik) +INSERT INTO public.tbl_statistik VALUES ('StudentenHistorie', 'StudentenHistorie', NULL, 'studenten_historie.php', 'Studierende', NULL, NULL, NULL, '2011-04-04 09:25:35', 'oesi', '2011-04-04 09:25:35', 'oesi', NULL, false, NULL); +INSERT INTO public.tbl_statistik VALUES ('Abgaengerstatistik', 'Abgängerstatistik', 9, '../../content/statistik/abgaengerstatistik.php', 'Studierende', NULL, NULL, NULL, '2011-04-01 10:57:05', 'oesi', '2011-04-01 11:13:55', 'oesi', NULL, false, NULL); +INSERT INTO public.tbl_statistik VALUES ('Absolventenstatistik', 'Absolventenstatistik', 10, '../../content/statistik/absolventenstatistik.php', 'Studierende', NULL, NULL, NULL, '2011-04-01 10:57:46', 'oesi', '2011-04-01 11:14:01', 'oesi', NULL, false, NULL); +INSERT INTO public.tbl_statistik VALUES ('Bewerberstatistik', 'Bewerberstatistik', 2, '../../content/statistik/bewerberstatistik.php?stsem=$Studiensemester', 'Studierende', NULL, NULL, NULL, '2011-04-01 10:43:44', 'oesi', '2011-04-01 11:14:19', 'oesi', NULL, false, NULL); +INSERT INTO public.tbl_statistik VALUES ('Lektorenstatistik', 'Lektorenstatistik', 13, '../../content/statistik/lektorenstatistik.php', 'Mitarbeiter', NULL, NULL, NULL, '2011-04-01 11:08:41', 'oesi', '2011-04-01 11:14:27', 'oesi', NULL, false, NULL); +INSERT INTO public.tbl_statistik VALUES ('Raumauslastung', 'Raumauslastung', 3, '../lehre/raumauslastung.php', 'LV-Plan', NULL, NULL, NULL, '2011-04-01 10:51:01', 'oesi', '2011-04-01 11:14:50', 'oesi', NULL, false, NULL); +INSERT INTO public.tbl_statistik VALUES ('Stromanalyse', 'Stromanalyse', 15, '../../content/statistik/bama_stromanalyse.php', 'Studierende', NULL, NULL, NULL, '2011-04-01 11:09:45', 'oesi', '2011-04-01 11:14:59', 'oesi', NULL, false, NULL); +INSERT INTO public.tbl_statistik VALUES ('Mitarbeiterstatistik', 'Mitarbeiterstatistik', 14, '../../content/statistik/mitarbeiterstatistik.php', 'Mitarbeiter', NULL, NULL, NULL, '2011-04-01 11:09:13', 'oesi', '2012-01-12 15:48:47', 'kollmitz', NULL, false, NULL); +INSERT INTO public.tbl_statistik VALUES ('Verplanungsübersicht', 'Verplanungsübersicht', 4, '../lehre/check/verplanungsuebersicht.php', 'LV-Plan', NULL, NULL, NULL, '2011-04-01 10:51:53', 'oesi', '2011-04-01 11:15:20', 'oesi', NULL, false, NULL); +INSERT INTO public.tbl_statistik VALUES ('Zeitwünsche', 'Zeitwünsche', 5, '../lehre/zeitwuensche.php', 'LV-Plan', NULL, NULL, NULL, '2011-04-01 10:52:37', 'oesi', '2011-04-01 11:15:27', 'oesi', NULL, false, NULL); +INSERT INTO public.tbl_statistik VALUES ('AnzahlStudierende', 'Aktuell Studierende im Haus', 16, '../../cis/private/lvplan/stpl_week_anzahl_studenten.php', 'Studierende', NULL, NULL, NULL, '2011-04-01 11:11:52', 'oesi', '2012-02-20 19:09:16', 'kindlm', NULL, false, NULL); +INSERT INTO public.tbl_statistik VALUES ('ALVS-Statistik', 'ALVS-Statistik', 7, '../../content/statistik/alvsstatistik.php', 'Lehre', NULL, NULL, NULL, '2011-04-01 10:54:03', 'oesi', '2011-04-01 11:23:12', 'oesi', NULL, false, NULL); \ 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 6bf510ac8..7c0872cfd 100644 --- a/tests/codeception/tests/api/v1/KontactCept.php +++ b/tests/codeception/tests/api/v1/KontactCept.php @@ -1,11 +1,21 @@ wantTo('Test API call v1/person/kontakt/kontakt'); +$I->wantTo('Test API call v1/person/kontakt/ kontakt, KontaktByPersonID and KontaktByPersonIDKontaktTyp'); $I->amHttpAuthenticated("admin", "1q2w3"); $I->haveHttpHeader('FHC-API-KEY', 'testapikey@fhcomplete.org'); $I->sendGET('v1/person/kontakt/kontakt', array('kontakt_id' => 1)); $I->seeResponseCodeIs(200); $I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); + +$I->sendGET('v1/person/kontakt/KontaktByPersonID', array('person_id' => 3)); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); + +$I->sendGET('v1/person/kontakt/KontaktByPersonIDKontaktTyp', array('person_id' => 3, 'kontakttyp' => 'email')); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); $I->seeResponseContainsJson(['error' => 0]); \ No newline at end of file diff --git a/tests/codeception/tests/api/v1/NationCept.php b/tests/codeception/tests/api/v1/NationCept.php index e5b881030..c4693793e 100644 --- a/tests/codeception/tests/api/v1/NationCept.php +++ b/tests/codeception/tests/api/v1/NationCept.php @@ -1,10 +1,15 @@ wantTo('Test API call v1/codex/nation/All'); +$I->wantTo('Test API call v1/codex/nation/ nation and all'); $I->amHttpAuthenticated("admin", "1q2w3"); $I->haveHttpHeader('FHC-API-KEY', 'testapikey@fhcomplete.org'); +$I->sendGET('v1/codex/nation/nation', array('nation_code' => 'A')); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); + $I->sendGET('v1/codex/nation/All'); $I->seeResponseCodeIs(200); $I->seeResponseIsJson(); diff --git a/tests/codeception/tests/api/v1/OrgformCept.php b/tests/codeception/tests/api/v1/OrgformCept.php index 70cb5963e..7c9a7d2f5 100644 --- a/tests/codeception/tests/api/v1/OrgformCept.php +++ b/tests/codeception/tests/api/v1/OrgformCept.php @@ -1,7 +1,7 @@ wantTo('Test API call v1/codex/orgform Orgform and All'); +$I->wantTo('Test API call v1/codex/orgform Orgform, OrgformLV and All'); $I->amHttpAuthenticated("admin", "1q2w3"); $I->haveHttpHeader('FHC-API-KEY', 'testapikey@fhcomplete.org'); @@ -13,4 +13,9 @@ $I->seeResponseContainsJson(['error' => 0]); $I->sendGET('v1/codex/orgform/All'); $I->seeResponseCodeIs(200); $I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); + +$I->sendGET('v1/codex/orgform/OrgformLV'); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); $I->seeResponseContainsJson(['error' => 0]); \ No newline at end of file diff --git a/tests/codeception/tests/api/v1/PersonCept.php b/tests/codeception/tests/api/v1/PersonCept.php index 4b746a4c0..49ea26456 100644 --- a/tests/codeception/tests/api/v1/PersonCept.php +++ b/tests/codeception/tests/api/v1/PersonCept.php @@ -1,7 +1,7 @@ wantTo('Test API call v1/person/person/person'); +$I->wantTo('Test API call v1/person/person/ Person and CheckBewerbung'); $I->amHttpAuthenticated("admin", "1q2w3"); $I->haveHttpHeader('FHC-API-KEY', 'testapikey@fhcomplete.org'); @@ -32,4 +32,9 @@ $I->seeResponseCodeIs(200); $I->seeResponseIsJson(); $I->seeResponseContainsJson([ 'person_id' => '5', - 'nachname' => 'Harvey']); \ No newline at end of file + 'nachname' => 'Harvey']); + +$I->sendGET('v1/person/person/CheckBewerbung', array('email' => 'mckenzie.vicenta@calva.dev', 'studiensemester_kurzbz' => 'WS2016')); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); \ No newline at end of file diff --git a/tests/codeception/tests/api/v1/PreinteressentCept.php b/tests/codeception/tests/api/v1/PreinteressentCept.php index 3149da7ee..f17c75e52 100644 --- a/tests/codeception/tests/api/v1/PreinteressentCept.php +++ b/tests/codeception/tests/api/v1/PreinteressentCept.php @@ -10,7 +10,7 @@ $I->seeResponseCodeIs(200); $I->seeResponseIsJson(); $I->seeResponseContainsJson(['error' => 0]); -$I->sendGET('v1/crm/preinteressent/PreinteressentByPersonID', array('person_id' => 1)); +$I->sendGET('v1/crm/preinteressent/PreinteressentByPersonID', array('person_id' => 3)); $I->seeResponseCodeIs(200); $I->seeResponseIsJson(); $I->seeResponseContainsJson(['error' => 0]); \ No newline at end of file diff --git a/tests/codeception/tests/api/v1/PrestudentCept.php b/tests/codeception/tests/api/v1/PrestudentCept.php index 1d718d33b..07343b933 100644 --- a/tests/codeception/tests/api/v1/PrestudentCept.php +++ b/tests/codeception/tests/api/v1/PrestudentCept.php @@ -10,7 +10,7 @@ $I->seeResponseCodeIs(200); $I->seeResponseIsJson(); $I->seeResponseContainsJson(['error' => 0]); -$I->sendGET('v1/crm/prestudent/PrestudentByPersonID', array('person_id' => 1)); +$I->sendGET('v1/crm/prestudent/PrestudentByPersonID', array('person_id' => 3)); $I->seeResponseCodeIs(200); $I->seeResponseIsJson(); $I->seeResponseContainsJson(['error' => 0]); \ No newline at end of file diff --git a/tests/codeception/tests/api/v1/StatistiksCept.php b/tests/codeception/tests/api/v1/StatistiksCept.php new file mode 100644 index 000000000..110e642fd --- /dev/null +++ b/tests/codeception/tests/api/v1/StatistiksCept.php @@ -0,0 +1,21 @@ +wantTo('Test API call v1/organisation/statistik statistik, All and MenueArray'); +$I->amHttpAuthenticated("admin", "1q2w3"); +$I->haveHttpHeader('FHC-API-KEY', 'testapikey@fhcomplete.org'); + +$I->sendGET('v1/organisation/statistik/Statistik', array('statistik_kurzbz' => 'Stromanalyse')); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); + +$I->sendGET('v1/organisation/statistik/All'); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); + +$I->sendGET('v1/organisation/statistik/MenueArray'); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); \ No newline at end of file diff --git a/tests/codeception/tests/api/v1/StudiensemesterCept.php b/tests/codeception/tests/api/v1/StudiensemesterCept.php index 36e266786..91f760af1 100644 --- a/tests/codeception/tests/api/v1/StudiensemesterCept.php +++ b/tests/codeception/tests/api/v1/StudiensemesterCept.php @@ -1,7 +1,7 @@ wantTo('Test API call v1/organisation/studiensemester studiensemester and nextStudiensemester'); +$I->wantTo('Test API call to all v1/organisation/studiensemester methods'); $I->amHttpAuthenticated("admin", "1q2w3"); $I->haveHttpHeader('FHC-API-KEY', 'testapikey@fhcomplete.org'); @@ -18,4 +18,64 @@ $I->seeResponseContainsJson(['error' => 0]); $I->sendGET('v1/organisation/studiensemester/NextStudiensemester', array('art' => 'WS')); $I->seeResponseCodeIs(200); $I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); + +$I->sendGET('v1/organisation/studiensemester/All'); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); + +$I->sendGET('v1/organisation/studiensemester/Akt'); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); + +$I->sendGET('v1/organisation/studiensemester/AktNext', array('semester' => '1')); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); + +$I->sendGET('v1/organisation/studiensemester/AktNext', array('semester' => '2')); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); + +$I->sendGET('v1/organisation/studiensemester/LastOrAktSemester'); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); + +$I->sendGET('v1/organisation/studiensemester/LastOrAktSemester', array('days' => '1024')); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); + +$I->sendGET('v1/organisation/studiensemester/NextFrom', array('studiensemester_kurzbz' => 'WS2015')); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); + +$I->sendGET('v1/organisation/studiensemester/Previous'); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); + +$I->sendGET('v1/organisation/studiensemester/Nearest', array('studiensemester_kurzbz' => 'WS2015')); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); + +$I->sendGET('v1/organisation/studiensemester/Finished'); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); + +$I->sendGET('v1/organisation/studiensemester/Finished', array('limit' => '3')); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); +$I->seeResponseContainsJson(['error' => 0]); + +$I->sendGET('v1/organisation/studiensemester/Timestamp', array('studiensemester_kurzbz' => 'WS2015')); +$I->seeResponseCodeIs(200); +$I->seeResponseIsJson(); $I->seeResponseContainsJson(['error' => 0]); \ No newline at end of file From 3955d4b3956f8145ff6dd5a428b668d6a9eabe0c Mon Sep 17 00:00:00 2001 From: paolo Date: Tue, 7 Jun 2016 17:55:31 +0200 Subject: [PATCH 2/3] - Moved old libraries to CI - Extended Controllers functionalities - Added controls to ueberbuchung.php, zeitwuensche.php and funktion_det.php pages to avoid warnings and notices, especially when no data are in DB - Removed fhcdb_helper.php because it's no more needed --- .../controllers/api/v1/crm/Prestudent.php | 21 + .../controllers/api/v1/ressource/Ort.php | 25 + application/helpers/fhcdb_helper.php | 450 ------------------ application/models/crm/Prestudent_model.php | 58 ++- include/berechtigung.class.php | 18 +- include/funktion.class.php | 22 +- include/ort.class.php | 42 +- include/prestudent.class.php | 47 +- vilesci/lehre/check/ueberbuchung.php | 1 + vilesci/lehre/zeitwuensche.php | 31 +- vilesci/personen/funktion_det.php | 5 +- 11 files changed, 176 insertions(+), 544 deletions(-) delete mode 100644 application/helpers/fhcdb_helper.php diff --git a/application/controllers/api/v1/crm/Prestudent.php b/application/controllers/api/v1/crm/Prestudent.php index d334cc709..9cdf79415 100644 --- a/application/controllers/api/v1/crm/Prestudent.php +++ b/application/controllers/api/v1/crm/Prestudent.php @@ -65,6 +65,27 @@ class Prestudent extends APIv1_Controller $this->response(); } } + + /** + * @return void + */ + public function getLastStatus() + { + $prestudent_id = $this->get('prestudent_id'); + $studiensemester_kurzbz = $this->get('studiensemester_kurzbz'); + $status_kurzbz = $this->get('status_kurzbz'); + + if (isset($prestudent_id)) + { + $result = $this->PrestudentModel->getLastStatus($prestudent_id, $studiensemester_kurzbz, $status_kurzbz); + + $this->response($result, REST_Controller::HTTP_OK); + } + else + { + $this->response(); + } + } /** * @return void diff --git a/application/controllers/api/v1/ressource/Ort.php b/application/controllers/api/v1/ressource/Ort.php index 022db2281..963bb716c 100644 --- a/application/controllers/api/v1/ressource/Ort.php +++ b/application/controllers/api/v1/ressource/Ort.php @@ -46,6 +46,31 @@ class Ort extends APIv1_Controller $this->response(); } } + + /** + * @return void + */ + public function getAll() + { + $raumtyp_kurzbz = $this->get('raumtyp_kurzbz'); + + $this->OrtModel->addOrder('ort_kurzbz'); + + if (!is_null($raumtyp_kurzbz) && $raumtyp_kurzbz != '') + { + $result = $this->OrtModel->addJoin('public.tbl_ortraumtyp', 'ort_kurzbz'); + if ($result->error == EXIT_SUCCESS) + { + $result = $this->OrtModel->loadWhere(array('raumtyp_kurzbz' => $raumtyp_kurzbz)); + } + } + else + { + $result = $this->OrtModel->loadWhole(); + } + + $this->response($result, REST_Controller::HTTP_OK); + } /** * @return void diff --git a/application/helpers/fhcdb_helper.php b/application/helpers/fhcdb_helper.php deleted file mode 100644 index fd170c462..000000000 --- a/application/helpers/fhcdb_helper.php +++ /dev/null @@ -1,450 +0,0 @@ -ci=$ci; - } - - public function db_connect() - { - $conn_str='host='.DB_HOST.' port='.DB_PORT.' dbname='.DB_NAME.' user='.DB_USER.' password='.DB_PASSWORD; - //Connection Herstellen - if (DB_CONNECT_PERSISTENT) - { - if (!basis_db::$db_conn = pg_pconnect($conn_str)) - die('Fehler beim Oeffnen der Datenbankverbindung'); - } - else - { - if (!basis_db::$db_conn = pg_connect($conn_str)) - die('Fehler beim Oeffnen der Datenbankverbindung'); - } - } - - public function db_query($sql) - { - if ($this->db_result=$this->ci->db->simple_query($sql)) - return $this->db_result; - else - { - $this->errormsg.='Abfrage in Datenbank fehlgeschlagen! '.$this->db_last_error(); - return false; - } - } - - public function db_num_rows($result=null) - { - if (is_null($result)) - return pg_num_rows($this->db_result); - else - return pg_num_rows($result); - } - - public function db_fetch_object($result = null, $i=null) - { - if (is_null($result)) - { - if (is_null($i)) - return pg_fetch_object($this->db_result); - else - return pg_fetch_object($this->db_result, $i); - } - else - { - if (is_null($i)) - return pg_fetch_object($result); - else - return pg_fetch_object($result, $i); - } - } - - public function db_fetch_row($result = null, $i=null) - { - if (is_null($result)) - { - if (is_null($i)) - return pg_fetch_row($this->db_result); - else - return pg_fetch_row($this->db_result, $i); - } - else - { - if (is_null($i)) - return pg_fetch_row($result); - else - return pg_fetch_row($result, $i); - } - } - - public function db_fetch_assoc($result = null, $i=null) - { - if (is_null($result)) - { - if (is_null($i)) - return pg_fetch_assoc($this->db_result); - else - return pg_fetch_assoc($this->db_result, $i); - } - else - { - if (is_null($i)) - return pg_fetch_row($result); - else - return pg_fetch_row($result, $i); - } - } - - public function db_result($result = null, $i,$item) - { - if (is_null($result)) - { - return pg_result($this->db_result, $i,$item); - } - else - { - return pg_result($result, $i,$item); - } - } - - public function db_getResultJSON($result = null) - { - $rows=array(); - if (is_null($result)) - { - while ($r = pg_fetch_assoc($this->db_result)) - $rows[] = $r; - - //print json_encode($rows); - } - else - { - pg_result_seek($result, 0); - //var_dump($result); - while ($r = pg_fetch_assoc($result)) - { - $rows[] = $r; - } - - //print json_encode($rows); - } - return json_encode($rows); - } - - public function db_last_error() - { - return pg_last_error(); - } - - public function db_affected_rows($result=null) - { - if (is_null($result)) - return pg_affected_rows($this->db_result); - else - return pg_affected_rows($result); - } - - public function db_result_seek($result=null, $offset) - { - if (is_null($result)) - return pg_result_seek($this->db_result, $offset); - else - return pg_result_seek($result, $offset); - } - - public function db_fetch_array($result=null) - { - if (is_null($result)) - return pg_fetch_array($this->db_result); - else - return pg_fetch_array($result); - } - - public function db_num_fields($result=null) - { - if (is_null($result)) - return pg_num_fields($this->db_result); - else - return pg_num_fields($result); - } - - /** - * Liefert den Feldnamen mit index i - */ - public function db_field_name($result=null, $i) - { - if (is_null($result)) - return pg_field_name($this->db_result, $i); - else - return pg_field_name($result, $i); - } - - /** - * Gibt den Speicher wieder Frei. - * (ist das sinnvoll wenn es per Value uebergeben wird??) - */ - public function db_free_result($result = null) - { - if (is_null($result)) - { - return pg_free_result($this->db_result); - } - else - { - return pg_free_result($result); - } - } - - /** - * Liefert die aktuelle Datenbankversion - */ - public function db_version() - { - return pg_version(basis_db::$db_conn); - } - - /** - * Escaped Sonderzeichen in Variablen vor der Verwendung in SQL Statements - * um SQL Injections zu verhindern - * - */ - public function db_escape($var) - { - return pg_escape_string($var); - } - - /** - * Null Value Handling und Hochkomma für Inserts / Updates - * Wenn die Uebergebe Variable leer ist, wird ein String mit null - * zurueckgeliefert, wenn nicht dann wird der string unter Hochkomma zurueckgeliefert - * es sei denn qoute=false dann wird nur der String zurueckgeliefert - * - * @param $var String-Value fuer SQL Request - * @return string - */ - public function db_null_value($var, $qoute=true) - { - if ($qoute) - return ($var!==''?$this->db_qoute($var):'null'); - else - return ($var!==''?$var:'null'); - } - - /** - * Setzt einen String unter Hochkomma - * @param $var Value fuer Insert/Update - * @return value unter Hochkomma - */ - public function db_qoute($var) - { - return "'".$var."'"; - } - - /** - * Escaped einen Parameter fuer die Verwendung in Insert/Update SQL Befehlen - * Es werden abhaengig vom Typ Hochkomma oder Null hinzugefuegt - * @param $var Value der gesetzt werden soll - * @param $type Typ des Values (FHC_STRING | FHC_BOOLEAN | FHC_INTEGER | ...) - * @param $nullable boolean gibt an ob das Feld NULL sein darf. Wenn true wird - * NULL statt einem Leerstring zurueckgeliefert - * @return Escapter Value inklusive Hochkomma wenn noetig - * - * Verwendungsbeispiel: - * Update tbl_person set nachname=$this->db_add_param($var) - * Update tbl_person set aktiv=$this->db_add_param($var, FHC_BOOL, false) - * Update tbl_person set anzahlkinder=$this->db_add_param($var, FHC_INT) - */ - public function db_add_param($var, $type=FHC_STRING, $nullable=true) - { - if (($var==='' || is_null($var)) && $type!=FHC_BOOLEAN) - { - if ($nullable) - return 'null'; - else - return "''"; - } - - switch($type) - { - case FHC_INTEGER: - $var = $this->db_escape($var); - if (!is_numeric($var) && $var!=='') - die('Invalid Integer Parameter detected:'.$var); - $var = $this->db_null_value($var, false); - break; - - case FHC_LANG_ARRAY: - - $sprache = new sprache(); - $sprache->getAll(true); - $buf = $var; - $var = array(); - $languages = $sprache->getAllIndexesSorted(); - - foreach($languages as $sk => $sp) - { - if (!$sp || !isset($buf[$sp])) - $var[$sk] = ""; - else - $var[$sk] = $this->db_escape($buf[$sp]); - } - $var = str_replace('\\', '\\\\', $var); - $var = str_replace('"', '\\\"', $var); - $var = '\'{"' . join('","', $var) . '"}\''; - - break; - - case FHC_BOOLEAN: - if ($var===true) - $var='true'; - elseif ($var===false) - $var='false'; - elseif ($var=='' && $nullable) - $var = 'null'; - else - die('Invalid Boolean Parameter detected'); - break; - - case FHC_STRING: - default: - $var = $this->db_escape($var); - $var = $this->db_null_value($var); - break; - } - return $var; - } - - /** - * Erzeugt aus einem DB-Result-Boolean einen PHP Boolean - */ - public function db_parse_bool($var) - { - if ($var=='t') - return true; - elseif ($var=='f') - return false; - elseif ($var=='') - return ''; - else - die('Invalid DB Boolean. Wrong DB-Engine?'); - } - - /** - * Bereitet ein Array von Elementen auf, damit es in der IN-Klausel eines - * Select Befehls verwendet werden kann. - */ - public function db_implode4SQL($array) - { - $string = ''; - foreach($array as $row) - { - if ($string!='') - $string.=','; - $string.=$this->db_add_param($row); - } - return $string; - } - - /** - * Erstellt aus einem DB Array ein PHP Array - * @param $var DB Result Array Spalte - * @return php array - */ - public function db_parse_array($var) - { - if ($var == '') - return; - preg_match_all('/(?<=^\{|,)(([^,"{]*)|\s*"((?:[^"\\\\]|\\\\(?:.|[0-9]+|x[0-9a-f]+))*)"\s*)(,|(?loadIndexArray(); - - $sprache = new sprache(); - $sprache->getAll(true); - $languages = $sprache->getAllIndexesSorted(); - - - foreach ($matches as $mk => $match) - { - $values[$languages[$mk+1]] = $match[3] != '' ? stripcslashes($match[3]) : (strtolower($match[2]) == 'null' ? null : $match[2]); - } - return $values; - } -} - -function indexSort($a, $b) -{ - return strcmp($a->index, $b->index); -} - -/** - * Bereitet ein Array von Elementen auf, damit es in der IN-Klausel eines - * Select Befehls verwendet werden kann. - */ -function dbImplode4SQL($array) -{ - $string = ''; - - foreach($array as $row) - { - if ($string != '') - { - $string.=','; - } - $string.=$this->db_add_param($row); - } - - return $string; -} \ No newline at end of file diff --git a/application/models/crm/Prestudent_model.php b/application/models/crm/Prestudent_model.php index 0908b4c8a..cf6a5908d 100644 --- a/application/models/crm/Prestudent_model.php +++ b/application/models/crm/Prestudent_model.php @@ -11,30 +11,50 @@ class Prestudent_model extends DB_Model $this->dbTable = 'public.tbl_prestudent'; $this->pk = 'prestudent_id'; } - + /** - * + * @return void */ - public function loadPrestudentPerson($prestudentID) + public function getLastStatus($prestudent_id, $studiensemester_kurzbz = '', $status_kurzbz = '') { - // Check the rights - if (! $this->fhc_db_acl->isBerechtigt('basis/person', 's')) - return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> basis/person', FHC_MODEL_ERROR); + // Checks if the operation is permitted by the API caller + 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); - // Prepare SQL-Query - $this->db->select('*') - ->from('public.tbl_prestudent') - ->join('public.tbl_person', 'person_id') - ->where('prestudent_id', $prestudentID); - // Do the query - $result = $this->db->get()->result_object(); + if (! $this->fhc_db_acl->isBerechtigt($this->acl['lehre.tbl_studienplan'], 's')) + return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl['lehre.tbl_studienplan'], FHC_MODEL_ERROR); - // Return the result - if ($result) - return $this->_success($result); + if (! $this->fhc_db_acl->isBerechtigt($this->acl['public.tbl_status'], 's')) + return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl['public.tbl_status'], FHC_MODEL_ERROR); + + $query = "SELECT tbl_prestudentstatus.*, + bezeichnung AS studienplan_bezeichnung, + tbl_status.bezeichnung_mehrsprachig + FROM public.tbl_prestudentstatus LEFT JOIN lehre.tbl_studienplan USING (studienplan_id) + JOIN public.tbl_status USING (status_kurzbz) + WHERE tbl_status.status_kurzbz = tbl_prestudentstatus.status_kurzbz + AND prestudent_id = ?"; + + $parametersArray = array($prestudent_id); + + if ($studiensemester_kurzbz != '') + { + array_push($parametersArray, $studiensemester_kurzbz); + $query .= ' AND studiensemester_kurzbz = ?'; + } + if ($status_kurzbz != '') + { + array_push($parametersArray, $status_kurzbz); + $query .= ' AND status_kurzbz = ?'; + } + + $query .= ' ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1'; + + $result = $this->db->query($query, $parametersArray); + + 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/berechtigung.class.php b/include/berechtigung.class.php index 6cdafcc50..3e9cc654c 100644 --- a/include/berechtigung.class.php +++ b/include/berechtigung.class.php @@ -19,10 +19,16 @@ * Andreas Oesterreicher and * Rudolf Hangl . */ -require_once(dirname(__FILE__).'/basis_db.class.php'); +require_once(dirname(__FILE__).'/datum.class.php'); -class berechtigung extends basis_db +// CI +require_once(dirname(__FILE__).'/../ci_hack.php'); +require_once(dirname(__FILE__).'/../application/models/system/Berechtigung_model.php'); + +class berechtigung extends Berechtigung_model { + use db_extra; //CI Hack + public $result=array(); public $new; @@ -46,13 +52,13 @@ class berechtigung extends basis_db */ public function load($berechtigung_kurzbz) { - $qry = "SELECT * FROM system.tbl_berechtigung WHERE berechtigung_kurzbz=".$this->db_add_param($berechtigung_kurzbz); + $result = parent::load($berechtigung_kurzbz); - if($result = $this->db_query($qry)) + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval)) { - if($row = $this->db_fetch_object($result)) + if (count($result->retval) > 0) { - $this->berechtigung_kurzbz=$row->berechtigung_kurzbz; + $this->berechtigung_kurzbz = $row->berechtigung_kurzbz; $this->beschreibung = $row->beschreibung; return true; } diff --git a/include/funktion.class.php b/include/funktion.class.php index 32b8ad913..838638079 100644 --- a/include/funktion.class.php +++ b/include/funktion.class.php @@ -23,10 +23,16 @@ * Klasse funktion (FAS-Online) * @create 14-03-2006 */ -require_once(dirname(__FILE__).'/basis_db.class.php'); +require_once(dirname(__FILE__).'/datum.class.php'); -class funktion extends basis_db +// CI +require_once(dirname(__FILE__).'/../ci_hack.php'); +require_once(dirname(__FILE__).'/../application/models/ressource/Funktion_model.php'); + +class funktion extends Funktion_model { + use db_extra; //CI Hack + public $new; // boolean public $result = array(); // fachbereich Objekt @@ -105,22 +111,24 @@ class funktion extends basis_db */ public function load($funktion_kurzbz) { - if($funktion_kurzbz == '') + if ($funktion_kurzbz == '') { $this->errormsg = 'funktion_bz darf nicht leer sein'; return false; } - $qry = "SELECT * FROM public.tbl_funktion WHERE funktion_kurzbz = ".$this->db_add_param($funktion_kurzbz).";"; - - if(!$this->db_query($qry)) + $result = parent::load($funktion_kurzbz); + + if (!is_object($result) || (is_object($result) && $result->error != EXIT_SUCCESS)) { $this->errormsg = 'Fehler beim Laden des Datensatzes'; return false; } - if($row = $this->db_fetch_object()) + if (is_array($result->retval) && count($result->retval) == 1) { + $row = $result->retval[0]; + $this->funktion_kurzbz = $row->funktion_kurzbz; $this->beschreibung = $row->beschreibung; $this->aktiv = $this->db_parse_bool($row->aktiv); diff --git a/include/ort.class.php b/include/ort.class.php index 72c543808..fde9b4656 100644 --- a/include/ort.class.php +++ b/include/ort.class.php @@ -23,10 +23,16 @@ * Klasse ort (FAS-Online) * @create 04-12-2006 */ -require_once(dirname(__FILE__).'/basis_db.class.php'); +require_once(dirname(__FILE__).'/datum.class.php'); -class ort extends basis_db +// CI +require_once(dirname(__FILE__).'/../ci_hack.php'); +require_once(dirname(__FILE__).'/../application/models/ressource/Ort_model.php'); + +class ort extends Ort_model { + use db_extra; //CI Hack + public $new; // boolean public $result = array(); // ort Objekt @@ -72,29 +78,33 @@ class ort extends basis_db * Laedt alle verfuegbaren Orte * @return true wenn ok, false im Fehlerfall */ - public function getAll($raumtyp_kurzbz=null) + public function getAll($raumtyp_kurzbz = null) { - $qry = 'SELECT * FROM public.tbl_ort ORDER BY ort_kurzbz;'; - - if(!is_null($raumtyp_kurzbz) && $raumtyp_kurzbz!='') + parent::addOrder('ort_kurzbz'); + + if (!is_null($raumtyp_kurzbz) && $raumtyp_kurzbz != '') { - $qry = ' - SELECT - tbl_ort.* - FROM - public.tbl_ort - JOIN public.tbl_ortraumtyp USING(ort_kurzbz) - WHERE raumtyp_kurzbz='.$this->db_add_param($raumtyp_kurzbz).' - ORDER BY ort_kurzbz;'; + $result = parent::addJoin('public.tbl_ortraumtyp', 'ort_kurzbz'); + if ($result->error == EXIT_SUCCESS) + { + $result = parent::loadWhere(array('raumtyp_kurzbz' => $raumtyp_kurzbz)); + } } - if(!$this->db_query($qry)) + else + { + $result = parent::loadWhole(); + } + + if (!is_object($result) || (is_object($result) && ($result->error != EXIT_SUCCESS || !is_array($result->retval)))) { $this->errormsg = 'Fehler beim Laden der Datensaetze'; return false; } - while($row = $this->db_fetch_object()) + for ($i = 0; $i < count($result->retval); $i++) { + $row = $result->retval[$i]; + $ort_obj = new ort(); $ort_obj->ort_kurzbz = $row->ort_kurzbz; diff --git a/include/prestudent.class.php b/include/prestudent.class.php index 14217c498..a9964c88a 100755 --- a/include/prestudent.class.php +++ b/include/prestudent.class.php @@ -20,8 +20,6 @@ * Rudolf Hangl . */ require_once(dirname(__FILE__).'/datum.class.php'); -// require_once(dirname(__FILE__).'/person.class.php'); -// require_once(dirname(__FILE__).'/log.class.php'); // CI require_once(dirname(__FILE__).'/../ci_hack.php'); @@ -108,20 +106,20 @@ class prestudent extends Prestudent_model */ public function load($prestudent_id) { - if(!is_numeric($prestudent_id)) + if (!is_numeric($prestudent_id)) { $this->errormsg = 'ID ist ungueltig'; return false; } - $qry = 'SELECT * ' - . 'FROM public.tbl_prestudent ' - . 'WHERE prestudent_id = '.$this->db_add_param($prestudent_id, FHC_INTEGER); + $result = parent::load($prestudent_id); - 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->prestudent_id = $row->prestudent_id; $this->aufmerksamdurch_kurzbz = $row->aufmerksamdurch_kurzbz; $this->studiengang_kz = $row->studiengang_kz; @@ -156,10 +154,8 @@ class prestudent extends Prestudent_model $this->zgvdoktordatum = $row->zgvdoktordatum; $this->zgvdoktornation = $row->zgvdoktornation; - if(!person::load($row->person_id)) - return false; - else - return true; + $person = new person(); + return $person->load($row->person_id); } else { @@ -974,33 +970,22 @@ class prestudent extends Prestudent_model * @param $studiensemester_kurzbz * @return boolean */ - public function getLastStatus($prestudent_id, $studiensemester_kurzbz='', $status_kurzbz = '') + public function getLastStatus($prestudent_id, $studiensemester_kurzbz = '', $status_kurzbz = '') { - if($prestudent_id=='' || !is_numeric($prestudent_id)) + if ($prestudent_id == '' || !is_numeric($prestudent_id)) { $this->errormsg = 'Prestudent_id ist ungueltig'; return false; } - $qry = "SELECT tbl_prestudentstatus.*, bezeichnung AS studienplan_bezeichnung, - tbl_status.bezeichnung_mehrsprachig - FROM public.tbl_prestudentstatus - LEFT JOIN lehre.tbl_studienplan USING (studienplan_id) - JOIN public.tbl_status USING (status_kurzbz) - WHERE tbl_status.status_kurzbz = tbl_prestudentstatus.status_kurzbz - AND prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); - - if($studiensemester_kurzbz!='') - $qry.=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - - if($status_kurzbz !='') - $qry.= " AND status_kurzbz =".$this->db_add_param($status_kurzbz); - - $qry.=" ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1"; - if($this->db_query($qry)) + $result = parent::getLastStatus($prestudent_id, $studiensemester_kurzbz, $status_kurzbz); + + 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->prestudent_id = $row->prestudent_id; $this->status_kurzbz = $row->status_kurzbz; $this->status_mehrsprachig = $this->db_parse_lang_array($row->bezeichnung_mehrsprachig); diff --git a/vilesci/lehre/check/ueberbuchung.php b/vilesci/lehre/check/ueberbuchung.php index 2ed950a1a..8e14d94b2 100644 --- a/vilesci/lehre/check/ueberbuchung.php +++ b/vilesci/lehre/check/ueberbuchung.php @@ -120,6 +120,7 @@ $ort = array(); foreach ($ort_obj->result as $row) { + $ort[$row->ort_kurzbz] = new stdClass(); // Prevents the warning "Creating default object from empty value" $ort[$row->ort_kurzbz]->max_person = $row->max_person; } $qry = "SELECT DISTINCT vw_".$db_stpl_table.".unr,datum, stunde, ort_kurzbz, studiensemester_kurzbz, vw_".$db_stpl_table.".studiengang_kz, vw_".$db_stpl_table.".semester, verband, gruppe, gruppe_kurzbz, UPPER(stg_typ || stg_kurzbz) as stg_kurzbz, lehrfach, lehrfach_bez diff --git a/vilesci/lehre/zeitwuensche.php b/vilesci/lehre/zeitwuensche.php index 4db63c2e6..c3f289a48 100644 --- a/vilesci/lehre/zeitwuensche.php +++ b/vilesci/lehre/zeitwuensche.php @@ -59,10 +59,10 @@ if(!($erg=$db->db_query($qry))) die($db->db_last_error()); $num_rows=$db->db_num_rows($erg); -for ($i=0;$i<$num_rows;$i++) +for ($i = 0; $i < $num_rows; $i++) { - $row=$db->db_fetch_object($erg,$i); - $wunsch[$row->tag][$row->stunde][$row->gewicht]=$row->anz; + $row = $db->db_fetch_object($erg, $i); + $wunsch[$row->tag][$row->stunde][$row->gewicht] = $row->anz; } ?> @@ -98,18 +98,21 @@ Anzahl der Lektoren: for ($j=1; $j<7; $j++) { echo ''.$tagbez[1][$j].''; - for ($i=0;$i<$num_rows_stunde;$i++) + if (isset($wunsch)) // Prevents warnings if no data are present { - $pos=$wunsch[$j][$i+1][4]+$wunsch[$j][$i+1][5]; - $neg=(isset($wunsch[$j][$i+1][3])?$wunsch[$j][$i+1][3]:0)+ - (isset($wunsch[$j][$i+1][2])?$wunsch[$j][$i+1][2]:0)+ - (isset($wunsch[$j][$i+1][1])?$wunsch[$j][$i+1][1]:0)+ - (isset($wunsch[$j][$i+1][0])?$wunsch[$j][$i+1][0]:0); - $bgcolor=isset($cfgStdBgcolor[round(14/$anz_lektoren*$pos)-4])?$cfgStdBgcolor[round(14/$anz_lektoren*$pos)-4]:''; - echo ''; - echo '+:'.round(100/$anz_lektoren*$pos).'%
'; - echo '-:'.round(100/$anz_lektoren*$neg).'%'; - echo ''; + for ($i=0;$i<$num_rows_stunde;$i++) + { + $pos=$wunsch[$j][$i+1][4]+$wunsch[$j][$i+1][5]; + $neg=(isset($wunsch[$j][$i+1][3])?$wunsch[$j][$i+1][3]:0)+ + (isset($wunsch[$j][$i+1][2])?$wunsch[$j][$i+1][2]:0)+ + (isset($wunsch[$j][$i+1][1])?$wunsch[$j][$i+1][1]:0)+ + (isset($wunsch[$j][$i+1][0])?$wunsch[$j][$i+1][0]:0); + $bgcolor=isset($cfgStdBgcolor[round(14/$anz_lektoren*$pos)-4])?$cfgStdBgcolor[round(14/$anz_lektoren*$pos)-4]:''; + echo ''; + echo '+:'.round(100/$anz_lektoren*$pos).'%
'; + echo '-:'.round(100/$anz_lektoren*$neg).'%'; + echo ''; + } } echo ''; } diff --git a/vilesci/personen/funktion_det.php b/vilesci/personen/funktion_det.php index d1c66d186..32eda2736 100644 --- a/vilesci/personen/funktion_det.php +++ b/vilesci/personen/funktion_det.php @@ -289,7 +289,10 @@ if (!$funktion->load($kurzbz)) $funktion = new funktion(); - $funktion->load($funktion_kurzbz); + if (isset($funktion_kurzbz)) // Prevents notice "Undefined variable: funktion_kurzbz" + { + $funktion->load($funktion_kurzbz); + } if($funktion->fachbereich) { From d237915e80f078330451d0b3b47f6cc83d067cb1 Mon Sep 17 00:00:00 2001 From: paolo Date: Wed, 8 Jun 2016 17:52:14 +0200 Subject: [PATCH 3/3] - Added file read/write from/to file system functionality in Dms --- .../controllers/api/v1/content/Dms.php | 208 ++++++++++++++++-- application/models/content/Dms_model.php | 4 +- 2 files changed, 186 insertions(+), 26 deletions(-) diff --git a/application/controllers/api/v1/content/Dms.php b/application/controllers/api/v1/content/Dms.php index 59864385a..dc200d690 100644 --- a/application/controllers/api/v1/content/Dms.php +++ b/application/controllers/api/v1/content/Dms.php @@ -36,6 +36,32 @@ class Dms extends APIv1_Controller $dms_id = $this->get('dms_id'); $version = $this->get('version'); + if (isset($dms_id)) + { + $result = $this->_getDms($dms_id, $version); + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval) && count($result->retval) > 0) + { + if (($fileContent = $this->_readFile($result->retval[0]->filename)) != false) + { + $result->retval[0]->file_content = $fileContent; + } + } + + $this->response($result, REST_Controller::HTTP_OK); + } + else + { + $this->response(); + } + } + + /** + * + */ + private function _getDms($dms_id, $version) + { + $result = null; + if (isset($dms_id)) { $result = $this->DmsModel->addJoin('campus.tbl_dms_version', 'dms_id'); @@ -58,6 +84,40 @@ class Dms extends APIv1_Controller } } } + } + + return $result; + } + + /** + * + */ + public function postDms() + { + if ($this->_validate($this->post())) + { + if (isset($this->post()['dms_id'])) + { + if ($this->_saveFileOnUpdate($this->post())) + { + $result = $this->DmsModel->update($this->post()['dms_id'], $this->_dmsFieldsArray($this->post())); + if ($result->error == EXIT_SUCCESS) + { + $result = $this->DmsModel->updateDmsVersion($this->post()['dms_id'], $this->_dmsVersionFieldsArray($this->post())); + } + } + } + else + { + if (($fileName = $this->_saveFileOnInsert($this->post())) !== false) + { + $result = $this->DmsModel->insert($this->_dmsFieldsArray($this->post())); + if ($result->error == EXIT_SUCCESS) + { + $result = $this->DmsModel->insertDmsVersion($this->_dmsVersionFieldsArray($this->post(), $result->retval, $fileName)); + } + } + } $this->response($result, REST_Controller::HTTP_OK); } @@ -70,39 +130,139 @@ class Dms extends APIv1_Controller /** * */ - public function postDms() + private function _dmsFieldsArray($dms) { - if ($this->_validate($this->post())) + $fieldsArray = array('oe_kurzbz', 'dokument_kurzbz', 'kategorie_kurzbz'); + $returnArray = array(); + + foreach ($fieldsArray as $value) { - if (isset($this->post()['dms_id'])) + if (isset($dms[$value])) { - $result = $this->DmsModel->update($this->post()['dms_id'], $this->post()); - - if ($result->error == EXIT_SUCCESS) - { - $result = $this->DmsModel->updateDmsVersion($this->post()['dms_id'], $this->post()); - } + $returnArray[$value] = $dms[$value]; } - else - { - $result = $this->DmsModel->insert($this->post()); - - if ($result->error == EXIT_SUCCESS) - { - $result = $this->DmsModel->insertDmsVersion($this->post()); - } - } - - $this->response($result, REST_Controller::HTTP_OK); - } - else - { - $this->response(); } + + return $returnArray; } + /** + * + */ + private function _dmsVersionFieldsArray($dms, $dms_id = null, $fileName = null) + { + $fieldsArray = array( + 'version', + 'mimetype', + 'name', + 'beschreibung', + 'letzterzugriff', + 'insertamum', + 'insertvon', + 'updateamum', + 'updatevon' + ); + $returnArray = array(); + + foreach ($fieldsArray as $value) + { + if (isset($dms[$value])) + { + $returnArray[$value] = $dms[$value]; + } + } + + if (isset($dms_id)) + { + $returnArray['dms_id'] = $dms_id; + } + if (isset($fileName)) + { + $returnArray['filename'] = $fileName; + } + + return $returnArray; + } + + /** + * + */ + private function _saveFileOnUpdate($dms) + { + $result = $this->_getDms($dms['dms_id'], $dms['version']); + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval) && count($result->retval) > 0) + { + $fileName = DMS_PATH . $result->retval[0]->filename; + + if (($fileContent = base64_decode($dms['file_content']))) + { + if (file_put_contents($fileName, $fileContent)) + { + return true; + } + } + } + + return false; + } + + /** + * + */ + private function _saveFileOnInsert($dms) + { + $fileName = uniqid() . '.' . pathinfo($dms['name'], PATHINFO_EXTENSION); + $FileNamePath = DMS_PATH . $fileName; + + if (($fileContent = base64_decode($dms['file_content']))) + { + if ($fileHandle = fopen($FileNamePath, 'w')) + { + if(fwrite($fileHandle, $fileContent)) + { + fclose($fileHandle); + return $fileName; + } + } + } + + return false; + } + + /** + * + */ + private function _readFile($fileName) + { + $fileNamePath = DMS_PATH . $fileName; + if (file_exists($fileNamePath)) + { + if ($fileHandle = fopen($fileNamePath, 'r')) + { + $cTmpHEX = ''; + while (!feof($fileHandle)) + { + $cTmpHEX .= fread($fileHandle, 8192); + } + fclose($fileHandle); + return base64_encode($cTmpHEX); + } + } + + return false; + } + private function _validate($dms = NULL) { + if (!isset($dms['file_content']) || (isset($dms['file_content']) && $dms['file_content'] == '')) + { + return false; + } + if (!isset($dms['name']) || (isset($dms['name']) && $dms['name'] == '')) + { + return false; + } + return true; } } \ No newline at end of file diff --git a/application/models/content/Dms_model.php b/application/models/content/Dms_model.php index 7a27e8b79..55af1371e 100644 --- a/application/models/content/Dms_model.php +++ b/application/models/content/Dms_model.php @@ -12,7 +12,7 @@ class Dms_model extends DB_Model $this->pk = 'dms_id'; } - protected function insertDmsVersion($data) + public function insertDmsVersion($data) { $tableName = 'campus.tbl_dms_version'; @@ -27,7 +27,7 @@ class Dms_model extends DB_Model return $this->_error($this->db->error(), FHC_DB_ERROR); } - protected function updateDmsVersion($id, $data) + public function updateDmsVersion($id, $data) { $tableName = 'campus.tbl_dms_version';