diff --git a/application/controllers/DBTools.php b/application/controllers/DBTools.php index dc3925269..d7e0ca00a 100644 --- a/application/controllers/DBTools.php +++ b/application/controllers/DBTools.php @@ -16,7 +16,7 @@ class DBTools extends FHC_Controller * * @var string */ - protected $seed_path = APPPATH.'seeds/'; + protected $seed_path; /** * Seed basename regex @@ -34,6 +34,8 @@ class DBTools extends FHC_Controller { parent::__construct(); + $seed_path = APPPATH.'seeds/'; + if ($this->input->is_cli_request()) { $cli = true; diff --git a/application/controllers/api/v1/codex/Bundesland.php b/application/controllers/api/v1/codex/Bundesland.php index 023871501..35eaed66f 100644 --- a/application/controllers/api/v1/codex/Bundesland.php +++ b/application/controllers/api/v1/codex/Bundesland.php @@ -30,7 +30,7 @@ class Bundesland extends APIv1_Controller public function getAll() { - $result = $this->BundeslandModel->loadWhole(); + $result = $this->BundeslandModel->load(); $this->response($result, REST_Controller::HTTP_OK); } diff --git a/application/controllers/api/v1/codex/Nation.php b/application/controllers/api/v1/codex/Nation.php index 196772958..8a9996e67 100644 --- a/application/controllers/api/v1/codex/Nation.php +++ b/application/controllers/api/v1/codex/Nation.php @@ -63,7 +63,7 @@ class Nation extends APIv1_Controller } else { - $result = $this->NationModel->loadWhole(); + $result = $this->NationModel->load(); } } diff --git a/application/controllers/api/v1/codex/Orgform.php b/application/controllers/api/v1/codex/Orgform.php index 6fa6ccf65..e2e1c870d 100644 --- a/application/controllers/api/v1/codex/Orgform.php +++ b/application/controllers/api/v1/codex/Orgform.php @@ -52,7 +52,7 @@ class Orgform extends APIv1_Controller */ public function getAll() { - $result = $this->OrgformModel->loadWhole(); + $result = $this->OrgformModel->load(); $this->response($result, REST_Controller::HTTP_OK); } diff --git a/application/controllers/api/v1/organisation/Statistik.php b/application/controllers/api/v1/organisation/Statistik.php index beeaaae22..c89bdb3fc 100644 --- a/application/controllers/api/v1/organisation/Statistik.php +++ b/application/controllers/api/v1/organisation/Statistik.php @@ -54,7 +54,7 @@ class Statistik extends APIv1_Controller { $this->StatistikModel->addOrder($this->get('order')); - $result = $this->StatistikModel->loadWhole(); + $result = $this->StatistikModel->load(); $this->response($result, REST_Controller::HTTP_OK); } @@ -68,7 +68,7 @@ class Statistik extends APIv1_Controller $this->StatistikModel->addOrder('bezeichnung'); $this->StatistikModel->addOrder('statistik_kurzbz'); - $result = $this->StatistikModel->loadWhole(); + $result = $this->StatistikModel->load(); $this->response($result, REST_Controller::HTTP_OK); } diff --git a/application/controllers/api/v1/organisation/Studiensemester.php b/application/controllers/api/v1/organisation/Studiensemester.php index 6c97f5050..46c5e6d7d 100644 --- a/application/controllers/api/v1/organisation/Studiensemester.php +++ b/application/controllers/api/v1/organisation/Studiensemester.php @@ -89,7 +89,7 @@ class Studiensemester extends APIv1_Controller $this->StudiensemesterModel->addOrder('ende', 'ASC'); } - $result = $this->StudiensemesterModel->loadWhole(); + $result = $this->StudiensemesterModel->load(); $this->response($result, REST_Controller::HTTP_OK); } diff --git a/application/controllers/api/v1/ressource/Ort.php b/application/controllers/api/v1/ressource/Ort.php index 020b06040..13b8989fd 100644 --- a/application/controllers/api/v1/ressource/Ort.php +++ b/application/controllers/api/v1/ressource/Ort.php @@ -66,7 +66,7 @@ class Ort extends APIv1_Controller } else { - $result = $this->OrtModel->loadWhole(); + $result = $this->OrtModel->load(); } $this->response($result, REST_Controller::HTTP_OK); diff --git a/application/controllers/api/v1/system/Message.php b/application/controllers/api/v1/system/Message.php index d8c6e0a0e..972f046b4 100644 --- a/application/controllers/api/v1/system/Message.php +++ b/application/controllers/api/v1/system/Message.php @@ -22,7 +22,7 @@ class Message extends APIv1_Controller public function __construct() { parent::__construct(); - // Load model MessageModel + // Load library MessageLib $this->load->library('MessageLib', array('uid' => $this->_getUID())); } @@ -71,7 +71,7 @@ class Message extends APIv1_Controller */ public function postMessage() { - $validation = $this->_validate($this->post()); + $validation = $this->_validatePostMessage($this->post()); if (is_object($validation) && $validation->error == EXIT_SUCCESS) { @@ -93,7 +93,33 @@ class Message extends APIv1_Controller } } - private function _validate($message = null) + /** + * @return void + */ + public function postMessageVorlage() + { + $validation = $this->_validatePostMessageVorlage($this->post()); + + if (is_object($validation) && $validation->error == EXIT_SUCCESS) + { + $result = $this->messagelib->sendMessageVorlage( + $this->post()['sender_id'], + $this->post()['receiver_id'], + $this->post()['vorlage_kurzbz'], + $this->post()['oe_kurzbz'], + $this->post()['data'], + $this->post()['orgform_kurzbz'] + ); + + $this->response($result, REST_Controller::HTTP_OK); + } + else + { + $this->response($validation, REST_Controller::HTTP_OK); + } + } + + private function _validatePostMessage($message = null) { if (!isset($message)) { @@ -118,4 +144,34 @@ class Message extends APIv1_Controller return $this->_success('Input data are valid'); } + + private function _validatePostMessageVorlage($message = null) + { + if (!isset($message)) + { + return $this->_error('Parameter is null'); + } + if (!isset($message['sender_id'])) + { + return $this->_error('person_id of sender is not set'); + } + if (!isset($message['receiver_id'])) + { + return $this->_error('person_id of receiver is not set'); + } + if (!isset($message['vorlage_kurzbz'])) + { + return $this->_error('vorlage_kurzbz is not set'); + } + if( !isset($message['oe_kurzbz'])) + { + return $this->_error('oe_kurzbz is not set'); + } + if (!isset($message['data'])) + { + return $this->_error('data is not set'); + } + + return $this->_success('Input data are valid'); + } } \ No newline at end of file diff --git a/application/core/DB_Model.php b/application/core/DB_Model.php index 0bc610b1b..f1bf03407 100644 --- a/application/core/DB_Model.php +++ b/application/core/DB_Model.php @@ -191,38 +191,6 @@ class DB_Model extends FHC_Model else return $this->_error($this->db->error(), FHC_DB_ERROR); } - - - - /** --------------------------------------------------------------- - * Load single data from DB-Table - * - * @param string $id ID (Primary Key) for SELECT ... WHERE - * @return array - */ - public function loadWhole() - { - // 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 only if this method is called from a model - //var_dump(get_called_class()); - if (substr(get_called_class(), -6) == '_model') - if (! $this->fhc_db_acl->isBerechtigt($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($this->dbTable); - - if ($result) - return $this->_success($result->result()); - else - return $this->_error($this->db->error(), FHC_DB_ERROR); - } /** --------------------------------------------------------------- * Add a table to join with diff --git a/application/helpers/message_helper.php b/application/helpers/message_helper.php index 0a70a1015..1e05b0d48 100644 --- a/application/helpers/message_helper.php +++ b/application/helpers/message_helper.php @@ -5,7 +5,7 @@ * * @return array */ -function success($retval, $message = FHC_SUCCESS) +function success($retval, $message = EXIT_SUCCESS) { $return = new stdClass(); $return->error = EXIT_SUCCESS; @@ -20,10 +20,10 @@ function success($retval, $message = FHC_SUCCESS) * * @return array */ -function error($retval = '', $message = FHC_MODEL_ERROR) +function error($retval = '', $message = EXIT_ERROR) { $return = new stdClass(); - $return->error = EXIT_MODEL; + $return->error = EXIT_ERROR; $return->fhcCode = $message; $return->msg = lang('fhc_' . $message); $return->retval = $retval; diff --git a/application/libraries/MessageLib.php b/application/libraries/MessageLib.php index 24ffbf723..e4176c80e 100644 --- a/application/libraries/MessageLib.php +++ b/application/libraries/MessageLib.php @@ -17,16 +17,26 @@ class MessageLib $this->ci->config->load('message'); $this->ci->load->model('system/Message_model', 'MessageModel'); - if (is_array($params) && isset($params['uid'])) - { - $this->ci->MessageModel->setUID($params['uid']); - } - $this->ci->load->model('system/MsgStatus_model', 'MsgStatusModel'); $this->ci->load->model('system/Recipient_model', 'RecipientModel'); $this->ci->load->model('system/Attachment_model', 'AttachmentModel'); + + if (is_array($params) && isset($params['uid'])) + { + $this->ci->load->library('VorlageLib', array('uid' => $params['uid'])); + $this->ci->MessageModel->setUID($params['uid']); + $this->ci->MsgStatusModel->setUID($params['uid']); + $this->ci->RecipientModel->setUID($params['uid']); + $this->ci->AttachmentModel->setUID($params['uid']); + } + else + { + $this->ci->load->library('VorlageLib'); + } + //$this->ci->load->helper('language'); $this->ci->lang->load('message'); + } // ------------------------------------------------------------------------ @@ -212,6 +222,85 @@ class MessageLib else return $this->_success($msg_id); + } + + /** + * sendMessage() - 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 sendMessageVorlage($sender_id, $receiver_id, $vorlage_kurzbz, $oe_kurzbz, $data, $orgform_kurzbz = null) + { + if (!is_numeric($sender_id) || !is_numeric($receiver_id)) + return $this->_invalid_id(MSG_ERR_INVALID_MSG_ID); + + $result = $this->ci->vorlagelib->loadVorlagetext($vorlage_kurzbz, $oe_kurzbz, $orgform_kurzbz); + if (is_object($result) && $result->error == EXIT_SUCCESS) + { + if (is_array($result->retval) && count($result->retval) > 0) + { + $parsedText = $this->ci->vorlagelib->parseVorlagetext($result->retval[0]->text, $data); + + $this->ci->db->trans_start(false); + //save Message + $msgData = array( + 'person_id' => $sender_id, + 'subject' => $result->retval[0]->subject, + 'body' => $parsedText, + 'priority' => PRIORITY_NORMAL, + //'relationmessage_id' => $relationmessage_id, + 'oe_kurzbz' => $oe_kurzbz + ); + + $result = $this->ci->MessageModel->insert($msgData); + if (is_object($result) && $result->error == EXIT_SUCCESS) + { + $msg_id = $result->retval; + $recipientData = array( + 'person_id' => $receiver_id, + 'message_id' => $msg_id + ); + $result = $this->ci->RecipientModel->insert($recipientData); + if (is_object($result) && $result->error == EXIT_SUCCESS) + { + $statusData = array( + 'message_id' => $msg_id, + 'person_id' => $receiver_id, + 'status' => MSG_STATUS_UNREAD + ); + $result = $this->ci->MsgStatusModel->insert($statusData); + } + } + + $this->ci->db->trans_complete(); + + if ($this->ci->db->trans_status() === FALSE || (is_object($result) && $result->error != EXIT_SUCCESS)) + { + $this->ci->db->trans_rollback(); + return $this->_error($result->msg, EXIT_ERROR); + } + else + { + $this->ci->db->trans_commit(); + return $this->_success($msg_id); + } + } + else + { + $result = $this->_error('Vorlage not found', EXIT_ERROR); + } + } + else + { + $result = $this->_error($result->msg, EXIT_ERROR); + } + + return $result; } // ------------------------------------------------------------------------ @@ -345,4 +434,4 @@ class MessageLib 'msg' => lang('message_'.$error) ); } -} +} \ No newline at end of file diff --git a/application/libraries/VorlageLib.php b/application/libraries/VorlageLib.php index d7a315be4..83a35e8c7 100644 --- a/application/libraries/VorlageLib.php +++ b/application/libraries/VorlageLib.php @@ -11,7 +11,7 @@ class VorlageLib { private $recipients = array(); - public function __construct() + public function __construct($params = null) { require_once APPPATH.'config/message.php'; @@ -19,6 +19,13 @@ class VorlageLib $this->ci->load->library('parser'); $this->ci->load->model('system/Vorlage_model', 'VorlageModel'); $this->ci->load->model('system/Vorlagestudiengang_model', 'VorlageStudiengangModel'); + + if (is_array($params) && isset($params['uid'])) + { + $this->ci->VorlageModel->setUID($params['uid']); + $this->ci->VorlageStudiengangModel->setUID($params['uid']); + } + $this->ci->load->helper('language'); //$this->ci->lang->load('fhcomplete'); } @@ -95,7 +102,11 @@ class VorlageLib if (empty($vorlage_kurzbz)) return $this->_error($this->ci->lang->line('fhc_'.FHC_INVALIDID, false)); - $vorlage = $this->ci->VorlageStudiengangModel->getVorlageStudiengang($vorlage_kurzbz, $oe_kurzbz, $orgform_kurzbz); + $vorlage = $this->ci->VorlageStudiengangModel->loadWhere(array( + 'vorlage_kurzbz' => $vorlage_kurzbz, + 'oe_kurzbz' => $oe_kurzbz, + 'orgform_kurzbz' => $orgform_kurzbz) + ); return $vorlage; } @@ -149,4 +160,35 @@ class VorlageLib $text = $this->ci->parser->parse_string($text, $data, TRUE); return $text; } -} + + /** --------------------------------------------------------------- + * Success + * + * @param mixed $retval + * @return array + */ + protected function _success($retval, $message = EXIT_SUCCESS) + { + $return = new stdClass(); + $return->error = EXIT_SUCCESS; + $return->Code = $message; + $return->msg = lang('message_' . $message); + $return->retval = $retval; + return $return; + } + + /** --------------------------------------------------------------- + * General Error + * + * @return array + */ + protected function _error($retval = '', $message = EXIT_ERROR) + { + $return = new stdClass(); + $return->error = EXIT_ERROR; + $return->Code = $message; + $return->msg = lang('message_' . $message); + $return->retval = $retval; + return $return; + } +} \ No newline at end of file diff --git a/application/migrations/010_vorlage.php b/application/migrations/010_vorlage.php index 110200fd2..343d6fbc6 100755 --- a/application/migrations/010_vorlage.php +++ b/application/migrations/010_vorlage.php @@ -59,7 +59,8 @@ class Migration_Vorlage extends CI_Migration { { echo 'Column public.tbl_vorlagestudiengang.orgform_kurzbz added!'; // Insert Demo Data - $query= "INSERT INTO public.tbl_vorlagestudiengang VALUES ('MailRegistration', 0, 1, '

Sehr geehrte/r {anrede} {vorname} {nachname},

+ $query = "SELECT setval('seq_vorlagestudiengang_vorlagestudiengang_id', (SELECT MAX(vorlagestudiengang_id) FROM public.tbl_vorlagestudiengang));"; + $query .= "INSERT INTO public.tbl_vorlagestudiengang VALUES ('MailRegistration', 0, 1, '

Sehr geehrte/r {anrede} {vorname} {nachname},

vielen Dank für Ihre Registrierung an unserer Hochschule. Im Anhang senden wir ihnen den Zugangscode.

Code: {code}

Unter folgenden Link können sie sich direkt für unser Service einloggen: {link}{code}

diff --git a/application/models/system/Message_model.php b/application/models/system/Message_model.php index b84fff1c3..0c342ca8c 100644 --- a/application/models/system/Message_model.php +++ b/application/models/system/Message_model.php @@ -82,7 +82,7 @@ public function getMessagesByPerson($person_id, $all) // prepare parameters $person_id = (int)$person_id; // get Data - $sql = 'SELECT person_id, + /*$sql = 'SELECT person_id, message_id, subject, body, @@ -109,10 +109,23 @@ public function getMessagesByPerson($person_id, $all) ) status USING (message_id, person_id) WHERE tbl_msg_status.insertamum=status.insertamum ) s USING (message_id, person_id) - WHERE person_id = ?'; + WHERE person_id = ?';*/ - if (! $all) - $sql .= ' AND (status < 3 OR status IS NULL)'; + $sql = 'SELECT r.message_id, + m.subject, + m.body, + m.insertamum, + m.oe_kurzbz, + s.status, + s.statusinfo, + s.updateamum + FROM public.tbl_msg_recipient r JOIN public.tbl_msg_message m USING (message_id) + JOIN public.tbl_person p ON (p.person_id = m.person_id) + JOIN public.tbl_msg_status s USING (message_id) + WHERE r.person_id = ?'; + + /*if (! $all) + $sql .= ' AND (status < 3 OR status IS NULL)';*/ $result = $this->db->query($sql, array($person_id)); //var_dump($result); if (is_object($result)) diff --git a/application/widgets/sprache_widget.php b/application/widgets/sprache_widget.php index 325efaab7..87e3324ac 100644 --- a/application/widgets/sprache_widget.php +++ b/application/widgets/sprache_widget.php @@ -8,7 +8,7 @@ class sprache_widget extends Widget public function display($data) { $this->load->model('system/Sprache_model'); - $res = $this->Sprache_model->loadWhole(); + $res = $this->Sprache_model->load(); //var_dump($res); foreach ($res->retval as $obj) { diff --git a/include/dms.class.php b/include/dms.class.php index 55ed1d02f..07ceee6bd 100644 --- a/include/dms.class.php +++ b/include/dms.class.php @@ -71,7 +71,7 @@ class dms extends Dms_model * @param dms_id * @param version optional */ - public function load($dms_id, $version=null) + public function load($dms_id = null, $version=null) { $qry = "SELECT tbl_dms.dms_id, * FROM campus.tbl_dms JOIN campus.tbl_dms_version USING(dms_id) WHERE dms_id=".$this->db_add_param($dms_id, FHC_INTEGER); diff --git a/include/kontakt.class.php b/include/kontakt.class.php index 88c3a6db9..416e93ef7 100644 --- a/include/kontakt.class.php +++ b/include/kontakt.class.php @@ -80,7 +80,7 @@ class kontakt extends Kontakt_model * @param $kontakt_id ID des zu ladenden Kontaktes * @return true wenn ok, false im Fehlerfall */ - public function load($kontakt_id) + public function load($kontakt_id = null) { if(!is_numeric($kontakt_id)) { diff --git a/include/mitarbeiter.class.php b/include/mitarbeiter.class.php index 91e3d8b70..7c701d61f 100644 --- a/include/mitarbeiter.class.php +++ b/include/mitarbeiter.class.php @@ -67,7 +67,7 @@ class mitarbeiter extends benutzer * @param $uid * @return true wenn ok, sonst false */ - public function load($uid) + public function load($uid = null) { if(!benutzer::load($uid)) return false; diff --git a/include/nation.class.php b/include/nation.class.php index 230943da2..964b45d73 100644 --- a/include/nation.class.php +++ b/include/nation.class.php @@ -67,7 +67,7 @@ class nation extends Nation_model * @param $code code der zu ladenden Nation * @return true wenn ok, false im Fehlerfall */ - public function load($code) + public function load($code = null) { //Lesen der Daten aus der Datenbank $result = parent::loadWhere(array('nation_code' => $code)); @@ -126,7 +126,7 @@ class nation extends Nation_model } else { - $result = parent::loadWhole(); + $result = parent::load(); } } diff --git a/include/organisationsform.class.php b/include/organisationsform.class.php index cfaf45648..b9a26bbc5 100644 --- a/include/organisationsform.class.php +++ b/include/organisationsform.class.php @@ -54,7 +54,7 @@ class organisationsform extends Orgform_model * Laedt eine Organisationsform * @param $orgform_kurzbz */ - public function load($orgform_kurzbz) + public function load($orgform_kurzbz = null) { $qry = "SELECT * FROM bis.tbl_orgform WHERE orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).';'; diff --git a/include/ort.class.php b/include/ort.class.php index d335c6feb..db6d13dcb 100644 --- a/include/ort.class.php +++ b/include/ort.class.php @@ -93,7 +93,7 @@ class ort extends Ort_model } else { - $result = parent::loadWhole(); + $result = parent::load(); } if (!is_object($result) || (is_object($result) && ($result->error != EXIT_SUCCESS || !is_array($result->retval)))) @@ -136,7 +136,7 @@ class ort extends Ort_model * @param $fachb_id ID des zu ladenden Ortes * @return true wenn ok, false im Fehlerfall */ - public function load($ort_kurzbz) + public function load($ort_kurzbz = null) { if ($ort_kurzbz == '') { diff --git a/include/preinteressent.class.php b/include/preinteressent.class.php index d71f09e8a..f508c5028 100644 --- a/include/preinteressent.class.php +++ b/include/preinteressent.class.php @@ -72,7 +72,7 @@ class preinteressent extends Preinteressent_model * Laedt einen Datensatz * @param preinteressent_id ID des zu ladenden Datensatzes */ - public function load($preinteressent_id) + public function load($preinteressent_id = null) { //id auf Gueltigkeit pruefen if(!is_numeric($preinteressent_id) || $preinteressent_id == '') diff --git a/include/prestudent.class.php b/include/prestudent.class.php index a9964c88a..2af8293b5 100755 --- a/include/prestudent.class.php +++ b/include/prestudent.class.php @@ -104,7 +104,7 @@ class prestudent extends Prestudent_model * Laedt Prestudent mit der uebergebenen ID * @param $prestudent_id ID des Prestudenten der geladen werden soll */ - public function load($prestudent_id) + public function load($prestudent_id = null) { if (!is_numeric($prestudent_id)) { diff --git a/include/statistik.class.php b/include/statistik.class.php index c95e5d74a..2fd46c31e 100644 --- a/include/statistik.class.php +++ b/include/statistik.class.php @@ -133,7 +133,7 @@ class statistik extends Statistik_model parent::addOrder($order); } - $result = parent::loadWhole(); + $result = parent::load(); if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval)) { @@ -339,7 +339,7 @@ class statistik extends Statistik_model parent::addOrder('bezeichnung'); parent::addOrder('statistik_kurzbz'); - $result = parent::loadWhole(); + $result = parent::load(); if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval)) { diff --git a/include/student.class.php b/include/student.class.php index 6fcfa2014..7e05cfebd 100644 --- a/include/student.class.php +++ b/include/student.class.php @@ -58,7 +58,7 @@ class student extends benutzer * studiensemester_kurzbz * @return true wenn ok, false im Fehlerfall */ - public function load($uid, $studiensemester_kurzbz=null) + public function load($uid = null, $studiensemester_kurzbz=null) { if(!benutzer::load($uid)) return false; diff --git a/include/studiensemester.class.php b/include/studiensemester.class.php index b62e2ebff..13e199655 100644 --- a/include/studiensemester.class.php +++ b/include/studiensemester.class.php @@ -324,7 +324,7 @@ class studiensemester extends Studiensemester_model parent::addOrder('ende', 'ASC'); } - $result = parent::loadWhole(); + $result = parent::load(); if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval)) {