diff --git a/.gitignore b/.gitignore index d0471e0b2..52e71e57b 100644 --- a/.gitignore +++ b/.gitignore @@ -9,11 +9,13 @@ documents/ .settings .project .buildpath -tests/codeception.yml -tests/codeception/api.suite.yml -tests/codeception/functional.suite.yml -tests/codeception/acceptance.suite.yml +tests/codeception/codeception.yml +tests/codeception/tests/api.suite.yml +tests/codeception/tests/functional.suite.yml +tests/codeception/tests/acceptance.suite.yml tests/codeception/_support/_generated tests/codeception/_output/* !/tests/codeception/_output/.placeholder /submodules/d3 +composer.lock +bin diff --git a/.gitmodules b/.gitmodules index d2bd62ca4..41511b610 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ -[submodule "submodules/tablesorter"] - path = submodules/tablesorter - url = https://github.com/christianbach/tablesorter.git [submodule "submodules/bootstrap"] path = submodules/bootstrap url = https://github.com/twbs/bootstrap.git diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100755 index 000000000..336515567 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,63 @@ +# Change Log + +## [Unreleased] + +### Added + +- **[FAS]** Zusätzliches Feld für Uhrzeit bei Abschlussprüfung +- **[FAS]** Reihungstest Dropdown zeigt verfügbare/belegte Plätze an +- **[CORE]** Reihungstest Punkteübernahme oder Prozentpunkte ist konfigurierbar +- **[CIS]** LVPlan Export für Excel +- **[FAS]** Termine Karteireiter im FAS zeigt die Anmerkung aus dem LVPlan an +- **[CIS]** Onlinebewerbungstool greift auf mehrsprachige Statusbezeichnungen zu. + +### Changed +- **[FAS]** Dokumente Menü im FAS neu sortiert um den Lebenszyklus des Studierenden abzubilden +- **[CORE]** LVPlan Update Mail ist nun zweisprachig Deutsch/Englisch +- **[FAS]** Prüfungen im FAS werden nur noch vom aktuell ausgewählten Studiensemester angezeigt. Umschalten auf volle Ansicht möglich +- **[CIS]** LVPlan Begrenzung der 4er Blockung aufgehoben. +- **[CIS]** Im Menü 'Zeitsperren' Link zu Resturlaubsübersicht entfernt. Falls benötigt Verlinkung über CMS möglich. +- **[CORE]** Removed NOT NULL constraint on 'verfasser\_uid' from public.tbl\_notiz + +### Updateinfo +- **[FAS]** Für Lehraufträge muss eine Unoconv-Vorlage erstellt werden, da der für xsl-fo notwendige Seitenumbruch-Tag aus dem RDF entfernt wurde. +- **[FAS]** Mehrsprachigkeitsspalte tbl_status.bezeichnung_mehrsprachig wird durch das Updatescript automatisch in den ersten beiden Sprachen mit der status_kurzbz vorbefüllt. Übersetzungen sind anzupassen. + +## [3.1.0] - 2015-11-12 +### Added + +- **[FAS]** Bei Noten können zusätzlich Punkte gespeichert werden. Notenschlüssel für Gesamtnote kann hinterlegt werden +- **[FAS]** Anwesenheiten von Studierenden können erfasst werden +- **[FAS]** Vertragsverwaltung bei Mitarbeiter +- **[FAS]** Dokumente im FAS können mit SHIFT bzw STRG statt als PDF auch als DOC oder ODT erstellt werden +- **[BERECHTIGUNG]** system/changeoutputformat Legt fest ob Dokumente als DOC/ODT exportiert werden dürfen +- **[FAS]** Termine Karteireiter im FAS zeigt den LVPlan von Studierenden/Lehrveranstaltungen +- **[FAS]** Bereits verplante Lektoren können vom FAS aus, aus dem LVPlan gelöscht werden. Zusätzlich wird im FAS angezeigt ob dieser Lektor bereits verplant ist +- **[FAS]** Bereits verplante Gruppen können direkt vom FAS heraus aus dem LV-Plan gelöscht werden wenn diese bereits verplant wurden. +- **[TEMPUS]** Drop auf Lehrstunde Feature für 2 Gruppen die zur selben Zeit im gleichen Raum unterricht haben (Setzt UNR gleich damit es nicht als kollision angezeigt wird) +- **[TEMPUS]** Option zum Anzeigen von allen Einträgen damit auch Incominggruppen und Gruppen aus anderen Studiengängen sichtbar sind +- **[FAS]** Bei Notizen können jetzt zusätzlich Dokumente hochgeladen werden +- **[CORE]** Bei Dokumentenvorlagen können nun Style und content.xml auf einmal erfasst werden, Dokumente können deaktiviert werden, Eigene GUI im Vilesci zum Verwalten der Dokumentenvorlagen +- **[CORE]** Mehrsprachigkeit bei diversen Tabellen (Dokumente, ZGV, ...) hinzugefügt + +### Fixed +- **[TEMPUS]** Kollisionsfreie User werden in Verbandsansicht nicht mehr als Kollision angezeigt + +### Changed +- **[FAS]** Stundenobergrenze für Lektoren kann jetzt pro Organisationseinheit festgelegt werden. (warn_semesterstunden_frei/fix tbl_organisationseinheit) +- **[BERECHTIGUNG]** lv-plan/gruppenentfernen Lektorenänderung: Lektoren die bereits verplant sind können jetzt auch dann direkt im FAS geändert werden, wenn dadurch eine Kollision entsteht. Vorraussetzung dafür ist, dass ignore_kollision true ist. Wenn ignore_kollision false ist, dann ist die Lektorenänderung nicht mehr möglich. Vorher wurde der Lektor in diesem Fall nur im FAS geändert aber nicht im LVPlan. +- **[FAS]** Ausstellungsstaat der ZGV wird jetzt getrennt für Bachelor und Master erfasst + + +## [3.0.0] - 2015-02-13 +### Added + +- **[CORE]** Studienordnungen / Studienpläne +- **[CORE]** Module +- **[CIS]** CIS Redesign +- **[CORE]** Unterstützung für Addons +- **[FAS]** Notizsystem + +### Fixed + +- **[CORE]** Diverse Bugfixes diff --git a/README.md b/README.md index 1a417b114..8874b5778 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ # FH-Complete +[![Build Status](http://phpci.fhcomplete.org/build-status/image/1)](http://phpci.fhcomplete.org/project/view/1) + * [FH-Complete Homepage](http://www.fhcomplete.org) * [Wiki](http://fhcomplete.technikum-wien.at/dokuwiki/) +* [Changelog](CHANGELOG.md) diff --git a/addons/template/cis/init.js.php b/addons/template/cis/init.js.php new file mode 100644 index 000000000..174f620ed --- /dev/null +++ b/addons/template/cis/init.js.php @@ -0,0 +1,44 @@ + + */ +/** + * Initialisierung des Addons + */ +?> +if(typeof addon =='undefined') + var addon=Array(); + +addon.push( +{ + init: function(page, params) + { + // Diese Funktion wird nach dem Laden der Seite im CIS aufgerufen + + /* + switch(page) + { + case 'cis/private/tools/zeitaufzeichnung.php': + break; + + default: + break; + } + */ + } +}); diff --git a/addons/template/vilesci/init.js.php b/addons/template/vilesci/init.js.php new file mode 100644 index 000000000..5ac9310ca --- /dev/null +++ b/addons/template/vilesci/init.js.php @@ -0,0 +1,44 @@ + + */ +/** + * Initialisierung des Addons + */ +?> +if(typeof addon =='undefined') + var addon=Array(); + +addon.push( +{ + init: function(page, params) + { + // Diese Funktion wird nach dem Laden der Seite im Vilesci aufgerufen + + /* + switch(page) + { + case 'vilesci/lehre/lehrveranstaltung.php': + break; + + default: + break; + } + */ + } +}); diff --git a/application/config/config.php b/application/config/config.php index e07aeebbb..68b85b62f 100755 --- a/application/config/config.php +++ b/application/config/config.php @@ -508,14 +508,10 @@ $config['proxy_ips'] = ''; | Autoload Custom Controllers |-------------------------------------------------------------------------- | -Don't work so sometime delete this*/ -function __autoload($class) -{ +| It's working, so don't delete this :D +*/ +spl_autoload_register(function ($class) { if (substr($class,0,3) !== 'CI_' && substr($class,0,4) !== 'FHC_') - { - if (file_exists($file = APPPATH . 'core/' . $class . '.php')) - { - require_once $file; - } - } -} + if (file_exists($file = APPPATH . 'core/' . $class . '.php')) + require_once $file; +}); diff --git a/application/config/constants.php b/application/config/constants.php index 48283e223..92a784220 100755 --- a/application/config/constants.php +++ b/application/config/constants.php @@ -1,6 +1,24 @@ 'basis/person', + 'public.tbl_prestudent' => 'basis/person', + 'public.tbl_organisationseinheit' => 'basis/organisationseinheit' +, + 'public.tbl_sprache' => 'admin' +); diff --git a/application/config/rest.php b/application/config/rest.php index 3e311e078..4f45858a8 100644 --- a/application/config/rest.php +++ b/application/config/rest.php @@ -119,7 +119,8 @@ $config['rest_auth'] = 'basic'; | | Is login required and if so, the user store to use | -| '' Use config based users or wildcard testing +| '' Use config based users or wildcard testing, only for testing purpose +| it would be very unsecure to let unset in a production environment | 'ldap' Use LDAP authentication | 'library' Use a authentication library | @@ -139,13 +140,16 @@ $config['auth_source'] = 'library'; | In other cases override the function _perform_library_auth in your controller | | For digest authentication the library function should return already a stored -| md5(username:restrealm:password) for that username -| -| e.g: md5('admin:REST API:1234') = '1e957ebc35631ab22d5bd6526bd14ea2' +| password for that username, even if it is hashed | */ $config['auth_library_class'] = 'FHC_Auth'; -$config['auth_library_function'] = 'auth'; + +// rest_auth is basic +$config['auth_library_function'] = 'basicAuthentication'; + +// rest_auth is digest +//$config['auth_library_function'] = 'digestAuthentication'; /* |-------------------------------------------------------------------------- @@ -211,7 +215,7 @@ $config['auth_override_class_method_http']['Kontakt']['kontaktPerson']['get'] = | Array of usernames and passwords for login, if ldap (even library) is configured this is ignored | */ -$config['rest_valid_logins'] = ['admin' => '1234', 'test' => 'test']; +//$config['rest_valid_logins'] = ['admin' => '1234', 'test' => 'test']; /* |-------------------------------------------------------------------------- @@ -228,7 +232,7 @@ $config['rest_valid_logins'] = ['admin' => '1234', 'test' => 'test']; | restrict certain methods to IPs in your whitelist | */ -$config['rest_ip_whitelist_enabled'] = TRUE; +$config['rest_ip_whitelist_enabled'] = FALSE; /* |-------------------------------------------------------------------------- diff --git a/application/config/template.php b/application/config/template.php new file mode 100644 index 000000000..5dbf44178 --- /dev/null +++ b/application/config/template.php @@ -0,0 +1,15 @@ + + * @see http://codeigniter.com/user_guide/general/urls.html + * @return void + */ + public function index() + { + $this->session->uid='admin'; // Should normaly be set through auth + $this->load->model('person/Prestudent_model'); + $id=null; + + // Insert PreStudent + $data = array + ( + 'aufmerksamdurch_kurzbz' => 'k.A.', + 'person_id' => 1, + 'studiengang_kz' => 0 + ); + $res = $this->Prestudent_model->insert($data); + if ($res->error) + echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'
'; + else + $id=$res->retval; + + // Update PreStudent + $data = array + ( + 'zgvort' => 'Wien', + 'zgvdatum' => '2012-12-12', + 'facheinschlberuf' => true + ); + $res = $this->Prestudent_model->update($id, $data); + if ($res->error) + echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'
'; + else + $id=$res->retval; + + // Replace PreStudent + /*$data = array + ( + 'prestudent_id' => $id, + 'zgvmaort' => 'Linz', + 'zgvmadatum' => '2011-11-11', + 'facheinschlberuf' => false + ); + $res = $this->Prestudent_model->replace($data); + if ($res->error) + echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval; + else + echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval;*/ + + // Load PreStudent + $res = $this->Prestudent_model->load($id); + if ($res->error) + echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'
'; + else + var_dump($res->retval); + + // Delete PreStudent + $res = $this->Prestudent_model->delete($id); + if ($res->error) + echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'
'; + else + var_dump($res->retval); + + $this->load->model('organisation/Organisationseinheit_model'); + // Insert OE + $data = array + ( + 'oe_kurzbz' => 'testoe', + 'bezeichnung' => 'testoe', + 'organisationseinheittyp_kurzbz' => 'Institut', + 'standort_id' => null + ); + $res = $this->Organisationseinheit_model->insert($data); + if ($res->error) + echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'
'; + else + $id = $data['oe_kurzbz']; + var_dump($res); + + // Update PreStudent + $data = array + ( + 'freigabegrenze' => 1234.56, + 'kurzzeichen' => 'TestOE', + 'lehre' => false + ); + $res = $this->Organisationseinheit_model->update($id, $data); + if ($res->error) + echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'
'; + else + $id=$res->retval; + + // Delete PreStudent + $res = $this->Organisationseinheit_model->delete($id); + if ($res->error) + echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'
'; + else + var_dump($res->retval); + + $this->load->model('core/Sprache_model'); + // Insert Sprache + $data = array + ( + 'sprache' => 'test', + 'bezeichnung' => "{'testsprache'}", + 'locale' => 'te_TE', + 'content' => false + ); + $res = $this->Sprache_model->insert($data); + if ($res->error) + echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'
'; + else + $id = $data['sprache']; + var_dump($res); + + // Update Sprache + $data = array + ( + 'index' => 4, + 'bezeichnung' => "{'TestSprache', 'TestLanguage', 'TestSpanisch'}", + 'content' => true + ); + $res = $this->Sprache_model->update($id, $data); + if ($res->error) + echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'
'; + else + $id=$res->retval; //echo $id; + + // Load Sprache + $res = $this->Sprache_model->load($id); + if ($res->error) + echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'
'; + else + { + $result = $res->retval->result_object(); + var_dump($this->Sprache_model->pgArrayPhp($result[0]->bezeichnung)); + } + + // Delete Sprache + $res = $this->Sprache_model->delete($id); + if ($res->error) + echo 'Error: ',$res->error, ', Code: ',$res->code,' -> ',$res->msg,': ',$res->retval,'
'; + else + var_dump($res->retval); + } +} diff --git a/application/controllers/Vilesci.php b/application/controllers/Vilesci.php index ab33260c1..3cbf06974 100755 --- a/application/controllers/Vilesci.php +++ b/application/controllers/Vilesci.php @@ -1,7 +1,7 @@ dbupdate()) - echo 'System-DB needs update!'; - else - { - $this->load->view('templates/header'); - $this->load->view('vilesci_frameset'); - $this->load->view('templates/footer'); - } - } - - /** - * - * @return bool - */ - private function __dbupdate() - { - // Check for update (codeigniter migration) - $this->load->library('migration'); - if ($this->migration->current() === false) - show_error($this->migration->error_string()); - if ($this->migration->current() != $this->migration->latest()) - return true; - else - return false; + $this->load->view('templates/header'); + $this->load->view('vilesci_frameset'); + $this->load->view('templates/footer'); } } diff --git a/application/controllers/api/v1/APIAuth.php b/application/controllers/api/v1/APIAuth.php deleted file mode 100644 index 162b112d3..000000000 --- a/application/controllers/api/v1/APIAuth.php +++ /dev/null @@ -1,133 +0,0 @@ -methods['login_get']['limit'] = 500; // 500 requests per hour per user/key - - // Load helper - //$this->load->helper('fhcauth'); - $this->load->library('session'); - $this->load->library('FHC_Auth'); - } - - /** - * Checks user credentials and creates a new session - * - * @example normal account: http://wsp.fortyseeds.at/backend/api/userauth/login/username/foo%40bar.at/password/secret/device_id/abcdef123 - * @example OAuth Google: http://wsp.fortyseeds.at/backend/api/userauth/login/username/foo%40bar.at/device_id/abcdef123/google_token/qwert321 - * @example OAuth Facebook: http://wsp.fortyseeds.at/backend/api/userauth/login/username/foo%40bar.at/device_id/abcdef123/fb_token/qwert321 - * @return void JSON that indicates success/failure of login. - */ - public function login_get() - { - $payload = array(); - $errormsg = ""; - $httpstatus = null; - $username = urldecode($this->get('username')); - $password = urldecode($this->get('password')); - - $account = $this->fhc_auth->auth($username, $password); - - // perform login checks - if (!$account) - $errormsg = "Auth not accepted!"; - - if (empty($errormsg)) - { - // generate new session - $this->session->sess_regenerate(); - $token = session_id(); - - $payload = [ - 'success' => true, - 'message' => 'User successfully logged in', - 'session_id' => $token - ]; - $httpstatus = REST_Controller::HTTP_OK; - } - else - { - $payload = [ - 'success' => false, - 'message' => $errormsg - ]; - $httpstatus = REST_Controller::HTTP_UNAUTHORIZED; - } - - // Set the response and exit - $this->response($payload, $httpstatus); - } - - /** - * Logs out user by destroying session - * - * @example http://wsp.fortyseeds.at/backend/api/userauth/logout/username/foo%40bar.at/session_id/55afab8ba6f1b/device_id/abcdef123 - * @return void JSON that indicates success/failure of logout - */ - public function logout_get() - { - $payload = array(); - $httpstatus = null; - $token = $this->get('session_id'); - $username = urldecode($this->get('username')); - $deviceid = $this->get('device_id'); - $account = $this->user_model->load($username); - - // destroy session - if ($this->session_model->destroy($account, $token, $deviceid)) - { - $payload = [ - 'success' => true, - 'message' => 'user successfully logged out' - ]; - $httpstatus = REST_Controller::HTTP_OK; - } - else - { - $payload = [ - 'success' => false, - 'message' => 'user could not be logged out' - ]; - $httpstatus = REST_Controller::HTTP_BAD_REQUEST; - } - - // Set the response and exit - $this->response($payload, $httpstatus); - } -} diff --git a/application/controllers/api/v1/APIKey.php b/application/controllers/api/v1/APIKey.php deleted file mode 100644 index b28712e8c..000000000 --- a/application/controllers/api/v1/APIKey.php +++ /dev/null @@ -1,316 +0,0 @@ - ['level' => 10, 'limit' => 10], - 'index_delete' => ['level' => 10], - 'level_post' => ['level' => 10], - 'regenerate_post' => ['level' => 10], - ]; - - /** - * Insert a key into the database - * - * @access public - * @return void - */ - public function index_put() - { - // Build a new key - $key = $this->__generateKey(); - - // If no key level provided, provide a generic key - $level = $this->put('level') ? $this->put('level') : 1; - $ignore_limits = ctype_digit($this->put('ignore_limits')) ? (int)$this->put('ignore_limits') : 1; - - // Insert the new key - if ($this->_insert_key($key, ['level' => $level, 'ignore_limits' => $ignore_limits])) - { - $this->response([ - 'status' => true, - 'key' => $key - ], REST_Controller::HTTP_CREATED); // CREATED (201) being the HTTP response code - } - else - { - $this->response([ - 'status' => false, - 'message' => 'Could not save the key' - ], REST_Controller::HTTP_INTERNAL_SERVER_ERROR); // INTERNAL_SERVER_ERROR (500) being the HTTP response code - } - } - - /** - * Remove a key from the database to stop it working - * - * @access public - * @return void - */ - public function index_delete() - { - $key = $this->delete('key'); - - // Does this key exist? - if (!$this->_key_exists($key)) - { - // It doesn't appear the key exists - $this->response([ - 'status' => false, - 'message' => 'Invalid API key' - ], REST_Controller::HTTP_BAD_REQUEST); // BAD_REQUEST (400) being the HTTP response code - } - - // Destroy it - $this->_delete_key($key); - - // Respond that the key was destroyed - $this->response([ - 'status' => true, - 'message' => 'API key was deleted' - ], REST_Controller::HTTP_NO_CONTENT); // NO_CONTENT (204) being the HTTP response code - } - - /** - * Change the level - * - * @access public - * @return void - */ - public function level_post() - { - $key = $this->post('key'); - $new_level = $this->post('level'); - - // Does this key exist? - if (!$this->_key_exists($key)) - { - // It doesn't appear the key exists - $this->response([ - 'status' => false, - 'message' => 'Invalid API key' - ], REST_Controller::HTTP_BAD_REQUEST); // BAD_REQUEST (400) being the HTTP response code - } - - // Update the key level - if ($this->_update_key($key, ['level' => $new_level])) - { - $this->response([ - 'status' => true, - 'message' => 'API key was updated' - ], REST_Controller::HTTP_OK); // OK (200) being the HTTP response code - } - else - { - $this->response([ - 'status' => false, - 'message' => 'Could not update the key level' - ], REST_Controller::HTTP_INTERNAL_SERVER_ERROR); // INTERNAL_SERVER_ERROR (500) being the HTTP response code - } - } - - /** - * Suspend a key - * - * @access public - * @return void - */ - public function suspend_post() - { - $key = $this->post('key'); - - // Does this key exist? - if (!$this->_key_exists($key)) - { - // It doesn't appear the key exists - $this->response([ - 'status' => false, - 'message' => 'Invalid API key' - ], REST_Controller::HTTP_BAD_REQUEST); // BAD_REQUEST (400) being the HTTP response code - } - - // Update the key level - if ($this->_update_key($key, ['level' => 0])) - { - $this->response([ - 'status' => true, - 'message' => 'Key was suspended' - ], REST_Controller::HTTP_OK); // OK (200) being the HTTP response code - } - else - { - $this->response([ - 'status' => false, - 'message' => 'Could not suspend the user' - ], REST_Controller::HTTP_INTERNAL_SERVER_ERROR); // INTERNAL_SERVER_ERROR (500) being the HTTP response code - } - } - - /** - * Regenerate a key - * - * @access public - * @return void - */ - public function regenerate_post() - { - $old_key = $this->post('key'); - $key_details = $this->__getKey($old_key); - - // Does this key exist? - if (!$key_details) - { - // It doesn't appear the key exists - $this->response([ - 'status' => false, - 'message' => 'Invalid API key' - ], REST_Controller::HTTP_BAD_REQUEST); // BAD_REQUEST (400) being the HTTP response code - } - - // Build a new key - $new_key = $this->__generateKey(); - - // Insert the new key - if ($this->_insert_key($new_key, ['level' => $key_details->level, 'ignore_limits' => $key_details->ignore_limits])) - { - // Suspend old key - $this->_update_key($old_key, ['level' => 0]); - - $this->response([ - 'status' => true, - 'key' => $new_key - ], REST_Controller::HTTP_CREATED); // CREATED (201) being the HTTP response code - } - else - { - $this->response([ - 'status' => false, - 'message' => 'Could not save the key' - ], REST_Controller::HTTP_INTERNAL_SERVER_ERROR); // INTERNAL_SERVER_ERROR (500) being the HTTP response code - } - } - - /* Helper Methods */ - - /** - * Generate a key - * - * @access private - * @return void - */ - private function __generateKey() - { - do - { - // Generate a random salt - $salt = base_convert(bin2hex($this->security->get_random_bytes(64)), 16, 36); - - // If an error occurred, then fall back to the previous method - if ($salt === false) - { - $salt = hash('sha256', time().mt_rand()); - } - - $new_key = substr($salt, 0, config_item('rest_key_length')); - } - while ($this->_key_exists($new_key)); - - return $new_key; - } - - /* Private Data Methods */ - - /** - * Get a key - * - * @access private - * @param string $key The API-Key. - * @return array - */ - private function __getKey($key) - { - return $this->db - ->where(config_item('rest_key_column'), $key) - ->get(config_item('rest_keys_table')) - ->row(); - } - - /** - * Check if key exists - * - * @access private - * @param string $key The API-Key. - * @return bool - */ - private function _key_exists($key) - { - return $this->db - ->where(config_item('rest_key_column'), $key) - ->count_all_results(config_item('rest_keys_table')) > 0; - } - - /** - * Insert a key - * - * @access private - * @param string $key The API-Key. - * @param array $data The API-Key-Data. - * @return bool - */ - private function _insert_key($key, $data) - { - $data[config_item('rest_key_column')] = $key; - $data['date_created'] = function_exists('now') ? now() : time(); - - return $this->db - ->set($data) - ->insert(config_item('rest_keys_table')); - } - - /** - * Update a key - * - * @access private - * @param string $key The API-Key. - * @param array $data The API-Key-Data. - * @return bool - */ - private function _update_key($key, $data) - { - return $this->db - ->where(config_item('rest_key_column'), $key) - ->update(config_item('rest_keys_table'), $data); - } - - /** - * Delete a key - * - * @access private - * @param string $key The API-Key. - * @return bool - */ - private function _delete_key($key) - { - return $this->db - ->where(config_item('rest_key_column'), $key) - ->delete(config_item('rest_keys_table')); - } - -} diff --git a/application/controllers/api/v1/Kontakt.php b/application/controllers/api/v1/Kontakt.php index 68c015804..7f9c05112 100644 --- a/application/controllers/api/v1/Kontakt.php +++ b/application/controllers/api/v1/Kontakt.php @@ -15,7 +15,7 @@ defined('BASEPATH') || exit('No direct script access allowed'); -class Kontakt extends REST_Controller +class Kontakt extends APIv1_Controller { //public $session; diff --git a/application/controllers/api/v1/Nation.php b/application/controllers/api/v1/Nation.php new file mode 100644 index 000000000..2e0d1ef0e --- /dev/null +++ b/application/controllers/api/v1/Nation.php @@ -0,0 +1,80 @@ +load->model('nation_model', 'NationModel'); + // Load set the addonID of the model to let to check the permissions + $this->NationModel->setAddonID($this->_getAddonID()); + } + + public function getAll() + { + $result = $this->NationModel->getAll($this->get('ohnesperre'), $this->get('orderEnglish')); + + if(is_object($result)) + { + $payload = [ + 'success' => TRUE, + 'message' => 'Nation found', + 'data' => $result->result() + ]; + $httpstatus = REST_Controller::HTTP_OK; + } + else + { + $payload = [ + 'success' => FALSE, + 'message' => 'Nation not found' + ]; + $httpstatus = REST_Controller::HTTP_OK; + } + + $this->response($payload, $httpstatus); + } + + public function getBundesland() + { + $result = $this->NationModel->getBundesland(); + + if(is_object($result)) + { + $payload = [ + 'success' => TRUE, + 'message' => 'Bundesland found', + 'data' => $result->result() + ]; + $httpstatus = REST_Controller::HTTP_OK; + } + else + { + $payload = [ + 'success' => FALSE, + 'message' => 'Bundesland not found' + ]; + $httpstatus = REST_Controller::HTTP_OK; + } + + $this->response($payload, $httpstatus); + } +} \ No newline at end of file diff --git a/application/controllers/api/v1/Person.php b/application/controllers/api/v1/Person.php deleted file mode 100644 index b74bbce59..000000000 --- a/application/controllers/api/v1/Person.php +++ /dev/null @@ -1,207 +0,0 @@ -load->model('person/person_model'); - } - - public function person_get() - { - //if (!$this->session_model->validate($this->get('session_id'), $this->get('device_id'))) - // $this->response(array(['success' => false, 'message' => 'access denied']), REST_Controller::HTTP_UNAUTHORIZED); - - $code = $this->get('code'); - $email = $this->get('email'); - $person_id = $this->get('person_id'); - - if ((!is_null($code)) && (!is_null($email))) - { - $result = $this->person_model->getPersonByCodeAndEmail($code, $email); - } - elseif (! is_null($code)) - { - $result = $this->person_model->getPersonByCode($code, $email); - } - elseif (!is_null($person_id)) - { - $result = $this->person_model->getPerson($person_id); - } - else - { - $result = $this->person_model->getPerson(); - } - - if (empty($result)) - { - $payload = [ - 'success' => false, - 'message' => 'Person not found' - ]; - $httpstatus = REST_Controller::HTTP_OK; - } - else - { - // return all available persons - $payload = [ - 'success' => true, - 'message' => 'Persons found' - ]; - $payload['data'] = $result; - $httpstatus = REST_Controller::HTTP_OK; - } - - // Set the response and exit - $this->response($payload, $httpstatus); - } - - public function personFromCode_post() - { - $code = $this->post('code'); - $email = $this->post('email'); - $person_id = $this->post('person_id'); - - if ((!is_null($code)) && (!is_null($email))) - { - $result = $this->person_model->getPersonByCodeAndEmail($code, $email); - } - elseif (!is_null($person_id)) - { - $result = $this->person_model->getPerson($person_id); - } - else - { - $result = $this->person_model->getPerson(); - } - - if (empty($result)) - { - $payload = [ - 'success' => false, - 'message' => 'Person not found' - ]; - $httpstatus = REST_Controller::HTTP_OK; - } - else - { - // return all available persons - $payload = [ - 'success' => true, - 'message' => 'Persons found' - ]; - $payload['data'] = $result; - $httpstatus = REST_Controller::HTTP_OK; - } - - // Set the response and exit - $this->response($payload, $httpstatus); - } - - public function person_post() - { - $result = $this->person_model->savePerson($this->post()); - if($result != FALSE) - { - $httpstatus = REST_Controller::HTTP_OK; - $payload = [ - 'success' => true, - 'message' => 'Person saved.' - ]; - $payload['data'] = $result; - } - else - { - $payload = [ - 'success' => false, - 'message' => 'Could not save person.' - ]; - $httpstatus = REST_Controller::HTTP_OK; - } - - $this->response($payload, $httpstatus); - } - - public function personUpdate_post() - { - $result = $this->person_model->updatePerson($this->post()); - if($result != FALSE) - { - $httpstatus = REST_Controller::HTTP_OK; - $payload = [ - 'success' => true, - 'message' => 'Person updated.' - ]; - $payload['data'] = $result; - } - else - { - $payload = [ - 'success' => false, - 'message' => 'Could not update person.' - ]; - $httpstatus = REST_Controller::HTTP_OK; - } - // - $this->response($payload, $httpstatus); - } - - public function checkBewerbung_get() - { - $result = $this->person_model->checkBewerbung($this->get("email"),$this->get("studiensemester_kurzbz")); - $httpstatus = REST_Controller::HTTP_OK; - $payload = [ - 'success' => true, - 'message' => 'Bewerbung exists.' - ]; - $payload['data'] = $result; - - $this->response($payload, $httpstatus); - } - - public function checkZugangscodePerson_get() - { - $result = $this->person_model->checkZugangscodePerson($this->get("code")); - $httpstatus = REST_Controller::HTTP_OK; - if(!empty($result)) - { - $payload = [ - 'success' => true, - 'message' => 'Zugangscode exists.' - ]; - $payload['data'] = $result; - } - else - { - $payload = [ - 'success' => false, - 'message' => 'Zugangscode does not exist.' - ]; - $httpstatus = REST_Controller::HTTP_OK; - } - - $this->response($payload, $httpstatus); - } -} diff --git a/application/controllers/api/v1/Test.php b/application/controllers/api/v1/Test.php new file mode 100644 index 000000000..d575db173 --- /dev/null +++ b/application/controllers/api/v1/Test.php @@ -0,0 +1,50 @@ + TRUE, + 'message' => 'API HTTP GET call test succeed' + ]; + $httpstatus = REST_Controller::HTTP_OK; + $this->response($payload, $httpstatus); + } + + /** + * Test HTTP POST method + * * It responses whith the HTTP status 200 and prints this JSON string + * {"success":true,"message":"API HTTP POST call test succeed"} + * + * @return void + */ + public function postTest() + { + $payload = [ + 'success' => TRUE, + 'message' => 'API HTTP POST call test succeed' + ]; + $httpstatus = REST_Controller::HTTP_OK; + $this->response($payload, $httpstatus); + } +} diff --git a/application/controllers/api/v1/lehre/Studiengang.php b/application/controllers/api/v1/lehre/Studiengang.php new file mode 100644 index 000000000..e85b6e601 --- /dev/null +++ b/application/controllers/api/v1/lehre/Studiengang.php @@ -0,0 +1,55 @@ +load->model('lehre/studiengang_model', 'StudiengangModel'); + // Load set the addonID of the model to let to check the permissions + $this->StudiengangModel->setAddonID($this->_getAddonID()); + } + + public function getAllForBewerbung() + { + $result = $this->StudiengangModel->getAllForBewerbung(); + + if(is_object($result) && $result->num_rows() > 0) + { + $payload = [ + 'success' => TRUE, + 'message' => 'Courses found', + 'data' => $result->result() + ]; + $httpstatus = REST_Controller::HTTP_OK; + } + else + { + $payload = [ + 'success' => FALSE, + 'message' => 'No courses found' + ]; + $httpstatus = REST_Controller::HTTP_OK; + } + + $this->response($payload, $httpstatus); + } +} \ No newline at end of file diff --git a/application/controllers/api/v1/lehre/Studienplan.php b/application/controllers/api/v1/lehre/Studienplan.php new file mode 100644 index 000000000..f0c831ee4 --- /dev/null +++ b/application/controllers/api/v1/lehre/Studienplan.php @@ -0,0 +1,55 @@ +load->model('lehre/studienplan_model', 'StudienplanModel'); + // Load set the addonID of the model to let to check the permissions + $this->StudienplanModel->setAddonID($this->_getAddonID()); + } + + public function getStudienplaene() + { + $result = $this->StudienplanModel->getStudienplaene($this->get('studiengang_kz')); + + if(is_object($result) && $result->num_rows() > 0) + { + $payload = [ + 'success' => TRUE, + 'message' => 'Plan found', + 'data' => $result->result() + ]; + $httpstatus = REST_Controller::HTTP_OK; + } + else + { + $payload = [ + 'success' => FALSE, + 'message' => 'Plan not found' + ]; + $httpstatus = REST_Controller::HTTP_OK; + } + + $this->response($payload, $httpstatus); + } +} \ No newline at end of file diff --git a/application/controllers/api/v1/person/Person.php b/application/controllers/api/v1/person/Person.php index 02954c7e0..3f2c1704e 100644 --- a/application/controllers/api/v1/person/Person.php +++ b/application/controllers/api/v1/person/Person.php @@ -1,5 +1,4 @@ load->model('person/person_model'); - } + // Load model PersonModel + $this->load->model('person/person_model', 'PersonModel'); + // Load set the addonID of the model to let to check the permissions + $this->PersonModel->setAddonID($this->_getAddonID()); + } /** * @return void */ - public function person_get() - { - //if(!$this->session_model->validate($this->get('session_id'), $this->get('device_id'))) - // $this->response(array(['success' => false, 'message' => 'access denied']), REST_Controller::HTTP_UNAUTHORIZED); - + public function getPerson() + { + $personID = $this->get('person_id'); $code = $this->get('code'); $email = $this->get('email'); - $person_id = $this->get('person_id'); - if ((!is_null($code)) && (!is_null($email))) - { - $result = $this->person_model->getPersonByCodeAndEmail($code, $email); - } - elseif (! is_null($code)) - { - $result = $this->person_model->getPersonByCode($code); - } - elseif (! is_null($person_id)) - { - $result = $this->person_model->getPerson($person_id); - } - else - { - $result = $this->person_model->getPerson(); - } + $result = $this->PersonModel->getPerson($personID, $code, $email); - if ($result['err']) - { - $payload = [ - 'success' => false, - 'message' => $result['msg'].': '.$result['retval'] - ]; - $httpstatus = REST_Controller::HTTP_OK; - } - else - { - // return all available persons - $payload = [ - 'success' => true, - 'message' => 'Persons found' - ]; - $payload['data'] = $result; - $httpstatus = REST_Controller::HTTP_OK; - } - - if (empty($result)) + if(is_object($result) && $result->num_rows() > 0) { $payload = [ - 'success' => false, - 'message' => 'Person not found' + 'success' => TRUE, + 'message' => 'Person found', + 'data' => $result->result() ]; $httpstatus = REST_Controller::HTTP_OK; } else { - // return all available persons $payload = [ - 'success' => true, - 'message' => 'Persons found' + 'success' => FALSE, + 'message' => 'Person not found' ]; - $payload['data'] = $result; $httpstatus = REST_Controller::HTTP_OK; } - // Set the response and exit + $this->response($payload, $httpstatus); - } + } - /** + /** * @return void */ - public function person_post() - { - $result = $this->person_model->savePerson($this->post()); - if ($result != false) + public function postPerson() + { + $result = $this->PersonModel->savePerson($this->post()); + + if($result === TRUE) { $httpstatus = REST_Controller::HTTP_OK; $payload = [ @@ -121,40 +85,40 @@ class Person extends APIv1_Controller $httpstatus = REST_Controller::HTTP_OK; } $this->response($payload, $httpstatus); - } - - /** - * @return void + } + + /** + * */ - public function personUpdate_post() - { - $result = $this->person_model->updatePerson($this->post()); - if ($result != false) + public function postPrestudent() + { + $result = $this->PersonModel->savePrestudent($this->post()); + + if($result === TRUE) { $httpstatus = REST_Controller::HTTP_OK; $payload = [ 'success' => true, - 'message' => 'Person updated.' + 'message' => 'Interested student saved.' ]; - $payload['data'] = $result; } else { $payload = [ 'success' => false, - 'message' => 'Could not update person.' + 'message' => 'Could not save interested student.' ]; $httpstatus = REST_Controller::HTTP_OK; } $this->response($payload, $httpstatus); - } + } - /** + /** * @return void */ - public function checkBewerbung_get() - { - $result = $this->person_model->checkBewerbung($this->get("email"), $this->get("studiensemester_kurzbz")); + public function getCheckBewerbung() + { + $result = $this->PersonModel->checkBewerbung($this->get("email"), $this->get("studiensemester_kurzbz")); $httpstatus = REST_Controller::HTTP_OK; $payload = [ 'success' => true, @@ -162,16 +126,16 @@ class Person extends APIv1_Controller ]; $payload['data'] = $result; $this->response($payload, $httpstatus); - } + } - /** + /** * @return void */ - public function checkZugangscodePerson_get() - { - $result = $this->person_model->checkZugangscodePerson($this->get("code")); + public function getCheckZugangscodePerson() + { + $result = $this->PersonModel->checkZugangscodePerson($this->get("code")); $httpstatus = REST_Controller::HTTP_OK; - if (!empty($result)) + if(!empty($result)) { $payload = [ 'success' => true, @@ -189,5 +153,5 @@ class Person extends APIv1_Controller } $this->response($payload, $httpstatus); - } + } } diff --git a/application/controllers/person/Kontakt.php b/application/controllers/person/Kontakt.php deleted file mode 100644 index dc6ec2e8d..000000000 --- a/application/controllers/person/Kontakt.php +++ /dev/null @@ -1,32 +0,0 @@ -load->model('kontakt/kontakt_model'); - } - - public function index() - { - $data['person'] = $this->person_model->getPersonen(); - $data['title'] = 'Personen Archiv'; - - $this->load->view('templates/header', $data); - $this->load->view('kontakt/index', $data); - $this->load->view('templates/footer'); - } - - public function view($slug = null) - { - $data['person_item'] = $this->person_model->getPersonen($slug); - if (empty($data['person_item'])) - show_404(); - - $data['title'] = $data['person_item']->titelpre; - - $this->load->view('templates/header', $data); - $this->load->view('kontakt/view', $data); - $this->load->view('templates/footer'); - } -} diff --git a/application/controllers/person/Person.php b/application/controllers/person/Person.php deleted file mode 100644 index ebad71c50..000000000 --- a/application/controllers/person/Person.php +++ /dev/null @@ -1,32 +0,0 @@ -load->model('person/person_model'); - } - - public function index() - { - $data['person'] = $this->person_model->getPersonen(); - $data['title'] = 'Personen Archiv'; - - $this->load->view('templates/header', $data); - $this->load->view('person/index', $data); - $this->load->view('templates/footer'); - } - - public function view($slug = null) - { - $data['person_item'] = $this->person_model->getPersonen($slug); - if (empty($data['person_item'])) - show_404(); - - $data['title'] = $data['person_item']->titelpre; - - $this->load->view('templates/header', $data); - $this->load->view('person/view', $data); - $this->load->view('templates/footer'); - } -} diff --git a/application/core/APIv1_Controller.php b/application/core/APIv1_Controller.php new file mode 100644 index 000000000..b33c5a530 --- /dev/null +++ b/application/core/APIv1_Controller.php @@ -0,0 +1,13 @@ +load->library('session'); // -> autoload + //$this->load->library('database'); -> autoload + } +} \ No newline at end of file diff --git a/application/core/DB_Model.php b/application/core/DB_Model.php new file mode 100644 index 000000000..e8905c630 --- /dev/null +++ b/application/core/DB_Model.php @@ -0,0 +1,233 @@ +dbTable = $dbTable; + $this->pk = $pk; + $this->load->database(); + $this->acl = $this->config->item('fhc_acl'); + } + + /** --------------------------------------------------------------- + * Insert Data into DB-Table + * + * @param array $data DataArray for Insert + * @return array + */ + public function insert($data) + { + // Check Class-Attributes + if(is_null($this->dbTable)) + return $this->_error(lang('fhc_'.FHC_NODBTABLE), FHC_MODEL_ERROR); + + // Check rights + if (! $this->fhc_db_acl->isBerechtigt((string)($this->acl[$this->dbTable]), 'i')) + return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl[$this->dbTable], FHC_MODEL_ERROR); + + // DB-INSERT + if ($this->db->insert($this->dbTable, $data)) + return $this->_success($this->db->insert_id()); + else + return $this->_error($this->db->error(), FHC_DB_ERROR); + } + + /** --------------------------------------------------------------- + * Replace Data in DB-Table + * + * @param array $data DataArray for Replacement + * @return array + */ + public function replace($data) + { + // Check Class-Attributes + if(is_null($this->dbTable)) + return $this->_error(lang('fhc_'.FHC_NODBTABLE), FHC_MODEL_ERROR); + + // Check rights + if (! $this->fhc_db_acl->isBerechtigt((string)($this->acl[$this->dbTable]), 'ui')) + return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl[$this->dbTable], FHC_MODEL_ERROR); + + // DB-REPLACE + if ($this->db->replace($this->dbTable, $data)) + return $this->_success($this->db->insert_id()); + else + return $this->_error($this->db->error(), FHC_DB_ERROR); + } + + /** --------------------------------------------------------------- + * Update Data in DB-Table + * + * @param string $id PK for DB-Table + * @param array $data DataArray for Insert + * @return array + */ + public function update($id, $data) + { + // Check Class-Attributes + if(is_null($this->dbTable)) + return $this->_error(lang('fhc_'.FHC_NODBTABLE), FHC_MODEL_ERROR); + if(is_null($this->pk)) + return $this->_error(lang('fhc_'.FHC_NOPK), FHC_MODEL_ERROR); + + // Check rights + if (! $this->fhc_db_acl->isBerechtigt((string)($this->acl[$this->dbTable]), 'u')) + return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl[$this->dbTable], FHC_MODEL_ERROR); + + // DB-UPDATE + $this->db->where($this->pk, $id); + if ($this->db->update($this->dbTable, $data)) + return $this->_success($id); + else + return $this->_error($this->db->error(), FHC_DB_ERROR); + } + + /** --------------------------------------------------------------- + * Load data from DB-Table + * + * @param string $id Primary Key for SELECT + * @return array + */ + public function load($id) + { + // Check Class-Attributes + if(is_null($this->dbTable)) + return $this->_error(lang('fhc_'.FHC_NODBTABLE), FHC_MODEL_ERROR); + if(is_null($this->pk)) + return $this->_error(lang('fhc_'.FHC_NOPK), FHC_MODEL_ERROR); + + // Check rights + if (! $this->fhc_db_acl->isBerechtigt((string)($this->acl[$this->dbTable]), 's')) + return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl[$this->dbTable], FHC_MODEL_ERROR); + + // DB-SELECT + $result = $this->db->get_where($this->dbTable, array($this->pk => $id)); + //var_dump($result); + if ($result) + return $this->_success($result); + else + return $this->_error($this->db->error(), FHC_DB_ERROR); + } + + /** --------------------------------------------------------------- + * Delete data from DB-Table + * + * @param string $id Primary Key for DELETE + * @return array + */ + public function delete($id) + { + // Check Class-Attributes + if(is_null($this->dbTable)) + return $this->_error(lang('fhc_'.FHC_NODBTABLE), FHC_MODEL_ERROR); + if(is_null($this->pk)) + return $this->_error(lang('fhc_'.FHC_NOPK), FHC_MODEL_ERROR); + + // Check rights + if (! $this->fhc_db_acl->isBerechtigt($this->acl[$this->dbTable], 'd')) + return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl[$this->dbTable], FHC_MODEL_ERROR); + + // DB-DELETE + if ($this->db->delete($this->dbTable, array($this->pk => $id))) + return $this->_success($id); + else + return $this->_error($this->db->error(), FHC_DB_ERROR); + } + + /** --------------------------------------------------------------- + * Convert PG-Array to PHP-Array + * + * @param integer config.php error code numbers + * @return array + */ + public function pgArrayPhp($s,$start=0,&$end=NULL) + { + if (empty($s) || $s[0]!='{') return NULL; + $return = array(); + $br = 0; + $string = false; + $quote=''; + $len = strlen($s); + $v = ''; + for($i=$start+1; $i<$len;$i++) + { + $ch = $s[$i]; + if (!$string && $ch=='}') + { + if ($v!=='' || !empty($return)) + $return[] = $v; + $end = $i; + break; + } + else + if (!$string && $ch=='{') + $v = $this->pgArrayPhp($s,$i,$i); + else + if (!$string && $ch==',') + { + $return[] = $v; + $v = ''; + } + else + if (!$string && ($ch=='"' || $ch=="'")) + { + $string = TRUE; + $quote = $ch; + } + else + if ($string && $ch==$quote && $s[$i-1]=="\\") + $v = substr($v,0,-1).$ch; + else + if ($string && $ch==$quote && $s[$i-1]!="\\") + $string = FALSE; + else + $v .= $ch; + } + return $return; + } + + /** --------------------------------------------------------------- + * Invalid ID + * + * @param integer config.php error code numbers + * @return array + */ + protected function _invalid_id($error = '') + { + return array( + 'err' => 1, + 'code' => $error, + 'msg' => lang('fhc_' . $error) + ); + } + + /** + * Method setAddonID + * + * @param $addonID + * @return void + */ + public function setAddonID($addonID) + { + $this->_addonID = $addonID; + } + + /** + * Method getAddonID + * + * @return string _addonID + */ + public function getAddonID() + { + return $this->_addonID; + } +} diff --git a/application/core/FHC_Controller.php b/application/core/FHC_Controller.php index 656dd4c1e..b08696193 100644 --- a/application/core/FHC_Controller.php +++ b/application/core/FHC_Controller.php @@ -8,17 +8,4 @@ class FHC_Controller extends CI_Controller parent::__construct(); //$this->load->helper('language'); } -} - -require_once APPPATH . '/libraries/REST_Controller.php'; - -class APIv1_Controller extends REST_Controller -{ - function __construct() - { - parent::__construct(); - //$this->load->library('session'); -> autoload - //$this->load->library('database'); -> autoload - } - -} +} \ No newline at end of file diff --git a/application/core/FHC_Model.php b/application/core/FHC_Model.php index 14377d13d..d9d8c6690 100644 --- a/application/core/FHC_Model.php +++ b/application/core/FHC_Model.php @@ -1,93 +1,50 @@ load->helper('language'); - $this->lang->load('fhcomplete'); - } - - /** --------------------------------------------------------------- - * Success - * - * @param mixed $retval - * @return array - */ - protected function _success($retval = '', $message = FHC_SUCCESS) - { - return array( - 'err' => 0, - 'code' => FHC_SUCCESS, - 'msg' => lang('fhc_' . $message), - 'retval' => $retval - ); - } - - /** --------------------------------------------------------------- - * General Error - * - * @return array - */ - protected function _general_error($retval = '', $message = FHC_ERR_GENERAL) - { - return array( - 'err' => 1, - 'code' => FHC_ERR_GENERAL, - 'msg' => lang('fhc_'.$message), - 'retval' => $retval - ); - } -} - -class DB_Model extends FHC_Model -{ - - protected $dbTable=null; // Name of the DB-Table for CI-Insert, -Update, ... - - function __construct($uid=null) - { - parent::__construct(); - $this->load->database(); - $this->load->helper('language'); - $this->lang->load('fhc_db'); - - // UID must be set in Production Mode - if (ENVIRONMENT=='production' && is_null($uid)) - log_message('error', 'UID must be set in Production Mode.'); - elseif (is_null($uid)) - log_message('info', 'UID is not set.'); - - // Loading Tools for Access Control (Benutzerberechtigungen) + $this->lang->load('fhc_model'); + //$this->load->helper('fhc_db_acl'); + $this->lang->load('fhcomplete'); + //$this->load->library('session'); + if (is_null($uid)) + $uid = $this->session->uid; $this->load->library('FHC_DB_ACL',array('uid' => $uid)); - } - - public function insert($data) - { - if (! is_null($this->dbTable)) - { - $this->db->insert($this->dbTable, $data); - return true; - } - else - return false; } /** --------------------------------------------------------------- - * Invalid ID - * - * @param integer config.php error code numbers - * @return array - */ - protected function _invalid_id($error = '') - { - return array( - 'err' => 1, - 'code' => $error, - 'msg' => lang('fhc_'.$error) - ); - } + * Success + * + * @param mixed $retval + * @return array + */ + protected function _success($retval, $message = FHC_SUCCESS) + { + $return = new stdClass(); + $return->error = EXIT_SUCCESS; + $return->code = $message; + $return->msg = lang('fhc_' . $message); + $return->retval = $retval; + return $return; + } + + /** --------------------------------------------------------------- + * General Error + * + * @return array + */ + protected function _error($retval = '', $message = FHC_MODEL_ERROR) + { + $return = new stdClass(); + $return->error = EXIT_MODEL; + $return->code = $message; + $return->msg = lang('fhc_' . $message); + $return->retval = $retval; + return $return; + } } diff --git a/application/helpers/fhc_db_acl_helper.php b/application/helpers/fhc_db_acl_helper.php new file mode 100644 index 000000000..2456ea6b5 --- /dev/null +++ b/application/helpers/fhc_db_acl_helper.php @@ -0,0 +1,12 @@ +getBerechtigungen($uid); + return $bb->isBerechtigt($berechtigung_kurzbz, $art, $oe_kurzbz, $kostenstelle_id);*/ + + return TRUE; +} \ No newline at end of file diff --git a/application/helpers/fhcdb_helper.php b/application/helpers/fhcdb_helper.php index 8f86ea691..c5eee6800 100644 --- a/application/helpers/fhcdb_helper.php +++ b/application/helpers/fhcdb_helper.php @@ -428,3 +428,23 @@ 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/language/de-AT/fhc_db_lang.php b/application/language/de-AT/fhc_db_lang.php deleted file mode 100644 index 463582f53..000000000 --- a/application/language/de-AT/fhc_db_lang.php +++ /dev/null @@ -1,2 +0,0 @@ -checkpassword($username, $password)) + if($auth->checkpassword($username, $password)) { - //echo 'Auth-Method-True'; return true; } else { - //echo 'Auth-Method-False'; return false; } } -} + + /** + * Get the md5 hashed password by the addon username + * + * @param string $username addon username + * @return string md5 hashed string + */ + public function digestAuthentication($username) + { + $aam = new AddonAuthentication(); + + return md5($aam->getPasswordByUsername($username)); + } +} \ No newline at end of file diff --git a/application/libraries/FHC_DB_ACL.php b/application/libraries/FHC_DB_ACL.php index db906384e..729f1d1f9 100644 --- a/application/libraries/FHC_DB_ACL.php +++ b/application/libraries/FHC_DB_ACL.php @@ -43,10 +43,10 @@ class FHC_DB_ACL * @param string $password * @return bool */ - function __construct($uid) + function __construct($param) { $this->bb = new benutzerberechtigung(); - $this->uid = $uid; + $this->uid = $param['uid']; } function isBerechtigt($berechtigung_kurzbz, $art=null, $oe_kurzbz=null, $kostenstelle_id=null) diff --git a/application/libraries/REST_Controller.php b/application/libraries/REST_Controller.php index c9253079c..7caf4646d 100644 --- a/application/libraries/REST_Controller.php +++ b/application/libraries/REST_Controller.php @@ -351,8 +351,13 @@ abstract class REST_Controller extends CI_Controller { self::HTTP_INTERNAL_SERVER_ERROR => 'INTERNAL SERVER ERROR', self::HTTP_NOT_IMPLEMENTED => 'NOT IMPLEMENTED' ]; + + /** + * + */ + protected $_addonID = NULL; - /** + /** * Extend this function to apply additional checking early on in the process * * @access protected @@ -361,7 +366,7 @@ abstract class REST_Controller extends CI_Controller { protected function early_checks() { } - + /** * Constructor for the REST API * @@ -528,7 +533,7 @@ abstract class REST_Controller extends CI_Controller { { $this->_allow = $this->_detect_api_key(); } - + // Only allow ajax requests if ($this->input->is_ajax_request() === FALSE && $this->config->item('rest_ajax_only')) { @@ -540,7 +545,7 @@ abstract class REST_Controller extends CI_Controller { } // When there is no specific override for the current class/method, use the default auth value set in the config - if ($this->auth_override === FALSE && !($this->config->item('rest_enable_keys') && $this->_allow === TRUE)) + if ($this->auth_override === FALSE && ($this->config->item('rest_enable_keys') && $this->_allow === TRUE)) { $rest_auth = strtolower($this->config->item('rest_auth')); switch ($rest_auth) @@ -604,8 +609,10 @@ abstract class REST_Controller extends CI_Controller { // Remove the supported format from the function name e.g. index.json => index $object_called = preg_replace('/^(.*)\.(?:' . implode('|', array_keys($this->_supported_formats)) . ')$/', '$1', $object_called); - $controller_method = $object_called . '_' . $this->request->method; - + //$controller_method = $object_called . '_' . $this->request->method; + // CamelCase compliant + $controller_method = $this->request->method.ucfirst($object_called); + // Do we want to log this method (if allowed by config)? $log_method = !(isset($this->methods[$controller_method]['log']) && $this->methods[$controller_method]['log'] === FALSE); @@ -1900,6 +1907,25 @@ abstract class REST_Controller extends CI_Controller { ], self::HTTP_UNAUTHORIZED); } } + + /** + * TO BE COMMENTED + */ + private function _setAddonID($username) + { + if(!isset($this->_addonID) && isset($username)) + { + $this->_addonID = $username; + } + } + + /** + * @return int ID of the authenticated addon + */ + protected function _getAddonID() + { + return $this->_addonID; + } /** * Prepares for basic authentication @@ -1940,6 +1966,10 @@ abstract class REST_Controller extends CI_Controller { { $this->_force_login(); } + else // If logged + { + $this->_setAddonID($username); + } } /** @@ -1978,12 +2008,19 @@ abstract class REST_Controller extends CI_Controller { preg_match_all('@(username|nonce|uri|nc|cnonce|qop|response)=[\'"]?([^\'",]+)@', $digest_string, $matches); $digest = (empty($matches[1]) || empty($matches[2])) ? [] : array_combine($matches[1], $matches[2]); - // For digest authentication the library function should return already stored md5(username:restrealm:password) for that username @see rest.php::auth_library_function config + // For digest authentication the library function should return + // already stored password for that username, even if it is hashed $username = $this->_check_login($digest['username'], TRUE); - if (array_key_exists('username', $digest) === FALSE || $username === FALSE) + // If there no password + if (array_key_exists('username', $digest) === FALSE || $username === FALSE || $username === NULL) { $this->_force_login($unique_id); } + // If the password was found for this username, generete the string md5('USERNAME:REALM:PASSWORD') + else + { + $username = md5($digest['username'].":".$this->config->item('rest_realm').":".$username); + } $md5 = md5(strtoupper($this->request->method) . ':' . $digest['uri']); $valid_response = md5($username . ':' . $digest['nonce'] . ':' . $digest['nc'] . ':' . $digest['cnonce'] . ':' . $digest['qop'] . ':' . $md5); @@ -2148,5 +2185,4 @@ abstract class REST_Controller extends CI_Controller { ->get($this->config->item('rest_access_table')) ->num_rows() > 0; } - -} +} \ No newline at end of file diff --git a/application/libraries/Template.php b/application/libraries/Template.php new file mode 100644 index 000000000..07bccd949 --- /dev/null +++ b/application/libraries/Template.php @@ -0,0 +1,629 @@ +_ci = & get_instance(); + + // set the default widget path with APPPATH + $this->_widget_path = APPPATH . 'widgets/'; + + if (!empty($config)) + $this->initialize($config); + + log_message('debug', 'Template library initialized'); + } + + /** + * Initialize with configuration array + * @param array $config + * @return Template + */ + public function initialize($config = array()) + { + foreach ($config as $key => $val) + $this->{'_' . $key} = $val; + + if ($this->_widget_path == '') + $this->_widget_path = APPPATH . 'widgets/'; + + if ($this->_parser && !class_exists('CI_Parser')) + $this->_ci->load->library('parser'); + } + + /** + * Set a partial's content. This will create a new partial when not existing + * @param string $index + * @param mixed $value + */ + public function __set($name, $value) + { + $this->partial($name)->set($value); + } + + /** + * Access to partials for method chaining + * @param string $name + * @return mixed + */ + public function __get($name) + { + return $this->partial($name); + } + + /** + * Check if a partial exists + * @param string $index + * @return boolean + */ + public function exists($index) + { + return array_key_exists($index, $this->_partials); + } + + /** + * Set the template file + * @param string $template + */ + public function set_template($template) + { + $this->_template = $template; + } + + /** + * Publish the template with the current partials + * You can manually pass a template file with extra data, or use the default template from the config file + * @param string $template + * @param array $data + */ + public function publish($template = FALSE, $data = array()) { + if (is_array($template) || is_object($template)) { + $data = $template; + } else if ($template) { + $this->_template = $template; + } + + if (!$this->_template) { + show_error('There was no template file selected for the current template'); + } + + if (is_array($data) || is_object($data)) { + foreach ($data as $name => $content) { + $this->partial($name)->set($content); + } + } + + unset($data); + + if ($this->_parser) { + $this->_ci->parser->parse($this->_template, $this->_partials); + } else { + $this->_ci->load->view($this->_template, $this->_partials); + } + } + + /** + * Create a partial object with an optional default content + * Can be usefull to use straight from the template file + * @param string $name + * @param string $default + * @return Partial + */ + public function partial($name, $default = FALSE) { + if ($this->exists($name)) { + $partial = $this->_partials[$name]; + } else { + // create new partial + $partial = new Partial($name); + if ($this->_cache_ttl) { + $partial->cache($this->_cache_ttl); + } + + // detect local triggers + if (method_exists($this, 'trigger_' . $name)) { + $partial->bind($this, 'trigger_' . $name); + } + + $this->_partials[$name] = $partial; + } + + if (!$partial->content() && $default) { + $partial->set($default); + } + + return $partial; + } + + /** + * Create a widget object with optional parameters + * Can be usefull to use straight from the template file + * @param string $name + * @param array $data + * @return Widget + */ + public function widget($name, $data = array()) { + $class = str_replace('.php', '', trim($name, '/')); + + // determine path and widget class name + $path = $this->_widget_path; + if (($last_slash = strrpos($class, '/')) !== FALSE) { + $path += substr($class, 0, $last_slash); + $class = substr($class, $last_slash + 1); + } + + // new widget + if(!class_exists($class)) { + // try both lowercase and capitalized versions + foreach (array(ucfirst($class), strtolower($class)) as $class) { + if (file_exists($path . $class . '.php')) { + include_once ($path . $class . '.php'); + + // found the file, stop looking + break; + } + } + } + + if (!class_exists($class)) { + show_error("Widget '" . $class . "' was not found."); + } + + return new $class($class, $data); + } + + /** + * Enable cache for all partials with TTL, default TTL is 60 + * @param int $ttl + * @param mixed $identifier + */ + public function cache($ttl = 60, $identifier = '') { + foreach ($this->_partials as $partial) { + $partial->cache($ttl, $identifier); + } + + $this->_cache_ttl = $ttl; + } + + // ---- TRIGGERS ----------------------------------------------------------------- + + /** + * Stylesheet trigger + * @param string $source + */ + public function trigger_stylesheet($url, $attributes = FALSE) { + // array support + if (is_array($url)) { + $return = ''; + foreach ($url as $u) { + $return .= $this->trigger_stylesheet($u, $attributes); + } + return $return; + } + + if (!stristr($url, 'http://') && !stristr($url, 'https://') && substr($url, 0, 2) != '//') { + $url = $this->_ci->config->item('base_url') . $url; + } + + // legacy support for media + if (is_string($attributes)) { + $attributes = array('media' => $attributes); + } + + if (is_array($attributes)) { + $attributeString = ""; + + foreach ($attributes as $key => $value) { + $attributeString .= $key . '="' . $value . '" '; + } + + return '' . "\n\t"; + } else { + return '' . "\n\t"; + } + } + + /** + * Javascript trigger + * @param string $source + */ + public function trigger_javascript($url) { + // array support + if (is_array($url)) { + $return = ''; + foreach ($url as $u) { + $return .= $this->trigger_javascript($u); + } + return $return; + } + + if (!stristr($url, 'http://') && !stristr($url, 'https://') && substr($url, 0, 2) != '//') { + $url = $this->_ci->config->item('base_url') . $url; + } + + return '' . "\n\t"; + } + + /** + * Meta trigger + * @param string $name + * @param mixed $value + * @param enum $type + */ + public function trigger_meta($name, $value, $type = 'meta') { + $name = htmlspecialchars(strip_tags($name)); + $value = htmlspecialchars(strip_tags($value)); + + if ($name == 'keywords' and !strpos($value, ',')) { + $content = preg_replace('/[\s]+/', ', ', trim($value)); + } + + switch ($type) { + case 'meta' : + $content = '' . "\n\t"; + break; + case 'link' : + $content = '' . "\n\t"; + break; + } + + return $content; + } + + /** + * Title trigger, keeps it clean + * @param string $name + * @param mixed $value + * @param enum $type + */ + public function trigger_title($title) { + return htmlspecialchars(strip_tags($title)); + } + + /** + * Title trigger, keeps it clean + * @param string $name + * @param mixed $value + * @param enum $type + */ + public function trigger_description($description) { + return htmlspecialchars(strip_tags($description)); + } + +} + +class Partial +{ + + protected $_ci, $_content, $_name, $_cache_ttl = 0, $_cached = false, $_identifier, $_trigger; + protected $_args = array(); + + /** + * Construct with optional parameters + * @param array $args + */ + public function __construct($name, $args = array()) { + $this->_ci = &get_instance(); + $this->_args = $args; + $this->_name = $name; + } + + /** + * Gives access to codeigniter's functions from this class if needed + * This will be handy in extending classes + * @param string $index + */ + function __get($name) { + return $this->_ci->$name; + } + + /** + * Alias methods + */ + function __call($name, $args) { + switch ($name) { + case 'default' : + return call_user_func_array(array($this, 'set_default'), $args); + break; + case 'add' : + return call_user_func_array(array($this, 'append'), $args); + break; + } + } + + /** + * Returns the content when converted to a string + * @return string + */ + public function __toString() { + return (string) $this->content(); + } + + /** + * Returns the content + * @return string + */ + public function content() { + if ($this->_cache_ttl && !$this->_cached) { + $this->cache->save($this->cache_id(), $this->_content, $this->_cache_ttl); + } + + return $this->_content; + } + + /** + * Overwrite the content + * @param mixed $content + * @return Partial + */ + public function set() { + if (!$this->_cached) { + $this->_content = (string) $this->trigger(func_get_args()); + } + + return $this; + } + + /** + * Append something to the content + * @param mixed $content + * @return Partial + */ + public function append() { + if (!$this->_cached) { + $this->_content .= (string) $this->trigger(func_get_args()); + } + + return $this; + } + + /** + * Prepend something to the content + * @param mixed $content + * @return Partial + */ + public function prepend() { + if (!$this->_cached) { + $this->_content = (string) $this->trigger(func_get_args()) . $this->_content; + } + + return $this; + } + + /** + * Set content if partial is empty + * @param mixed $default + * @return Partial + */ + public function set_default($default) { + if (!$this->_cached) { + if (!$this->_content) { + $this->_content = $default; + } + } + + return $this; + } + + /** + * Load a view inside this partial, overwrite if wanted + * @param string $view + * @param array $data + * @param bool $overwrite + * @return Partial + */ + public function view($view, $data = array(), $overwrite = false) { + if (!$this->_cached) { + + // better object to array + if (is_object($data)) { + $array = array(); + foreach ($data as $k => $v) { + $array[$k] = $v; + } + $data = $array; + } + + $content = $this->_ci->load->view($view, $data, true); + + if ($overwrite) { + $this->set($content); + } else { + $this->append($content); + } + } + return $this; + } + + /** + * Parses a view inside this partial, overwrite if wanted + * @param string $view + * @param array $data + * @param bool $overwrite + * @return Partial + */ + public function parse($view, $data = array(), $overwrite = false) { + if (!$this->_cached) { + if (!class_exists('CI_Parser')) { + $this->_ci->load->library('parser'); + } + + // better object to array + if (is_object($data)) { + $array = array(); + foreach ($data as $k => $v) { + $array[$k] = $v; + } + $data = $array; + } + + $content = $this->_ci->parser->parse($view, $data, true); + + if ($overwrite) { + $this->set($content); + } else { + $this->append($content); + } + } + + return $this; + } + + /** + * Loads a widget inside this partial, overwrite if wanted + * @param string $name + * @param array $data + * @param bool $overwrite + * @return Partial + */ + public function widget($name, $data = array(), $overwrite = false) { + if (!$this->_cached) { + $widget = $this->template->widget($name, $data); + + if ($overwrite) { + $this->set($widget->content()); + } else { + $this->append($widget->content()); + } + } + return $this; + } + + /** + * Enable cache with TTL, default TTL is 60 + * @param int $ttl + * @param mixed $identifier + */ + public function cache($ttl = 60, $identifier = '') { + if (!class_exists('CI_Cache')) { + $this->_ci->load->driver('cache', array('adapter' => 'file')); + } + + $this->_cache_ttl = $ttl; + $this->_identifier = $identifier; + + if ($cached = $this->_ci->cache->get($this->cache_id())) { + $this->_cached = true; + $this->_content = $cached; + } + return $this; + } + + /** + * Used for cache identification + * @return string + */ + private function cache_id() { + if ($this->_identifier) { + return $this->_name . '_' . $this->_identifier . '_' . md5(get_class($this) . implode('', $this->_args)); + } else { + return $this->_name . '_' . md5(get_class($this) . implode('', $this->_args)); + } + } + + /** + * Trigger returns the result if a trigger is set + * @param array $args + * @return string + */ + public function trigger($args) { + if (!$this->_trigger) { + return implode('', $args); + } else { + return call_user_func_array($this->_trigger, $args); + } + } + + /** + * Bind a trigger function + * Can be used like bind($this, "function") or bind("function") + * @param mixed $arg + */ + public function bind() { + if ($count = func_num_args()) { + if ($count >= 2) { + $args = func_get_args(); + $obj = array_shift($args); + $func = array_pop($args); + + foreach ($args as $trigger) { + $obj = $obj->$trigger; + } + + $this->_trigger = array($obj, $func); + } else { + $args = func_get_args(); + $this->_trigger = reset($args); + } + } else { + $this->_trigger = FALSE; + } + } +} + +class Widget extends Partial +{ + + /* (non-PHPdoc) + * @see Partial::content() + */ + public function content() { + if (!$this->_cached) { + if (method_exists($this, 'display')) { + // capture output + ob_start(); + $this->display($this->_args); + $buffer = ob_get_clean(); + + // if no content is produced but there was direct ouput we set + // that output as content + if (!$this->_content && $buffer) { + $this->set($buffer); + } + } + } + + return parent::content(); + } +} diff --git a/application/models/Nation_model.php b/application/models/Nation_model.php new file mode 100644 index 000000000..cac2b2f8a --- /dev/null +++ b/application/models/Nation_model.php @@ -0,0 +1,71 @@ +getAddonID(), 'nation')) + { + $result = $this->db->query($this->_getNationQuery($notLocked, $orderEnglish)); + } + + return $result; + } + + /** + * + */ + protected function _getNationQuery($notLocked = FALSE, $orderEnglish = FALSE) + { + $qry = "SELECT * FROM bis.tbl_nation"; + + if($notLocked) + { + $qry .= " WHERE sperre IS NULL"; + } + if(!$orderEnglish) + { + $qry .= " ORDER BY kurztext"; + } + else + { + $qry .= " ORDER BY engltext"; + } + + return $qry; + } + + /** + * + */ + public function getBundesland() + { + $result = NULL; + + // Checks if the operation is permitted by the API caller + // All the code should be put inside this if statement + if(isAllowed($this->getAddonID(), 'nation')) + { + $result = $this->db->query($this->_bundeslandQuery); + } + + return $result; + } +} \ No newline at end of file diff --git a/application/models/core/Sprache_model.php b/application/models/core/Sprache_model.php new file mode 100644 index 000000000..523bf1b87 --- /dev/null +++ b/application/models/core/Sprache_model.php @@ -0,0 +1,16 @@ +dbTable='public.tbl_sprache'; + $this->pk='sprache'; + } +} diff --git a/application/models/lehre/Studiengang_model.php b/application/models/lehre/Studiengang_model.php new file mode 100644 index 000000000..3fcb6aa35 --- /dev/null +++ b/application/models/lehre/Studiengang_model.php @@ -0,0 +1,41 @@ +getAddonID(), 'course')) + { + $result = $this->db->query($allForBewerbungQuery); + } + + return $result; + } +} \ No newline at end of file diff --git a/application/models/lehre/Studienplan_model.php b/application/models/lehre/Studienplan_model.php new file mode 100644 index 000000000..e003f84e4 --- /dev/null +++ b/application/models/lehre/Studienplan_model.php @@ -0,0 +1,32 @@ +getAddonID(), 'plan')) + { + $result = $this->db->query($studienplaeneQuery, array($studiengang_kz)); + } + + return $result; + } +} \ No newline at end of file diff --git a/application/models/organisation/Organisationseinheit_model.php b/application/models/organisation/Organisationseinheit_model.php new file mode 100644 index 000000000..2a90bf328 --- /dev/null +++ b/application/models/organisation/Organisationseinheit_model.php @@ -0,0 +1,16 @@ +dbTable='public.tbl_organisationseinheit'; + $this->pk='oe_kurzbz'; + } +} diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php index 1cfe356a9..73dab4b34 100644 --- a/application/models/person/Person_model.php +++ b/application/models/person/Person_model.php @@ -2,157 +2,828 @@ class Person_model extends DB_Model { - public function __construct($uid = null) - { - parent::__construct($uid); - $this->dbTable = 'public.tbl_person'; - } + /** + * + */ + public function __construct() + { + parent::__construct(); + } - public function getPerson($person_id = null) - { - if (is_null($person_id)) + /** + * + */ + public function getPerson($personId = NULL, $code = NULL, $email = NULL) + { + $result = NULL; + + // Checks if the operation is permitted by the API caller + // All the code should be put inside this if statement + if(isAllowed($this->getAddonID(), 'person')) { - $query = $this->db->get_where('public.tbl_person', array()); - return $query->result_object(); + if((isset($code)) && (isset($email))) + { + $result = $this->_getPersonByCodeAndEmail($code, $email); + } + elseif(isset($code)) + { + $result = $this->_getPersonByCode($code); + } + else + { + $result = $this->_getPersonByID($personId); + } } - $query = $this->db->get_where('public.tbl_person', array('person_id' => $person_id)); - return $query->row_object(); - } + + return $result; + } + + /** + * @param int $personId Person ID + * @return object + */ + private function _getPersonByID($personId = NULL) + { + $result = NULL; + $loadQuery = "SELECT person_id, + sprache, + anrede, + titelpost, + titelpre, + nachname, + vorname, + vornamen, + gebdatum, + gebort, + gebzeit, + foto, + anmerkung, + homepage, + svnr, + ersatzkennzeichen, + familienstand, + anzahlkinder, + aktiv, + insertamum, + insertvon, + updateamum, + updatevon, + ext_id, + geschlecht, + staatsbuergerschaft, + geburtsnation, + kurzbeschreibung, + zugangscode, + foto_sperre, + matr_nr + FROM public.tbl_person + WHERE person_id = ?"; + + if(isset($personId)) + { + $result = $this->db->query($loadQuery, array($personId)); + } + + return $result; + } - public function getPersonByCodeAndEmail($code, $email) - { -// if ($this->fhc_db_acl->bb->isBerechtigt('person', 'suid')) -// { - $this->db->select("*") - ->from('public.tbl_person p') - ->join("public.tbl_kontakt k", "k.person_id=p.person_id") - ->where("p.zugangscode", $code) - ->where("k.kontakt", $email); - - return $this->db->get()->result_object(); -// } - } + /** + * + */ + private function _getPersonByCodeAndEmail($code = NULL, $email = NULL) + { + $result = NULL; + $query = "SELECT * + FROM public.tbl_person p JOIN public.tbl_kontakt k USING (person_id) + WHERE p.zugangscode = ? + AND k.kontakt = ?"; + + if((isset($code)) && (isset($email))) + { + $result = $this->db->query($query, array($code, $email)); + } - public function getPersonByCode($code) - { -// if ($this->fhc_db_acl->bb->isBerechtigt('person', 'suid')) -// { - $query = $this->db->get_where('public.tbl_person', array('zugangscode' => $code)); - return $query->result_object(); -// } - } + return $result; + } - /** - * Laedt Personendaten eine BenutzerUID - * @param string $uid DB-Attr: tbl_benutzer.uid . - * @return bool - */ - public function getPersonFromBenutzerUID($uid) - { + /** + * + */ + private function _getPersonByCode($code = NULL) + { + $result = NULL; + $query = "SELECT * + FROM public.tbl_person p + WHERE p.zugangscode = ?"; + + if(isset($code)) + { + $result = $this->db->query($query, array($code)); + } - if (!$this->fhc_db_acl->bb->isBerechtigt('person', 's')) + return $result; + } + + /** + * + */ + public function savePerson($person = NULL) + { + $result = FALSE; + + // Checks if the operation is permitted by the API caller + // All the code should be put inside this if statement + if(isAllowed($this->getAddonID(), 'person')) + { + if($this->_validate($person)) + { + if(isset($person['person_id'])) + { + $result = $this->_updatePerson($person); + } + else + { + $result = $this->_insertPerson($person); + } + } + } + + return $result; + } + + /** + * + */ + private function _insertPerson($person) + { + $this->db->trans_begin(); // Start DB transaction + + $insertQuery = "INSERT INTO public.tbl_person ( + sprache, + anrede, + titelpost, + titelpre, + nachname, + vorname, + vornamen, + gebdatum, + gebort, + gebzeit, + foto, + anmerkung, + homepage, + svnr, + ersatzkennzeichen, + familienstand, + anzahlkinder, + aktiv, + insertamum, + insertvon, + updateamum, + updatevon, + geschlecht, + geburtsnation, + staatsbuergerschaft, + kurzbeschreibung, + zugangscode, + foto_sperre, + matr_nr + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, + ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, + ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + $sqlParametersArray = array($person['sprache'], + $person['anrede'], + $person['titelpost'], + $person['titelpre'], + $person['nachname'], + $person['vorname'], + $person['vornamen'], + $person['gebdatum'], + $person['gebort'], + $person['gebzeit'], + $person['foto'], + $person['anmerkung'], + $person['homepage'], + $person['svnr'], + $person['ersatzkennzeichen'], + $person['familienstand'], + $person['anzahlkinder'], + $person['aktiv'], + "now()", + $person['insertvon'], + "now()", + $person['updatevon'], + $person['geschlecht'], + $person['geburtsnation'], + $person['staatsbuergerschaft'], + $person['kurzbeschreibung'], + $person['zugangscode'], + $person['foto_sperre'], + $person['matr_nr']); + + $result = $this->db->query($insertQuery, $sqlParametersArray); + + // Check DB transaction result + if($this->db->trans_status() === FALSE) + { + $this->db->trans_rollback(); + $result = FALSE; + } + else + { + $this->db->trans_commit(); + $result = TRUE; + } + + return $result; + } + + /** + * + */ + private function _updatePerson($person) + { + $this->db->trans_begin(); // Start DB transaction + + $updateQuery = "UPDATE public.tbl_person SET + sprache = ?, + anrede = ?, + titelpost = ?, + titelpre = ?, + nachname = ?, + vorname = ?, + vornamen = ?, + gebdatum = ?, + gebort = ?, + gebzeit = ?, + foto = ?, + anmerkung = ?, + homepage = ?, + svnr = ?, + ersatzkennzeichen = ?, + familienstand = ?, + anzahlkinder = ?, + aktiv = ?, + updateamum = ?, + updatevon = ?, + geschlecht = ?, + geburtsnation = ?, + staatsbuergerschaft = ?, + kurzbeschreibung = ?, + foto_sperre = ?, + zugangscode = ?, + matr_nr = ? + WHERE person_id = ?"; + + $sqlParametersArray = array($person['sprache'], + $person['anrede'], + $person['titelpost'], + $person['titelpre'], + $person['nachname'], + $person['vorname'], + $person['vornamen'], + $person['gebdatum'], + $person['gebort'], + $person['gebzeit'], + $person['foto'], + $person['anmerkung'], + $person['homepage'], + $person['svnr'], + $person['ersatzkennzeichen'], + $person['familienstand'], + $person['anzahlkinder'], + $person['aktiv'], + "now()", + $person['updatevon'], + $person['geschlecht'], + $person['geburtsnation'], + $person['staatsbuergerschaft'], + $person['kurzbeschreibung'], + $person['foto_sperre'], + $person['zugangscode'], + $person['matr_nr'], + $person['person_id']); + + $result = $this->db->query($updateQuery, $sqlParametersArray); + + // Check DB transaction result + if($this->db->trans_status() === FALSE) + { + $this->db->trans_rollback(); + $result = FALSE; + } + else + { + $this->db->trans_commit(); + $result = TRUE; + } + + return $result; + } + + /** + * + */ + public function savePrestudent($interestedStudent = NULL) + { + // Checks if the operation is permitted by the API caller + // All the code should be put inside this if statement + if(isAllowed($this->getAddonID(), 'person')) + { + return $this->_savePrestudent($interestedStudent); + } + } + + /** + * Method saveInterestedStudent + * + * @return bool true when everything goes right, otherwise false + */ + private function _savePrestudent($interestedStudent = NULL) + { + if(!isset($interestedStudent)) + { + return FALSE; + } + + if($interestedStudent['zgvmas_code'] && $interestedStudent['zgvmanation']) + { + $interestedStudent['ausstellungsstaat'] = $interestedStudent['zgvmanation']; + } + elseif($interestedStudent['zgv_code'] && $interestedStudent['zgvnation']) + { + $interestedStudent['ausstellungsstaat'] = $interestedStudent['zgvnation']; + } + + //Variablen auf Gueltigkeit pruefen + if(isset($interestedStudent['prestudent_id']) && $interestedStudent['punkte'] > 9999.9999) + { + //$this->errormsg = 'Reihungstestgesamtpunkte should be no bigger than 9999.9999'; + return FALSE; + } + if($interestedStudent['rt_punkte1'] > 9999.9999) + { + //$this->errormsg = 'Reihungstestpunkte1 should be no bigger than 9999.9999'; + return FALSE; + } + if($interestedStudent['rt_punkte2'] > 9999.9999) + { + //$this->errormsg = 'Reihungstestpunkte2 should be no bigger than 9999.9999'; + return FALSE; + } + if($interestedStudent['rt_punkte3'] > 9999.9999) + { + //$this->errormsg = 'Reihungstestpunkte3 should be no bigger than 9999.9999'; + return FALSE; + } + + $this->db->trans_begin(); // Start DB transaction + + // If prestudent_id is NOT set it's an insert + if(!isset($interestedStudent['prestudent_id'])) + { + $insertQuery = "INSERT INTO public.tbl_prestudent ( + aufmerksamdurch_kurzbz, + person_id, + studiengang_kz, + berufstaetigkeit_code, + ausbildungcode, + zgv_code, + zgvort, + zgvdatum, + zgvnation, + zgvmas_code, + zgvmaort, + zgvmadatum, + zgvmanation, + aufnahmeschluessel, + facheinschlberuf, + reihungstest_id, + anmeldungreihungstest, + reihungstestangetreten, + rt_gesamtpunkte, + rt_punkte1, + rt_punkte2, + rt_punkte3, + bismelden, + insertamum, + insertvon, + updateamum, + updatevon, + anmerkung, + dual, + ausstellungsstaat, + mentor + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, + ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, + ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + $sqlParametersArray = array($interestedStudent['aufmerksamdurch_kurzbz'], + $interestedStudent['person_id'], + $interestedStudent['studiengang_kz'], + $interestedStudent['berufstaetigkeit_code'], + $interestedStudent['ausbildungcode'], + $interestedStudent['zgv_code'], + $interestedStudent['zgvort'], + $interestedStudent['zgvdatum'], + $interestedStudent['zgvnation'], + $interestedStudent['zgvmas_code'], + $interestedStudent['zgvmaort'], + $interestedStudent['zgvmadatum'], + $interestedStudent['zgvmanation'], + $interestedStudent['aufnahmeschluessel'], + $interestedStudent['facheinschlberuf'], + $interestedStudent['reihungstest_id'], + $interestedStudent['anmeldungreihungstest'], + $interestedStudent['reihungstestangetreten'], + $interestedStudent['rt_gesamtpunkte'], + $interestedStudent['rt_punkte1'], + $interestedStudent['rt_punkte2'], + $interestedStudent['rt_punkte3'], + $interestedStudent['bismelden'], + $interestedStudent['insertamum'], + $interestedStudent['insertvon'], + $interestedStudent['updateamum'], + $interestedStudent['updatevon'], + $interestedStudent['anmerkung'], + $interestedStudent['dual'], + $interestedStudent['ausstellungsstaat'], + $interestedStudent['mentor']); + + $result = $this->db->query($insertQuery, $sqlParametersArray); + } + // otherwise it's an update + else + { + $updateQuery = "UPDATE public.tbl_prestudent SET + aufmerksamdurch_kurzbz = ?, + person_id = ?, + studiengang_kz = ?, + berufstaetigkeit_code = ?, + ausbildungcode = ?, + zgv_code = ?, + zgvort = ?, + zgvdatum = ?, + zgvnation = ?, + zgvmas_code = ?, + zgvmaort = ?, + zgvmadatum = ?, + zgvmanation = ?, + aufnahmeschluessel = ?, + facheinschlberuf = ?, + reihungstest_id = ?, + anmeldungreihungstest = ?, + reihungstestangetreten = ?, + rt_gesamtpunkte = ?, + rt_punkte1 = ?, + rt_punkte2 = ?, + rt_punkte3 = ?, + bismelden = ?, + updateamum = ?, + updatevon = ?, + anmerkung = ?, + mentor = ?, + dual = ?, + ausstellungsstaat = ? + WHERE prestudent_id = ?"; + + $sqlParametersArray = array($interestedStudent['aufmerksamdurch_kurzbz'], + $interestedStudent['person_id'], + $interestedStudent['studiengang_kz'], + $interestedStudent['berufstaetigkeit_code'], + $interestedStudent['ausbildungcode'], + $interestedStudent['zgv_code'], + $interestedStudent['zgvort'], + $interestedStudent['zgvdatum'], + $interestedStudent['zgvnation'], + $interestedStudent['zgvmas_code'], + $interestedStudent['zgvmaort'], + $interestedStudent['zgvmadatum'], + $interestedStudent['zgvmanation'], + $interestedStudent['aufnahmeschluessel'], + $interestedStudent['facheinschlberuf'], + $interestedStudent['reihungstest_id'], + $interestedStudent['anmeldungreihungstest'], + $interestedStudent['reihungstestangetreten'], + $interestedStudent['punkte'], + $interestedStudent['rt_punkte1'], + $interestedStudent['rt_punkte2'], + $interestedStudent['rt_punkte3'], + $interestedStudent['bismelden'], + $interestedStudent['updateamum'], + $interestedStudent['updatevon'], + $interestedStudent['anmerkung'], + $interestedStudent['mentor'], + $interestedStudent['dual'], + $interestedStudent['ausstellungsstaat'], + $interestedStudent['prestudent_id']); + + $result = $this->db->query($updateQuery, $sqlParametersArray); + } + + // Check DB transaction result + if($this->db->trans_status() === FALSE) + { + $this->db->trans_rollback(); + $result = FALSE; + } + else + { + $this->db->trans_commit(); + $result = TRUE; + } + + return $result; + } + + private function _validate($person = NULL) + { + if(!isset($person)) + { + return false; + } + + $person['nachname'] = trim($person['nachname']); + $person['vorname'] = trim($person['vorname']); + $person['vornamen'] = trim($person['vornamen']); + $person['anrede'] = trim($person['anrede']); + $person['titelpost'] = trim($person['titelpost']); + $person['titelpre'] = trim($person['titelpre']); + + if(mb_strlen($person['sprache']) > 16) + { + //$this->errormsg = 'Sprache darf nicht laenger als 16 Zeichen sein'; + return false; + } + if(mb_strlen($person['anrede']) > 16) + { + //$this->errormsg = 'Anrede darf nicht laenger als 16 Zeichen sein'; + return false; + } + if(mb_strlen($person['titelpost']) > 32) + { + //$this->errormsg = 'Titelpost darf nicht laenger als 32 Zeichen sein'; + return false; + } + if(mb_strlen($person['titelpre']) > 64) + { + //$this->errormsg = 'Titelpre darf nicht laenger als 64 Zeichen sein'; + return false; + } + if(mb_strlen($person['nachname']) > 64) + { + //$this->errormsg = 'Nachname darf nicht laenger als 64 Zeichen sein'; + return false; + } + if($person['nachname'] == '' || is_null($person['nachname'])) + { + //$this->errormsg = 'Nachname muss eingegeben werden'; + return false; + } + + if(mb_strlen($person['vorname']) > 32) + { + //$this->errormsg = 'Vorname darf nicht laenger als 32 Zeichen sein'; + return false; + } + if(mb_strlen($person['vornamen']) > 128) + { + //$this->errormsg = 'Vornamen darf nicht laenger als 128 Zeichen sein'; + return false; + } + //ToDo Gebdatum pruefen -> laut bis muss student aelter als 10 Jahre sein + /* if (strlen($person['gebdatum) == 0 || is_null($person['gebdatum)) + { + //$this->errormsg = "Geburtsdatum muss eingegeben werden\n"; + return false; + } */ + if(mb_strlen($person['gebort']) > 128) + { + //$this->errormsg = 'Geburtsort darf nicht laenger als 128 Zeichen sein'; + return false; + } + + if(mb_strlen($person['homepage']) > 256) + { + //$this->errormsg = 'Homepage darf nicht laenger als 256 Zeichen sein'; + return false; + } + if(mb_strlen($person['svnr']) > 16) + { + //$this->errormsg = 'SVNR darf nicht laenger als 16 Zeichen sein'; + return false; + } + + if(mb_strlen($person['matr_nr']) > 32) + { + //$this->errormsg = 'Matrikelnummer darf nicht laenger als 32 Zeichen sein'; + return false; + } + + if($person['svnr'] != '' && mb_strlen($person['svnr']) != 16 && mb_strlen($person['svnr']) != 10) + { + //$this->errormsg = 'SVNR muss 10 oder 16 Zeichen lang sein'; + return false; + } + + if($person['svnr'] != '' && mb_strlen($person['svnr']) == 10) + { + //SVNR mit Pruefziffer pruefen + //Die 4. Stelle in der SVNR ist die Pruefziffer + //(Summe von (gewichtung[i]*svnr[i])) modulo 11 ergibt diese Pruefziffer + //Falls nicht, ist die SVNR ungueltig + $gewichtung = array(3, 7, 9, 0, 5, 8, 4, 2, 1, 6); + $erg = 0; + //Quersumme bilden + for($i = 0; $i < 10; $i++) + { + $erg += $gewichtung[$i] * $person['svnr']{$i}; + } + + if($person['svnr']{3} != ($erg % 11)) //Vergleichen der Pruefziffer mit Quersumme Modulo 11 + { + //$this->errormsg = 'SVNR ist ungueltig'; + return false; + } + } + + if($person['svnr'] != '') + { + //Pruefen ob bereits ein Eintrag mit dieser SVNR vorhanden ist + $qry = "SELECT person_id FROM public.tbl_person WHERE svnr=" . $person['svnr']; + if(db_query($qry)) + { + if($row = db_fetch_object()) + { + if($row->person_id != $person['person_id']) + { + //$this->errormsg = 'Es existiert bereits eine Person mit dieser SVNR! Daten wurden NICHT gepeichert.'; + return false; + } + } + } + } + + if(mb_strlen($person['ersatzkennzeichen']) > 10) + { + //$this->errormsg = 'Ersatzkennzeichen darf nicht laenger als 10 Zeichen sein'; + return false; + } + if(mb_strlen($person['familienstand']) > 1) + { + //$this->errormsg = 'Familienstand ist ungueltig'; + return false; + } + if($person['anzahlkinder'] != '' && !is_numeric($person['anzahlkinder'])) + { + //$this->errormsg = 'Anzahl der Kinder ist ungueltig'; + return false; + } + if($person['aktiv'] != "t" && $person['aktiv'] != "f") + { + //$this->errormsg = 'Aktiv ist ungueltig'; + return false; + } + if(!isset($person['person_id']) && mb_strlen($person['insertvon']) > 32) + { + //$this->errormsg = 'Insertvon darf nicht laenger als 32 Zeichen sein'; + return false; + } + if(mb_strlen($person['updatevon']) > 32) + { + //$this->errormsg = 'Updatevon darf nicht laenger als 32 Zeichen sein'; + return false; + } + /*if($person['ext_id'] != '' && !is_numeric($person['ext_id'])) + { + //$this->errormsg = 'Ext_ID ist keine gueltige Zahl'; + return false; + }*/ + if(mb_strlen($person['geschlecht']) > 1) + { + //$this->errormsg = 'Geschlecht darf nicht laenger als 1 Zeichen sein'; + return false; + } + if(mb_strlen($person['geburtsnation']) > 3) + { + //$this->errormsg = 'Geburtsnation darf nicht laenger als 3 Zeichen sein'; + return false; + } + if(mb_strlen($person['staatsbuergerschaft']) > 3) + { + //$this->errormsg = 'Staatsbuergerschaft darf nicht laenger als 3 Zeichen sein'; + return false; + } + if($person['geschlecht'] != 'm' && $person['geschlecht'] != 'w' && $person['geschlecht'] != 'u') + { + //$this->errormsg = 'Geschlecht muss w, m oder u sein!'; + return false; + } + + //Pruefen ob das Geburtsdatum mit der SVNR uebereinstimmt. + if($person['svnr'] != '' && $person['gebdatum'] != '') + { + if(mb_ereg("([0-9]{1,2}).([0-9]{1,2}).([0-9]{4})", $person['gebdatum'], $regs)) + { + //$day = sprintf('%02s',$regs[1]); + //$month = sprintf('%02s',$regs[2]); + //$year = mb_substr($regs[3],2,2); + } + elseif(mb_ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})", $person['gebdatum'], $regs)) + { + //$day = sprintf('%02s',$regs[3]); + //$month = sprintf('%02s',$regs[2]); + //$year = mb_substr($regs[1],2,2); + } + else + { + //$this->errormsg = 'Format des Geburtsdatums ist ungueltig'; + return false; + } + + /* das muss nicht immer so sein + $day_svnr = mb_substr($person['svnr, 4, 2); + $month_svnr = mb_substr($person['svnr, 6, 2); + $year_svnr = mb_substr($person['svnr, 8, 2); + + if ($day_svnr!=$day || $month_svnr!=$month || $year_svnr!=$year) + { + //$this->errormsg = 'SVNR und Geburtsdatum passen nicht zusammen'; + return false; + } + */ + } + + return true; + } + + /** + * Laedt Personendaten eine BenutzerUID + * @param string $uid DB-Attr: tbl_benutzer.uid . + * @return bool + */ + public function getPersonFromBenutzerUID($uid) + { + + if(!$this->fhc_db_acl->bb->isBerechtigt('person', 's')) { $this->db->select('tbl_person.*'); $this->db->from('public.tbl_person JOIN public.tbl_benutzer USING (person_id)'); $query = $this->db->get_where(null, array('uid' => $uid)); return $query->result_object(); } - } - - public function savePerson($person) - { - //TODO check berechtigung -// if($this->fhc_db_acl->bb->isBerechtigt('person', 'sui')) -// { - $data = array( - "vorname"=>$person["vorname"], - "nachname"=>$person["nachname"], - "gebdatum"=>$person["gebdatum"], - "aktiv" => true, - "zugangscode"=>$person["zugangscode"], - "zugangscode_timestamp"=>date('Y-m-d H:i:s'), - "insertamum"=>date('Y-m-d H:i:s'), - "insertvon"=>$person["insertvon"], - ); - if($this->db->insert("public.tbl_person", $data)){ - return $this->db->insert_id(); - } - else - { - return false; - } -// } -// else -// { -// return "Nicht berechtigt"; -// } - } - - public function checkBewerbung($email, $studiensemester_kurzbz=NULL) - { + } + + /** + * + */ + public function checkBewerbung($email, $studiensemester_kurzbz = NULL) + { $this->db->distinct(); if(is_null($studiensemester_kurzbz)) { $this->db->select("p.person_id, p.zugangscode, p.insertamum") - ->from("public.tbl_person p") - ->join("public.tbl_kontakt k", "p.person_id=k.person_id") - ->join("public.tbl_benutzer b", "p.person_id=b.person_id", "left") - ->where("k.kontakttyp", 'email') - ->where("(kontakt='".$email."'". - " OR alias ||'@technikum-wien.at'='".$email."'". - " OR uid ||'@technikum-wien.at'='".$email."')") - ->order_by("p.insertamum", "DESC") - ->limit(1) + ->from("public.tbl_person p") + ->join("public.tbl_kontakt k", "p.person_id=k.person_id") + ->join("public.tbl_benutzer b", "p.person_id=b.person_id", "left") + ->where("k.kontakttyp", 'email') + ->where("(kontakt='" . $email . "'" . + " OR alias ||'@technikum-wien.at'='" . $email . "'" . + " OR uid ||'@technikum-wien.at'='" . $email . "')") + ->order_by("p.insertamum", "DESC") + ->limit(1) ; } else { $this->db->select("p.person_id,p.zugangscode,p.insertamum") - ->from("public.tbl_person p") - ->join("public.tbl_kontakt k", "p.person_id=k.person_id") - ->join("public.tbl_benutzer b", "p.person_id=b.person_id", "left") - ->join("public.tbl_prestudent ps", "p.person_id=ps.person_id") - ->join("public.tbl_prestudentstatus pst", "pst.prestudent_id=ps.prestudent_id") - ->where("k.kontakttyp", 'email') - ->where("(kontakt='".$email."'". - " OR alias ||'@technikum-wien.at'='".$email."'". - " OR uid ||'@technikum-wien.at'='".$email."')") - ->where("studiensemester_kurzbz='".$studiensemester_kurzbz."'") - ->order_by("p.insertamum", "DESC") - ->limit(1) + ->from("public.tbl_person p") + ->join("public.tbl_kontakt k", "p.person_id=k.person_id") + ->join("public.tbl_benutzer b", "p.person_id=b.person_id", "left") + ->join("public.tbl_prestudent ps", "p.person_id=ps.person_id") + ->join("public.tbl_prestudentstatus pst", "pst.prestudent_id=ps.prestudent_id") + ->where("k.kontakttyp", 'email') + ->where("(kontakt='" . $email . "'" . + " OR alias ||'@technikum-wien.at'='" . $email . "'" . + " OR uid ||'@technikum-wien.at'='" . $email . "')") + ->where("studiensemester_kurzbz='" . $studiensemester_kurzbz . "'") + ->order_by("p.insertamum", "DESC") + ->limit(1) ; } return $this->db->get()->result_array(); - } + } - public function checkZugangscodePerson($code) - { + /** + * + */ + public function checkZugangscodePerson($code) + { $this->db->select("p.person_id") - ->from("public.tbl_person p") - ->where("p.zugangscode", $code); + ->from("public.tbl_person p") + ->where("p.zugangscode", $code); return $this->db->get()->result_array(); - } - - public function updatePerson($person) - { - //TODO check berechtigung -// if($this->fhc_db_acl->bb->isBerechtigt('person', 'sui')) -// { - //TODO set other columns to be updated - $this->db->set("zugangscode", $person["zugangscode"]); - $this->db->where("person_id", $person["person_id"]); - if($this->db->update("public.tbl_person")){ - return true; - } - else - { - return false; - } -// } -// else -// { -// return "Nicht berechtigt"; -// } - } -} + } +} \ No newline at end of file diff --git a/application/models/person/Prestudent_model.php b/application/models/person/Prestudent_model.php new file mode 100644 index 000000000..ac4ff8d3b --- /dev/null +++ b/application/models/person/Prestudent_model.php @@ -0,0 +1,30 @@ +dbTable='public.tbl_prestudent'; + $this->pk='prestudent_id'; + } + + /** + * + */ + public function loadPrestudentPerson($prestudentID) + { + $this->db->select('*') + ->from('public.tbl_prestudent') + ->join('public.tbl_person', 'person_id') + ->where('prestudent_id', $prestudentID); + return $this->db->get()->result_array(); + } + + +} diff --git a/ci_db_extra.php b/ci_db_extra.php new file mode 100755 index 000000000..23f512a41 --- /dev/null +++ b/ci_db_extra.php @@ -0,0 +1,119 @@ +db_result=$this->db->simple_query($sql)) + return $this->db_result; + else + { + $this->errormsg.='Abfrage in Datenbank fehlgeschlagen! '.$this->db_last_error(); + return false; + } + } + + 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_add_param($var, $type=FHC_STRING, $nullable=true) + { + if($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_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; + } + + public function db_escape($var) + { + return pg_escape_string($var); + } + + public function db_null_value($var, $qoute=true) + { + if($qoute) + return ($var!==''?$this->db_qoute($var):'null'); + else + return ($var!==''?$var:'null'); + } + + public function db_qoute($var) + { + return "'".$var."'"; + } + + 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; + } +} diff --git a/ci_hack.php b/ci_hack.php index 26bdc39c3..8bafa5f7b 100755 --- a/ci_hack.php +++ b/ci_hack.php @@ -347,6 +347,11 @@ if (isset($assign_to_config) && is_array($assign_to_config)) */ $LANG =& load_class('Lang', 'core'); +define('FHC_INTEGER',1); +define('FHC_STRING',2); +define('FHC_BOOLEAN',3); +define('FHC_LANG_ARRAY',4); + function &get_instance() { return CI_Controller::get_instance(); @@ -364,105 +369,5 @@ require_once(dirname(__FILE__).'/application/core/FHC_Model.php'); $model=new CI_Model(); // Traits -trait db_extra -{ - protected $db_result=null; +require_once(dirname(__FILE__).'db_extra.php'); - public function db_query($sql) - { - if ($this->db_result=$this->db->simple_query($sql)) - return $this->db_result; - else - { - $this->errormsg.='Abfrage in Datenbank fehlgeschlagen! '.$this->db_last_error(); - return false; - } - } - - 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_add_param($var, $type=FHC_STRING, $nullable=true) - { - if($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_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; - } - - public function db_escape($var) - { - return pg_escape_string($var); - } - - public function db_null_value($var, $qoute=true) - { - if($qoute) - return ($var!==''?$this->db_qoute($var):'null'); - else - return ($var!==''?$var:'null'); - } - - public function db_qoute($var) - { - return "'".$var."'"; - } - - 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?'); - } -} diff --git a/cis/private/bildupload.php b/cis/private/bildupload.php index d27309a1b..cfc14f07e 100644 --- a/cis/private/bildupload.php +++ b/cis/private/bildupload.php @@ -24,7 +24,7 @@ // Oberflaeche zum Upload von Bildern -session_cache_limiter('none'); //muss gesetzt werden damit der upload in chrome und das automatische updaten des profilbildes funktioniert +//session_cache_limiter('none'); //muss gesetzt werden damit der upload in chrome und das automatische updaten des profilbildes funktioniert require_once('../../config/cis.config.inc.php'); require_once('../../include/functions.inc.php'); require_once('../../include/person.class.php'); diff --git a/cis/private/jahresplan/jahresplan_detail.php b/cis/private/jahresplan/jahresplan_detail.php index df8d62bdd..17ca31e67 100644 --- a/cis/private/jahresplan/jahresplan_detail.php +++ b/cis/private/jahresplan/jahresplan_detail.php @@ -119,4 +119,4 @@ } ?> - \ No newline at end of file + diff --git a/cis/private/lehre/anwesenheitsliste.pdf.php b/cis/private/lehre/anwesenheitsliste.pdf.php index 756fbf5d7..063bc9edd 100644 --- a/cis/private/lehre/anwesenheitsliste.pdf.php +++ b/cis/private/lehre/anwesenheitsliste.pdf.php @@ -46,7 +46,7 @@ if(isset($_GET['stsem'])) else die('Eine Studiensemester muss uebergeben werden'); -if(!$berechtigung->isBerechtigt('admin') && !check_lektor_lehrveranstaltung($user,$lvid,$studiensemester)) +if(!$berechtigung->isBerechtigt('admin') && !$berechtigung->isBerechtigt('assistenz') && !check_lektor_lehrveranstaltung($user,$lvid,$studiensemester)) die('Sie muessen LektorIn der LV oder Admin sein, um diese Seite aufrufen zu koennen'); $output='pdf'; @@ -95,9 +95,6 @@ $stg->load($lv->studiengang_kz); $studiengang_bezeichnung=$stg->bezeichnung; -$teilnehmer = $lv->getStudentsOfLv($lvid, $studiensemester, $lehreinheit); -$anzahl_studierende=count($teilnehmer); - $stg->getAllTypes(); $data = array( @@ -111,7 +108,6 @@ $data = array( 'sprache'=>$lv->sprache, 'studiensemester'=>$studiensemester, 'semester'=>$lv->semester, - 'anzahl_studierende'=>$anzahl_studierende, 'orgform'=>$lv->orgform_kurzbz, ); @@ -159,13 +155,16 @@ $erhalter = new erhalter(); $erhalter->getAll(); $a_o_kz = '9'.sprintf("%03s", $erhalter->result[0]->erhalter_kz); //Stg_Kz AO-Studierende auslesen (9005 fuer FHTW) +$anzahl_studierende = 0; if($result = $db->db_query($qry)) -{ +{ while($row = $db->db_fetch_object($result)) { if($row->status!='Abbrecher' && $row->status!='Unterbrecher') { + $anzahl_studierende++; + if($row->status=='Incoming') //Incoming $zusatz='(i)'; else @@ -193,10 +192,13 @@ if($result = $db->db_query($qry)) 'zusatz'=>$zusatz )); } - } + //Anzahl Studierende in Array $data (an erster Stelle) einfuegen + $data = array_reverse($data, true); + $data['anzahl_studierende'] = $anzahl_studierende; + $data = array_reverse($data, true); } - +//var_dump($data); //$files=array(); /* foreach($codes_obj->result as $code) @@ -230,4 +232,4 @@ foreach($files as $file) unlink($file); */ -?> \ No newline at end of file +?> diff --git a/cis/private/lehre/benotungstool/lvgesamtnote_worker.php b/cis/private/lehre/benotungstool/lvgesamtnote_worker.php index e64e2fe2d..250f65cde 100644 --- a/cis/private/lehre/benotungstool/lvgesamtnote_worker.php +++ b/cis/private/lehre/benotungstool/lvgesamtnote_worker.php @@ -18,7 +18,7 @@ * Authors: Andreas Oesterreicher and */ /** - * + * */ require_once('../../../../config/cis.config.inc.php'); require_once('../../../../include/functions.inc.php'); @@ -44,5 +44,5 @@ switch($work) $note = $notenschluessel->getNote($punkte, $lehrveranstaltung_id, $studiensemester_kurzbz); echo $note; exit; -} -?> +} +?> diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php index 284a7dfb3..c5827b826 100644 --- a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php +++ b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php @@ -131,7 +131,8 @@ echo ' - + @@ -59,12 +66,12 @@ $studiensemester->getAll(); #pruefungen, #prfTermine { width: 50%; } - + #details { width: 50%; /* margin-left: 1.5em;*/ } - + #lvDetails, #prfDetails { min-width: 40%; margin-bottom: 1em; @@ -72,21 +79,21 @@ $studiensemester->getAll(); float:left; /*border: 1px solid black;*/ } - + /* #prfDetails { float:right; }*/ - + #accordion { width: 60%; clear: left; clear: right; } - + .titel { font-weight: bold; } - + #message { position: fixed; bottom: 0px; @@ -95,7 +102,7 @@ $studiensemester->getAll(); font-size: 1.5em; font-weight: bold; } - + .columnheader1 { width: 30%; } @@ -108,13 +115,13 @@ $studiensemester->getAll(); .columnheader4 { width: 5%; } - + #accordion p { margin: 0; height: 24px; } - + -

Prüfungsanmeldung für vorname." ".$benutzer->nachname." (".$uid.")"; ?>

+

t('pruefung/anmeldungFuer'); ?> vorname." ".$benutzer->nachname." (".$uid.")"; ?>

Filter'; - echo '

Studiensemester: '; + echo '

'.$p->t('pruefung/filter').'

'; + echo '

'.$p->t('global/studiensemester').': '; echo '

'; - + ?> -
+
-

LV-Details

- Bezeichnung:
- ECTS:
+

t('pruefung/lvDetails'); ?>

+ t('global/bezeichnung'); ?>:
+ t('global/ects'); ?>:
- +
-

Prüfungsdetails

- Typ:
- Methode:
- Beschreibung:
+

t('pruefung/pruefungsDetails'); ?>

+ t('pruefung/typ'); ?>:
+ t('pruefung/pruefungMethode'); ?>:
+ t('global/beschreibung'); ?>:

-
+
-
+
@@ -267,40 +274,40 @@ $studiensemester->getAll(); - + - + - + - + - + - +
Lehrveranstaltung: t('global/lehrveranstaltung'); ?>:
Von: t('global/von'); ?>:
Bis: t('global/bis'); ?>:
Studienverpflichtung:* t('pruefung/studienverpflichtung'); ?>:*
Bemerkung: t('global/anmerkung'); ?>:
diff --git a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php old mode 100644 new mode 100755 index 43d750df5..bd95242d3 --- a/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldungen_liste.php @@ -2,22 +2,22 @@ */ @@ -33,6 +33,14 @@ require_once('../../../../include/lehrveranstaltung.class.php'); require_once('../../../../include/mitarbeiter.class.php'); require_once('../../../../include/student.class.php'); require_once('../../../../include/datum.class.php'); +require_once('../../../../include/phrasen.class.php'); +require_once('../../../../include/globals.inc.php'); +require_once('../../../../include/sprache.class.php'); + +$sprache = getSprache(); +$lang = new sprache(); +$lang->load($sprache); +$p = new phrasen($sprache); $uid = get_uid(); $rechte = new benutzerberechtigung(); @@ -42,17 +50,17 @@ $rechte->getBerechtigungen($uid); - @@ -225,17 +233,17 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA }); }); -

Anmeldungen Verwalten

+

t('pruefung/anmeldungenVerwalten'); ?>

-

Studiengänge

+

t('global/studiengang'); ?>

-

Studiensemester

+

t('global/studiensemester'); ?>

'; $aktuellesSemester = $studiensemester->getaktorNext(); @@ -259,7 +267,7 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
-

Prüfungen

+

t('pruefung/pruefungPruefungenTitle'); ?>

@@ -267,9 +275,9 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
-

Anmeldungen

+

t('pruefung/pruefungsbewertungAnmeldungen'); ?>

- +
@@ -278,20 +286,20 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
- +
- +
- +
- +
@@ -299,7 +307,7 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
- +
diff --git a/cis/private/lehre/pruefung/pruefungsbewertung.json.php b/cis/private/lehre/pruefung/pruefungsbewertung.json.php old mode 100644 new mode 100755 index 750628aff..0ff901e0c --- a/cis/private/lehre/pruefung/pruefungsbewertung.json.php +++ b/cis/private/lehre/pruefung/pruefungsbewertung.json.php @@ -17,6 +17,14 @@ require_once('../../../../include/pruefungsanmeldung.class.php'); require_once('../../../../include/student.class.php'); require_once('../../../../include/pruefungstermin.class.php'); require_once('../../../../include/datum.class.php'); +require_once('../../../../include/phrasen.class.php'); +require_once('../../../../include/globals.inc.php'); +require_once('../../../../include/sprache.class.php'); + +$sprache = getSprache(); +$lang = new sprache(); +$lang->load($sprache); +$p = new phrasen($sprache); $uid = get_uid(); @@ -43,7 +51,7 @@ switch($method) { $data['result']='false'; $data['error']='true'; - $data['errormsg']='Sie haben keine Berechtigung.'; + $data['errormsg']=$p->t('global/keineBerechtigung'); break; } $data = getPruefungMitarbeiter($mitarbeiter_uid); @@ -53,7 +61,7 @@ switch($method) { $data['result']='false'; $data['error']='true'; - $data['errormsg']='Sie haben keine Berechtigung.'; + $data['errormsg']=$p->t('global/keineBerechtigung'); break; } $data = getNoten(); @@ -73,7 +81,7 @@ switch($method) { $data['result']='false'; $data['error']='true'; - $data['errormsg']='Sie haben keine Berechtigung.'; + $data['errormsg']=$p->t('global/keineBerechtigung'); break; } $note = filter_input(INPUT_POST, 'note'); @@ -96,7 +104,7 @@ switch($method) { $data['result']='false'; $data['error']='true'; - $data['errormsg']='Sie haben keine Berechtigung.'; + $data['errormsg']=$p->t('global/keineBerechtigung'); break; } $pruefung_id = filter_input(INPUT_POST, 'pruefung_id'); @@ -109,7 +117,7 @@ switch($method) { $data['result']='false'; $data['error']='true'; - $data['errormsg']='Sie haben keine Berechtigung.'; + $data['errormsg']=$p->t('global/keineBerechtigung'); break; } $pruefung_id = filter_input(INPUT_POST, 'pruefung_id'); @@ -120,7 +128,7 @@ switch($method) { $data['result']='false'; $data['error']='true'; - $data['errormsg']='Sie haben keine Berechtigung.'; + $data['errormsg']=$p->t('global/keineBerechtigung'); break; } $pruefungsanmeldung_id = filter_input(INPUT_POST, 'pruefungsanmeldung_id'); @@ -131,7 +139,7 @@ switch($method) { $data['result']='false'; $data['error']='true'; - $data['errormsg']='Sie haben keine Berechtigung.'; + $data['errormsg']=$p->t('global/keineBerechtigung'); break; } $lehrveranstaltung_id = filter_input(INPUT_POST, 'lehrveranstaltung_id'); @@ -150,7 +158,8 @@ echo json_encode($data); * @return Array */ function getPruefungMitarbeiter($uid = null) -{ +{ + global $p; $lehrveranstaltung = new lehrveranstaltung(); if($uid !== null) { @@ -183,7 +192,7 @@ function getPruefungMitarbeiter($uid = null) else { $data['error']='true'; - $data['errormsg']="Keine Prüfungen vorhanden."; + $data['errormsg']=$p->t('pruefung/keinePruefungenVorhanden'); } return $data; } @@ -224,6 +233,7 @@ function getNoten() */ function saveBeurteilung($lehrveranstaltung_id, $student_uid, $mitarbeiter_uid, $note, $pruefung_id, $datum, $anmerkung, $pruefungsanmeldung_id, $uid) { + global $p; $pruefungCis = new pruefungCis($pruefung_id); $lehrveranstaltung = new lehrveranstaltung(); $lehreinheiten = $lehrveranstaltung->getLehreinheitenOfLv($lehrveranstaltung_id, $student_uid); @@ -231,20 +241,20 @@ function saveBeurteilung($lehrveranstaltung_id, $student_uid, $mitarbeiter_uid, $pruefung->new = true; if(!empty($lehreinheiten)) { + $pruefungsanmeldung = new pruefungsanmeldung($pruefungsanmeldung_id); + $pruefungstermin = new pruefungstermin($pruefungsanmeldung->pruefungstermin_id); + $pruefung->lehreinheit_id = $lehreinheiten[0]; $pruefung->student_uid = $student_uid; $pruefung->mitarbeiter_uid = $mitarbeiter_uid; $pruefung->note = $note; - $pruefung->pruefungstyp_kurzbz = $pruefungCis->pruefungstyp_kurzbz; + $pruefung->pruefungstyp_kurzbz = $pruefungsanmeldung->pruefungstyp_kurzbz; $pruefung->datum = $datum; $pruefung->anmerkung = $anmerkung; $pruefung->pruefungsanmeldung_id = $pruefungsanmeldung_id; $pruefung->insertvon = $uid; $pruefung->insertamum = date('Y-m-d H:i:s'); - $pruefungsanmeldung = new pruefungsanmeldung($pruefungsanmeldung_id); - $pruefungstermin = new pruefungstermin($pruefungsanmeldung->pruefungstermin_id); - $datum = new datum(); // var_dump(date("Y-m-d", time())); // var_dump($pruefungstermin->von); @@ -265,15 +275,16 @@ function saveBeurteilung($lehrveranstaltung_id, $student_uid, $mitarbeiter_uid, else { $data['error']='true'; - $data['errormsg']="Prüfungstermin liegt nicht in der Vergangenheit."; + $data['errormsg']=$p->t('pruefung/terminNichtInDerVergangenheit'); + //$data['errormsg']='Nicht in der Vergangenheit'; } } - else + else { $data['error']='true'; - $data['errormsg']="Keine Lehreinheiten vorhanden."; + $data['errormsg']=$p->t('pruefung/keineLehreinheitenVorhanden'); } - + return $data; } @@ -286,6 +297,7 @@ function saveBeurteilung($lehrveranstaltung_id, $student_uid, $mitarbeiter_uid, */ function updateBeurteilung($pruefung_id, $note, $uid, $anmerkung) { + global $p; $pruefung = new pruefung($pruefung_id); $pruefung->new = FALSE; $pruefung->note = $note; @@ -334,6 +346,7 @@ function getBeurteilung($pruefungsanmeldung_id) */ function getAnmeldungenTermin($lehrveranstaltung_id, $pruefungstermin_id) { + global $p; $pruefungsanmeldung = new pruefungsanmeldung(); $anmeldungen = $pruefungsanmeldung->getAnmeldungenByTermin($pruefungstermin_id, $lehrveranstaltung_id); foreach($anmeldungen as $a) @@ -363,8 +376,8 @@ function getAnmeldungenTermin($lehrveranstaltung_id, $pruefungstermin_id) } else { - $data['errormsg']= 'Keine Anmeldungen vorhanden'; + $data['errormsg']= $p->t('pruefung/keineAnmeldungenVorhanden'); } } return $data; -} \ No newline at end of file +} diff --git a/cis/private/lehre/pruefung/pruefungsbewertung.php b/cis/private/lehre/pruefung/pruefungsbewertung.php old mode 100644 new mode 100755 index 4a16ac6cd..28894e13c --- a/cis/private/lehre/pruefung/pruefungsbewertung.php +++ b/cis/private/lehre/pruefung/pruefungsbewertung.php @@ -2,22 +2,22 @@ */ @@ -33,6 +33,14 @@ require_once('../../../../include/pruefungstermin.class.php'); require_once('../../../../include/studiengang.class.php'); require_once('../../../../include/pruefungCis.class.php'); require_once('../../../../include/mitarbeiter.class.php'); +require_once('../../../../include/phrasen.class.php'); +require_once('../../../../include/globals.inc.php'); +require_once('../../../../include/sprache.class.php'); + +$sprache = getSprache(); +$lang = new sprache(); +$lang->load($sprache); +$p = new phrasen($sprache); $uid = get_uid(); $db = new basis_db(); @@ -53,7 +61,7 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA - + @@ -63,17 +71,17 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA body { padding: 10px 0 0 10px; } - + #prfWrapper { position: absolute; height: 80%; width: 300px; padding: 1.8em 1.5em 1.8em 1em; - border-radius: 25px; - /*border: 1px solid black;*/ - box-shadow: 0em 0em 2em 0.5em #888888 inset; + //border-radius: 25px; + border: 1px solid #dddddd; + /*box-shadow: 0em 0em 2em 0.5em #888888 inset;*/ } - + #pruefungen { /*border: 1px solid black;*/ width: 94%; @@ -84,7 +92,7 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA overflow: auto; overflow-x: hidden; } - + #anmWrapper { position: absolute; /*top: 45px;*/ @@ -92,21 +100,21 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA width: 600px; height: 80%; padding: 1.8em 1.5em 1.8em 1em; - border-radius: 25px; - /*border: 1px solid black;*/ - box-shadow: 0em 0em 2em 0.5em #888888 inset; + /*border-radius: 25px;*/ + border: 1px solid #dddddd; + /*box-shadow: 0em 0em 2em 0.5em #888888 inset;*/ } - + #anmeldungen { height: 100%; overflow: auto; overflow-x: hidden; } - + #anmeldungen > div, h2 { padding: 0.5em; } - + #message { position: fixed; top: 0px; @@ -116,12 +124,12 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA font-size: 1.5em; font-weight: bold; } - + .missingFormData { border: 2px solid red; outline: 2px solid red; } - + .modalOverlay { position: fixed; width: 100%; @@ -130,7 +138,7 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA left: 0px; background-color: rgba(0,0,0,0.3); /* black semi-transparent */ } - + .anmeldung { font-size: 1.2em; border-bottom: 1px solid black; @@ -142,28 +150,28 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA margin: 0 1em 0 0; float: left; } - + .anmeldung:last-child { clear: both; } - + .anmeldung div:first-child { width: 250px; height: 100%; } - + .saved { background-color: green; } - + .unsaved { background-color: red; } - + #wrapper { display: none; } - + #lektor { margin: 0 0 1em 0; } @@ -209,7 +217,7 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA });
-

Prüfungsbewertung

+

t('pruefung/pruefungsbewertungTitle'); ?>

isBerechtigt('lehre/pruefungsbeurteilungAdmin')) @@ -224,7 +232,7 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA } else { - echo 'Lektor: '; + echo ''.$p->t('pruefung/pruefungLektor').': '; echo ''; echo ''; echo ''; @@ -234,7 +242,7 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
-

Prüfungen

+

t('pruefung/pruefungPruefungenTitle'); ?>

@@ -242,14 +250,14 @@ if(empty($pruefung->result) && !$rechte->isBerechtigt('lehre/pruefungsanmeldungA
-

Anmeldungen

+

t('pruefung/pruefungsbewertungAnmeldungen'); ?>

- +
diff --git a/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php b/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php old mode 100644 new mode 100755 index 63a095df7..1338d3af9 --- a/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php +++ b/cis/private/lehre/pruefung/pruefungsfenster_anlegen.php @@ -2,22 +2,22 @@ */ @@ -29,6 +29,14 @@ require_once('../../../../include/organisationseinheit.class.php'); require_once('../../../../include/studiensemester.class.php'); require_once('../../../../include/datum.class.php'); require_once('../../../../include/pruefungsfenster.class.php'); +require_once('../../../../include/phrasen.class.php'); +require_once('../../../../include/globals.inc.php'); +require_once('../../../../include/sprache.class.php'); + +$sprache = getSprache(); +$lang = new sprache(); +$lang->load($sprache); +$p = new phrasen($sprache); $uid = get_uid(); $db = new basis_db(); @@ -42,7 +50,7 @@ function compareOe($a, $b) { if($a->organisationseinheittyp_kurzbz == $b->organisationseinheittyp_kurzbz) return 0; - + return ($a->organisationseinheittyp_kurzbz < $b->organisationseinheittyp_kurzbz) ? -1 : 1; } @@ -50,7 +58,7 @@ function compareOe($a, $b) - Prüfungsfenster anlegen + <?php echo $p->t('pruefung/titlePruefungsfenster') ?> @@ -83,7 +91,7 @@ $oe = $rechte->getOEkurzbz("lehre/pruefungsfenster"); $studiensemester = new studiensemester(); $studiensemester->getAll(); -if (isset($_POST["method"]) && $_POST["method"] == "save") +if (isset($_POST["method"]) && $_POST["method"] == "save") { $method = $_POST["method"]; $studiensemester_selected = (isset($_POST["studiensemester"]) ? $_POST["studiensemester"] : ""); @@ -107,30 +115,30 @@ if (isset($_POST["method"]) && $_POST["method"] == "save") $pruefungsfenster->ende = $endDate; if ($pruefungsfenster->save()) { - echo "Datensatz erfolgreich gespeichert"; + echo $p->t('pruefung/erfolgreichgespeichert'); } else { - echo "Fehler: ".$pruefungsfenster->errormsg; + echo $p->t('pruefung/fehler').$pruefungsfenster->errormsg; } -// } -// else +// } +// else // { // echo "Fehler: Startdatum liegt in der Vergangenheit."; // } - } + } else { - echo "Fehler: Enddatum liegt in der Vergangenheit."; + echo $p->t('pruefung/fehlerEndDatumInDerVergangenheit'); } - } - else - { - echo "Fehler: Enddatum liegt nicht nach dem Startdatum."; } - } - else + else + { + echo $p->t('pruefung/fehlerEndDatumVorStartDatum'); + } + } + else { - echo "Fehler: Datumseingabe nicht korrekt."; + echo $p->t('pruefung/fehlerDatumNichtKorrekt'); } } else if(isset($_POST["method"]) && $_POST["method"] == "update") @@ -151,44 +159,44 @@ else if(isset($_POST["method"]) && $_POST["method"] == "update") $pruefungsfenster_id = $_POST["id"]; $pruefungsfenster = new pruefungsfenster(); $pruefungsfenster->load($pruefungsfenster_id); - + if(in_array($pruefungsfenster->oe_kurzbz, $oe)) - { + { $pruefungsfenster->studiensemester_kurzbz = $studiensemester_selected; $pruefungsfenster->oe_kurzbz = $oe_kurzbz; $pruefungsfenster->start = $startDate; $pruefungsfenster->ende = $endDate; if ($pruefungsfenster->save()) { - echo "Datensatz erfolgreich geändert."; + echo $p->t('pruefung/erfolgreichgeaendert'); } else { - echo "Fehler: ".$pruefungsfenster->errormsg; + echo $p->t('pruefung/fehler').$pruefungsfenster->errormsg; } } else { - echo "Keine Berechtigung zum Ändern dieses Datensatzes."; + echo $p->t('pruefung/keineBerechtigungZumAendernDesDatensatzes'); } -// } -// else +// } +// else // { // echo "Fehler: Startdatum liegt in der Vergangenheit."; // } - } + } else { - echo "Fehler: Enddatum liegt in der Vergangenheit."; + echo $p->t('pruefung/fehlerEndDatumInDerVergangenheit'); } - } - else - { - echo "Fehler: Enddatum liegt nicht nach dem Startdatum."; } - } - else + else + { + echo $p->t('pruefung/fehlerEndDatumVorStartDatum'); + } + } + else { - echo "Fehler: Datumseingabe nicht korrekt."; + echo $p->t('pruefung/fehlerDatumNichtKorrekt'); } } else if(isset($_GET["id"]) && $_GET["id"]!= null && isset($_GET["method"]) && $_GET["method"]=="update") @@ -198,41 +206,41 @@ else if(isset($_GET["id"]) && $_GET["id"]!= null && isset($_GET["method"]) && $_ $pruefungsfenster->load($pruefungsfenster_id); if(!in_array($pruefungsfenster->oe_kurzbz, $oe)) { - echo "Keine Berechtigung zum Anzeigen dieses Datensatzes."; + echo $p->t('pruefung/keineBerechtigungZumAnzeigenDesDatensatzes'); $pruefungsfenster = new pruefungsfenster(); } $method = $_GET["method"]; -} +} else if(isset($_GET["id"]) && $_GET["id"]!= null && isset($_GET["method"]) && $_GET["method"]=="delete") -{ +{ $pruefungsfenster_id = $_GET["id"]; $pruefungsfenster = new pruefungsfenster(); $pruefungsfenster->load($pruefungsfenster_id); - + if(in_array($pruefungsfenster->oe_kurzbz, $oe)) { if(!$pruefungsfenster->hasPruefungen($pruefungsfenster_id) && $pruefungsfenster->errormsg === null) { - + if($pruefungsfenster->delete($pruefungsfenster_id)) { - echo "Datensatz erfolgreich gelöscht."; - } + echo $p->t('pruefung/erfolgreichgeloescht'); + } else { echo "Fehler: ".$pruefungsfenster->errormsg; } - + } else { - echo "Prüfungsfenster konnte nicht gelöscht werden, da Prüfungen verknüpft sind."; + echo $p->t('pruefung/pruefungsfensterKonnteNichtGeloeschtWerdenDaPruefungen'); } $method = $_GET["method"]; } else { - echo "Keine Berechtigung zum Löschen dieses Datensatzes."; + echo $p->t('pruefung/keineBerechtigungZumLoeschenDesDatensatzes'); } } @@ -240,9 +248,9 @@ $prfFenster = new pruefungsfenster(); $prfFenster->getAll("start"); if($method != "update") { -?> -

Prüfungsfenster-Verwaltung

-

Neues Prüfungsfenster anlegen

+?> +

t('pruefung/pruefungsfensterVerwaltung'); ?>

+

t('pruefung/neuesPruefungsfensterAnlegen'); ?>

@@ -250,12 +258,12 @@ if($method != "update") - + - + - + - + - +
Studiensemester: t('global/studiensemester'); ?>:
Organisationseinheit: t('global/organisationseinheit'); ?>:
Start: t('pruefung/start'); ?>:
Ende: t('pruefung/ende'); ?>:
@@ -314,8 +322,8 @@ if($method != "update") else { ?> -

Prüfungsfenster-Verwaltung

-

Prüfungsfenster bearbeiten

+

t('pruefung/pruefungsfensterVerwaltung'); ?>

+

t('pruefung/pruefungsfensterBearbeiten'); ?>

@@ -326,11 +334,11 @@ else - + - + - + - + - - + +
Studiensemester: t('global/studiensemester'); ?>:
Organisationseinheit: t('global/organisationseinheit'); ?>:
Start: t('pruefung/start'); ?>:
Ende: t('pruefung/ende'); ?>:
@@ -390,21 +398,21 @@ else if((isset($_GET["id"]) && $method!="update") || !isset($_GET["id"])) { ?> -

Prüfungsfenster bearbeiten

+

t('pruefung/pruefungsfensterBearbeiten'); ?>

- result)){ - + ?> - - - - - - + + + + + + @@ -415,14 +423,14 @@ else if(in_array($result->oe_kurzbz, $oe)) { $organisationseinheit->load($result->oe_kurzbz); - echo + echo ' - - + + '; } } @@ -433,14 +441,14 @@ else } else { - echo + echo ' - + '; } ?> - diff --git a/cis/private/lehre/pruefung/pruefungstermin.json.php b/cis/private/lehre/pruefung/pruefungstermin.json.php old mode 100644 new mode 100755 index ee2d39f76..5960fe5c2 --- a/cis/private/lehre/pruefung/pruefungstermin.json.php +++ b/cis/private/lehre/pruefung/pruefungstermin.json.php @@ -15,6 +15,14 @@ require_once('../../../../include/datum.class.php'); require_once('../../../../include/studiensemester.class.php'); require_once('../../../../include/pruefungsfenster.class.php'); require_once('../../../../include/pruefungsanmeldung.class.php'); +require_once('../../../../include/phrasen.class.php'); +require_once('../../../../include/globals.inc.php'); +require_once('../../../../include/sprache.class.php'); + +$sprache = getSprache(); +$lang = new sprache(); +$lang->load($sprache); +$p = new phrasen($sprache); $uid = get_uid(); @@ -66,7 +74,7 @@ switch($method) { $data['result']='false'; $data['error']='true'; - $data['errormsg']='Sie haben keine Berechtigung.'; + $data['errormsg']=$p->t('global/keineBerechtigung'); break; } $data = savePruefungstermin($mitarbeiter_uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $pruefungsintervall); @@ -105,7 +113,7 @@ switch($method) { $data['result']='false'; $data['error']='true'; - $data['errormsg']='Sie haben keine Berechtigung.'; + $data['errormsg']=$p->t('global/keineBerechtigung'); break; } $data = updatePruefungstermin($mitarbeiter_uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu, $pruefungsintervall); @@ -115,7 +123,7 @@ switch($method) { $data['result']='false'; $data['error']='true'; - $data['errormsg']='Sie haben keine Berechtigung.'; + $data['errormsg']=$p->t('global/keineBerechtigung'); break; } $lvId = $_POST["lehrveranstaltung_id"]; @@ -127,7 +135,7 @@ switch($method) { $data['result']='false'; $data['error']='true'; - $data['errormsg']='Sie haben keine Berechtigung.'; + $data['errormsg']=$p->t('global/keineBerechtigung'); break; } $pruefung_id = $_REQUEST["pruefung_id"]; @@ -138,7 +146,7 @@ switch($method) { $data['result']='false'; $data['error']='true'; - $data['errormsg']='Sie haben keine Berechtigung.'; + $data['errormsg']=$p->t('global/keineBerechtigung'); break; } $pruefung_id = $_REQUEST["pruefung_id"]; @@ -158,7 +166,7 @@ switch($method) { $data['result']='false'; $data['error']='true'; - $data['errormsg']='Sie haben keine Berechtigung.'; + $data['errormsg']=$p->t('global/keineBerechtigung'); break; } break; @@ -255,10 +263,11 @@ function getPruefungsfensterByStudiensemester($studiensemester_kurzbz) */ function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $pruefungsintervall) { + global $p; if($lehrveranstaltungen === null) { $data['error']='true'; - $data['errormsg']="Keine Lehrverantaltung angegeben."; + $data['errormsg']=$p->t('pruefung/keineLvAngegeben'); return $data; } $termineArray = array(); @@ -282,7 +291,7 @@ function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id else { $data['error']='true'; - $data['errormsg']="Kollision mit anderem Termin."; + $data['errormsg']=$p->t('pruefung/kollisionMitAnderemTermin'); return $data; } // } @@ -292,7 +301,7 @@ function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id // $data['errormsg']="Termin ist nicht innerhalb des Prüfungsfensters."; // return $data; // } - } + } $pruefung = new pruefungCis(); $pruefung->termine = $termineArray; @@ -313,7 +322,7 @@ function savePruefungstermin($uid, $studiensemester_kurzbz, $pruefungsfenster_id array_push($pruefung->lehrveranstaltungen, $lv); } } - + if($pruefung->save(true)) { $data['result']="true"; @@ -397,12 +406,13 @@ function getLehrveranstaltungenByMitarbeiter($mitarbeiter_uid, $studiensemester_ */ function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pruefungsfenster_id, $pruefungstyp_kurzbz, $titel, $beschreibung, $methode, $einzeln, $lehrveranstaltungen, $termine, $termineNeu, $pruefungsintervall) { + global $p; $pruefungsfenster = new pruefungsfenster(); $pruefungsfenster->load($pruefungsfenster_id); $datum = new datum(); $pruefung = new pruefungCis(); $pruefung->load($pruefung_id); - + if($termineNeu !== null) { $termineNeuArray = array(); @@ -426,7 +436,7 @@ function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pru else { $data['error']='true'; - $data['errormsg']="Kollision mit anderem Termin."; + $data['errormsg']=$p->t('pruefung/kollisionMitAnderemTermin'); return $data; } // } @@ -442,7 +452,7 @@ function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pru $pruefung->saveTerminPruefung($pruefung_id, $t->beginn, $t->ende, $t->max, $t->min, $t->sammelklausur); } } - + if($termine !== null) { $termineArray = array(); @@ -474,7 +484,7 @@ function updatePruefungstermin($uid, $pruefung_id, $studiensemester_kurzbz, $pru } $pruefung->termine = $termineArray; } - + $pruefung->mitarbeiter_uid = $uid; $pruefung->studiensemester_kurzbz = $studiensemester_kurzbz; $pruefung->pruefungsfenster_id = $pruefungsfenster_id; @@ -661,4 +671,4 @@ function checkCollision($uid, $beginn, $ende) } return false; } -?> \ No newline at end of file +?> diff --git a/cis/private/lehre/pruefung/pruefungstermin_festlegen.php b/cis/private/lehre/pruefung/pruefungstermin_festlegen.php old mode 100644 new mode 100755 index bfc11ec1f..909ea18bd --- a/cis/private/lehre/pruefung/pruefungstermin_festlegen.php +++ b/cis/private/lehre/pruefung/pruefungstermin_festlegen.php @@ -2,22 +2,22 @@ */ @@ -33,6 +33,14 @@ require_once('../../../../include/pruefungstermin.class.php'); require_once('../../../../include/studiengang.class.php'); require_once('../../../../include/pruefungCis.class.php'); require_once('../../../../include/mitarbeiter.class.php'); +require_once('../../../../include/phrasen.class.php'); +require_once('../../../../include/globals.inc.php'); +require_once('../../../../include/sprache.class.php'); + +$sprache = getSprache(); +$lang = new sprache(); +$lang->load($sprache); +$p = new phrasen($sprache); $uid = get_uid(); $db = new basis_db(); @@ -49,11 +57,11 @@ if(empty($lehrveranstaltung->lehrveranstaltungen) && !$rechte->isBerechtigt('leh - Prüfungstermin festlegen + <?php echo $p->t('pruefung/titlePruefungstermin'); ?> - + @@ -68,12 +76,12 @@ if(empty($lehrveranstaltung->lehrveranstaltungen) && !$rechte->isBerechtigt('leh font-size: 1.5em; font-weight: bold; } - + .missingFormData { border: 2px solid red; outline: 2px solid red; } - + .modalOverlay { position: fixed; width: 100%; @@ -82,7 +90,7 @@ if(empty($lehrveranstaltung->lehrveranstaltungen) && !$rechte->isBerechtigt('leh left: 0px; background-color: rgba(0,0,0,0.3); /* black semi-transparent */ } - + #prfDetails, #prfVerwaltung { margin: 1em; } @@ -142,7 +150,7 @@ if(empty($lehrveranstaltung->lehrveranstaltungen) && !$rechte->isBerechtigt('leh });
-

Prüfungen verwalten

+

t('pruefung/pruefungenVerwalten'); ?>

StudiensemesterOrganisationseinheitStartdatumEnddatumBearbeitenLöschent('global/studiensemester'); ?>t('global/organisationseinheit'); ?>t('pruefung/start'); ?>t('pruefung/ende'); ?>t('global/bearbeiten'); ?>t('global/loeschen'); ?>
'.$result->studiensemester_kurzbz.' '.$organisationseinheit->organisationseinheittyp_kurzbz." ".$organisationseinheit->bezeichnung.' '.$result->start.' '.$result->ende.'bearbeitenlöschen'.$p->t('global/bearbeiten').''. $p->t('global/loeschen').'
Keine Prüfungsfenster gespeichert.'.$p->t('pruefung/keinePruefungsfensterGespeichert').'
lehrveranstaltungen) && !$rechte->isBerechtigt('leh } else { - echo ''; + echo ''; echo ''; echo ''; echo ''; @@ -169,54 +177,54 @@ if(empty($lehrveranstaltung->lehrveranstaltungen) && !$rechte->isBerechtigt('leh
Lektor:'.$p->t('pruefung/pruefungLektor').':
- + - + - + - + - + - + + - + --> - + - + - + - + - + - +
Titel:t('pruefung/pruefungTitel'); ?>:
Beschreibung:t('global/beschreibung'); ?>:
Studiensemester:t('global/studiensemester'); ?>:
Prüfungsfenster:t('pruefung/pruefungsfenster'); ?>:
Methode:t('pruefung/pruefungMethode'); ?>:
Einzelprüfung:t('pruefung/pruefungEinzelpruefung'); ?>:
Prüfungsintervall:t('pruefung/pruefungIntervall'); ?>:
Lehrveranstaltungen:t('global/lehrveranstaltung'); ?>:
Termin:t('pruefung/pruefungTermin'); ?>:
- - - - - - + + + + + + @@ -278,30 +286,30 @@ if(empty($lehrveranstaltung->lehrveranstaltungen) && !$rechte->isBerechtigt('leh
DatumVonbismin. Teilnehmermax. TeilnehmerSammelklausurt('global/datum'); ?>t('global/von'); ?>t('global/bis'); ?>t('pruefung/pruefungMinTeilnehmer'); ?>t('pruefung/pruefungMaxTeilnehmer'); ?>t('pruefung/pruefungSammelklausur'); ?>
- Termin hinzufügen + t('pruefung/pruefungTerminHinzufuegen'); ?>
  
-

Prüfungen

+

t('pruefung/pruefungPruefungenTitle'); ?>

- - - - - - - - - + + + + + + + + + diff --git a/cis/private/lvplan/stpl_week.php b/cis/private/lvplan/stpl_week.php index 35611a8fe..478d08eab 100644 --- a/cis/private/lvplan/stpl_week.php +++ b/cis/private/lvplan/stpl_week.php @@ -37,6 +37,85 @@ if (!$db = new basis_db()) $uid=get_uid(); +//$type='ort'; +//$ort_kurzbz='EDV6.08'; +//$datum=1102260015; + +// Deutsche Umgebung +//$loc_de=setlocale(LC_ALL, 'de_AT@euro', 'de_AT','de_DE@euro', 'de_DE'); +//setlocale(LC_ALL, $loc_de); + +// Variablen uebernehmen +if (isset($_GET['type'])) + $type=$_GET['type']; +if (isset($_POST['type'])) + $type=$_POST['type']; +if (isset($_GET['datum'])) + $datum=$_GET['datum']; +if (isset($_POST['datum'])) + $datum=$_POST['datum']; + +if (isset($_GET['ort_kurzbz'])) + $ort_kurzbz=$_GET['ort_kurzbz']; +else if (isset($_POST['ort_kurzbz'])) + $ort_kurzbz=$_POST['ort_kurzbz']; +else + $ort_kurzbz=null; + +if (isset($_GET['pers_uid'])) + $pers_uid=$_GET['pers_uid']; + +if (isset($_GET['stg_kz'])) + $stg_kz=$_GET['stg_kz']; +else if (isset($_POST['stg_kz'])) + $stg_kz=$_POST['stg_kz']; +else + $stg_kz=null; + +if (isset($_GET['lva'])) + $lva=$_GET['lva']; +else if (isset($_POST['lva'])) + $lva=$_POST['lva']; +else + $lva=null; + +if (isset($_POST['sem'])) + $sem=$_POST['sem']; +else if (isset($_GET['sem'])) + $sem=$_GET['sem']; +else + $sem=null; + +if (isset($_POST['ver'])) + $ver=$_POST['ver']; +else if (isset($_GET['ver'])) + $ver=$_GET['ver']; +else + $ver=null; + +if (isset($_POST['grp'])) + $grp=$_POST['grp']; +else if (isset($_GET['grp'])) + $grp=$_GET['grp']; +else + $grp=null; + +if (isset($_POST['gruppe_kurzbz'])) + $gruppe_kurzbz=$_POST['gruppe_kurzbz']; +else if (isset($_GET['gruppe_kurzbz'])) + $gruppe_kurzbz=$_GET['gruppe_kurzbz']; +else + $gruppe_kurzbz=null; + +if (isset($_POST['user_uid'])) + $user_uid=$_POST['user_uid']; +if (isset($_POST['reserve'])) + $reserve=$_POST['reserve']; +if (isset($_POST['beschreibung'])) + $beschreibung=$_POST['beschreibung']; +if (isset($_POST['titel'])) + $titel=$_POST['titel']; + ?> @@ -145,18 +224,41 @@ $uid=get_uid(); }); --> - - - + loadAddons(); + foreach($addon_obj->result as $addon) + { + if(file_exists('../../../addons/'.$addon->kurzbz.'/cis/init.js.php')) + echo ''; + } + + // Wenn Seite fertig geladen ist Addons aufrufen + echo ' + + '; + ?> + -

t('lvplan/wochenplan');?>

TitelStudiensemesterLehrveranstaltungenTermineMethodePrüfungstypEinzelprüfungMitarbeiterstorniertt('pruefung/pruefungTitel'); ?>t('global/studiensemester'); ?>t('global/lehrveranstaltung'); ?>t('pruefung/pruefungTermin'); ?>t('pruefung/pruefungMethode'); ?>t('pruefung/pruefungTyp'); ?>t('pruefung/pruefungEinzelpruefung'); ?>t('pruefung/pruefungMitarbeiter'); ?>t('pruefung/storniert'); ?>
t('lvplan/hauptmenue');?>
-t("dms_link/lvPlanFAQ").'" class="hilfe" target="_blank">'.$p->t("global/hilfe").''; ?> +t("dms_link/lvPlanFAQ")!='') echo ''.$p->t("global/hilfe").''; ?>
@@ -173,85 +275,6 @@ $uid=get_uid(); * Update: 15.11.2004 von Christian Paminger *****************************************************************************/ -//$type='ort'; -//$ort_kurzbz='EDV6.08'; -//$datum=1102260015; - -// Deutsche Umgebung -//$loc_de=setlocale(LC_ALL, 'de_AT@euro', 'de_AT','de_DE@euro', 'de_DE'); -//setlocale(LC_ALL, $loc_de); - -// Variablen uebernehmen -if (isset($_GET['type'])) - $type=$_GET['type']; -if (isset($_POST['type'])) - $type=$_POST['type']; -if (isset($_GET['datum'])) - $datum=$_GET['datum']; -if (isset($_POST['datum'])) - $datum=$_POST['datum']; - -if (isset($_GET['ort_kurzbz'])) - $ort_kurzbz=$_GET['ort_kurzbz']; -else if (isset($_POST['ort_kurzbz'])) - $ort_kurzbz=$_POST['ort_kurzbz']; -else - $ort_kurzbz=null; - -if (isset($_GET['pers_uid'])) - $pers_uid=$_GET['pers_uid']; - -if (isset($_GET['stg_kz'])) - $stg_kz=$_GET['stg_kz']; -else if (isset($_POST['stg_kz'])) - $stg_kz=$_POST['stg_kz']; -else - $stg_kz=null; - -if (isset($_GET['lva'])) - $lva=$_GET['lva']; -else if (isset($_POST['lva'])) - $lva=$_POST['lva']; -else - $lva=null; - -if (isset($_POST['sem'])) - $sem=$_POST['sem']; -else if (isset($_GET['sem'])) - $sem=$_GET['sem']; -else - $sem=null; - -if (isset($_POST['ver'])) - $ver=$_POST['ver']; -else if (isset($_GET['ver'])) - $ver=$_GET['ver']; -else - $ver=null; - -if (isset($_POST['grp'])) - $grp=$_POST['grp']; -else if (isset($_GET['grp'])) - $grp=$_GET['grp']; -else - $grp=null; - -if (isset($_POST['gruppe_kurzbz'])) - $gruppe_kurzbz=$_POST['gruppe_kurzbz']; -else if (isset($_GET['gruppe_kurzbz'])) - $gruppe_kurzbz=$_GET['gruppe_kurzbz']; -else - $gruppe_kurzbz=null; - -if (isset($_POST['user_uid'])) - $user_uid=$_POST['user_uid']; -if (isset($_POST['reserve'])) - $reserve=$_POST['reserve']; -if (isset($_POST['beschreibung'])) - $beschreibung=$_POST['beschreibung']; -if (isset($_POST['titel'])) - $titel=$_POST['titel']; - //Parameter pruefen if($stg_kz!='' && !is_numeric($stg_kz)) die('Studiengang ist ungueltig'); @@ -411,6 +434,5 @@ if (isset($count)) ?>


t('lvplan/fehlerUndFeedback');?> t('lvplan/lvKoordinationsstelle');?>.

-
diff --git a/cis/private/profile/dokumente.php b/cis/private/profile/dokumente.php index 935ccbbe4..7a5c16f73 100755 --- a/cis/private/profile/dokumente.php +++ b/cis/private/profile/dokumente.php @@ -26,6 +26,7 @@ require_once('../../../include/studiensemester.class.php'); require_once('../../../include/konto.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/student.class.php'); +require_once('../../../include/benutzerberechtigung.class.php'); $sprache = getSprache(); $p = new phrasen($sprache); @@ -40,6 +41,24 @@ else $uid=get_uid(); +if(isset($_GET['uid'])) +{ + // Administratoren duerfen die UID als Parameter uebergeben um die Notenliste + // von anderen Personen anzuzeigen + + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($uid); + if($rechte->isBerechtigt('admin')) + { + $uid = $_GET['uid']; + $getParam = "&uid=" . $uid; + } + else + $getParam = ""; +} +else + $getParam=''; + $student_studiengang = new student(); $student_studiengang->load($uid); $xsl_stg_kz = $student_studiengang->studiengang_kz; @@ -102,7 +121,7 @@ echo ' + '; + // ADDONS laden + $addon_obj = new addon(); + $addon_obj->loadAddons(); + foreach($addon_obj->result as $addon) + { + if(file_exists('../../../addons/'.$addon->kurzbz.'/cis/init.js.php')) + echo ''; + } + + // Wenn Seite fertig geladen ist Addons aufrufen + echo ' + + '; + +echo ' + + '; $studiengang = new studiengang(); @@ -68,22 +106,23 @@ $konto->getBuchungen($benutzer->person_id); if(count($konto->result)>0) { - echo '

'; - echo ''; + echo '

'; + echo ''; echo ' - - - - - - - '; - echo ''; - $i=0; + + + + + + + '; + echo ''; + foreach ($konto->result as $row) { - $i++; - + $i=0; //Zaehler fuer Anzahl Gegenbuchungen + $buchungsnummern=''; + if(!isset($row['parent'])) continue; $betrag = $row['parent']->betrag; @@ -91,49 +130,50 @@ if(isset($row['childs'])) { - foreach ($row['childs'] as $row_child) + foreach ($row['childs'] as $key => $row_child) { $betrag += $row_child->betrag; - $betrag = round($betrag, 2); + $betrag = round($betrag, 2); + $buchungsnummern .= ';'.$row['childs'][$key]->buchungsnr; + $i = $key; //Zaehler auf letzten Gegenbuchungseintrag setzen } } + else + $buchungsnummern = $row['parent']->buchungsnr; if($betrag<0) $style='style="background-color: #FF8888;"'; elseif($betrag>0) $style='style="background-color: #88DD88;"'; else - { - $style='class="liste'.($i%2).'"'; - } + $style=''; + + echo ""; + echo ''; + echo ''; + echo ''; + echo ''; - echo ""; - echo ''; - echo ''; - echo ''; - echo ''; - - echo ''; - echo ''; - echo ''; + echo ''; + echo ''; } echo ''; } - echo '
'.$p->t('global/datum').''.$p->t('tools/zahlungstyp').''.$p->t('lvplan/stg').''.$p->t('global/studiensemester').''.$p->t('tools/buchungstext').''.$p->t('tools/betrag').''.$p->t('tools/zahlungsbestaetigung').'
'.$p->t('global/datum').''.$p->t('tools/zahlungstyp').''.$p->t('lvplan/stg').''.$p->t('global/studiensemester').''.$p->t('tools/buchungstext').''.$p->t('tools/betrag').''.$p->t('tools/zahlungsbestaetigung').'
'.date('d.m.Y',$datum_obj->mktime_fromdate(isset($row['childs'][$i])?$row['childs'][$i]->buchungsdatum:$row['parent']->buchungsdatum)).''.$buchungstyp[$row['parent']->buchungstyp_kurzbz].''.$stg_arr[$row['parent']->studiengang_kz].''.$row['parent']->studiensemester_kurzbz.'
'.date('d.m.Y',$datum_obj->mktime_fromdate($row['parent']->buchungsdatum)).''.$buchungstyp[$row['parent']->buchungstyp_kurzbz].''.$stg_arr[$row['parent']->studiengang_kz].''.$row['parent']->studiensemester_kurzbz.''.$row['parent']->buchungstext.''.($betrag<0?'-':($betrag>0?'+':'')).sprintf('%.2f',abs($row['parent']->betrag)).' €'; + echo ''.$row['parent']->buchungstext.''.($betrag<0?'-':($betrag>0?'+':'')).sprintf('%.2f',abs($row['parent']->betrag)).' €'; if($betrag==0 && $row['parent']->betrag<=0) - echo ''.$p->t('tools/bestaetigungDrucken').''; + echo ''.$p->t('tools/bestaetigungDrucken').''; elseif($row['parent']->betrag>0) { //Auszahlung } else - { { echo ''.$p->t('tools/offen').' ('.sprintf('%.2f',$betrag*-1).' €)'; - } + echo '
'; + echo ''; } else { diff --git a/cis/private/profile/zahlungen_details.php b/cis/private/profile/zahlungen_details.php index 621c98c41..a6d35cc72 100644 --- a/cis/private/profile/zahlungen_details.php +++ b/cis/private/profile/zahlungen_details.php @@ -25,8 +25,27 @@ require_once('../../../include/studiengang.class.php'); require_once('../../../include/organisationseinheit.class.php'); require_once('../../../include/addon.class.php'); require_once('../../../include/benutzer.class.php'); +require_once('../../../include/benutzerberechtigung.class.php'); $uid = get_uid(); + +if(isset($_GET['uid'])) +{ + // Administratoren duerfen die UID als Parameter uebergeben um die Zahlungsdetails + // von anderen Personen anzuzeigen + + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($uid); + if($rechte->isBerechtigt('admin')) + { + $uid = $_GET['uid']; + $getParam = "&uid=" . $uid; + } + else + $getParam = ""; +} +else + $getParam=''; $benutzer = new benutzer(); if(!$benutzer->load($uid)) diff --git a/cis/public/incoming/incoming.php b/cis/public/incoming/incoming.php index 52666ae88..61ac6a8cc 100644 --- a/cis/public/incoming/incoming.php +++ b/cis/public/incoming/incoming.php @@ -19,16 +19,14 @@ * Andreas Oesterreicher and * Karl Burkhart . */ - - require_once '../../../config/cis.config.inc.php'; require_once 'auth.php'; require_once '../../../include/mobilitaetsprogramm.class.php'; -require_once '../../../include/person.class.php'; +require_once '../../../include/person.class.php'; require_once '../../../include/functions.inc.php'; require_once '../../../include/phrasen.class.php'; require_once '../../../include/preincoming.class.php'; -require_once '../../../include/nation.class.php'; +require_once '../../../include/nation.class.php'; require_once '../../../include/adresse.class.php'; require_once '../../../include/kontakt.class.php'; require_once '../../../include/studiensemester.class.php'; @@ -36,55 +34,56 @@ require_once '../../../include/studiengang.class.php'; require_once '../../../include/lehrveranstaltung.class.php'; require_once '../../../include/studiengang.class.php'; require_once '../../../include/akte.class.php'; -require_once '../../../include/datum.class.php'; -require_once '../../../include/firma.class.php'; +require_once '../../../include/datum.class.php'; +require_once '../../../include/firma.class.php'; +require_once '../../../include/addon.class.php'; if(isset($_GET['lang'])) setSprache($_GET['lang']); - -$sprache = getSprache(); -$p=new phrasen($sprache); - -$method =""; -$breadcrumb = ""; + +$sprache = getSprache(); +$p=new phrasen($sprache); + +$method =""; +$breadcrumb = ""; if(isset($_GET['method'])) { - $method = htmlspecialchars($_GET['method']); + $method = htmlspecialchars($_GET['method']); if($method == 'austauschprogram') $breadcrumb = "> ".$p->t('incoming/austauschprogram'); - elseif($method == 'profil') + elseif($method == 'profil') $breadcrumb = "> ".$p->t('incoming/profil'); elseif($method == 'university') - $breadcrumb = "> ".$p->t('incoming/universitaet'); + $breadcrumb = "> ".$p->t('incoming/universitaet'); elseif($method == 'lehrveranstaltungen') - $breadcrumb = "> ".$p->t('incoming/lehrveranstaltungen'); + $breadcrumb = "> ".$p->t('incoming/lehrveranstaltungen'); elseif($method == 'files') $breadcrumb = "> ".$p->t('incoming/dateien'); } -$zugangscode = $_SESSION['incoming/user']; +$zugangscode = $_SESSION['incoming/user']; -$nation = new nation(); +$nation = new nation(); if($sprache == "German") - $nation->getAll($ohnesperre = true); + $nation->getAll($ohnesperre = true); else if($sprache == "English") $nation->getAll($ohnesperre = true, $orderEnglish= true); - -$mobility = new mobilitaetsprogramm(); -$mobility->getAll(true); -$person = new person(); -$person->getPersonFromZugangscode($zugangscode); +$mobility = new mobilitaetsprogramm(); +$mobility->getAll(true); -$preincoming = new preincoming(); -$preincoming->load($_SESSION['incoming/preincomingid']); +$person = new person(); +$person->getPersonFromZugangscode($zugangscode); -$adresse = new adresse(); -$adresse->load_pers($preincoming->person_id); +$preincoming = new preincoming(); +$preincoming->load($_SESSION['incoming/preincomingid']); -$kontakt = new kontakt(); -$kontakt->load_pers($preincoming->person_id); +$adresse = new adresse(); +$adresse->load_pers($preincoming->person_id); + +$kontakt = new kontakt(); +$kontakt->load_pers($preincoming->person_id); $db = new basis_db(); @@ -94,9 +93,9 @@ $stsem->getNextStudiensemester(); $stg = new studiengang(); $stg->getAll(); -$date = new datum(); +$date = new datum(); -$firma = new firma(); +$firma = new firma(); $firma->getFirmen('Partneruniversität'); ?> @@ -108,6 +107,32 @@ $firma->getFirmen('Partneruniversität'); +loadAddons(); +foreach($addon_obj->result as $addon) +{ + if(file_exists('../../../addons/'.$addon->kurzbz.'/cis/init.js.php')) + echo ''; +} + +// Wenn Seite fertig geladen ist Addons aufrufen +echo ' + +'; +?> - +
Administration titelpre." ".$person->vorname." ".$person->nachname." ".$person->titelpost?> - t("global/sprache")." "; - echo ''.$p->t("global/englisch").' | + echo ''.$p->t("global/englisch").' | '.$p->t("global/deutsch").'
';?>
-von = $date->formatDatum($_REQUEST['von'],'Y-m-d'); - $preincoming->bis = $date->formatDatum($_REQUEST['bis'],'Y-m-d'); - $preincoming->code = $_REQUEST['code']; + $preincoming->von = $date->formatDatum($_REQUEST['von'],'Y-m-d'); + $preincoming->bis = $date->formatDatum($_REQUEST['bis'],'Y-m-d'); + $preincoming->code = $_REQUEST['code']; if($_REQUEST['austausch_kz']== "austausch_auswahl") - $preincoming->mobilitaetsprogramm_code = ''; + $preincoming->mobilitaetsprogramm_code = ''; else - $preincoming->mobilitaetsprogramm_code = $_REQUEST['austausch_kz']; + $preincoming->mobilitaetsprogramm_code = $_REQUEST['austausch_kz']; $preincoming->updateamum = date('Y-m-d H:i:s'); if(!$preincoming->save()) - echo $preincoming->errormsg; - else - echo $p->t('global/erfolgreichgespeichert'); - } + echo $preincoming->errormsg; + else + echo $p->t('global/erfolgreichgespeichert'); + } // Ausgabe Austauschprogram Formular echo '
@@ -171,15 +196,15 @@ if($method =="austauschprogram") - @@ -209,10 +234,10 @@ if($method =="austauschprogram") - +
'.$p->t('incoming/austauschprgramwählen').'
* '.$p->t('incoming/wennVorhanden').'
-'; +'; } else if($method=="lehrveranstaltungen") { @@ -220,22 +245,22 @@ else if($method=="lehrveranstaltungen") { // speichern der LV-ID if($_GET['mode']=="add") { - $id= $_GET['id']; - + $id= $_GET['id']; + if($preincoming->addLehrveranstaltung($preincoming->preincoming_id, $_GET['id'], date('Y-m-d H:i:s'))) - echo $p->t('global/erfolgreichgespeichert'); + echo $p->t('global/erfolgreichgespeichert'); else - echo $p->t('global/fehleraufgetreten'); + echo $p->t('global/fehleraufgetreten'); } // löschen der LV-ID if($_GET['mode'] == "delete") { - $id= $_GET['id']; - + $id= $_GET['id']; + if($preincoming->deleteLehrveranstaltung($preincoming->preincoming_id, $_GET['id'])) - echo $p->t('global/erfolgreichgelöscht'); + echo $p->t('global/erfolgreichgelöscht'); else - echo $p->t('global/fehleraufgetreten'); + echo $p->t('global/fehleraufgetreten'); } } if(isset($_GET['mode']) && $_GET['mode'] == "thesis") @@ -285,7 +310,7 @@ else if($method=="lehrveranstaltungen") if($_GET['type']=='deutschkurs2') $preincoming->deutschkurs2=false; if($_GET['type']=='deutschkurs3') - $preincoming->deutschkurs3=false; + $preincoming->deutschkurs3=false; if(!$preincoming->save(false)) echo $preincoming->errormsg; } @@ -295,7 +320,7 @@ else if($method=="lehrveranstaltungen") { if($_GET['view']=="own") { - $lvs = $preincoming->getLehrveranstaltungen($preincoming->preincoming_id); + $lvs = $preincoming->getLehrveranstaltungen($preincoming->preincoming_id); echo '


@@ -305,8 +330,8 @@ else if($method=="lehrveranstaltungen") -
 
'; - + '; + /* Wird laut Telefonat mit Giedre Jukneviciute am 14.10.2015 derzeit nicht benötigt und soll daher ausgeblendet werden. if($preincoming->deutschkurs1 || $preincoming->deutschkurs2 || $preincoming->deutschkurs3) { @@ -328,7 +353,7 @@ else if($method=="lehrveranstaltungen") echo ''.$p->t('incoming/deutschkurs3').''; echo ''; } - + //Deutschkurs1 if($preincoming->deutschkurs1) { @@ -348,8 +373,8 @@ else if($method=="lehrveranstaltungen") echo '

'; }*/ - - + + echo ' @@ -366,17 +391,18 @@ else if($method=="lehrveranstaltungen") '; foreach($lvs as $lv) { - $lehrveranstaltung = new lehrveranstaltung(); - $lehrveranstaltung->load($lv); - $studiengang = new studiengang(); + $lehrveranstaltung = new lehrveranstaltung(); + $lehrveranstaltung->load($lv); + $studiengang = new studiengang(); $studiengang->load($lehrveranstaltung->studiengang_kz); - $studiengang_language = ($sprache == 'German') ? $studiengang->bezeichnung : $studiengang->english; - $typ = $studiengang->typ; + $studiengang_language = ($sprache == 'German') ? $studiengang->bezeichnung : $studiengang->english; + $typ = $studiengang->typ; if ($studiengang->typ == 'b') $typ = 'BA'; else if ($studiengang->typ == 'm') - $typ = 'MA'; + $typ = 'MA'; echo ''; + echo ''; echo ''; echo ''; echo ''; @@ -392,9 +418,9 @@ else if($method=="lehrveranstaltungen") } } // Übersicht aller LVs - else + else { - echo '


+ echo '


'.$lehrveranstaltung->lehrveranstaltung_id.' '.$p->t('global/löschen').'',$studiengang_language,'',$typ,'
@@ -403,7 +429,7 @@ else if($method=="lehrveranstaltungen")


'; - + /* Wird laut Telefonat mit Giedre Jukneviciute am 14.10.2015 derzeit nicht benötigt und soll daher ausgeblendet werden. //Uebersicht Deutschkurse echo ' @@ -439,11 +465,11 @@ else if($method=="lehrveranstaltungen") echo ''; echo ''; - - + + echo '
'.$p->t('incoming/deutschkurs2').'


';*/ - - + + /*echo ' @@ -481,7 +507,7 @@ else if($method=="lehrveranstaltungen")


';*/ - + echo '
@@ -493,19 +519,19 @@ else if($method=="lehrveranstaltungen")
'.$p->t('incoming/filter').': - '; - + // Vorauswahl der Übergebenen Filter $WSemesterSelected = ''; $SSemesterSelected = ''; - + if(isset($_GET['filter'])) if($_GET['filter'] == 'WSemester') $WSemesterSelected ='selected'; elseif($_GET['filter']=='SSemester') $SSemesterSelected='selected'; - + echo ''; echo ''; @@ -513,46 +539,46 @@ else if($method=="lehrveranstaltungen") echo'
'; echo $p->t('courseInformation/unterrichtssprache').':
'; echo $p->t('global/studiengang').':'; echo '
- + - + +


'; - + // Filter für Semester setzen $filterqry = ''; - + if(isset($_GET['filter'])) if($_GET['filter'] == "WSemester") $filterqry= " AND tbl_lehrveranstaltung.semester IN (1,3,5)"; elseif($_GET['filter'] == "SSemester") $filterqry= " AND tbl_lehrveranstaltung.semester IN (2,4,6)"; - + if(isset($_GET['unterrichtssprache']) && $_GET['unterrichtssprache']!='') $filterqry .= " AND tbl_lehrveranstaltung.sprache='".$_GET['unterrichtssprache']."'"; - + //Uebersicht LVs - $qry = "SELECT - tbl_lehrveranstaltung.lehrveranstaltung_id, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.ects, + $qry = "SELECT + tbl_lehrveranstaltung.lehrveranstaltung_id, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.ects, tbl_lehrveranstaltung.bezeichnung, tbl_lehrveranstaltung.semester, tbl_lehrveranstaltung.sprache, tbl_lehrveranstaltung.bezeichnung_english, tbl_lehrveranstaltung.incoming, tbl_lehrveranstaltung.orgform_kurzbz, ( - Select count(*) + Select count(*) FROM ( SELECT person_id - FROM - campus.vw_student_lehrveranstaltung + FROM + campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer using(uid) - JOIN public.tbl_student ON(uid=student_uid) + JOIN public.tbl_student ON(uid=student_uid) JOIN public.tbl_prestudentstatus USING(prestudent_id) WHERE - lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id + lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id + AND + lehreinheit_id in (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit + WHERE lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND - lehreinheit_id in (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit - WHERE lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id - AND tbl_lehreinheit.studiensemester_kurzbz='$stsem->studiensemester_kurzbz') AND tbl_prestudentstatus.status_kurzbz='Incoming' AND tbl_prestudentstatus.studiensemester_kurzbz='$stsem->studiensemester_kurzbz' UNION - SELECT - person_id - FROM - public.tbl_preincoming_lehrveranstaltung - JOIN public.tbl_preincoming using(preincoming_id) - WHERE lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id - AND - (von is null OR von <= '$stsem->start') - AND - (bis is null OR bis >= (DATE '$stsem->ende')) - AND aktiv = true + SELECT + person_id + FROM + public.tbl_preincoming_lehrveranstaltung + JOIN public.tbl_preincoming using(preincoming_id) + WHERE lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id + AND + (von is null OR von <= '$stsem->start') + AND + (bis is null OR bis >= (DATE '$stsem->ende')) + AND aktiv = true )a ) as anzahl - FROM + FROM lehre.tbl_lehrveranstaltung JOIN public.tbl_studiengang USING(studiengang_kz) - WHERE - tbl_lehrveranstaltung.incoming>0 AND - tbl_lehrveranstaltung.aktiv AND + WHERE + tbl_lehrveranstaltung.incoming>0 AND + tbl_lehrveranstaltung.aktiv AND tbl_lehrveranstaltung.lehre - AND tbl_lehrveranstaltung.studiengang_kz>0 AND tbl_lehrveranstaltung.studiengang_kz<10000"; - + AND ((tbl_lehrveranstaltung.studiengang_kz>0 AND tbl_lehrveranstaltung.studiengang_kz<10000) OR tbl_lehrveranstaltung.studiengang_kz=10006)"; + if (isset($_GET['studiengang']) && $_GET['studiengang'] !='') $qry .= "AND tbl_lehrveranstaltung.studiengang_kz=".$_GET['studiengang']; - + $qry .= "AND tbl_studiengang.aktiv ".$filterqry." order by studiengang_kz "; @@ -655,15 +681,16 @@ else if($method=="lehrveranstaltungen") $freieplaetze = $row->incoming - $row->anzahl; if($freieplaetze>0) { - $studiengang = new studiengang(); + $studiengang = new studiengang(); $studiengang->load($row->studiengang_kz); - $studiengang_language = ($sprache == 'German') ? $studiengang->bezeichnung : $studiengang->english; - $typ = $studiengang->typ; + $studiengang_language = ($sprache == 'German') ? $studiengang->bezeichnung : $studiengang->english; + $typ = $studiengang->typ; if ($studiengang->typ == 'b') $typ = 'BA'; else if ($studiengang->typ == 'm') - $typ = 'MA'; + $typ = 'MA'; echo ''; + echo ''.$row->lehrveranstaltung_id.''; if(!$preincoming->checkLehrveranstaltung($preincoming->preincoming_id, $row->lehrveranstaltung_id)) echo ''.$p->t('global/anmelden').''; else @@ -689,117 +716,117 @@ else if($method=="lehrveranstaltungen") } } else if ($method == "university") -{ +{ // Wenn Coordinatoren gespeichert sind, gleich laden - $depCoordinator = new person(); + $depCoordinator = new person(); if($preincoming->person_id_coordinator_dep != "") - $depCoordinator->load($preincoming->person_id_coordinator_dep); + $depCoordinator->load($preincoming->person_id_coordinator_dep); - $intCoordinator = new person(); + $intCoordinator = new person(); if($preincoming->person_id_coordinator_int != "") - $intCoordinator->load($preincoming->person_id_coordinator_int); - + $intCoordinator->load($preincoming->person_id_coordinator_int); + // Speichern des Formulares if(isset($_POST['submit_program'])) { if(isset($_REQUEST['universitaet'])) { // Textfeld speichern - $preincoming->universitaet = $_REQUEST['universitaet']; + $preincoming->universitaet = $_REQUEST['universitaet']; $preincoming->updateamum = date('Y-m-d H:i:s'); } if($_REQUEST['firma'] != 'firma_auswahl') { // Firma aus DropDownliste speichern - $preincoming->firma_id = $_REQUEST['firma']; + $preincoming->firma_id = $_REQUEST['firma']; $preincoming->updateamum = date('Y-m-d H:i:s'); } else { // Firma aus DropDownliste löschen - $preincoming->firma_id = ""; + $preincoming->firma_id = ""; $preincoming->updateamum = date('Y-m-d H:i:s'); } - - $preincoming->program_name = $_REQUEST['name_of_program']; - $preincoming->jahre = $_REQUEST['jahre']; + + $preincoming->program_name = $_REQUEST['name_of_program']; + $preincoming->jahre = $_REQUEST['jahre']; if(isset($_REQUEST['bachelor'])) - $preincoming->bachelor = true; + $preincoming->bachelor = true; else - $preincoming->bachelor = false; + $preincoming->bachelor = false; if(isset($_REQUEST['master'])) - $preincoming->master = true; + $preincoming->master = true; else - $preincoming->master = false; - + $preincoming->master = false; + if(!$preincoming->save()) - echo $preincoming->errormsg; - + echo $preincoming->errormsg; + // Department Coordinator bearbeiten if($_REQUEST['dep_coordinator_id'] == "" && $_REQUEST['nachname_coordinator'] != "") { // Department Coordinator Person neu anlegen - $depCoordinator->vorname = $_REQUEST['vorname_coordinator']; - $depCoordinator->nachname = $_REQUEST['nachname_coordinator']; - $depCoordinator->geschlecht = "u"; - $depCoordinator->new = true; - $depCoordinator->aktiv = true; + $depCoordinator->vorname = $_REQUEST['vorname_coordinator']; + $depCoordinator->nachname = $_REQUEST['nachname_coordinator']; + $depCoordinator->geschlecht = "u"; + $depCoordinator->new = true; + $depCoordinator->aktiv = true; $depCoordinator->updateamum = date('Y-m-d H:i:s'); $depCoordinator->insertamum = date('Y-m-d H:i:s'); - + if(!$depCoordinator->save()) { - echo $depCoordinator->errormsg; + echo $depCoordinator->errormsg; die($p->t('global/fehleraufgetreten')); } - + // in preincoming speichern - $preincoming->person_id_coordinator_dep = $depCoordinator->person_id; + $preincoming->person_id_coordinator_dep = $depCoordinator->person_id; $preincoming->updateamum = date('Y-m-d H:i:s'); - $preincoming->save(); + $preincoming->save(); } else if ($_REQUEST['dep_coordinator_id'] != "" && $_REQUEST['nachname_coordinator'] == "" && $_REQUEST['vorname_coordinator'] == "") { // löscht die Department Coordinator Person $preincoming->person_id_coordinator_dep = ""; if(!$preincoming->save()) - die($preincoming->errormsg); - + die($preincoming->errormsg); + if(!$depCoordinator->delete($_REQUEST['dep_coordinator_id'])) { - echo $depCoordinator->errormsg; + echo $depCoordinator->errormsg; die($p->t('global/fehleraufgetreten')); - } + } } else if($_REQUEST['dep_coordinator_id'] != "") { // Department Coordinator Person updaten - $depCoordinator->load($_REQUEST['dep_coordinator_id']); - $depCoordinator->vorname = $_REQUEST['vorname_coordinator']; - $depCoordinator->nachname = $_REQUEST['nachname_coordinator']; + $depCoordinator->load($_REQUEST['dep_coordinator_id']); + $depCoordinator->vorname = $_REQUEST['vorname_coordinator']; + $depCoordinator->nachname = $_REQUEST['nachname_coordinator']; $depCoordinator->updateamum = date('Y-m-d H:i:s'); - $depCoordinator->new = false; + $depCoordinator->new = false; if(!$depCoordinator->save()) { - echo $depCoordinator->errormsg; - die($p->t('global/fehleraufgetreten')); - } + echo $depCoordinator->errormsg; + die($p->t('global/fehleraufgetreten')); + } } // Department Coordinator Kontakt - $kontakt = new kontakt(); - // wenn textbox != "" hidden_id == "" + $kontakt = new kontakt(); + // wenn textbox != "" hidden_id == "" if($_REQUEST['email_coordinator'] != "" && $_REQUEST['dep_coordinator_emailId']== "") { { // Email-Kontakt neu anlegen - $kontakt->person_id = $depCoordinator->person_id; - $kontakt->kontakttyp = "email"; - $kontakt->kontakt = $_REQUEST['email_coordinator']; - $kontakt->new = true; - + $kontakt->person_id = $depCoordinator->person_id; + $kontakt->kontakttyp = "email"; + $kontakt->kontakt = $_REQUEST['email_coordinator']; + $kontakt->new = true; + if(!$kontakt->save()) { - echo $kontakt->errormsg; + echo $kontakt->errormsg; die($p->t('global/fehleraufgetreten')); } } @@ -809,21 +836,21 @@ else if ($method == "university") // lösche Email-Kontakt if(!$kontakt->delete($_REQUEST['dep_coordinator_emailId'])) { - die($kontakt->errormsg); + die($kontakt->errormsg); } } else if($_REQUEST['dep_coordinator_emailId']!= "") { // Update Email-Kontakt - $kontakt->person_id = $depCoordinator->person_id; - $kontakt->kontakttyp = "email"; - $kontakt->kontakt = $_REQUEST['email_coordinator']; - $kontakt->kontakt_id = $_REQUEST['dep_coordinator_emailId']; - $kontakt->new = false; - + $kontakt->person_id = $depCoordinator->person_id; + $kontakt->kontakttyp = "email"; + $kontakt->kontakt = $_REQUEST['email_coordinator']; + $kontakt->kontakt_id = $_REQUEST['dep_coordinator_emailId']; + $kontakt->new = false; + if(!$kontakt->save()) { - echo $kontakt->errormsg; + echo $kontakt->errormsg; die($p->t('global/fehleraufgetreten')); } } @@ -831,51 +858,51 @@ else if ($method == "university") if($_REQUEST['fax_coordinator'] != "" && $_REQUEST['dep_coordinator_faxId']== "") { // Neu anlegen - $kontakt->person_id = $depCoordinator->person_id; - $kontakt->kontakttyp = "fax"; - $kontakt->kontakt = $_REQUEST['fax_coordinator']; - $kontakt->new = true; - + $kontakt->person_id = $depCoordinator->person_id; + $kontakt->kontakttyp = "fax"; + $kontakt->kontakt = $_REQUEST['fax_coordinator']; + $kontakt->new = true; + if(!$kontakt->save()) { - echo $kontakt->errormsg; + echo $kontakt->errormsg; die($p->t('global/fehleraufgetreten')); } } - // wenn id vorhanden und Textbox == "" löschen + // wenn id vorhanden und Textbox == "" löschen else if(($_REQUEST['fax_coordinator'] == "" && $_REQUEST['dep_coordinator_faxId']!= "")) { // lösche Kontakt if(!$kontakt->delete($_REQUEST['dep_coordinator_faxId'])) - die("$kontakt->errormsg"); + die("$kontakt->errormsg"); } else if($_REQUEST['dep_coordinator_faxId']!= "") { // Update - $kontakt->person_id = $depCoordinator->person_id; - $kontakt->kontakttyp = "fax"; - $kontakt->kontakt = $_REQUEST['fax_coordinator']; - $kontakt->kontakt_id = $_REQUEST['dep_coordinator_faxId']; - $kontakt->new = false; - + $kontakt->person_id = $depCoordinator->person_id; + $kontakt->kontakttyp = "fax"; + $kontakt->kontakt = $_REQUEST['fax_coordinator']; + $kontakt->kontakt_id = $_REQUEST['dep_coordinator_faxId']; + $kontakt->new = false; + if(!$kontakt->save()) { - echo $kontakt->errormsg; + echo $kontakt->errormsg; die($p->t('global/fehleraufgetreten')); } } - + if($_REQUEST['telefon_coordinator'] != "" && $_REQUEST['dep_coordinator_telefonId']== "") { // Neu anlegen - $kontakt->person_id = $depCoordinator->person_id; - $kontakt->kontakttyp = "telefon"; - $kontakt->kontakt = $_REQUEST['telefon_coordinator']; - $kontakt->new = true; - + $kontakt->person_id = $depCoordinator->person_id; + $kontakt->kontakttyp = "telefon"; + $kontakt->kontakt = $_REQUEST['telefon_coordinator']; + $kontakt->new = true; + if(!$kontakt->save()) { - echo $kontakt->errormsg; + echo $kontakt->errormsg; die($p->t('global/fehleraufgetreten')); } } @@ -884,85 +911,85 @@ else if ($method == "university") // lösche Kontakt if(!$kontakt->delete($_REQUEST['dep_coordinator_telefonId'])) { - die("$kontakt->errormsg"); + die("$kontakt->errormsg"); } }else if($_REQUEST['dep_coordinator_telefonId']!= "") { // Update - $kontakt->person_id = $depCoordinator->person_id; - $kontakt->kontakttyp = "telefon"; - $kontakt->kontakt = $_REQUEST['telefon_coordinator']; - $kontakt->kontakt_id = $_REQUEST['dep_coordinator_telefonId']; - $kontakt->new = false; - + $kontakt->person_id = $depCoordinator->person_id; + $kontakt->kontakttyp = "telefon"; + $kontakt->kontakt = $_REQUEST['telefon_coordinator']; + $kontakt->kontakt_id = $_REQUEST['dep_coordinator_telefonId']; + $kontakt->new = false; + if(!$kontakt->save()) { - echo $kontakt->errormsg; + echo $kontakt->errormsg; die($p->t('global/fehleraufgetreten')); } } - + // International Coordinator bearbeiten if($_REQUEST['int_coordinator_id'] == "" && $_REQUEST['nachname_intcoordinator'] != "") { // Department Coordinator Person - $intCoordinator->vorname = $_REQUEST['vorname_intcoordinator']; - $intCoordinator->nachname = $_REQUEST['nachname_intcoordinator']; - $intCoordinator->geschlecht = "u"; - $intCoordinator->new = true; - $intCoordinator->aktiv = true; - + $intCoordinator->vorname = $_REQUEST['vorname_intcoordinator']; + $intCoordinator->nachname = $_REQUEST['nachname_intcoordinator']; + $intCoordinator->geschlecht = "u"; + $intCoordinator->new = true; + $intCoordinator->aktiv = true; + if(!$intCoordinator->save()) { - echo $intCoordinator->errormsg; + echo $intCoordinator->errormsg; die($p->t('global/fehleraufgetreten')); } - + // in preincoming speichern - $preincoming->person_id_coordinator_int = $intCoordinator->person_id; - $preincoming->save(); + $preincoming->person_id_coordinator_int = $intCoordinator->person_id; + $preincoming->save(); } else if ($_REQUEST['int_coordinator_id'] != "" && $_REQUEST['nachname_intcoordinator'] == "" && $_REQUEST['vorname_intcoordinator'] == "") { // löscht die Department Coordinator Person $preincoming->person_id_coordinator_int = ""; if(!$preincoming->save()) - echo $preincoming->errormsg; + echo $preincoming->errormsg; if(!$intCoordinator->delete($_REQUEST['int_coordinator_id'])) { - echo $intCoordinator->errormsg; + echo $intCoordinator->errormsg; die($p->t('global/fehleraufgetreten')); } - + } else if($_REQUEST['int_coordinator_id'] != "") { // Person updaten - $intCoordinator->load($_REQUEST['int_coordinator_id']); - $intCoordinator->vorname = $_REQUEST['vorname_intcoordinator']; - $intCoordinator->nachname = $_REQUEST['nachname_intcoordinator']; - $intCoordinator->new = false; + $intCoordinator->load($_REQUEST['int_coordinator_id']); + $intCoordinator->vorname = $_REQUEST['vorname_intcoordinator']; + $intCoordinator->nachname = $_REQUEST['nachname_intcoordinator']; + $intCoordinator->new = false; if(!$intCoordinator->save()) { - echo $intCoordinator->errormsg; - die($p->t('global/fehleraufgetreten')); - } + echo $intCoordinator->errormsg; + die($p->t('global/fehleraufgetreten')); + } } - - $intkontakt = new kontakt(); - // wenn textbox != "" hidden_id == "" + + $intkontakt = new kontakt(); + // wenn textbox != "" hidden_id == "" if($_REQUEST['email_intcoordinator'] != "" && $_REQUEST['int_coordinator_emailId']== "") { { // Neu anlegen - $intkontakt->person_id = $intCoordinator->person_id; - $intkontakt->kontakttyp = "email"; - $intkontakt->kontakt = $_REQUEST['email_intcoordinator']; - $intkontakt->new = true; - + $intkontakt->person_id = $intCoordinator->person_id; + $intkontakt->kontakttyp = "email"; + $intkontakt->kontakt = $_REQUEST['email_intcoordinator']; + $intkontakt->new = true; + if(!$intkontakt->save()) { - echo $intkontakt->errormsg; + echo $intkontakt->errormsg; die($p->t('global/fehleraufgetreten')); } } @@ -972,37 +999,37 @@ else if ($method == "university") // lösche Kontakt if(!$intkontakt->delete($_REQUEST['int_coordinator_emailId'])) { - die("$intkontakt->errormsg"); + die("$intkontakt->errormsg"); } } else if($_REQUEST['int_coordinator_emailId']!= "") { // Update - $intkontakt->person_id = $intCoordinator->person_id; - $intkontakt->kontakttyp = "email"; - $intkontakt->kontakt = $_REQUEST['email_intcoordinator']; - $intkontakt->kontakt_id = $_REQUEST['int_coordinator_emailId']; - $intkontakt->new = false; - + $intkontakt->person_id = $intCoordinator->person_id; + $intkontakt->kontakttyp = "email"; + $intkontakt->kontakt = $_REQUEST['email_intcoordinator']; + $intkontakt->kontakt_id = $_REQUEST['int_coordinator_emailId']; + $intkontakt->new = false; + if(!$intkontakt->save()) { - echo $intkontakt->errormsg; + echo $intkontakt->errormsg; die($p->t('global/fehleraufgetreten')); } } - + if($_REQUEST['telefon_intcoordinator'] != "" && $_REQUEST['int_coordinator_telefonId']== "") { { // Neu anlegen - $intkontakt->person_id = $intCoordinator->person_id; - $intkontakt->kontakttyp = "telefon"; - $intkontakt->kontakt = $_REQUEST['telefon_intcoordinator']; - $intkontakt->new = true; - + $intkontakt->person_id = $intCoordinator->person_id; + $intkontakt->kontakttyp = "telefon"; + $intkontakt->kontakt = $_REQUEST['telefon_intcoordinator']; + $intkontakt->new = true; + if(!$intkontakt->save()) { - echo $intkontakt->errormsg; + echo $intkontakt->errormsg; die($p->t('global/fehleraufgetreten')); } } @@ -1012,37 +1039,37 @@ else if ($method == "university") // lösche Kontakt if(!$intkontakt->delete($_REQUEST['int_coordinator_telefonId'])) { - die("$intkontakt->errormsg"); + die("$intkontakt->errormsg"); } } else if($_REQUEST['int_coordinator_telefonId']!= "") { // Update - $intkontakt->person_id = $intCoordinator->person_id; - $intkontakt->kontakttyp = "telefon"; - $intkontakt->kontakt = $_REQUEST['telefon_intcoordinator']; - $intkontakt->kontakt_id = $_REQUEST['int_coordinator_telefonId']; - $intkontakt->new = false; - + $intkontakt->person_id = $intCoordinator->person_id; + $intkontakt->kontakttyp = "telefon"; + $intkontakt->kontakt = $_REQUEST['telefon_intcoordinator']; + $intkontakt->kontakt_id = $_REQUEST['int_coordinator_telefonId']; + $intkontakt->new = false; + if(!$intkontakt->save()) { - echo $intkontakt->errormsg; + echo $intkontakt->errormsg; die($p->t('global/fehleraufgetreten')); } } - + if($_REQUEST['fax_intcoordinator'] != "" && $_REQUEST['int_coordinator_faxId']== "") { { // Neu anlegen - $intkontakt->person_id = $intCoordinator->person_id; - $intkontakt->kontakttyp = "fax"; - $intkontakt->kontakt = $_REQUEST['fax_intcoordinator']; - $intkontakt->new = true; - + $intkontakt->person_id = $intCoordinator->person_id; + $intkontakt->kontakttyp = "fax"; + $intkontakt->kontakt = $_REQUEST['fax_intcoordinator']; + $intkontakt->new = true; + if(!$intkontakt->save()) { - echo $intkontakt->errormsg; + echo $intkontakt->errormsg; die($p->t('global/fehleraufgetreten')); } } @@ -1052,95 +1079,95 @@ else if ($method == "university") // lösche Kontakt if(!$intkontakt->delete($_REQUEST['int_coordinator_faxId'])) { - die("$intkontakt->errormsg"); + die("$intkontakt->errormsg"); } } else if($_REQUEST['int_coordinator_faxId']!= "") { // Update - $intkontakt->person_id = $intCoordinator->person_id; - $intkontakt->kontakttyp = "fax"; - $intkontakt->kontakt = $_REQUEST['fax_intcoordinator']; - $intkontakt->kontakt_id = $_REQUEST['int_coordinator_faxId']; - $intkontakt->new = false; - + $intkontakt->person_id = $intCoordinator->person_id; + $intkontakt->kontakttyp = "fax"; + $intkontakt->kontakt = $_REQUEST['fax_intcoordinator']; + $intkontakt->kontakt_id = $_REQUEST['int_coordinator_faxId']; + $intkontakt->new = false; + if(!$intkontakt->save()) { - echo $intkontakt->errormsg; + echo $intkontakt->errormsg; die($p->t('global/fehleraufgetreten')); } } - - echo $p->t('global/erfolgreichgespeichert'); + + echo $p->t('global/erfolgreichgespeichert'); } // Department Coordinator Kontakt - $depCoordinatorKontakt = new kontakt(); - $depCoordinatorKontakt->load_pers($preincoming->person_id_coordinator_dep); - $depTelefon = ""; - $depTelefonId = ""; - $depFax = ""; - $depFaxId = ""; - $depEmail = ""; - $depEmailId = ""; + $depCoordinatorKontakt = new kontakt(); + $depCoordinatorKontakt->load_pers($preincoming->person_id_coordinator_dep); + $depTelefon = ""; + $depTelefonId = ""; + $depFax = ""; + $depFaxId = ""; + $depEmail = ""; + $depEmailId = ""; foreach ($depCoordinatorKontakt->result as $depKontakt) { if($depKontakt->kontakttyp == "telefon") { - $depTelefon = $depKontakt->kontakt; - $depTelefonId = $depKontakt->kontakt_id; + $depTelefon = $depKontakt->kontakt; + $depTelefonId = $depKontakt->kontakt_id; } if($depKontakt->kontakttyp == "fax") { - $depFax = $depKontakt->kontakt; - $depFaxId = $depKontakt->kontakt_id; + $depFax = $depKontakt->kontakt; + $depFaxId = $depKontakt->kontakt_id; } if($depKontakt->kontakttyp == "email") { - $depEmail = $depKontakt->kontakt; - $depEmailId = $depKontakt->kontakt_id; + $depEmail = $depKontakt->kontakt; + $depEmailId = $depKontakt->kontakt_id; } } - + // International Coordinator Kontakt - $intCoordinatorKontakt = new kontakt(); - $intCoordinatorKontakt->load_pers($intCoordinator->person_id); - $intTelefon = ""; - $intTelefonId = ""; - $intFax = ""; - $intFaxId = ""; - $intEmail = ""; - $intEmailId = ""; + $intCoordinatorKontakt = new kontakt(); + $intCoordinatorKontakt->load_pers($intCoordinator->person_id); + $intTelefon = ""; + $intTelefonId = ""; + $intFax = ""; + $intFaxId = ""; + $intEmail = ""; + $intEmailId = ""; foreach ($intCoordinatorKontakt->result as $intKontakt) { if($intKontakt->kontakttyp == "telefon") { - $intTelefon = $intKontakt->kontakt; - $intTelefonId = $intKontakt->kontakt_id; + $intTelefon = $intKontakt->kontakt; + $intTelefonId = $intKontakt->kontakt_id; } if($intKontakt->kontakttyp == "fax") { - $intFax = $intKontakt->kontakt; - $intFaxId = $intKontakt->kontakt_id; + $intFax = $intKontakt->kontakt; + $intFaxId = $intKontakt->kontakt_id; } if($intKontakt->kontakttyp == "email") { - $intEmail = $intKontakt->kontakt; - $intEmailId = $intKontakt->kontakt_id; + $intEmail = $intKontakt->kontakt; + $intEmailId = $intKontakt->kontakt_id; } } // Wenn die Person gerade gelöscht wurde zeige sie nicht mehr an if($preincoming->person_id_coordinator_dep == "") { - $depCoordinator->vorname = ""; + $depCoordinator->vorname = ""; $depCoordinator->nachname =""; - } + } if($preincoming->person_id_coordinator_int == "") { - $intCoordinator->vorname = ""; + $intCoordinator->vorname = ""; $intCoordinator->nachname = ""; - } + } echo '
@@ -1150,17 +1177,17 @@ else if ($method == "university") - - + @@ -1171,16 +1198,16 @@ echo ' '; - $checked = ''; + $checked = ''; if($preincoming->bachelor == true) - $checked = 'checked'; + $checked = 'checked'; echo ' '; - $checked = ''; + $checked = ''; if($preincoming->master == true) - $checked = 'checked'; + $checked = 'checked'; echo' @@ -1188,11 +1215,11 @@ echo' - + - - + + @@ -1224,7 +1251,7 @@ echo' + @@ -1249,89 +1276,89 @@ echo'
'.$p->t('incoming/heimatuniversitaet').'
'.$p->t('incoming/universitätsname').'
'.$p->t('incoming/universitätsnameerweitert').'
'.$p->t('incoming/bachelorstudiengang').'
'.$p->t('incoming/masterstudiengang').'
'.$p->t('incoming/masterstudiengang').' '.$p->t('incoming/jahrestudiert').'
   
Department Coordinator International Coordinator
'.$p->t('incoming/masterstudiengang').' '.$p->t('global/fax').' -
E-Mail '.$p->t('incoming/masterstudiengang').'
- + '; } // Benutzerprofil bearbeiten else if ($method == "profil") -{ +{ // Profil speichern if(isset($_POST['submit_profil'])) { - $save = true; - $emergencyPerson = new person(); - + $save = true; + $emergencyPerson = new person(); + if($_REQUEST['emergency_name_id'] == "" && $_REQUEST['emergency_nachname'] != "") { // Emergency Person - $emergencyPerson->vorname = $_REQUEST['emergency_vorname']; - $emergencyPerson->nachname = $_REQUEST['emergency_nachname']; - $emergencyPerson->geschlecht = "u"; - $emergencyPerson->new = true; - $emergencyPerson->aktiv = true; + $emergencyPerson->vorname = $_REQUEST['emergency_vorname']; + $emergencyPerson->nachname = $_REQUEST['emergency_nachname']; + $emergencyPerson->geschlecht = "u"; + $emergencyPerson->new = true; + $emergencyPerson->aktiv = true; $emergencyPerson->updateamum = date('Y-m-d H:i:s'); $emergencyPerson->insertamum = date('Y-m-d H:i:s'); - + if(!$emergencyPerson->save()) { - echo $emergencyPerson->errormsg; - die($p->t('global/fehleraufgetreten')); + echo $emergencyPerson->errormsg; + die($p->t('global/fehleraufgetreten')); } - + // in preincoming speichern - $preincoming->person_id_emergency = $emergencyPerson->person_id; - $preincoming->updateamum = date('Y-m-d H:i:s'); + $preincoming->person_id_emergency = $emergencyPerson->person_id; + $preincoming->updateamum = date('Y-m-d H:i:s'); } else if ($_REQUEST['emergency_name_id'] != "" && $_REQUEST['emergency_nachname'] == "" && $_REQUEST['emergency_vorname'] == "") { // löscht die Person - $preincoming->person_id_emergency = ""; + $preincoming->person_id_emergency = ""; if(!$preincoming->save()) - die($p->t('global/fehleraufgetreten')); - + die($p->t('global/fehleraufgetreten')); + if(!$emergencyPerson->delete($_REQUEST['emergency_name_id'])) { - echo $emergencyPerson->errormsg; - die($p->t('global/fehleraufgetreten')); + echo $emergencyPerson->errormsg; + die($p->t('global/fehleraufgetreten')); } } else if($_REQUEST['emergency_name_id'] != "") { // Person updaten - $emergencyPerson->load($_REQUEST['emergency_name_id']); - $emergencyPerson->vorname = $_REQUEST['emergency_vorname']; - $emergencyPerson->nachname = $_REQUEST['emergency_nachname']; + $emergencyPerson->load($_REQUEST['emergency_name_id']); + $emergencyPerson->vorname = $_REQUEST['emergency_vorname']; + $emergencyPerson->nachname = $_REQUEST['emergency_nachname']; $emergencyPerson->updateamum = date('Y-m-d H:i:s'); - $emergencyPerson->new = false; + $emergencyPerson->new = false; if(!$emergencyPerson->save()) { - echo $emergencyPerson->errormsg; - die($p->t('global/fehleraufgetreten')); - } + echo $emergencyPerson->errormsg; + die($p->t('global/fehleraufgetreten')); + } } - $emkontakt = new kontakt(); + $emkontakt = new kontakt(); if($_REQUEST['emergency_email'] != "" && $_REQUEST['emergency_emailId']== "") { { // Neu anlegen - $emkontakt->person_id = $emergencyPerson->person_id; - $emkontakt->kontakttyp = "email"; - $emkontakt->kontakt = $_REQUEST['emergency_email']; - $emkontakt->new = true; - + $emkontakt->person_id = $emergencyPerson->person_id; + $emkontakt->kontakttyp = "email"; + $emkontakt->kontakt = $_REQUEST['emergency_email']; + $emkontakt->new = true; + if(!$emkontakt->save()) { - echo $emkontakt->errormsg; + echo $emkontakt->errormsg; die($p->t('global/fehleraufgetreten')); } } @@ -1347,31 +1374,31 @@ else if ($method == "profil") else if($_REQUEST['emergency_emailId']!= "") { // Update - $emkontakt->person_id = $_REQUEST['emergency_name_id']; - $emkontakt->kontakttyp = "email"; - $emkontakt->kontakt = $_REQUEST['emergency_email']; - $emkontakt->kontakt_id = $_REQUEST['emergency_emailId']; - $emkontakt->new = false; - + $emkontakt->person_id = $_REQUEST['emergency_name_id']; + $emkontakt->kontakttyp = "email"; + $emkontakt->kontakt = $_REQUEST['emergency_email']; + $emkontakt->kontakt_id = $_REQUEST['emergency_emailId']; + $emkontakt->new = false; + if(!$emkontakt->save()) { - echo $emkontakt->errormsg; + echo $emkontakt->errormsg; die($p->t('global/fehleraufgetreten')); } } - + if($_REQUEST['emergency_telefon'] != "" && $_REQUEST['emergency_telefonId']== "") { { // Neu anlegen - $emkontakt->person_id = $emergencyPerson->person_id; - $emkontakt->kontakttyp = "telefon"; - $emkontakt->kontakt = $_REQUEST['emergency_telefon']; - $emkontakt->new = true; - + $emkontakt->person_id = $emergencyPerson->person_id; + $emkontakt->kontakttyp = "telefon"; + $emkontakt->kontakt = $_REQUEST['emergency_telefon']; + $emkontakt->new = true; + if(!$emkontakt->save()) { - echo $emkontakt->errormsg; + echo $emkontakt->errormsg; die($p->t('global/fehleraufgetreten')); } } @@ -1381,105 +1408,105 @@ else if ($method == "profil") // lösche Kontakt if(!$emkontakt->delete($_REQUEST['emergency_telefonId'])) { - die("$emkontakt->errormsg"); + die("$emkontakt->errormsg"); } } else if($_REQUEST['emergency_telefonId']!= "") { // Update - $emkontakt->person_id = $_REQUEST['emergency_name_id']; - $emkontakt->kontakttyp = "telefon"; - $emkontakt->kontakt = $_REQUEST['emergency_telefon']; - $emkontakt->kontakt_id = $_REQUEST['emergency_telefonId']; - $emkontakt->new = false; - + $emkontakt->person_id = $_REQUEST['emergency_name_id']; + $emkontakt->kontakttyp = "telefon"; + $emkontakt->kontakt = $_REQUEST['emergency_telefon']; + $emkontakt->kontakt_id = $_REQUEST['emergency_telefonId']; + $emkontakt->new = false; + if(!$emkontakt->save()) { - echo $emkontakt->errormsg; + echo $emkontakt->errormsg; die($p->t('global/fehleraufgetreten')); } } - - $person->titelpost = $_REQUEST['titel_post']; - $person->vorname = $_REQUEST['vorname']; - $person->nachname = $_REQUEST['nachname']; - $person->titelpre = $_REQUEST['titel_pre']; - $person->gebdatum = $date->formatDatum($_REQUEST['geb_datum'],'Y-m-d'); - $person->staatsbuergerschaft = $_REQUEST['staatsbuerger']; - $person->geschlecht = $_REQUEST['geschlecht']; - $person->aktiv = true; - $person->new = false; + + $person->titelpost = $_REQUEST['titel_post']; + $person->vorname = $_REQUEST['vorname']; + $person->nachname = $_REQUEST['nachname']; + $person->titelpre = $_REQUEST['titel_pre']; + $person->gebdatum = $date->formatDatum($_REQUEST['geb_datum'],'Y-m-d'); + $person->staatsbuergerschaft = $_REQUEST['staatsbuerger']; + $person->geschlecht = $_REQUEST['geschlecht']; + $person->aktiv = true; + $person->new = false; if(!$person->save()) { - echo $person->errormsg; - $save = false; + echo $person->errormsg; + $save = false; } - - $adresse->result[0]->strasse = $_REQUEST['strasse']; - $adresse->result[0]->plz = $_REQUEST['plz']; - $adresse->result[0]->ort = $_REQUEST['ort']; - $adresse->result[0]->nation = $_REQUEST['nation']; - $adresse->result[0]->heimatadresse = true; - $adresse->result[0]->zustelladresse = true; - $adresse->result[0]->new = false; + + $adresse->result[0]->strasse = $_REQUEST['strasse']; + $adresse->result[0]->plz = $_REQUEST['plz']; + $adresse->result[0]->ort = $_REQUEST['ort']; + $adresse->result[0]->nation = $_REQUEST['nation']; + $adresse->result[0]->heimatadresse = true; + $adresse->result[0]->zustelladresse = true; + $adresse->result[0]->new = false; if(!$adresse->result[0]->save()) { echo $adresse->errormsg; - $save = false; - } + $save = false; + } foreach($kontakt->result as $kon) { if($kon->kontakttyp=="email") { - $kon->kontakt = $_REQUEST['email']; - $kontakt->new = false; + $kon->kontakt = $_REQUEST['email']; + $kontakt->new = false; if(!$kon->save()) { - echo $p->t('global/fehleraufgetreten'); - $save = false; + echo $p->t('global/fehleraufgetreten'); + $save = false; } } } $preincoming->zgv = $_REQUEST['zgv']; - $preincoming->zgv_name = $_REQUEST['zgv_name']; - $preincoming->zgv_ort = $_REQUEST['zgv_ort']; - $preincoming->anmerkung = $_REQUEST['anmerkung']; + $preincoming->zgv_name = $_REQUEST['zgv_name']; + $preincoming->zgv_ort = $_REQUEST['zgv_ort']; + $preincoming->anmerkung = $_REQUEST['anmerkung']; $preincoming->zgv_datum = $date->formatDatum($_REQUEST['zgv_datum'],'Y-m-d'); - $preincoming->zgvmaster = $_REQUEST['zgv_master']; - $preincoming->zgvmaster_datum = $date->formatDatum($_REQUEST['zgv_master_datum'],'Y-m-d'); - $preincoming->zgvmaster_ort = $_REQUEST['zgv_master_ort']; - $preincoming->zgvmaster_name = $_REQUEST['zgv_master_name']; + $preincoming->zgvmaster = $_REQUEST['zgv_master']; + $preincoming->zgvmaster_datum = $date->formatDatum($_REQUEST['zgv_master_datum'],'Y-m-d'); + $preincoming->zgvmaster_ort = $_REQUEST['zgv_master_ort']; + $preincoming->zgvmaster_name = $_REQUEST['zgv_master_name']; if(!$preincoming->save()) - $save = false; - + $save = false; + if($save) - echo $p->t('global/erfolgreichgespeichert'); + echo $p->t('global/erfolgreichgespeichert'); } - - $personEmergency = new person(); - $personEmergencyKontakt = new kontakt(); - $emTelefon = ""; - $emTelefonId = ""; - $emEmail = ""; - $emEmailId = ""; - + + $personEmergency = new person(); + $personEmergencyKontakt = new kontakt(); + $emTelefon = ""; + $emTelefonId = ""; + $emEmail = ""; + $emEmailId = ""; + if($preincoming->person_id_emergency != "") { - $personEmergency->load($preincoming->person_id_emergency); - $personEmergencyKontakt->load_pers($preincoming->person_id_emergency); - + $personEmergency->load($preincoming->person_id_emergency); + $personEmergencyKontakt->load_pers($preincoming->person_id_emergency); + foreach ($personEmergencyKontakt->result as $emKontakt) { if($emKontakt->kontakttyp == "telefon") { - $emTelefon = $emKontakt->kontakt; - $emTelefonId = $emKontakt->kontakt_id; + $emTelefon = $emKontakt->kontakt; + $emTelefonId = $emKontakt->kontakt_id; } if($emKontakt->kontakttyp == "email") { - $emEmail = $emKontakt->kontakt; - $emEmailId = $emKontakt->kontakt_id; + $emEmail = $emKontakt->kontakt; + $emEmailId = $emKontakt->kontakt_id; } } } @@ -1492,9 +1519,9 @@ else if ($method == "profil") '.$preincoming->person_id.''; - + echo "".$p->t('profil/bildHochladen')." "; - + echo ' '.$p->t('incoming/zugangsvoraussetzung').'¹ @@ -1525,13 +1552,13 @@ else if ($method == "profil") '.$p->t('incoming/zugangsvoraussetzungmaster').' - + '.$p->t('global/vorname').' '.$p->t('incoming/abgelegtin').' - + '.$p->t('global/nachname').' @@ -1543,13 +1570,13 @@ else if ($method == "profil") '.$p->t('incoming/abgelegtam').' - + '.$p->t('global/geburtsdatum').' (dd.mm.yyyy)   - + '.$p->t('global/staatsbuergerschaft').' + +echo' '.$p->t('incoming/personimernstfall').': - + '.$p->t('global/geschlecht').''; if($person->geschlecht == "m") @@ -1576,22 +1603,22 @@ echo' '.$p->t('global/mann').' '.$p->t('global/frau').' '; - else + else echo ' '.$p->t('global/mann').' '.$p->t('global/frau').' '; - + echo ''.$p->t('global/vorname').' - + '.$p->t('global/nachname').' - + '.$p->t('global/strasse').' @@ -1605,7 +1632,7 @@ echo' Email - + '.$p->t('global/ort').' @@ -1618,18 +1645,18 @@ echo' { $selected=""; if($adresse->result[0]->nation == $nat->code) - $selected = "selected"; + $selected = "selected"; if($sprache == 'English') echo '\n"; else echo '\n"; - } - echo ' + } + echo ' '.$p->t('global/anmerkung').' - E-Mail'; + E-Mail'; $email =''; foreach($kontakt->result as $kon) { @@ -1652,7 +1679,7 @@ echo' - + @@ -1672,40 +1699,40 @@ echo' - + '; } else if($method == 'files') { - $akte = new akte(); - + $akte = new akte(); + if(isset($_GET['id'])) { if($_GET['mode']=="delete") @@ -1717,19 +1744,19 @@ else if($method == 'files') } } echo ' -


+ +


',$p->t('incoming/fileupload'),'


'; - - $akte->getAkten($person->person_id); - + + $akte->getAkten($person->person_id); + if(count($akte->result)>0) { echo ' @@ -1737,34 +1764,34 @@ else if($method == 'files') - '; + '; foreach ($akte->result as $ak) - { + { echo ''; } - echo '
'.$p->t('incoming/name').' '.$p->t('global/bezeichnung').'
'.$ak->titel.' '.$ak->bezeichnung.'
'; + echo ''; } } // Ausgabe Menü -else +else { echo '



- + - - + + @@ -1783,9 +1810,9 @@ else
1. '.$p->t('incoming/persönlichedateneditieren').'
2. '.$p->t("incoming/eigeneuniversitaet").'
3. '.$p->t('incoming/austauschprogram').'
3. '.$p->t('incoming/austauschprogram').'
4. '.$p->t('incoming/lehrveranstaltungenauswählen').'
Logout
'; - + echo ''; } @@ -188,101 +206,109 @@ echo' '; if(isset($_REQUEST['submit'])) -{ - $person = new person(); +{ + $securimage = new Securimage(); + // Sicherheitscode wurde falsch eingegeben + if ($securimage->check($_POST['captcha_code']) == false) + { + echo '

'.$p->t('bewerbung/sicherheitscodeFalsch').'

'; + exit; + } + + $person = new person(); $adresse = new adresse(); $kontakt = new kontakt(); - $preincoming = new preincoming(); - + $preincoming = new preincoming(); + $titel_pre = $_REQUEST['titel_pre']; - $vorname = $_REQUEST['vorname']; - $nachname =$_REQUEST['nachname']; + $vorname = $_REQUEST['vorname']; + $nachname =$_REQUEST['nachname']; $titel_post = $_REQUEST['titel_post']; - $geb_datum = $date->formatDatum($_REQUEST['geb_datum'], 'Y-m-d'); - $staatsbuerger = $_REQUEST['staatsbuerger']; - $geschlecht = $_REQUEST['geschlecht']; - $strasse = $_REQUEST['strasse']; - $plz = $_REQUEST['plz']; - $ort = $_REQUEST['ort']; - $nation_code = $_REQUEST['nation']; - $email = $_REQUEST['email']; - $anmerkung = $_REQUEST['anmerkung']; - $zugangscode = uniqid(); - - $person->staatsbuergerschaft = $staatsbuerger; - $person->titelpost = $titel_post; - $person->titelpre = $titel_pre; - $person->nachname = $nachname; - $person->vorname = $vorname; - $person->gebdatum = $geb_datum; - $person->geschlecht = $geschlecht; - $person->aktiv = true; - $person->zugangscode = $zugangscode; - $person->new = true; - + $geb_datum = $date->formatDatum($_REQUEST['geb_datum'], 'Y-m-d'); + $staatsbuerger = $_REQUEST['staatsbuerger']; + $geschlecht = $_REQUEST['geschlecht']; + $strasse = $_REQUEST['strasse']; + $plz = $_REQUEST['plz']; + $ort = $_REQUEST['ort']; + $nation_code = $_REQUEST['nation']; + $email = $_REQUEST['email']; + $anmerkung = $_REQUEST['anmerkung']; + $zugangscode = substr(md5(openssl_random_pseudo_bytes(20)), 0, 15); + + $person->staatsbuergerschaft = $staatsbuerger; + $person->titelpost = $titel_post; + $person->titelpre = $titel_pre; + $person->nachname = $nachname; + $person->vorname = $vorname; + $person->gebdatum = $geb_datum; + $person->geschlecht = $geschlecht; + $person->aktiv = true; + $person->zugangscode = $zugangscode; + $person->new = true; + if(!$person->save()) - die('Fehler beim Anlegen der Person aufgetreten.'); - - $adresse->person_id = $person->person_id; - $adresse->strasse = $strasse; - $adresse->plz = $plz; - $adresse->ort = $ort; - $adresse->nation = $nation_code; + die('Fehler beim Anlegen der Person aufgetreten.'); + + $adresse->person_id = $person->person_id; + $adresse->strasse = $strasse; + $adresse->plz = $plz; + $adresse->ort = $ort; + $adresse->nation = $nation_code; $adresse->typ = 'h'; - $adresse->heimatadresse = true; - $adresse->zustelladresse = true; - $adresse->new = true; + $adresse->heimatadresse = true; + $adresse->zustelladresse = true; + $adresse->new = true; if(!$adresse->save()) - die($p->t('incoming/fehlerAdresse')); + die($p->t('incoming/fehlerAdresse')); + + $kontakt->person_id = $person->person_id; + $kontakt->kontakttyp = "email"; + $kontakt->kontakt = $email; + $kontakt->new = true; - $kontakt->person_id = $person->person_id; - $kontakt->kontakttyp = "email"; - $kontakt->kontakt = $email; - $kontakt->new = true; - if(!$kontakt->save()) die($p->t('incoming/fehlerKontakt')); - $preincoming->person_id = $person->person_id; - $preincoming->anmerkung = $anmerkung; - $preincoming->zweck_code = 1; - $preincoming->aktiv = true; - $preincoming->bachelorthesis = false; - $preincoming->masterthesis = false; - $preincoming->uebernommen = false; - $preincoming->new = true; + $preincoming->person_id = $person->person_id; + $preincoming->anmerkung = $anmerkung; + $preincoming->zweck_code = 1; + $preincoming->aktiv = true; + $preincoming->bachelorthesis = false; + $preincoming->masterthesis = false; + $preincoming->uebernommen = false; + $preincoming->new = true; $preincoming->insertamum = date('Y-m-d H:i:s'); $preincoming->updateamum = date('Y-m-d H:i:s'); if(!$preincoming->save()) { - echo $preincoming->errormsg; - die($p->t('incoming/fehlerIncoming')); - } - echo sendMail($zugangscode, $email); + echo $preincoming->errormsg; + die($p->t('incoming/fehlerIncoming')); + } + echo sendMail($zugangscode, $email); } function sendMail($zugangscode, $email) { - global $p, $vorname, $nachname; - - $emailtext= $p->t('incoming/registrationEmail', array($zugangscode)); + global $p, $vorname, $nachname; + + $emailtext= $p->t('mail/incomingRegistrationEmail', array($zugangscode)); $mail = new mail($email, 'no-reply', 'Incoming-Registration', 'Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen.'); - $mail->setHTMLContent($emailtext); + $mail->setHTMLContent($emailtext); if(!$mail->send()) $msg= 'Fehler beim Senden des Mails
'; else $msg= $p->t('global/emailgesendetan')." $email!
"; - - // sende Nachricht an Assistenz - $emailtext= "Dies ist eine automatisch generierte E-Mail.

"; - $emailtext.= "Es hat sich ein neuer Incoming am Campus International registriert.

Name: ".$vorname.' '.$nachname.'
E-Mail: '.$email; - $mail = new mail(MAIL_INTERNATIONAL, 'no-reply', 'New Incoming', 'Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen.'); - $mail->setHTMLContent($emailtext); - $mail->send(); - return $msg; + // sende Nachricht an Assistenz + $emailtext= "Dies ist eine automatisch generierte E-Mail.

"; + $emailtext.= "Es hat sich ein neuer Incoming registriert.

Name: ".$vorname.' '.$nachname.'
E-Mail: '.$email; + $mail = new mail(MAIL_INTERNATIONAL, 'no-reply', 'New Incoming', 'Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Link vollständig darzustellen.'); + $mail->setHTMLContent($emailtext); + $mail->send(); + + return $msg; } ?> \ No newline at end of file diff --git a/cms/admin.php b/cms/admin.php index 6da234e0c..0ff56de25 100644 --- a/cms/admin.php +++ b/cms/admin.php @@ -42,7 +42,75 @@ $rechte->getBerechtigungen($user); if(!$rechte->isBerechtigt('basis/cms')) die($rechte->errormsg); -$berechtigte_oe = $rechte->getOEkurzbz('basis/cms') +$berechtigte_oe = $rechte->getOEkurzbz('basis/cms'); + +// Speichern eines Contents per Ajax Request , +// daher wird nach dem Speichern mittels exit beendet +if(isset($_POST['NewContent'])) +{ + if($rechte->isBerechtigt('basis/cms', null, 'sui')) + { + $templateContentId = isset($_POST['templateContent']) && $_POST['templateContent'] != 0?$_POST['templateContent']:''; + $titel = isset($_POST['titel'])?$_POST['titel']:'Neuer Eintrag'; + + if ($templateContentId != '') + { + $templateContent = new content(); + $templateContent->getContent($templateContentId); + } + + $template = new template(); + $template->getAll(); + if(!isset($template->result[0])) + exit('Es ist kein Template vorhanden'); + + if(in_array('etw',$berechtigte_oe)) + $oe = 'etw'; + else + $oe = $berechtigte_oe[0]; + + $content = new content(); + $content->new = true; + $content->oe_kurzbz= $templateContentId != ''?$templateContent->oe_kurzbz:$oe; + $content->template_kurzbz=$templateContentId != ''?$templateContent->template_kurzbz:$template->result[0]->template_kurzbz; + $content->titel = $titel; + $content->aktiv=true; + $content->menu_open=false; + $content->content = $templateContentId != ''?$templateContent->content:''; + $content->sichtbar=true; + $content->version='1'; + $content->sprache=$templateContentId != ''?$templateContent->sprache:DEFAULT_LANGUAGE; + $content->insertvon = $user; + $content->insertamum = date('Y-m-d H:i:s'); + $content->beschreibung = $templateContentId != ''?$templateContent->beschreibung:''; + + if($content->save()) + { + if($content->saveContentSprache()) + { + if ($templateContentId!='') + { + $parent_content = new content(); + $parent_content->content_id = $templateContentId; + $parent_content->child_content_id = $content->content_id; + $parent_content->insertamum = date('Y-m-d'); + $parent_content->insertvon = $user; + $parent_content->sort=$parent_content->getMaxSort($templateContentId)+1; + + if(!$parent_content->addChild()) + exit('AddChild '.$content->errormsg); + } + exit($content->content_id); + } + else + exit('ContentSpracheSave '.$content->errormsg); + } + else + exit('ContentSave '.$content->errormsg); + } + else + exit('Sie haben keine Berechtigung fuer diese Aktion'); +} ?> diff --git a/cms/dms.php b/cms/dms.php index 320f5b455..20d738dbf 100644 --- a/cms/dms.php +++ b/cms/dms.php @@ -23,10 +23,25 @@ require_once('../config/cis.config.inc.php'); require_once('../include/dms.class.php'); require_once('../include/functions.inc.php'); require_once('../include/benutzerberechtigung.class.php'); +require_once('../include/akte.class.php'); +require_once('../include/dokument.class.php'); + +session_cache_limiter('none'); //muss gesetzt werden sonst funktioniert der Download mit IE8 nicht +session_start(); if(!isset($_GET['id'])) die('ID muss uebergeben werden'); +if(isset($_SESSION['bewerbung/personId'])) + $person_id = $_SESSION['bewerbung/personId']; +else + $person_id =''; + +if(isset($_GET['akte_id'])) + $akte_id = $_GET['akte_id']; +else + $akte_id =''; + //if(!isset($_GET['version'])) // die('Version muss uebergeben werden'); @@ -45,16 +60,39 @@ if(!$doc->load($id,$version)) if($doc->isLocked($id)) { - //Dokument erfordert Authentifizierung - $user = get_uid(); - if(!$doc->isBerechtigt($id, $user)) - { - //Globales DMS recht pruefen - $rechte = new benutzerberechtigung(); - $rechte->getBerechtigungen($user); - if(!$rechte->isBerechtigt('basis/dms')) + //Wenn person_id aus Session und akte_id uebergeben wurde + //und person_id Besitzer des Dokuments ist (person_id aus tbl_akte) + //und das Dokument in der Onlinebewerbung hochgeladen werden kann + //darf das Dokument heruntergeladen werden + if($person_id!='' && $akte_id!='') + { + $akte = new akte(); + $akte->load($akte_id); + $akte_person = $akte->person_id; + $akte_dokument_kurzbz = $akte->dokument_kurzbz; + + $dokumente_person = new dokument(); + $dokumente_person->getAllDokumenteForPerson($person_id, true); + $dokumente_arr = array(); + foreach ($dokumente_person->result AS $row) + $dokumente_arr[] .= $row->dokument_kurzbz; + + if ($person_id!=$akte_person || !in_array($akte_dokument_kurzbz, $dokumente_arr)) die('Sie haben keinen Zugriff auf dieses Dokument'); } + else + { + //Dokument erfordert Authentifizierung + $user = get_uid(); + if(!$doc->isBerechtigt($id, $user)) + { + //Globales DMS recht pruefen + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($user); + if(!$rechte->isBerechtigt('basis/dms')) + die('Sie haben keinen Zugriff auf dieses Dokument'); + } + } } if(!isset($_GET['notimeupdate'])) diff --git a/cms/menu/menu_addon_lehrveranstaltungen.inc.php b/cms/menu/menu_addon_lehrveranstaltungen.inc.php index f87ca1c62..9100f6a2b 100755 --- a/cms/menu/menu_addon_lehrveranstaltungen.inc.php +++ b/cms/menu/menu_addon_lehrveranstaltungen.inc.php @@ -19,10 +19,10 @@ */ /** * Menue Addon zur Auswahl von LVs - * + * * Dieses Addon erstellt ein Formular zur Auswahl von Studiengang und Semester und zeigt die * zugehoerigen LVs an - * + * * Parameter fuer das Params Array: * - studiengang_kz * - semester @@ -44,9 +44,9 @@ class menu_addon_lehrveranstaltungen extends menu_addon global $params; parent::__construct(); - + $this->link=false; - + $sprache = getSprache(); $user = get_uid(); $student = new student(); @@ -55,17 +55,17 @@ class menu_addon_lehrveranstaltungen extends menu_addon $studiengang_kz=$student->studiengang_kz; $semester=$student->semester; } - + $p = new phrasen($sprache); - - + + $this->block.=' + + + +loadAddons(); +foreach($addon_obj->result as $addon) +{ + echo ' + + + + + + + + +
+ + diff --git a/vilesci/personen/import/interessentenimport.php b/vilesci/personen/import/interessentenimport.php index a28b303e0..e6897f8f3 100644 --- a/vilesci/personen/import/interessentenimport.php +++ b/vilesci/personen/import/interessentenimport.php @@ -16,8 +16,9 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * Authors: Christian Paminger , - * Andreas Oesterreicher and - * Rudolf Hangl . + * Andreas Oesterreicher , + * Rudolf Hangl and + * Andreas Moik . */ require_once('../../../config/vilesci.config.inc.php'); @@ -1188,19 +1189,19 @@ if($vorname!='' && $nachname!='') { if($where!='') $where.=' OR'; - $where.=" (LOWER(vorname)=LOWER('".$vorname."') AND LOWER(nachname)=LOWER('".$nachname."'))"; + $where.=" (LOWER(vorname)=LOWER(".$db->db_add_param($vorname).") AND LOWER(nachname)=LOWER(".$db->db_add_param($nachname)."))"; } elseif($nachname!='') { if($where!='') $where.=' OR'; - $where.=" LOWER(nachname)=LOWER('".$nachname."')"; + $where.=" LOWER(nachname)=LOWER(".$db->db_add_param($nachname).")"; } if($where!='') { $qry = "SELECT * FROM public.tbl_person WHERE $where ORDER BY nachname, vorname, gebdatum"; - + if($result = $db->db_query($qry)) { echo ''; diff --git a/vilesci/personen/import/mitarbeiterimport.php b/vilesci/personen/import/mitarbeiterimport.php index 19fa78da9..fda3ac0fd 100644 --- a/vilesci/personen/import/mitarbeiterimport.php +++ b/vilesci/personen/import/mitarbeiterimport.php @@ -763,7 +763,7 @@ echo ''; echo ''; echo ''; echo ''; -echo ''; +echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; + if($rechte->isBerechtigt('admin')) + echo ''; echo ''; echo ''; echo ''; diff --git a/vilesci/stammdaten/stammdaten_autocomplete.php b/vilesci/stammdaten/stammdaten_autocomplete.php index f867f9ec0..e1e93e4c7 100644 --- a/vilesci/stammdaten/stammdaten_autocomplete.php +++ b/vilesci/stammdaten/stammdaten_autocomplete.php @@ -368,6 +368,7 @@ cellSeparator (default value: "|") $item['funktion_kurzbz']=$oRresult[$i]->funktion_kurzbz?html_entity_decode($oRresult[$i]->funktion_kurzbz).' ':''; $item['aktiv']=$oRresult[$i]->aktiv==true || $oRresult[$i]->aktiv=='t'?true:false; $item['uid']=$oRresult[$i]->uid; + $item['person_id']=$oRresult[$i]->person_id; $json[]=$item; /* echo html_entity_decode($oRresult[$i]->person_id).'|' .trim($oRresult[$i]->anrede).' '.($oRresult[$i]->titelpre?html_entity_decode($oRresult[$i]->titelpre).' ':'') diff --git a/vilesci/statistik/filter_overview.php b/vilesci/statistik/filter_overview.php index 5cc37de8a..eda34f67c 100644 --- a/vilesci/statistik/filter_overview.php +++ b/vilesci/statistik/filter_overview.php @@ -38,7 +38,7 @@ if(isset($_POST['action']) && $_POST['action']=='delete' && isset($_POST['filter { $filter = new filter(); $filter->delete($_POST['filter_id']); - + } $filter = new filter(); if (!$filter->loadAll()) @@ -50,7 +50,9 @@ if (!$filter->loadAll()) - +
NachnameVornameWeitere
Vornamen
GebDatumSVNRGeschlechtAdresseStatusDetails
SVNR
SVNR
Ersatzkennzeichen
Geburtsdatum * (Format: TT.MM.JJJJ)
Adresse'; diff --git a/vilesci/personen/personen_anlegen.php b/vilesci/personen/personen_anlegen.php index d9cd87c7c..bb8df4339 100644 --- a/vilesci/personen/personen_anlegen.php +++ b/vilesci/personen/personen_anlegen.php @@ -105,7 +105,7 @@ function disablefields2(val) $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); -if(!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('mitarbeiter') && !$rechte->isBerechtigt('assistenz')) +if(!$rechte->isBerechtigt('admin') && !$rechte->isBerechtigt('mitarbeiter') && !$rechte->isBerechtigt('assistenz') && !$rechte->isBerechtigt('basis/firma')) die('Sie haben keine Berechtigung fuer diese Seite'); $where = ''; diff --git a/vilesci/stammdaten/firma_detailwork.php b/vilesci/stammdaten/firma_detailwork.php index fb5bdf635..b534622dc 100644 --- a/vilesci/stammdaten/firma_detailwork.php +++ b/vilesci/stammdaten/firma_detailwork.php @@ -1113,7 +1113,7 @@ function eingabePersonenfunktionen($firma_id,$standort_id,$personfunktionstandor }, select: function(event, ui) { - ui.item.value=ui.item.uid; + ui.item.value=ui.item.person_id; } }); }); diff --git a/vilesci/stammdaten/infoscreen_uebersicht.php b/vilesci/stammdaten/infoscreen_uebersicht.php index fcce55738..59407463f 100755 --- a/vilesci/stammdaten/infoscreen_uebersicht.php +++ b/vilesci/stammdaten/infoscreen_uebersicht.php @@ -28,7 +28,7 @@ $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); if(!$rechte->isBerechtigt('basis/infoscreen')) - die('Sie haben keine Berechtigung fuer diese Seite'); + die($rechte->errormsg); $datum_obj = new datum(); @@ -127,6 +127,26 @@ if($action=='new' || $action=='update')
'; } +if($action=='reboot') +{ + if(!$rechte->isBerechtigt('admin')) + die($rechte->errormsg); + + set_include_path ("../../vendor/FHC-vendor/phpseclib"); + require_once("Net/SSH2.php"); + + if(isset($_GET["ip"]) && $_GET["ip"]) + { + $ssh = new Net_SSH2($_GET["ip"]); + if (!$ssh->login(INFOSCREEN_USER, INFOSCREEN_PASSWORD)) + { + exit('Login Failed'); + } + echo $ssh->exec('reboot') . "
"; + } + echo ''; +} + $infoscreen = new infoscreen(); if(!$infoscreen->getAll()) @@ -151,6 +171,8 @@ foreach($infoscreen->result as $row) echo '
',$basis->convert_html_chars($row->bezeichnung),'',$basis->convert_html_chars($row->beschreibung),'',$basis->convert_html_chars($row->ipadresse),'Rebootdetailsbearbeiten