diff --git a/application/controllers/api/v1/content/Dms.php b/application/controllers/api/v1/content/Dms.php index 59864385a..dc200d690 100644 --- a/application/controllers/api/v1/content/Dms.php +++ b/application/controllers/api/v1/content/Dms.php @@ -36,6 +36,32 @@ class Dms extends APIv1_Controller $dms_id = $this->get('dms_id'); $version = $this->get('version'); + if (isset($dms_id)) + { + $result = $this->_getDms($dms_id, $version); + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval) && count($result->retval) > 0) + { + if (($fileContent = $this->_readFile($result->retval[0]->filename)) != false) + { + $result->retval[0]->file_content = $fileContent; + } + } + + $this->response($result, REST_Controller::HTTP_OK); + } + else + { + $this->response(); + } + } + + /** + * + */ + private function _getDms($dms_id, $version) + { + $result = null; + if (isset($dms_id)) { $result = $this->DmsModel->addJoin('campus.tbl_dms_version', 'dms_id'); @@ -58,6 +84,40 @@ class Dms extends APIv1_Controller } } } + } + + return $result; + } + + /** + * + */ + public function postDms() + { + if ($this->_validate($this->post())) + { + if (isset($this->post()['dms_id'])) + { + if ($this->_saveFileOnUpdate($this->post())) + { + $result = $this->DmsModel->update($this->post()['dms_id'], $this->_dmsFieldsArray($this->post())); + if ($result->error == EXIT_SUCCESS) + { + $result = $this->DmsModel->updateDmsVersion($this->post()['dms_id'], $this->_dmsVersionFieldsArray($this->post())); + } + } + } + else + { + if (($fileName = $this->_saveFileOnInsert($this->post())) !== false) + { + $result = $this->DmsModel->insert($this->_dmsFieldsArray($this->post())); + if ($result->error == EXIT_SUCCESS) + { + $result = $this->DmsModel->insertDmsVersion($this->_dmsVersionFieldsArray($this->post(), $result->retval, $fileName)); + } + } + } $this->response($result, REST_Controller::HTTP_OK); } @@ -70,39 +130,139 @@ class Dms extends APIv1_Controller /** * */ - public function postDms() + private function _dmsFieldsArray($dms) { - if ($this->_validate($this->post())) + $fieldsArray = array('oe_kurzbz', 'dokument_kurzbz', 'kategorie_kurzbz'); + $returnArray = array(); + + foreach ($fieldsArray as $value) { - if (isset($this->post()['dms_id'])) + if (isset($dms[$value])) { - $result = $this->DmsModel->update($this->post()['dms_id'], $this->post()); - - if ($result->error == EXIT_SUCCESS) - { - $result = $this->DmsModel->updateDmsVersion($this->post()['dms_id'], $this->post()); - } + $returnArray[$value] = $dms[$value]; } - else - { - $result = $this->DmsModel->insert($this->post()); - - if ($result->error == EXIT_SUCCESS) - { - $result = $this->DmsModel->insertDmsVersion($this->post()); - } - } - - $this->response($result, REST_Controller::HTTP_OK); - } - else - { - $this->response(); } + + return $returnArray; } + /** + * + */ + private function _dmsVersionFieldsArray($dms, $dms_id = null, $fileName = null) + { + $fieldsArray = array( + 'version', + 'mimetype', + 'name', + 'beschreibung', + 'letzterzugriff', + 'insertamum', + 'insertvon', + 'updateamum', + 'updatevon' + ); + $returnArray = array(); + + foreach ($fieldsArray as $value) + { + if (isset($dms[$value])) + { + $returnArray[$value] = $dms[$value]; + } + } + + if (isset($dms_id)) + { + $returnArray['dms_id'] = $dms_id; + } + if (isset($fileName)) + { + $returnArray['filename'] = $fileName; + } + + return $returnArray; + } + + /** + * + */ + private function _saveFileOnUpdate($dms) + { + $result = $this->_getDms($dms['dms_id'], $dms['version']); + if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval) && count($result->retval) > 0) + { + $fileName = DMS_PATH . $result->retval[0]->filename; + + if (($fileContent = base64_decode($dms['file_content']))) + { + if (file_put_contents($fileName, $fileContent)) + { + return true; + } + } + } + + return false; + } + + /** + * + */ + private function _saveFileOnInsert($dms) + { + $fileName = uniqid() . '.' . pathinfo($dms['name'], PATHINFO_EXTENSION); + $FileNamePath = DMS_PATH . $fileName; + + if (($fileContent = base64_decode($dms['file_content']))) + { + if ($fileHandle = fopen($FileNamePath, 'w')) + { + if(fwrite($fileHandle, $fileContent)) + { + fclose($fileHandle); + return $fileName; + } + } + } + + return false; + } + + /** + * + */ + private function _readFile($fileName) + { + $fileNamePath = DMS_PATH . $fileName; + if (file_exists($fileNamePath)) + { + if ($fileHandle = fopen($fileNamePath, 'r')) + { + $cTmpHEX = ''; + while (!feof($fileHandle)) + { + $cTmpHEX .= fread($fileHandle, 8192); + } + fclose($fileHandle); + return base64_encode($cTmpHEX); + } + } + + return false; + } + private function _validate($dms = NULL) { + if (!isset($dms['file_content']) || (isset($dms['file_content']) && $dms['file_content'] == '')) + { + return false; + } + if (!isset($dms['name']) || (isset($dms['name']) && $dms['name'] == '')) + { + return false; + } + return true; } } \ No newline at end of file diff --git a/application/controllers/api/v1/crm/Prestudent.php b/application/controllers/api/v1/crm/Prestudent.php index d334cc709..9cdf79415 100644 --- a/application/controllers/api/v1/crm/Prestudent.php +++ b/application/controllers/api/v1/crm/Prestudent.php @@ -65,6 +65,27 @@ class Prestudent extends APIv1_Controller $this->response(); } } + + /** + * @return void + */ + public function getLastStatus() + { + $prestudent_id = $this->get('prestudent_id'); + $studiensemester_kurzbz = $this->get('studiensemester_kurzbz'); + $status_kurzbz = $this->get('status_kurzbz'); + + if (isset($prestudent_id)) + { + $result = $this->PrestudentModel->getLastStatus($prestudent_id, $studiensemester_kurzbz, $status_kurzbz); + + $this->response($result, REST_Controller::HTTP_OK); + } + else + { + $this->response(); + } + } /** * @return void diff --git a/application/controllers/api/v1/organisation/Statistik.php b/application/controllers/api/v1/organisation/Statistik.php index 8d72fbadf..beeaaae22 100644 --- a/application/controllers/api/v1/organisation/Statistik.php +++ b/application/controllers/api/v1/organisation/Statistik.php @@ -46,6 +46,32 @@ class Statistik extends APIv1_Controller $this->response(); } } + + /** + * @return void + */ + public function getAll() + { + $this->StatistikModel->addOrder($this->get('order')); + + $result = $this->StatistikModel->loadWhole(); + + $this->response($result, REST_Controller::HTTP_OK); + } + + /** + * @return void + */ + public function getMenueArray() + { + $this->StatistikModel->addOrder('gruppe'); + $this->StatistikModel->addOrder('bezeichnung'); + $this->StatistikModel->addOrder('statistik_kurzbz'); + + $result = $this->StatistikModel->loadWhole(); + + $this->response($result, REST_Controller::HTTP_OK); + } /** * @return void diff --git a/application/controllers/api/v1/person/Adresse.php b/application/controllers/api/v1/person/Adresse.php index 0cc3b90ed..5da78c292 100644 --- a/application/controllers/api/v1/person/Adresse.php +++ b/application/controllers/api/v1/person/Adresse.php @@ -24,7 +24,7 @@ class Adresse extends APIv1_Controller { parent::__construct(); // Load model PersonModel - $this->load->model('person/adresse_model', 'AdresseModel'); + $this->load->model('person/Adresse_model', 'AdresseModel'); // Load set the uid of the model to let to check the permissions $this->AdresseModel->setUID($this->_getUID()); } @@ -67,4 +67,4 @@ class Adresse extends APIv1_Controller $this->response(); } } -} \ No newline at end of file +} diff --git a/application/controllers/api/v1/ressource/Ort.php b/application/controllers/api/v1/ressource/Ort.php index 022db2281..963bb716c 100644 --- a/application/controllers/api/v1/ressource/Ort.php +++ b/application/controllers/api/v1/ressource/Ort.php @@ -46,6 +46,31 @@ class Ort extends APIv1_Controller $this->response(); } } + + /** + * @return void + */ + public function getAll() + { + $raumtyp_kurzbz = $this->get('raumtyp_kurzbz'); + + $this->OrtModel->addOrder('ort_kurzbz'); + + if (!is_null($raumtyp_kurzbz) && $raumtyp_kurzbz != '') + { + $result = $this->OrtModel->addJoin('public.tbl_ortraumtyp', 'ort_kurzbz'); + if ($result->error == EXIT_SUCCESS) + { + $result = $this->OrtModel->loadWhere(array('raumtyp_kurzbz' => $raumtyp_kurzbz)); + } + } + else + { + $result = $this->OrtModel->loadWhole(); + } + + $this->response($result, REST_Controller::HTTP_OK); + } /** * @return void diff --git a/application/controllers/organisation/Studiengang2.php b/application/controllers/organisation/Studiengang2.php new file mode 100644 index 000000000..600a1d17b --- /dev/null +++ b/application/controllers/organisation/Studiengang2.php @@ -0,0 +1,167 @@ +load->model('organisation/studiengang_model'); + $this->load->library('form_validation'); + } + + public function index() + { + $keyword = ''; + $this->load->library('pagination'); + + $config['base_url'] = base_url() . 'studiengang/index/'; + $config['total_rows'] = $this->studiengang_model->total_rows(); + $config['per_page'] = 10; + $config['uri_segment'] = 3; + $config['suffix'] = '.html'; + $config['first_url'] = base_url() . 'studiengang.html'; + $this->pagination->initialize($config); + + $start = $this->uri->segment(3, 0); + $studiengang = $this->studiengang_model->index_limit($config['per_page'], $start); + + $data = array( + 'studiengang_data' => $studiengang, + 'keyword' => $keyword, + 'pagination' => $this->pagination->create_links(), + 'total_rows' => $config['total_rows'], + 'start' => $start, + ); + + $this->load->view('tbl_studiengang_list', $data); + } + + public function search() + { + $keyword = $this->uri->segment(3, $this->input->post('keyword', TRUE)); + $this->load->library('pagination'); + + if ($this->uri->segment(2)=='search') { + $config['base_url'] = base_url() . 'studiengang/search/' . $keyword; + } else { + $config['base_url'] = base_url() . 'studiengang/index/'; + } + + $config['total_rows'] = $this->studiengang_model->search_total_rows($keyword); + $config['per_page'] = 10; + $config['uri_segment'] = 4; + $config['suffix'] = '.html'; + $config['first_url'] = base_url() . 'studiengang/search/'.$keyword.'.html'; + $this->pagination->initialize($config); + + $start = $this->uri->segment(4, 0); + $studiengang = $this->studiengang_model->search_index_limit($config['per_page'], $start, $keyword); + + $data = array( + 'studiengang_data' => $studiengang, + 'keyword' => $keyword, + 'pagination' => $this->pagination->create_links(), + 'total_rows' => $config['total_rows'], + 'start' => $start, + ); + $this->load->view('tbl_studiengang_list', $data); + } + + public function read($id) + { + $row = $this->studiengang_model->get_by_id($id); + if ($row) { + $data = array( + ); + $this->load->view('tbl_studiengang_read', $data); + } else { + $this->session->set_flashdata('message', 'Record Not Found'); + redirect(site_url('studiengang')); + } + } + + public function create() + { + $data = array( + 'button' => 'Create', + 'action' => site_url('studiengang/create_action'), + ); + $this->load->view('tbl_studiengang_form', $data); + } + + public function create_action() + { + $this->_rules(); + + if ($this->form_validation->run() == FALSE) { + $this->create(); + } else { + $data = array( + ); + + $this->studiengang_model->insert($data); + $this->session->set_flashdata('message', 'Create Record Success'); + redirect(site_url('studiengang')); + } + } + + public function update($id) + { + $row = $this->studiengang_model->get_by_id($id); + + if ($row) { + $data = array( + 'button' => 'Update', + 'action' => site_url('studiengang/update_action'), + ); + $this->load->view('tbl_studiengang_form', $data); + } else { + $this->session->set_flashdata('message', 'Record Not Found'); + redirect(site_url('studiengang')); + } + } + + public function update_action() + { + $this->_rules(); + + if ($this->form_validation->run() == FALSE) { + $this->update($this->input->post('', TRUE)); + } else { + $data = array( + ); + + $this->studiengang_model->update($this->input->post('', TRUE), $data); + $this->session->set_flashdata('message', 'Update Record Success'); + redirect(site_url('studiengang')); + } + } + + public function delete($id) + { + $row = $this->studiengang_model->get_by_id($id); + + if ($row) { + $this->studiengang_model->delete($id); + $this->session->set_flashdata('message', 'Delete Record Success'); + redirect(site_url('studiengang')); + } else { + $this->session->set_flashdata('message', 'Record Not Found'); + redirect(site_url('studiengang')); + } + } + + public function _rules() + { + + $this->form_validation->set_rules('', '', 'trim'); + $this->form_validation->set_error_delimiters('', ''); + } + +}; + +/* End of file Studiengang.php */ +/* Location: ./application/controllers/Studiengang.php */ diff --git a/application/controllers/system/Message.php b/application/controllers/system/Message.php index 4bfb2af98..52986e6da 100755 --- a/application/controllers/system/Message.php +++ b/application/controllers/system/Message.php @@ -1,14 +1,15 @@ load->library('Messaging'); - $this->load->model('person/Person_model'); - $this->load->model('system/Message_model'); + $this->load->library('messaging'); + //$this->load->model('person/Person_model'); + //$this->load->model('system/Message_model'); } public function index() @@ -25,20 +26,20 @@ class Message extends FHC_Controller { $v = $this->load->view('test.php', $data); } - public function view($id) + public function view($msg_id) { - //$messages = $this->Message_model->getMessages(); - $msg = $this->Message_model->load($id); + $msg = $this->messaging->getMessage($msg_id); + //var_dump($msg); if ($msg->error) show_error($msg->retval); if (count($msg->retval) != 1) - show_error('Nachricht nicht vorhanden! ID: '.$id); + show_error('Nachricht nicht vorhanden! ID: '.$msg_id); $data = array ( 'message' => $msg->retval[0] ); - var_dump($data); + var_dump($data['message']); $v = $this->load->view('system/message', $data); } diff --git a/application/core/DB_Model.php b/application/core/DB_Model.php index e0c318961..f0e224914 100644 --- a/application/core/DB_Model.php +++ b/application/core/DB_Model.php @@ -8,12 +8,12 @@ class DB_Model extends FHC_Model // True if this table has a primary key that uses a sequence protected $acl; // Name of the PrimaryKey for DB-Update, Load, ... - function __construct($dbTable = null, $pk = null) + function __construct($dbTable = null, $pk = null, $hasSequence = true) { parent::__construct(); $this->dbTable = $dbTable; $this->pk = $pk; - $this->hasSequence = true; + $this->hasSequence = $hasSequence; $this->load->database(); $this->acl = $this->config->item('fhc_acl'); } @@ -427,4 +427,4 @@ class DB_Model extends FHC_Model 'msg' => lang('fhc_' . $error) ); } -} \ No newline at end of file +} diff --git a/application/core/FHC_Model.php b/application/core/FHC_Model.php index f5d0c9487..14b50a109 100644 --- a/application/core/FHC_Model.php +++ b/application/core/FHC_Model.php @@ -19,6 +19,12 @@ class FHC_Model extends CI_Model // Get UID from the environment (HTTP authentication via authentication.class.php) elseif(isset($_SERVER['PHP_AUTH_USER'])) $uid = $_SERVER['PHP_AUTH_USER']; + + // After getting UID for the first time, it saves it in CI session + if (isset($uid) && !isset($this->session->uid)) + { + $this->session->uid = $uid; + } $this->load->library('FHC_DB_ACL', array('uid' => $uid)); } diff --git a/application/helpers/fhcdb_helper.php b/application/helpers/fhcdb_helper.php deleted file mode 100644 index fd170c462..000000000 --- a/application/helpers/fhcdb_helper.php +++ /dev/null @@ -1,450 +0,0 @@ -ci=$ci; - } - - public function db_connect() - { - $conn_str='host='.DB_HOST.' port='.DB_PORT.' dbname='.DB_NAME.' user='.DB_USER.' password='.DB_PASSWORD; - //Connection Herstellen - if (DB_CONNECT_PERSISTENT) - { - if (!basis_db::$db_conn = pg_pconnect($conn_str)) - die('Fehler beim Oeffnen der Datenbankverbindung'); - } - else - { - if (!basis_db::$db_conn = pg_connect($conn_str)) - die('Fehler beim Oeffnen der Datenbankverbindung'); - } - } - - public function db_query($sql) - { - if ($this->db_result=$this->ci->db->simple_query($sql)) - return $this->db_result; - else - { - $this->errormsg.='Abfrage in Datenbank fehlgeschlagen! '.$this->db_last_error(); - return false; - } - } - - public function db_num_rows($result=null) - { - if (is_null($result)) - return pg_num_rows($this->db_result); - else - return pg_num_rows($result); - } - - public function db_fetch_object($result = null, $i=null) - { - if (is_null($result)) - { - if (is_null($i)) - return pg_fetch_object($this->db_result); - else - return pg_fetch_object($this->db_result, $i); - } - else - { - if (is_null($i)) - return pg_fetch_object($result); - else - return pg_fetch_object($result, $i); - } - } - - public function db_fetch_row($result = null, $i=null) - { - if (is_null($result)) - { - if (is_null($i)) - return pg_fetch_row($this->db_result); - else - return pg_fetch_row($this->db_result, $i); - } - else - { - if (is_null($i)) - return pg_fetch_row($result); - else - return pg_fetch_row($result, $i); - } - } - - public function db_fetch_assoc($result = null, $i=null) - { - if (is_null($result)) - { - if (is_null($i)) - return pg_fetch_assoc($this->db_result); - else - return pg_fetch_assoc($this->db_result, $i); - } - else - { - if (is_null($i)) - return pg_fetch_row($result); - else - return pg_fetch_row($result, $i); - } - } - - public function db_result($result = null, $i,$item) - { - if (is_null($result)) - { - return pg_result($this->db_result, $i,$item); - } - else - { - return pg_result($result, $i,$item); - } - } - - public function db_getResultJSON($result = null) - { - $rows=array(); - if (is_null($result)) - { - while ($r = pg_fetch_assoc($this->db_result)) - $rows[] = $r; - - //print json_encode($rows); - } - else - { - pg_result_seek($result, 0); - //var_dump($result); - while ($r = pg_fetch_assoc($result)) - { - $rows[] = $r; - } - - //print json_encode($rows); - } - return json_encode($rows); - } - - public function db_last_error() - { - return pg_last_error(); - } - - public function db_affected_rows($result=null) - { - if (is_null($result)) - return pg_affected_rows($this->db_result); - else - return pg_affected_rows($result); - } - - public function db_result_seek($result=null, $offset) - { - if (is_null($result)) - return pg_result_seek($this->db_result, $offset); - else - return pg_result_seek($result, $offset); - } - - public function db_fetch_array($result=null) - { - if (is_null($result)) - return pg_fetch_array($this->db_result); - else - return pg_fetch_array($result); - } - - public function db_num_fields($result=null) - { - if (is_null($result)) - return pg_num_fields($this->db_result); - else - return pg_num_fields($result); - } - - /** - * Liefert den Feldnamen mit index i - */ - public function db_field_name($result=null, $i) - { - if (is_null($result)) - return pg_field_name($this->db_result, $i); - else - return pg_field_name($result, $i); - } - - /** - * Gibt den Speicher wieder Frei. - * (ist das sinnvoll wenn es per Value uebergeben wird??) - */ - public function db_free_result($result = null) - { - if (is_null($result)) - { - return pg_free_result($this->db_result); - } - else - { - return pg_free_result($result); - } - } - - /** - * Liefert die aktuelle Datenbankversion - */ - public function db_version() - { - return pg_version(basis_db::$db_conn); - } - - /** - * Escaped Sonderzeichen in Variablen vor der Verwendung in SQL Statements - * um SQL Injections zu verhindern - * - */ - public function db_escape($var) - { - return pg_escape_string($var); - } - - /** - * Null Value Handling und Hochkomma für Inserts / Updates - * Wenn die Uebergebe Variable leer ist, wird ein String mit null - * zurueckgeliefert, wenn nicht dann wird der string unter Hochkomma zurueckgeliefert - * es sei denn qoute=false dann wird nur der String zurueckgeliefert - * - * @param $var String-Value fuer SQL Request - * @return string - */ - public function db_null_value($var, $qoute=true) - { - if ($qoute) - return ($var!==''?$this->db_qoute($var):'null'); - else - return ($var!==''?$var:'null'); - } - - /** - * Setzt einen String unter Hochkomma - * @param $var Value fuer Insert/Update - * @return value unter Hochkomma - */ - public function db_qoute($var) - { - return "'".$var."'"; - } - - /** - * Escaped einen Parameter fuer die Verwendung in Insert/Update SQL Befehlen - * Es werden abhaengig vom Typ Hochkomma oder Null hinzugefuegt - * @param $var Value der gesetzt werden soll - * @param $type Typ des Values (FHC_STRING | FHC_BOOLEAN | FHC_INTEGER | ...) - * @param $nullable boolean gibt an ob das Feld NULL sein darf. Wenn true wird - * NULL statt einem Leerstring zurueckgeliefert - * @return Escapter Value inklusive Hochkomma wenn noetig - * - * Verwendungsbeispiel: - * Update tbl_person set nachname=$this->db_add_param($var) - * Update tbl_person set aktiv=$this->db_add_param($var, FHC_BOOL, false) - * Update tbl_person set anzahlkinder=$this->db_add_param($var, FHC_INT) - */ - public function db_add_param($var, $type=FHC_STRING, $nullable=true) - { - if (($var==='' || is_null($var)) && $type!=FHC_BOOLEAN) - { - if ($nullable) - return 'null'; - else - return "''"; - } - - switch($type) - { - case FHC_INTEGER: - $var = $this->db_escape($var); - if (!is_numeric($var) && $var!=='') - die('Invalid Integer Parameter detected:'.$var); - $var = $this->db_null_value($var, false); - break; - - case FHC_LANG_ARRAY: - - $sprache = new sprache(); - $sprache->getAll(true); - $buf = $var; - $var = array(); - $languages = $sprache->getAllIndexesSorted(); - - foreach($languages as $sk => $sp) - { - if (!$sp || !isset($buf[$sp])) - $var[$sk] = ""; - else - $var[$sk] = $this->db_escape($buf[$sp]); - } - $var = str_replace('\\', '\\\\', $var); - $var = str_replace('"', '\\\"', $var); - $var = '\'{"' . join('","', $var) . '"}\''; - - break; - - case FHC_BOOLEAN: - if ($var===true) - $var='true'; - elseif ($var===false) - $var='false'; - elseif ($var=='' && $nullable) - $var = 'null'; - else - die('Invalid Boolean Parameter detected'); - break; - - case FHC_STRING: - default: - $var = $this->db_escape($var); - $var = $this->db_null_value($var); - break; - } - return $var; - } - - /** - * Erzeugt aus einem DB-Result-Boolean einen PHP Boolean - */ - public function db_parse_bool($var) - { - if ($var=='t') - return true; - elseif ($var=='f') - return false; - elseif ($var=='') - return ''; - else - die('Invalid DB Boolean. Wrong DB-Engine?'); - } - - /** - * Bereitet ein Array von Elementen auf, damit es in der IN-Klausel eines - * Select Befehls verwendet werden kann. - */ - public function db_implode4SQL($array) - { - $string = ''; - foreach($array as $row) - { - if ($string!='') - $string.=','; - $string.=$this->db_add_param($row); - } - return $string; - } - - /** - * Erstellt aus einem DB Array ein PHP Array - * @param $var DB Result Array Spalte - * @return php array - */ - public function db_parse_array($var) - { - if ($var == '') - return; - preg_match_all('/(?<=^\{|,)(([^,"{]*)|\s*"((?:[^"\\\\]|\\\\(?:.|[0-9]+|x[0-9a-f]+))*)"\s*)(,|(?loadIndexArray(); - - $sprache = new sprache(); - $sprache->getAll(true); - $languages = $sprache->getAllIndexesSorted(); - - - foreach ($matches as $mk => $match) - { - $values[$languages[$mk+1]] = $match[3] != '' ? stripcslashes($match[3]) : (strtolower($match[2]) == 'null' ? null : $match[2]); - } - return $values; - } -} - -function indexSort($a, $b) -{ - return strcmp($a->index, $b->index); -} - -/** - * Bereitet ein Array von Elementen auf, damit es in der IN-Klausel eines - * Select Befehls verwendet werden kann. - */ -function dbImplode4SQL($array) -{ - $string = ''; - - foreach($array as $row) - { - if ($string != '') - { - $string.=','; - } - $string.=$this->db_add_param($row); - } - - return $string; -} \ No newline at end of file diff --git a/application/libraries/FHC_Seed.php b/application/libraries/FHC_Seed.php deleted file mode 100644 index 065a19259..000000000 --- a/application/libraries/FHC_Seed.php +++ /dev/null @@ -1,170 +0,0 @@ - $val) - { - $this->{'_'.$key} = $val; - } - - log_message('info', 'Seed Class Initialized'); - - // If not set, set it - $this->_seed_path !== '' OR $this->_seed_path = APPPATH.'seeds/'; - - // Add trailing slash if not set - $this->_seed_path = rtrim($this->_seed_path, '/').'/'; - - // Load seed language - $this->lang->load('seed'); - } - - - /** - * Seeds DB with Testdata - * - * @param string $name - * @return bool - */ - function seed($name = null) - { - $seeds = $this->find_seeds(); - - if (empty($seeds)) - { - $this->_error_string = $this->lang->line('seed_none_found'); - return FALSE; - } - - $method = 'seed'; - $pending = array(); - foreach ($seeds as $number => $file) - { - include_once($file); - $class = 'Seed_'.ucfirst(strtolower($this->_get_seed_name(basename($file, '.php')))); - - // Validate the seed file structure - if ( ! class_exists($class, FALSE)) - { - $this->_error_string = sprintf($this->lang->line('seed_class_doesnt_exist'), $class); - return FALSE; - } - // method_exists() returns true for non-public methods, - // while is_callable() can't be used without instantiating. - // Only get_class_methods() satisfies both conditions. - elseif ( ! in_array($method, array_map('strtolower', get_class_methods($class)))) - { - $this->_error_string = sprintf($this->lang->line('seed_missing_'.$method.'_method'), $class); - return FALSE; - } - - $pending[$number] = array($class, $method); - } - // Now just run the necessary seeds - foreach ($pending as $number => $seed) - { - log_message('debug', 'Seeding '.$method); - - $seed[0] = new $seed[0]; - call_user_func($seed); - } - } - - /** - * Retrieves list of available seed files - * - * @return array list of seed file paths sorted by version - */ - public function find_seeds() - { - $seeds = array(); - - // Load all *_*.php files in the seeds path - foreach (glob($this->_seed_path.'*_*.php') as $file) - { - $name = basename($file, '.php'); - - // Filter out non-seed files - if (preg_match($this->_seed_regex, $name)) - { - $number = $this->_get_seed_number($name); - - // There cannot be duplicate seed numbers - if (isset($seeds[$number])) - { - $this->_error_string = sprintf($this->lang->line('seed_multiple_version'), $number); - show_error($this->_error_string); - } - - $seeds[$number] = $file; - } - } - - ksort($seeds); - return $seeds; - } - - /** - * Extracts the seed number from a filename - * - * @param string $seed - * @return string Numeric portion of a seed filename - */ - protected function _get_seed_number($seed) - { - return sscanf($seed, '%[0-9]+', $number) - ? $number : '0'; - } -} diff --git a/application/libraries/image_moo.php b/application/libraries/Image_moo.php similarity index 100% rename from application/libraries/image_moo.php rename to application/libraries/Image_moo.php diff --git a/application/libraries/Messaging.php b/application/libraries/Messaging.php deleted file mode 100644 index 677ef2ff0..000000000 --- a/application/libraries/Messaging.php +++ /dev/null @@ -1,448 +0,0 @@ -ci =& get_instance(); - $this->ci->load->model('message/message_model'); - $this->ci->load->helper('language'); - $this->ci->lang->load('message'); - } - - // ------------------------------------------------------------------------ - - /** - * get_message() - will return a single message, including the status for specified user. - * - * @param integer $msg_id EQUIRED - * @param integer $user_id REQUIRED - * @return array - */ - function get_message($msg_id, $user_id) - { - if (empty($msg_id)) - { - return $this->_invalid_id(MSG_ERR_INVALID_MSG_ID); - } - - if (empty($user_id)) - { - return $this->_invalid_id(MSG_ERR_INVALID_USER_ID); - } - - if ($message = $this->ci->message_model->get_message($msg_id, $user_id)) - { - return $this->_success($message); - } - - // General Error Occurred - return $this->_general_error(); - } - - // ------------------------------------------------------------------------ - - /** - * get_full_thread() - will return a entire thread, including the status for specified user. - * - * @param integer $thread_id REQUIRED - * @param integer $user_id REQUIRED - * @param boolean $full_thread OPTIONAL - If true, user will also see messages from thread posted BEFORE user became participant - * @param string $order_by OPTIONAL - * @return array - */ - function get_full_thread($thread_id, $user_id, $full_thread = FALSE, $order_by = 'ASC') - { - if (empty($thread_id)) - { - return $this->_invalid_id(MSG_ERR_INVALID_THREAD_ID); - } - - if (empty($user_id)) - { - return $this->_invalid_id(MSG_ERR_INVALID_USER_ID); - } - - if ($message = $this->ci->message_model->get_full_thread($thread_id, $user_id, $full_thread, $order_by)) - { - return $this->_success($message); - } - - // General Error Occurred - return $this->_general_error(); - } - - // ------------------------------------------------------------------------ - - /** - * get_all_threads() - will return all threads for user, including the status for specified user. - * - * @param integer $user_id REQUIRED - * @param boolean $full_thread OPTIONAL - If true, user will also see messages from thread posted BEFORE user became participant - * @param string $order_by OPTIONAL - * @return array - */ - function get_all_threads($user_id, $full_thread = FALSE, $order_by = 'ASC') - { - if (empty($user_id)) - { - return $this->_invalid_id(MSG_ERR_INVALID_USER_ID); - } - - $message = $this->ci->message_model->get_all_threads($user_id, $full_thread, $order_by); - if (is_array($message)) - { - return $this->_success($message); - } - - // General Error Occurred - return $this->_general_error(); - } - - // ------------------------------------------------------------------------ - - /** - * get_all_threads_grouped() - will return all threads for user, including the status for specified user. - * - messages are grouped in threads. - * - * @param integer $user_id REQUIRED - * @param boolean $full_thread OPTIONAL - If true, user will also see messages from thread posted BEFORE user became participant - * @param string $order_by OPTIONAL - * @return array - */ - function get_all_threads_grouped($user_id, $full_thread = FALSE, $order_by = 'ASC') - { - if (empty($user_id)) - { - return $this->_invalid_id(MSG_ERR_INVALID_USER_ID); - } - - $message = $this->ci->message_model->get_all_threads($user_id, $full_thread, $order_by); - if (is_array($message)) - { - $threads = array(); - - foreach ($message as $msg) - { - if ( ! isset($threads[$msg['thread_id']])) - { - $threads[$msg['thread_id']]['thread_id'] = $msg['thread_id']; - $threads[$msg['thread_id']]['messages'] = array($msg); - } - else - { - $threads[$msg['thread_id']]['messages'][] = $msg; - } - } - - return $this->_success($threads); - } - - // General Error Occurred - return $this->_general_error(); - } - - // ------------------------------------------------------------------------ - - /** - * update_message_status() - will change status on message for particular user - * - * @param integer $msg_id REQUIRED - * @param integer $user_id REQUIRED - * @param integer $status_id REQUIRED - should come from config/message.php list of constants - * @return array - */ - function update_message_status($msg_id, $user_id, $status_id ) - { - if (empty($msg_id)) - { - return $this->_invalid_id(MSG_ERR_INVALID_MSG_ID); - } - - if (empty($user_id)) - { - return $this->_invalid_id(MSG_ERR_INVALID_USER_ID); - } - - if (empty($status_id)) - { - return $this->_invalid_id(MSG_ERR_INVALID_STATUS_ID); - } - - if ($this->ci->message_model->update_message_status($msg_id, $user_id, $status_id)) - { - return $this->_success(NULL, MSG_STATUS_UPDATE); - } - - // General Error Occurred - return $this->_general_error(); - - } - - // ------------------------------------------------------------------------ - - /** - * add_participant() - adds user to existing thread - * - * @param integer $thread_id REQUIRED - * @param integer $user_id REQUIRED - * @return array - */ - function add_participant($thread_id, $user_id) - { - if (empty($thread_id)) - { - return $this->_invalid_id(MSG_ERR_INVALID_THREAD_ID); - } - - if (empty($user_id)) - { - return $this->_invalid_id(MSG_ERR_INVALID_USER_ID); - } - - if ( ! $this->ci->message_model->valid_new_participant($thread_id, $user_id)) - { - $this->_participant_error(MSG_ERR_PARTICIPANT_EXISTS); - } - - if ( ! $this->ci->message_model->application_user($user_id)) - { - $this->_participant_error(MSG_ERR_PARTICIPANT_NONSYSTEM); - } - - if ($this->ci->message_model->add_participant($thread_id, $user_id )) - { - return $this->_success(NULL, MSG_PARTICIPANT_ADDED); - } - - // General Error Occurred - return $this->_general_error(); - } - - // ------------------------------------------------------------------------ - - /** - * remove_participant() - removes user from existing thread - * - * @param integer $thread_id REQUIRED - * @param integer $user_id REQUIRED - * @return array - */ - function remove_participant($thread_id, $user_id) - { - if (empty($thread_id)) - { - return $this->_invalid_id(MSG_ERR_INVALID_THREAD_ID); - } - - if (empty($user_id)) - { - return $this->_invalid_id(MSG_ERR_INVALID_USER_ID); - } - - if ($this->ci->message_model->remove_participant($thread_id, $user_id)) - { - return $this->_success(NULL, MSG_PARTICIPANT_REMOVED); - } - - // General Error Occurred - return $this->_general_error(); - } - - // ------------------------------------------------------------------------ - - /** - * send_new_message() - sends new internal message. This function will create a new thread - * - * @param integer $sender_id REQUIRED - * @param mixed $recipients REQUIRED - a single integer or an array of integers, representing user_ids - * @param string $subject - * @param string $body - * @param integer $priority - * @return array - */ - function send_new_message($sender_id, $recipients, $subject = '', $body = '', $priority = PRIORITY_NORMAL) - { - if (empty($sender_id)) - { - return $this->_invalid_id(MSG_ERR_INVALID_SENDER_ID); - } - - if (empty($recipients)) - { - return array( - 'err' => 1, - 'code' => MSG_ERR_INVALID_RECIPIENTS, - 'msg' => lang('mahana_'.MSG_ERR_INVALID_RECIPIENTS) - ); - } - - if ($thread_id = $this->ci->message_model->send_new_message($sender_id, $recipients, $subject, $body, $priority)) - { - return $this->_success($thread_id, MSG_MESSAGE_SENT); - } - - // General Error Occurred - return $this->_general_error(); - } - - // ------------------------------------------------------------------------ - - /** - * reply_to_message() - replies to internal message. This function will NOT create a new thread or participant list - * - * @param integer $msg_id REQUIRED - * @param integer $sender_id REQUIRED - * @param string $subject - * @param string $body - * @param integer $priority - * @return array - */ - function reply_to_message($msg_id, $sender_id, $subject = '', $body = '', $priority = PRIORITY_NORMAL) - { - if (empty($sender_id)) - { - return $this->_invalid_id(MSG_ERR_INVALID_SENDER_ID); - } - - if (empty($msg_id)) - { - return $this->_invalid_id(MSG_ERR_INVALID_MSG_ID); - } - - if ($new_msg_id = $this->ci->message_model->reply_to_message($msg_id, $sender_id, $body, $priority)) - { - return $this->_success($new_msg_id, MSG_MESSAGE_SENT); - } - - // General Error Occurred - return $this->_general_error(); - } - - // ------------------------------------------------------------------------ - - /** - * get_participant_list() - returns list of participants on given thread. If sender_id set, sender_id will be left off list - * - * @param integer $thread_id REQUIRED - * @param integer $sender_id REQUIRED - * @return array - */ - function get_participant_list($thread_id, $sender_id = 0) - { - if (empty($thread_id)) - { - return $this->_invalid_id(MSG_ERR_INVALID_THREAD_ID); - } - - if ($participants = $this->ci->message_model-> get_participant_list($thread_id, $sender_id)) - { - return $this->_success($participants); - } - - // General Error Occurred - return $this->_general_error(); - } - - // ------------------------------------------------------------------------ - - /** - * get_msg_count() - returns integer with count of message for user, by status. defaults to new messages - * - * @param integer $user_id REQUIRED - * @param integer $status_id OPTIONAL - defaults to "Unread" - * @return array - */ - function get_msg_count($user_id, $status_id = MSG_STATUS_UNREAD) - { - if (empty($user_id)) - { - return $this->_invalid_id(MSG_ERR_INVALID_USER_ID); - } - - if (is_numeric($message = $this->ci->message_model->get_msg_count($user_id, $status_id))) - { - return $this->_success($message); - } - - // General Error Occurred - return $this->_general_error(); - } - - // ------------------------------------------------------------------------ - // Private Functions from here out! - // ------------------------------------------------------------------------ - - /** - * Success - * - * @param mixed $retval - * @return array - */ - private function _success($retval = '', $message = MSG_SUCCESS) - { - return array( - 'err' => 0, - 'code' => MSG_SUCCESS, - 'msg' => lang('mahana_' . $message), - 'retval' => $retval - ); - } - - // ------------------------------------------------------------------------ - - /** - * Invalid ID - * - * @param integer config.php error code numbers - * @return array - */ - private function _invalid_id($error = '') - { - return array( - 'err' => 1, - 'code' => $error, - 'msg' => lang('mahana_'.$error) - ); - } - - // ------------------------------------------------------------------------ - - /** - * Error Particpant Exists - * - * @return array - */ - private function _participant_error($error = '') - { - return array( - 'err' => 1, - 'code' => 1, - 'msg' => lang('mahana_' . $error) - ); - } - - - // ------------------------------------------------------------------------ - - /** - * General Error - * - * @return array - */ - private function _general_error() - { - return array( - 'err' => 1, - 'code' => MSG_ERR_GENERAL, - 'msg' => lang('mahana_'.MSG_ERR_GENERAL) - ); - } -} diff --git a/application/models/content/Dms_model.php b/application/models/content/Dms_model.php index 7a27e8b79..55af1371e 100644 --- a/application/models/content/Dms_model.php +++ b/application/models/content/Dms_model.php @@ -12,7 +12,7 @@ class Dms_model extends DB_Model $this->pk = 'dms_id'; } - protected function insertDmsVersion($data) + public function insertDmsVersion($data) { $tableName = 'campus.tbl_dms_version'; @@ -27,7 +27,7 @@ class Dms_model extends DB_Model return $this->_error($this->db->error(), FHC_DB_ERROR); } - protected function updateDmsVersion($id, $data) + public function updateDmsVersion($id, $data) { $tableName = 'campus.tbl_dms_version'; diff --git a/application/models/crm/Prestudent_model.php b/application/models/crm/Prestudent_model.php index 0908b4c8a..cf6a5908d 100644 --- a/application/models/crm/Prestudent_model.php +++ b/application/models/crm/Prestudent_model.php @@ -11,30 +11,50 @@ class Prestudent_model extends DB_Model $this->dbTable = 'public.tbl_prestudent'; $this->pk = 'prestudent_id'; } - + /** - * + * @return void */ - public function loadPrestudentPerson($prestudentID) + public function getLastStatus($prestudent_id, $studiensemester_kurzbz = '', $status_kurzbz = '') { - // Check the rights - if (! $this->fhc_db_acl->isBerechtigt('basis/person', 's')) - return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> basis/person', FHC_MODEL_ERROR); + // Checks if the operation is permitted by the API caller + if (! $this->fhc_db_acl->isBerechtigt($this->acl['public.tbl_prestudentstatus'], 's')) + return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl['public.tbl_prestudentstatus'], FHC_MODEL_ERROR); - // Prepare SQL-Query - $this->db->select('*') - ->from('public.tbl_prestudent') - ->join('public.tbl_person', 'person_id') - ->where('prestudent_id', $prestudentID); - // Do the query - $result = $this->db->get()->result_object(); + if (! $this->fhc_db_acl->isBerechtigt($this->acl['lehre.tbl_studienplan'], 's')) + return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl['lehre.tbl_studienplan'], FHC_MODEL_ERROR); - // Return the result - if ($result) - return $this->_success($result); + if (! $this->fhc_db_acl->isBerechtigt($this->acl['public.tbl_status'], 's')) + return $this->_error(lang('fhc_'.FHC_NORIGHT).' -> '.$this->acl['public.tbl_status'], FHC_MODEL_ERROR); + + $query = "SELECT tbl_prestudentstatus.*, + bezeichnung AS studienplan_bezeichnung, + tbl_status.bezeichnung_mehrsprachig + FROM public.tbl_prestudentstatus LEFT JOIN lehre.tbl_studienplan USING (studienplan_id) + JOIN public.tbl_status USING (status_kurzbz) + WHERE tbl_status.status_kurzbz = tbl_prestudentstatus.status_kurzbz + AND prestudent_id = ?"; + + $parametersArray = array($prestudent_id); + + if ($studiensemester_kurzbz != '') + { + array_push($parametersArray, $studiensemester_kurzbz); + $query .= ' AND studiensemester_kurzbz = ?'; + } + if ($status_kurzbz != '') + { + array_push($parametersArray, $status_kurzbz); + $query .= ' AND status_kurzbz = ?'; + } + + $query .= ' ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1'; + + $result = $this->db->query($query, $parametersArray); + + if (is_object($result)) + return $this->_success($result->result()); else return $this->_error($this->db->error(), FHC_DB_ERROR); } - - -} +} \ No newline at end of file diff --git a/application/models/system/Message_model.php b/application/models/system/Message_model.php index d2f503eea..a0a1c54f8 100644 --- a/application/models/system/Message_model.php +++ b/application/models/system/Message_model.php @@ -23,29 +23,19 @@ class Message_model extends DB_Model * @param integer $person_id REQUIRED * @return array */ - function getMessage($msg_id, $person_id) + /*function getMessage($msg_id) { // Validate if (empty($msg_id)) - { return $this->_invalid_id(MSG_ERR_INVALID_MSG_ID); - } - if (empty($person_id)) - { - return $this->_invalid_id(MSG_ERR_INVALID_USER_ID); - } - $sql = 'SELECT m.*, s.status, t.subject, ' . "CONCAT(vorname, ' ', nachname) as user_name" . - ' FROM ' . $this->db->dbprefix . 'tbl_msg_message m ' . - ' JOIN ' . $this->db->dbprefix . 'tbl_msg_thread t ON (m.thread_id = t.thread_id) ' . - ' JOIN ' . $this->db->dbprefix . 'public.tbl_person' . ' ON (' . 'tbl_person.person_id' . ' = m.sender_id) '. - ' JOIN ' . $this->db->dbprefix . 'tbl_msg_status s ON (s.message_id = m.message_id AND s.person_id = ? ) ' . - ' WHERE m.message_id = ? ' ; - $result = $this->db->query($sql, array($person_id, $msg_id)); + + $sql = 'SELECT * FROM tbl_msg_message JOIN tbl_person USING (person_id) WHERE message_id=?' ; + $result = $this->db->query($sql, array($msg_id)); if ($result) - return $this->_success($result->result_array()); + return $this->_success($result->result()); else - return $this->_general_error(); - } + return $this->_error($this->db->error(), FHC_DB_ERROR); + }*/ /** ----------------------------------------------------------------- * Get a Full Thread * get_full_thread() - will return a entire thread, including the status for specified user. diff --git a/application/models/system/Recipient_model.php b/application/models/system/Recipient_model.php new file mode 100644 index 000000000..b1acf5b61 --- /dev/null +++ b/application/models/system/Recipient_model.php @@ -0,0 +1,15 @@ +dbTable = 'public.tbl_msg_recipient'; + $this->pk = array('person_id', 'message_id'); + $this->hasSequence = false; + } +} diff --git a/application/seeds/002_prestudent.php b/application/seeds/002_prestudent.php new file mode 100644 index 000000000..5b8e99cc0 --- /dev/null +++ b/application/seeds/002_prestudent.php @@ -0,0 +1,47 @@ +fhc =& get_instance(); + $this->fhc->load->model('crm/Prestudent_model'); + + for ($i = 0; $i < $limit; $i++) + { + echo "."; + $data = array( + 'person_id' => $i+3, // start with person_id 3 + 'aufmerksamdurch_kurzbz' => 'k.A.', + 'studiengang_kz' => $this->fhc->faker->firstName, + 'nachname' => $this->fhc->faker->lastName, + //'address' => $this->faker->streetAddress, + 'gebort' => $this->fhc->faker->city, + //'state' => $this->faker->state, + //'country' => $this->faker->country, + //'postcode' => $this->faker->postcode, + //'email' => $this->faker->email, + //'email_verified' => mt_rand(0, 1) ? '0' : '1', + //'phone' => $this->faker->phoneNumber, + 'gebdatum' => $this->fhc->faker->dateTimeThisCentury->format('Y-m-d H:i:s'), + //'registration_date' => $this->faker->dateTimeThisYear->format('Y-m-d H:i:s'), + //'ip_address' => mt_rand(0, 1) ? $this->faker->ipv4 : $this->faker->ipv6, + ); + + $this->fhc->Prestudent_model->insert($data); + } + + echo PHP_EOL; + + } + + public function truncate() + { + //$this->db->query('EMPTY TABLE public.person;'); + } +} + diff --git a/application/seeds/003_message.php b/application/seeds/003_message.php new file mode 100644 index 000000000..f5ed383a7 --- /dev/null +++ b/application/seeds/003_message.php @@ -0,0 +1,50 @@ +fhc =& get_instance(); + $this->fhc->load->model('system/Recipient_model'); + $this->fhc->Recipient_model->setUid('admin'); + $this->fhc->load->model('system/Message_model'); + + for ($i = 0; $i < $limit; $i++) + { + echo "."; + + $data = array + ( + 'subject' => $this->fhc->faker->sentence(4, true), + 'body' => $this->fhc->faker->text(400), + 'person_id' => $i%5+1 + ); + $message = $this->fhc->Message_model->insert($data); + + $data = array + ( + 'message_id' => $message->retval, + 'person_id' => $i%5+2, + 'insertvon' => 'seed' + ); + $recipient = $this->fhc->Recipient_model->insert($data); + if ($recipient->error) + show_error($recipient->retval); + //for ($j=1; $j<10; $j++) + // $this->fhc->Message_model->addRecipient($thread->retval, $i+$j+5); + } + + echo PHP_EOL; + + } + + public function truncate() + { + //$this->db->query('EMPTY TABLE public.person;'); + } +} + diff --git a/application/views/system/message.php b/application/views/system/message.php new file mode 100644 index 000000000..ab67ecceb --- /dev/null +++ b/application/views/system/message.php @@ -0,0 +1,13 @@ +