diff --git a/application/controllers/ViewMessage.php b/application/controllers/ViewMessage.php index a3fc1acba..35f5a5b4b 100644 --- a/application/controllers/ViewMessage.php +++ b/application/controllers/ViewMessage.php @@ -81,7 +81,7 @@ class ViewMessage extends FHC_Controller 'href' => $href ); - $this->load->view('system/messageHTML.php', $data); + $this->load->view('system/messages/messageHTML.php', $data); } } @@ -94,7 +94,7 @@ class ViewMessage extends FHC_Controller if (isEmptyString($token)) { - show_error('no token supplied'); + show_error('No token supplied'); } $msg = null; @@ -104,7 +104,7 @@ class ViewMessage extends FHC_Controller if (!hasData($msg)) { - show_error('no message found'); + show_error('No message found'); } $msg = $msg->retval[0]; @@ -114,7 +114,7 @@ class ViewMessage extends FHC_Controller if (!hasData($receiverData)) { - show_error('no sender found'); + show_error('No sender found'); } $data = array ( @@ -123,7 +123,7 @@ class ViewMessage extends FHC_Controller 'token' => $token ); - $this->load->view('system/messageWriteReply', $data); + $this->load->view('system/messages/messageWriteReply', $data); } /** @@ -134,8 +134,6 @@ class ViewMessage extends FHC_Controller $this->load->model('system/Message_model', 'MessageModel'); $this->load->library('MessageLib'); - $error = false; - $subject = $this->input->post('subject'); $body = $this->input->post('body'); $persons = $this->input->post('persons'); @@ -145,7 +143,6 @@ class ViewMessage extends FHC_Controller if (!isset($relationmessage_id) || $relationmessage_id == '' || !isset($token) || $token == '') { show_error('Error while sending reply'); - $error = true; } $relationmsg = $this->MessageTokenModel->getMessageByToken($token); @@ -154,7 +151,6 @@ class ViewMessage extends FHC_Controller if (!hasData($relationmsg) || $relationmessage_id !== $relationmsg->retval[0]->message_id) { show_error('Error while sending reply'); - $error = true; } // get sender (receiver of previous msg) @@ -166,20 +162,16 @@ class ViewMessage extends FHC_Controller // send message(s) if (hasData($data)) { + // Loads the person log library + $this->load->library('PersonLogLib'); + for ($i = 0; $i < count($data->retval); $i++) { $dataArray = (array)$data->retval[$i]; $msg = $this->messagelib->sendMessage($sender_id, $dataArray['person_id'], $subject, $body, PRIORITY_NORMAL, $relationmessage_id, null); - if ($msg->error) - { - show_error($msg->retval); - $error = true; - break; - } - // Loads the person log library - $this->load->library('PersonLogLib'); + if ($msg->error) show_error($msg->retval); // Write log entry for sender $logtype_kurzbz = 'Action'; @@ -193,7 +185,8 @@ class ViewMessage extends FHC_Controller $oe_kurzbz = null; $insertvon = 'online'; - $this->personloglib->log( + // Logs person data + $personLog = $this->personloglib->log( $sender_id, $logtype_kurzbz, $logdata, @@ -203,14 +196,11 @@ class ViewMessage extends FHC_Controller $insertvon ); - //unpark bewerber after he sends message - $this->personloglib->unPark($sender_id); + // Unpark bewerber after he sends message + $personLog = $this->personloglib->unPark($sender_id); } } - if (!$error) - { - $this->load->view('system/messageSent'); - } + $this->load->view('system/messages/messageReplySent'); } } diff --git a/application/controllers/person/Gradelist.php b/application/controllers/person/Gradelist.php new file mode 100644 index 000000000..bf179ad35 --- /dev/null +++ b/application/controllers/person/Gradelist.php @@ -0,0 +1,349 @@ + array('student:r', 'student/noten:r') + ) + ); + + // Loads models + $this->load->model('person/person_model', 'PersonModel'); + $this->load->model('organisation/studiengang_model', 'StudiengangModel'); + $this->load->model('crm/student_model', 'StudentModel'); + $this->load->model('crm/prestudentstatus_model', 'PrestudentstatusModel'); + $this->load->model('education/zeugnisnote_model', 'ZeugnisnoteModel'); + $this->load->model('education/lehrveranstaltung_model', 'LehrveranstaltungModel'); + $this->load->model('codex/note_model', 'NoteModel'); + + $this->loadPhrases( + array( + 'global', + 'person', + 'lehre', + 'ui' + ) + ); + + $result_noten = $this->NoteModel->load(); + foreach ($result_noten->retval as $row) + { + $this->_grades[$row->note]['positiv'] = $row->positiv; + $this->_grades[$row->note]['anmerkung'] = $row->anmerkung; + $this->_grades[$row->note]['notenwert'] = $row->notenwert; + } + } + + /** + * Print all Grades of a person + * @param $uid UID of the Person + */ + public function index($uid = null) + { + if (is_null($uid)) + $uid = getAuthUID(); + + // load student + $student = $this->StudentModel->load(array($uid)); + if (!isSuccess($student) || !hasData($student)) + { + echo "You have no Permission or User does not exists"; + exit; + } + + // Check if logged in User has permission to see grades of this person + $stg = $this->StudiengangModel->load($student->retval[0]->studiengang_kz); + if (!$this->hasPermission($uid, $stg->retval[0]->oe_kurzbz)) + { + echo "You have no Permission or User does not exists"; + exit; + } + $person = $this->PersonModel->getByUid($uid); + + $courses = $this->loadCourseInformation($student->retval[0]->prestudent_id, $student->retval[0]->student_uid); + + $data = array ( + "user" => $uid, + "person" => $person->retval[0], + "courses" => $courses, + "grades" => $this->_grades + ); + + $this->load->view('person/gradelist/gradelist.php', $data); + } + + /** + * Check if the Logged in User has permission to see the grades of this person + * @param $uid UID of the Person we want to see + * @param $oe_kurzbz Organisation Unit of the Person we want to see + * @return true if the logged in User is allowed to see the content, false if not + */ + private function hasPermission($uid, $oe_kurzbz) + { + $loggedinUser = getAuthUID(); + if($uid != $loggedinUser) + { + $this->load->library('PermissionLib'); + if($this->permissionlib->isBerechtigt('student/noten','s',$oe_kurzbz)) + { + return true; + } + return false; + } + else + { + return true; + } + } + + /** + * Loads the Courses and Grades of the Student + * + * @param $prestudent_id of the Student + * @return array with the courses + */ + private function loadCourseInformation($prestudent_id, $uid) + { + $this->load->library('StudienplanLib'); + + // Get status of Student + $result_status = $this->PrestudentstatusModel->getStatusByFilter($prestudent_id); + + if (isError($result_status) || !hasData($result_status)) + { + return error('No Status Found'); + } + + // Get Courses from studyplan for each semester of the student + foreach ($result_status->retval as $row_status) + { + if (in_array($row_status->status_kurzbz, + array('Student','Diplomand','Incoming','Abbrecher','Unterbrecher','Absolvent'))) + { + // LVs fuer das Semester holen lt Studienplan + $lvtree = $this->studienplanlib->getLehrveranstaltungTree( + $row_status->studienplan_id, + $row_status->ausbildungssemester, + true + ); + $courses['semester'][$row_status->studiensemester_kurzbz]['lvs'] = $lvtree; + $courses['semester'][$row_status->studiensemester_kurzbz]['lvs_nonstpl'] = array(); + + $result_stpl = $this->StudienplanModel->load($row_status->studienplan_id); + if(isSuccess($result_stpl) && hasData($result_stpl)) + { + $stpl_bezeichnung = $result_stpl->retval[0]->bezeichnung; + } + else + $stpl_bezeichnung = 'unknown'; + + $courses['semester'][$row_status->studiensemester_kurzbz]['data'] = array( + 'status' => $row_status->status_kurzbz, + 'ausbildungssemester' => $row_status->ausbildungssemester, + 'studiensemester_kurzbz' => $row_status->studiensemester_kurzbz, + 'studienplan_id' => $row_status->studienplan_id, + 'studienplan_bezeichnung' => $stpl_bezeichnung, + ); + } + } + + // Load Grades and add to studyplan + $result_zeugnis = $this->ZeugnisnoteModel->loadWhere(array("student_uid" => $uid)); + + if (isSuccess($result_zeugnis) && hasData($result_zeugnis)) + { + foreach ($courses['semester'] as $key=>$value) + { + $this->fillNotenPart( + $result_zeugnis, + $courses['semester'][$key]['lvs'], + $value['data']['studiensemester_kurzbz'] + ); + } + } + + // Build Array of Courses that are not part of the studyplan + foreach ($result_zeugnis->retval as $row_noten) + { + if (!isset($row_noten->found)) + { + $result_lv = $this->LehrveranstaltungModel->load($row_noten->lehrveranstaltung_id); + $courses['semester'][$row_noten->studiensemester_kurzbz]['lvs_nonstpl'][] = array( + 'lehrveranstaltung_id' => $row_noten->lehrveranstaltung_id, + 'lehrtyp_kurzbz' => $result_lv->retval[0]->lehrtyp_kurzbz, + 'pflicht' => false, + 'bezeichnung' => $result_lv->retval[0]->bezeichnung, + 'ects' => $result_lv->retval[0]->ects, + 'note' => $row_noten->note, + 'datum' => $row_noten->benotungsdatum + ); + if(!isset($courses['semester'][$row_noten->studiensemester_kurzbz]['data']['ectssumme_nonstpl'])) + $courses['semester'][$row_noten->studiensemester_kurzbz]['data']['ectssumme_nonstpl'] = 0; + $courses['semester'][$row_noten->studiensemester_kurzbz]['data']['ectssumme_nonstpl'] += $result_lv->retval[0]->ects; + } + } + + $sum_gradeweighted_overall = 0; + $sum_ectsweighted_overall = 0; + $sum_grades_overall = 0; + $num_grades_overall = 0; + $sum_ects_overall = 0; + $sum_ects_positiv_overall = 0; + + // Calculate Sum and Average + foreach ($courses['semester'] as $stsem => $row_lvs) + { + $grades = $this->getGrades($row_lvs['lvs']); + + $num_grades = 0; + $sum_ects = 0; + $sum_ects_positiv = 0; + $sum_grades = 0; + $notendurchschnitt = 0; + $sum_gradeweighted = 0; + $sum_ectsweighted = 0; + + foreach ($grades as $row) + { + if ($this->_grades[$row['note']]['notenwert'] != '') + { + $num_grades++; + $sum_grades += $this->_grades[$row['note']]['notenwert']; + + $sum_ectsweighted += $row['ects']; + $sum_gradeweighted += $row['ects'] * $this->_grades[$row['note']]['notenwert']; + } + $sum_ects += $row['ects']; + if ($this->_grades[$row['note']]['positiv']) + $sum_ects_positiv += $row['ects']; + } + if ($num_grades > 0) + $notendurchschnitt = $sum_grades / $num_grades; + else + $notendurchschnitt = 0; + + if ($sum_ectsweighted > 0) + $notendurchschnittgewichtet = $sum_gradeweighted / $sum_ectsweighted; + else + $notendurchschnittgewichtet = 0; + + $num_grades_overall += $num_grades; + $sum_grades_overall += $sum_grades; + $sum_gradeweighted_overall += $sum_gradeweighted; + $sum_ectsweighted_overall += $sum_ectsweighted; + $sum_ects_overall += $sum_ects; + $sum_ects_positiv_overall += $sum_ects_positiv; + + $courses['semester'][$stsem]['data']['notendurchschnitt'] = number_format($notendurchschnitt, 2); + $courses['semester'][$stsem]['data']['notendurchschnittgewichtet'] = number_format($notendurchschnittgewichtet, 2); + $courses['semester'][$stsem]['data']['ectssumme'] = number_format($sum_ects,2); + $courses['semester'][$stsem]['data']['ectssumme_positiv'] = number_formaT($sum_ects_positiv,2); + } + + if ($num_grades_overall > 0) + $notendurchschnitt = $sum_grades_overall / $num_grades_overall; + else + $notendurchschnitt = 0; + + if ($sum_ectsweighted_overall > 0) + $notendurchschnittgewichtet = $sum_gradeweighted_overall / $sum_ectsweighted_overall; + else + $notendurchschnittgewichtet = 0; + + $courses['overall'] = array( + 'notendurchschnitt' => number_format($notendurchschnitt, 2), + 'notendurchschnittgewichtet' => number_format($notendurchschnittgewichtet, 2), + 'ectssumme' => $sum_ects_overall, + 'ectssumme_positiv' => $sum_ects_positiv_overall + ); + return $courses; + } + + /** + * Combines the Studyplan Courses recursively with the Grades of the Student + * Grades that are found in the Studyplan are marked, the others are added to a separate list + * @param $noten reference to array of all grades. + * @param $courses reference to array of all courses. + * @param $studiensemester_kurzbz Studiensemester of the Course and Grades + */ + private function fillNotenPart(&$noten, &$courses, $studiensemester_kurzbz) + { + foreach ($courses as $key => $value) + { + foreach ($noten->retval as $notenkey => $row_noten) + { + if ($row_noten->lehrveranstaltung_id == $value['lehrveranstaltung_id'] + && $row_noten->studiensemester_kurzbz == $studiensemester_kurzbz) + { + $courses[$key]['note'] = $row_noten->note; + $courses[$key]['datum'] = $row_noten->benotungsdatum; + $noten->retval[$notenkey]->found = true; + } + if (isset($value['childs'])) + $this->fillNotenPart($noten, $courses[$key]['childs'], $studiensemester_kurzbz); + } + } + } + + /** + * Reads all the Courses recursivly and Returns an Array with the Grades and ECTS + * @param $courses array of courses + * @return array with grades and ects + */ + public function getGrades($courses) + { + $grades = array(); + foreach ($courses as $row) + { + if (isset($row['note']) && $row['note'] != '') + { + $grades[] = array( + 'note' => $row['note'], + 'ects' => $row['ects'] + ); + } + + if ($row['childs']) + { + $childgrades = $this->getGrades($row['childs']); + $grades = array_merge($grades, $childgrades); + } + } + return $grades; + } + + /** + * Helper Function to Display recursive Courses + * @param $course array if courses + * @param $depth integer defines the number parent elements + */ + static function printRow($course, $depth) + { + $ci =& get_instance(); + $ci->load->view('person/gradelist/course.php', + array( + 'course' => $course, + 'depth' => $depth + ) + ); + + if (isset($course['childs'])) + { + foreach ($course['childs'] as $row_course) + Gradelist::printRow($row_course, $depth + 1); + } + } +} diff --git a/application/controllers/system/FASMessages.php b/application/controllers/system/FASMessages.php new file mode 100644 index 000000000..6c01f73a8 --- /dev/null +++ b/application/controllers/system/FASMessages.php @@ -0,0 +1,155 @@ + 'basis/message:rw', + 'writeReply' => 'basis/message:rw' + ) + ); + + // Loads the message library + $this->load->library('MessageLib'); + + // Loads the widget library + $this->load->library('WidgetLib'); + + $this->loadPhrases( + array( + 'global', + 'ui' + ) + ); + } + + // ----------------------------------------------------------------------------------------------------------------- + // Public methods + + /** + * Write a new message + */ + public function write($sender_id) + { + $prestudent_id = $this->input->post('prestudent_id'); // recipients prestudend_id(s) + + if (!is_numeric($sender_id)) + { + show_error('The current logged user person_id is not defined'); + } + + $msgVarsData = $this->_getMsgVarsData($prestudent_id); + + // Retrieves message vars for a person from view view vw_msg_vars_person + $variablesArray = $this->messagelib->getMessageVarsPerson(); + + // Organisation units used to get the templates + $oe_kurzbz = $this->messagelib->getOeKurzbz($sender_id); + + // Admin or commoner? + $isAdmin = $this->messagelib->getIsAdmin($sender_id); + + $data = array( + 'recipients' => $msgVarsData->retval, + 'variables' => $variablesArray, + 'oe_kurzbz' => $oe_kurzbz, // used to get the templates + 'isAdmin' => $isAdmin + ); + + $this->load->view('system/messages/messageWrite', $data); + } + + /** + * Write a reply + */ + public function writeReply($sender_id, $msg_id, $receiver_id) + { + $prestudent_id = $this->input->post('prestudent_id'); // recipients prestudend_id(s) + + if (!is_numeric($sender_id)) + { + show_error('The current logged user person_id is not defined'); + } + + if (!is_numeric($msg_id)) + { + show_error('The msg_id must be a number'); + } + + if (!is_numeric($receiver_id)) + { + show_error('The receiver_id must be a number'); + } + + $msg = $this->_getMessage($msg_id, $receiver_id); + + $msgVarsData = $this->_getMsgVarsData($prestudent_id); + + // Retrieves message vars for a person from view view vw_msg_vars_person + $variablesArray = $this->messagelib->getMessageVarsPerson(); + + // Organisation units used to get the templates + $oe_kurzbz = $this->messagelib->getOeKurzbz($sender_id); + + // Admin or commoner? + $isAdmin = $this->messagelib->getIsAdmin($sender_id); + + $data = array( + 'recipients' => $msgVarsData->retval, + 'message' => $msg, + 'variables' => $variablesArray, + 'oe_kurzbz' => $oe_kurzbz, // used to get the templates + 'isAdmin' => $isAdmin + ); + + $this->load->view('system/messages/messageWrite', $data); + } + + // ----------------------------------------------------------------------------------------------------------------- + // Private methods + + /** + * + */ + private function _getMessage($msg_id, $receiver_id) + { + $msg = $this->messagelib->getMessage($msg_id, $receiver_id); + if (isError($msg)) + { + show_error($msg->retval); + } + elseif (!hasData($msg)) + { + show_error('The selected message does not exist'); + } + else + { + $msg = $msg->retval[0]; + } + + return $msg; + } + + /** + * Retrieves message vars from view vw_msg_vars + */ + private function _getMsgVarsData($prestudent_id) + { + $this->load->model('system/Message_model', 'MessageModel'); + $msgVarsData = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id); + + if (isError($msgVarsData)) + { + show_error($msgVarsData->retval); + } + + return $msgVarsData; + } +} diff --git a/application/controllers/system/Messages.php b/application/controllers/system/Messages.php index d197f8458..ed6d12044 100644 --- a/application/controllers/system/Messages.php +++ b/application/controllers/system/Messages.php @@ -4,8 +4,6 @@ if (! defined('BASEPATH')) exit('No direct script access allowed'); class Messages extends Auth_Controller { - private $uid; // contains the UID of the logged user - /** * */ @@ -28,344 +26,189 @@ class Messages extends Auth_Controller // Loads the widget library $this->load->library('WidgetLib'); - $this->load->model('person/Person_model', 'PersonModel'); + $this->load->model('system/Message_model', 'MessageModel'); $this->loadPhrases( array( 'global', - 'person', - 'lehre', - 'ui', - 'infocenter' + 'ui' ) ); - - $this->_setAuthUID(); // sets property uid } + // ----------------------------------------------------------------------------------------------------------------- + // Public methods + /** - * write + * Write a new message */ - public function write($sender_id = null, $msg_id = null, $receiver_id = null) + public function write() { - if ($sender_id === null) - { - $user_person = $this->PersonModel->getByUid($this->uid); - - if (isError($user_person)) - { - show_error($user_person->retval); - } - $sender_id = $user_person->retval[0]->person_id; - } - - $prestudent_id = $this->input->post('prestudent_id'); $person_id = $this->input->post('person_id'); - $personOnly = false; + $sender_id = null; - if (isset($person_id) && !isset($prestudent_id)) - $personOnly = true; - - $msg = null; - - // Get message data if possible - if (is_numeric($msg_id) && is_numeric($receiver_id)) + $authUser = $this->_getAuthUser(); + if (isError($authUser)) { - $msg = $this->messagelib->getMessage($msg_id, $receiver_id); - if ($msg->error) - { - show_error($msg->retval); - } - else - { - $msg = $msg->retval[0]; - } + show_error($authUser->retval); } - - $variablesArray = array(); - $msgVarsData = array(); - - // Get variables - $this->load->model('system/Message_model', 'MessageModel'); - if ($personOnly === true) - $this->getPersonMsgData($person_id, $variablesArray, $msgVarsData); else - $this->getPrestudentMsgData($prestudent_id, $variablesArray, $msgVarsData); - - // Organisation units used to get the templates - $oe_kurzbz = array(); // A person can have more organisation units - $this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel'); - $benutzerResult = $this->BenutzerfunktionModel->getByPersonId($sender_id); - if (hasData($benutzerResult)) { - foreach ($benutzerResult->retval as $val) - { - $oe_kurzbz[] = $val->oe_kurzbz; - } + $sender_id = getData($authUser)[0]->person_id; } - // Admin or commoner? - $this->load->model('system/Benutzerrolle_model', 'BenutzerrolleModel'); - $isAdmin = $this->BenutzerrolleModel->isAdminByPersonId($sender_id); - if (isError($isAdmin)) - { - show_error($isAdmin->retval); - } + $msgVarsData = $this->_getMsgVarsData($person_id); + + // Retrieves message vars for a person from view view vw_msg_vars_person + $variablesArray = $this->messagelib->getMessageVarsPerson(); + + // Organisation units used to get the templates + $oe_kurzbz = $this->messagelib->getOeKurzbz($sender_id); + + // Admin or commoner? + $isAdmin = $this->messagelib->getIsAdmin($sender_id); $data = array ( - 'sender_id' => $sender_id, - 'receivers' => isset($msgVarsData->retval) ? $msgVarsData->retval : $msgVarsData, - 'message' => $msg, + 'recipients' => $msgVarsData->retval, 'variables' => $variablesArray, 'oe_kurzbz' => $oe_kurzbz, // used to get the templates - 'isAdmin' => $isAdmin->retval, - 'personOnly' => $personOnly//indicates if sent only to persons + 'isAdmin' => $isAdmin ); - $v = $this->load->view('system/messageWrite', $data); + $this->load->view('system/messages/messageWrite', $data); } /** - * gets Message Variables and their data for Prestudent - * @param $prestudent_id - * @param $variablesArray to be filled with variable names - * @param $msgVarsData to be filled with variable data + * Send message */ - private function getPrestudentMsgData($prestudent_id, &$variablesArray, &$msgVarsData) + public function send() { - $msgVarsData = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id); - if ($msgVarsData->error) - { - show_error($msgVarsData->retval); - } + $persons = $this->input->post('persons'); + $relationmessage_id = $this->input->post('relationmessage_id'); - if (!hasData($variables = $this->MessageModel->getMessageVars())) - { - unset($variables); - } - else - { - $variablesArray = array(); - // Skip person_id and prestudent_id - for ($i = 2; $i < count($variables->retval); $i++) - { - $variablesArray['{'.str_replace(" ", "_", strtolower($variables->retval[$i])).'}'] = $variables->retval[$i]; - } - } + $msgVarsData = $this->MessageModel->getMsgVarsDataByPersonId($persons); - array_shift($variables->retval); // Remove person_id - array_shift($variables->retval); // Remove prestudent_id - } + $send = $this->_send($msgVarsData, $relationmessage_id); - /** - * gets Message Variables and their data for Person - * @param $person_id - * @param $variablesArray to be filled with variable names - * @param $msgVarsData to be filled with variable data - */ - private function getPersonMsgData($person_id, &$variablesArray, &$msgVarsData) - { - $msgVarsData = $this->MessageModel->getMsgVarsDataByPersonId($person_id); - if ($msgVarsData->error) - { - show_error($msgVarsData->retval); - } - - if (!hasData($variables = $this->MessageModel->getMessageVarsPerson())) - { - unset($variables); - } - else - { - $variablesArray = array(); - // Skip person_id - for ($i = 1; $i < count($variables->retval); $i++) - { - $variablesArray['{'.str_replace(" ", "_", strtolower($variables->retval[$i])).'}'] = $variables->retval[$i]; - } - array_shift($variables->retval); // Remove person_id - } - } - - /** - * send - */ - public function send($sender_id = null) - { - $result = $this->_execSend($sender_id); - - if (isSuccess($result)) - { - echo "Messages sent successfully"; - } - else - { - echo "Error when sending message"; - } + $this->load->view('system/messages/messageSent', array('success' => isSuccess($send))); } /** * Send message, response is in JSON format - * @param $sender_id */ - public function sendJson($sender_id = null) + public function sendJson() { - $result = $this->_execSend($sender_id); + $prestudents = $this->input->post('prestudents'); + $vorlage_kurzbz = $this->input->post('vorlage_kurzbz'); + $oe_kurzbz = $this->input->post('oe_kurzbz'); + $msgVars = $this->input->post('msgvars'); - $this->output - ->set_content_type('application/json') - ->set_output(json_encode($result)); + $msgVarsData = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudents); + + $this->load->model('crm/Prestudent_model', 'PrestudentModel'); + $prestudentsData = $this->PrestudentModel->getOrganisationunits($prestudents); + + // Adds the organisation unit to each prestudent + if (isEmptyString($oe_kurzbz) && hasData($msgVarsData) && hasData($prestudentsData)) + { + for ($i = 0; $i < count($msgVarsData->retval); $i++) + { + for ($p = 0; $p < count($prestudentsData->retval); $p++) + { + if ($prestudentsData->retval[$p]->prestudent_id == $msgVarsData->retval[$i]->prestudent_id) + { + $msgVarsData->retval[$i]->oe_kurzbz = $prestudentsData->retval[$p]->oe_kurzbz; + break; + } + } + } + } + + $send = $this->_send($msgVarsData, null, $oe_kurzbz, $vorlage_kurzbz, $msgVars); + if (isError($send)) + { + $this->outputJsonError($send->retval); + } + else + { + $this->outputJsonSuccess($send->retval); + } } + // ----------------------------------------------------------------------------------------------------------------- + // Private methods + /** * Executes message sending * @param $sender_id * @return array wether execution was successfull - error or success */ - private function _execSend($sender_id) + private function _send($msgVarsData, $relationmessage_id = null, $oe_kurzbz = null, $vorlage_kurzbz = null, $msgVars = null) { - if ($sender_id === null) - { - $user_person = $this->PersonModel->getByUid($this->uid); - - if (!hasData($user_person)) - { - return error('no sender'); - } - $sender_id = $user_person->retval[0]->person_id; - } - $subject = $this->input->post('subject'); $body = $this->input->post('body'); - $prestudents = $this->input->post('prestudents'); - $persons = $this->input->post('persons'); - $relationmessage_id = $this->input->post('relationmessage_id'); - $vorlage_kurzbz = $this->input->post('vorlage_kurzbz'); - $oe_kurzbz = $this->input->post('oe_kurzbz'); - $msgvars = $this->input->post('msgvars'); - if (!isset($relationmessage_id) || $relationmessage_id == '') - { - $relationmessage_id = null; - } + $authUser = $this->_getAuthUser(); - // get message data of prestudents or persons - $prestudentsData = array(); - if ($prestudents !== null) - { - $data = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudents); - // - $this->load->model('crm/Prestudent_model', 'PrestudentModel'); - $prestudentsData = $this->PrestudentModel->getOrganisationunits($prestudents); - } - else - $data = $this->MessageModel->getMsgVarsDataByPersonId($persons); + if (isError($authUser)) return $authUser; - // send message(s) - if (hasData($data)) + $sender_id = getData($authUser)[0]->person_id; + + // Send message(s) + if (hasData($msgVarsData)) { - for ($i = 0; $i < count($data->retval); $i++) + // Loads the person log library + $this->load->library('PersonLogLib'); + + for ($i = 0; $i < count($msgVarsData->retval); $i++) { $parsedText = ""; - $dataArray = (array)$data->retval[$i]; - foreach ($dataArray as $key => $val) - { - $newKey = str_replace(" ", "_", strtolower($key)); - $dataArray[$newKey] = $dataArray[$key]; - } + $msgVarsDataArray = $this->_replaceKeys((array)$msgVarsData->retval[$i]); // replaces array keys - // if oe not given, get from prestudent - if (isEmptyString($oe_kurzbz) && hasData($prestudentsData)) - { - for ($p = 0; $p < count($prestudentsData->retval); $p++) - { - if ($prestudentsData->retval[$p]->prestudent_id == $data->retval[$i]->prestudent_id) - { - $oe_kurzbz = $prestudentsData->retval[$p]->oe_kurzbz; - } - } - } - - // send without vorlage + // Send without vorlage if (isEmptyString($vorlage_kurzbz)) { - $parsedText = $this->messagelib->parseMessageText($body, $dataArray); - $msg = $this->messagelib->sendMessage($sender_id, $dataArray['person_id'], $subject, $parsedText, PRIORITY_NORMAL, $relationmessage_id, $oe_kurzbz); + $parsedText = $this->messagelib->parseMessageText($body, $msgVarsDataArray); + $msg = $this->messagelib->sendMessage($sender_id, $msgVarsDataArray['person_id'], $subject, $parsedText, PRIORITY_NORMAL, $relationmessage_id, $oe_kurzbz); } - // send with vorlage + // Send with vorlage else { - if (isset($msgvars) && is_array($msgvars)) + if (is_array($msgVars)) { - //additional message variables - foreach ($msgvars as $key => $msgvar) + // Additional message variables + foreach ($msgVars as $key => $msgvar) { - $dataArray[$key] = $msgvar; + $msgVarsDataArray[$key] = $msgvar; } } - $msg = $this->messagelib->sendMessageVorlage($sender_id, $dataArray['person_id'], $vorlage_kurzbz, $oe_kurzbz, $dataArray); + $msg = $this->messagelib->sendMessageVorlage($sender_id, $msgVarsDataArray['person_id'], $vorlage_kurzbz, $oe_kurzbz, $msgVarsDataArray); } - if ($msg->error) - { - return error($msg->msg); - } + if (isError($msg)) return $msg; - // Loads the person log library - $this->load->library('PersonLogLib'); - - //write log entry - $this->personloglib->log( - $dataArray['person_id'], + // Write log entry + $personLog = $this->personloglib->log( + $msgVarsDataArray['person_id'], 'Action', array( 'name' => 'Message sent', - 'message' => 'Message sent from person '.$sender_id.' to '.$dataArray['person_id'].', messageid '.$msg->retval, + 'message' => 'Message sent from person '.$sender_id.' to '.$msgVarsDataArray['person_id'].', messageid '.$msg->retval, 'success' => 'true' ), 'kommunikation', 'core', null, - $this->uid + getAuthUID() ); - } - return success('success'); + + return success('Messages sent successfully'); } - } - - /** - * getPersonId - */ - private function getPersonId() - { - $person_id = null; - - if ($this->input->get('person_id') !== null) + else { - $person_id = $this->input->get('person_id'); + return $msgVarsData; } - elseif ($this->input->post('person_id') !== null) - { - $person_id = $this->input->get('person_id'); - } - - if (!is_numeric($person_id)) - { - show_error('Person_id is not numeric'); - } - - return $person_id; - } - - /** - * Retrieve the UID of the logged user and checks if it is valid - */ - private function _setAuthUID() - { - $this->uid = getAuthUID(); - - if (!$this->uid) show_error('User authentification failed'); } /** @@ -374,16 +217,27 @@ class Messages extends Auth_Controller public function getVorlage() { $vorlage_kurzbz = $this->input->get('vorlage_kurzbz'); + $result = null; - if (isset($vorlage_kurzbz)) + if (!isEmptyString($vorlage_kurzbz)) { $this->load->model('system/Vorlagestudiengang_model', 'VorlagestudiengangModel'); $this->VorlagestudiengangModel->addOrder('version','DESC'); - $result = $this->VorlagestudiengangModel->loadWhere(array('vorlage_kurzbz' => $vorlage_kurzbz)); - $this->output - ->set_content_type('application/json') - ->set_output(json_encode($result)); + $result = $this->VorlagestudiengangModel->loadWhere(array('vorlage_kurzbz' => $vorlage_kurzbz)); + } + else + { + $result = error('The given vorlage_kurzbz is not valid'); + } + + if (isError($result) || !hasData($result)) + { + $this->outputJsonError($result->retval); + } + else + { + $this->outputJsonSuccess($result->retval); } } @@ -392,35 +246,29 @@ class Messages extends Auth_Controller */ public function parseMessageText() { - $prestudent_id = $this->input->get('prestudent_id'); $person_id = $this->input->get('person_id'); $text = $this->input->get('text'); - + $parsedText = ''; $data = null; - if (isset($person_id) && !isset($prestudent_id)) - $data = $this->MessageModel->getMsgVarsDataByPersonId($person_id); - elseif (isset($prestudent_id)) - $data = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id); - - if (isset($data)) + if (is_numeric($person_id)) { - $parsedText = ""; - if (hasData($data)) - { - $dataArray = (array)$data->retval[0]; - foreach ($dataArray as $key => $val) - { - $newKey = str_replace(" ", "_", strtolower($key)); - $dataArray[$newKey] = $dataArray[$key]; - } + $data = $this->MessageModel->getMsgVarsDataByPersonId($person_id); + } + else + { + $data = error('The given person_id is not a valid number'); + } - $parsedText = $this->messagelib->parseMessageText($text, $dataArray); - } + if (isError($data) || !hasData($data)) + { + $this->outputJsonError($data->retval); + } + else + { + $parsedText = $this->messagelib->parseMessageText($text, $this->_replaceKeys((array)$data->retval[0])); - $this->output - ->set_content_type('application/json') - ->set_output(json_encode($parsedText)); + $this->outputJsonSuccess($parsedText); } } @@ -433,6 +281,7 @@ class Messages extends Auth_Controller { $msg_id = $this->input->get('msg_id'); $receiver_id = $this->input->get('receiver_id'); + $msg = $this->messagelib->getMessage($msg_id, $receiver_id); $this->output @@ -440,4 +289,51 @@ class Messages extends Auth_Controller ->set_output(json_encode(array($msg->retval[0]))); } + // ----------------------------------------------------------------------------------------------------------------- + // Private methods + + /** + * Retrieves message vars from view vw_msg_vars + */ + private function _getMsgVarsData($person_id) + { + $msgVarsData = $this->MessageModel->getMsgVarsDataByPersonId($person_id); + if (isError($msgVarsData)) + { + show_error($msgVarsData->retval); + } + + return $msgVarsData; + } + + /** + * + */ + private function _getAuthUser() + { + $sender_id = null; + + $this->load->model('person/Person_model', 'PersonModel'); + $authUser = $this->PersonModel->getByUid(getAuthUID()); + + if (!hasData($authUser)) $authUser = error('The current logged user person_id is not defined'); + + return $authUser; + } + + /** + * + */ + private function _replaceKeys($data) + { + $tmpData = array(); + + // Replaces data array keys to a lowercase without spaces string + foreach ($data as $key => $val) + { + $tmpData[str_replace(' ', '_', strtolower($key))] = $val; + } + + return $tmpData; + } } diff --git a/application/controllers/system/Phrases.php b/application/controllers/system/Phrases.php index 67c5d24f9..070750b7c 100644 --- a/application/controllers/system/Phrases.php +++ b/application/controllers/system/Phrases.php @@ -16,7 +16,6 @@ class Phrases extends Auth_Controller 'view' => 'system/phrase:r', 'deltext' => 'system/phrase:rw', 'edit' => 'system/phrase:rw', - 'write' => 'system/phrase:rw', 'save' => 'system/phrase:rw', 'newText' => 'system/phrase:rw', 'editText' => 'system/phrase:rw', @@ -115,19 +114,6 @@ class Phrases extends Auth_Controller $this->load->view('system/phrases/phrasesEdit', $data); } - /** - * - */ - public function write() - { - $data = array( - 'subject' => 'TestSubject', - 'body' => 'TestDevelopmentBodyText' - ); - - $this->load->view('system/messageWrite', $data); - } - /** * */ diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index 4c71da84a..431d0ecd8 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -631,7 +631,7 @@ class InfoCenter extends Auth_Controller public function reloadMessages($person_id) { $messages = $this->MessageModel->getMessagesOfPerson($person_id, 1); - $this->load->view('system/messageList.php', array('messages' => $messages->retval)); + $this->load->view('system/messages/messageList.php', array('messages' => $messages->retval)); } /** @@ -1166,8 +1166,6 @@ class InfoCenter extends Auth_Controller show_error($user_person->retval); } - $messagelink = site_url('/system/Messages/write/'.$user_person->retval[0]->person_id); - $data = array ( 'lockedby' => $lockedby, 'lockedbyother' => $lockedbyother, @@ -1177,8 +1175,7 @@ class InfoCenter extends Auth_Controller 'messages' => $messages->retval, 'logs' => $logs, 'notizen' => $notizen->retval, - 'notizenbewerbung' => $notizen_bewerbung->retval, - 'messagelink' => $messagelink + 'notizenbewerbung' => $notizen_bewerbung->retval ); return $data; diff --git a/application/helpers/hlp_message_helper.php b/application/helpers/hlp_message_helper.php index 1197a02ac..c8bbcaf87 100644 --- a/application/helpers/hlp_message_helper.php +++ b/application/helpers/hlp_message_helper.php @@ -82,6 +82,21 @@ function hasData($result) return false; } +/** + * Returns the property retval if $result contains data + */ +function getData($result) +{ + $data = null; + + if (hasData($result)) + { + $data = $result->retval; + } + + return $data; +} + /** * Checks if the result represents an error * Wrapper function of isSuccess, more readable code diff --git a/application/libraries/MessageLib.php b/application/libraries/MessageLib.php index 45ccce876..c539a0bc7 100644 --- a/application/libraries/MessageLib.php +++ b/application/libraries/MessageLib.php @@ -9,36 +9,41 @@ class MessageLib { const MSG_INDX_PREFIX = 'message_'; + private $_ci; + /** * Constructor */ public function __construct() { // Get code igniter instance - $this->ci =& get_instance(); + $this->_ci =& get_instance(); // Loads message configuration - $this->ci->config->load('message'); + $this->_ci->config->load('message'); // CI Parser library - $this->ci->load->library('parser'); + $this->_ci->load->library('parser'); // Loads LogLib - $this->ci->load->library('LogLib'); + $this->_ci->load->library('LogLib'); // Loads VorlageLib - $this->ci->load->library('VorlageLib'); + $this->_ci->load->library('VorlageLib'); // Loads Mail library - $this->ci->load->library('MailLib'); + $this->_ci->load->library('MailLib'); // Loading models - $this->ci->load->model('system/Message_model', 'MessageModel'); - $this->ci->load->model('system/MsgStatus_model', 'MsgStatusModel'); - $this->ci->load->model('system/Recipient_model', 'RecipientModel'); - $this->ci->load->model('system/Attachment_model', 'AttachmentModel'); + $this->_ci->load->model('system/Message_model', 'MessageModel'); + $this->_ci->load->model('system/MsgStatus_model', 'MsgStatusModel'); + $this->_ci->load->model('system/Recipient_model', 'RecipientModel'); + $this->_ci->load->model('system/Attachment_model', 'AttachmentModel'); // Loads phrases - $this->ci->lang->load('message'); + $this->_ci->lang->load('message'); } + //------------------------------------------------------------------------------------------------------------------ + // Public methods + /** * getMessage() - returns the specified received message for a specified person */ @@ -49,9 +54,7 @@ class MessageLib if (!is_numeric($person_id)) return $this->_error('', MSG_ERR_INVALID_RECIPIENTS); - $msg = $this->ci->RecipientModel->getMessage($msg_id, $person_id); - - return $msg; + return $this->_ci->RecipientModel->getMessage($msg_id, $person_id); } /** @@ -62,9 +65,7 @@ class MessageLib if (isEmptyString($uid)) return $this->_error('', MSG_ERR_INVALID_MSG_ID); - $msg = $this->ci->RecipientModel->getMessagesByUID($uid, $oe_kurzbz, $all); - - return $msg; + return $this->_ci->RecipientModel->getMessagesByUID($uid, $oe_kurzbz, $all); } /** @@ -75,9 +76,7 @@ class MessageLib if (!is_numeric($person_id)) return $this->_error('', MSG_ERR_INVALID_MSG_ID); - $msg = $this->ci->RecipientModel->getMessagesByPerson($person_id, $oe_kurzbz, $all); - - return $msg; + return $this->_ci->RecipientModel->getMessagesByPerson($person_id, $oe_kurzbz, $all); } /** @@ -88,9 +87,7 @@ class MessageLib if (!is_numeric($person_id)) return $this->_error('', MSG_ERR_INVALID_MSG_ID); - $msg = $this->ci->MessageModel->getMessagesByPerson($person_id, $oe_kurzbz, $all); - - return $msg; + return $this->_ci->MessageModel->getMessagesByPerson($person_id, $oe_kurzbz, $all); } /** @@ -101,7 +98,7 @@ class MessageLib if (isEmptyString($token)) return $this->_error('', MSG_ERR_INVALID_TOKEN); - $result = $this->ci->RecipientModel->getMessageByToken($token); + $result = $this->_ci->RecipientModel->getMessageByToken($token); if (hasData($result)) { // Searches for a status that is different from unread @@ -124,7 +121,7 @@ class MessageLib 'status' => MSG_STATUS_READ ); - $resultIns = $this->ci->MsgStatusModel->insert($statusKey); + $resultIns = $this->_ci->MsgStatusModel->insert($statusKey); // If an error occured while writing on data base, then return it if (isError($resultIns)) { @@ -144,9 +141,7 @@ class MessageLib if (!is_numeric($person_id)) return $this->_error('', MSG_ERR_INVALID_RECIPIENTS); - $msg = $this->ci->RecipientModel->getCountUnreadMessages($person_id, $oe_kurzbz); - - return $msg; + return $this->_ci->RecipientModel->getCountUnreadMessages($person_id, $oe_kurzbz); } /** @@ -172,7 +167,7 @@ class MessageLib } // Searches if the status is already present - $result = $this->ci->MsgStatusModel->load(array($message_id, $person_id, $status)); + $result = $this->_ci->MsgStatusModel->load(array($message_id, $person_id, $status)); if (hasData($result)) { // status already present @@ -186,7 +181,7 @@ class MessageLib 'status' => $status ); - $result = $this->ci->MsgStatusModel->insert($statusKey); + $result = $this->_ci->MsgStatusModel->insert($statusKey); } return $result; @@ -199,7 +194,7 @@ class MessageLib { if (!is_numeric($sender_id)) { - $sender_id = $this->ci->config->item('system_person_id'); + $sender_id = $this->_ci->config->item('system_person_id'); } $receivers = $this->_getReceivers($receiver_id, $oe_kurzbz); @@ -230,7 +225,7 @@ class MessageLib if (isSuccess($result)) { // If the system is configured to send messages immediately - if ($this->ci->config->item('send_immediately') === true) + if ($this->_ci->config->item('send_immediately') === true) { // Send message by email! $resultSendEmail = $this->sendOne($result->retval, $subject, $body, $multiPartMime); @@ -274,7 +269,7 @@ class MessageLib { if (!is_numeric($sender_id)) { - $sender_id = $this->ci->config->item('system_person_id'); + $sender_id = $this->_ci->config->item('system_person_id'); } $receivers = $this->_getReceivers($receiver_id, $oe_kurzbz); @@ -290,7 +285,7 @@ class MessageLib else { // Load reveiver data to get its relative language - $this->ci->load->model('person/Person_model', 'PersonModel'); + $this->_ci->load->model('person/Person_model', 'PersonModel'); } // Looping on receivers @@ -299,14 +294,14 @@ class MessageLib $receiver_id = $receivers->retval[$i]->person_id; // Checks if the receiver exists - $result = $this->ci->PersonModel->load($receiver_id); + $result = $this->_ci->PersonModel->load($receiver_id); if (hasData($result)) { // Retrives the language of the logged user $sprache = getUserLanguage(); // Loads template data - $result = $this->ci->vorlagelib->loadVorlagetext($vorlage_kurzbz, $oe_kurzbz, $orgform_kurzbz, $sprache); + $result = $this->_ci->vorlagelib->loadVorlagetext($vorlage_kurzbz, $oe_kurzbz, $orgform_kurzbz, $sprache); if (isSuccess($result)) { // If the text and the subject of the template are not empty @@ -314,9 +309,9 @@ class MessageLib !isEmptyString($result->retval[0]->text) && !isEmptyString($result->retval[0]->subject)) { // Parses template text - $parsedText = $this->ci->vorlagelib->parseVorlagetext($result->retval[0]->text, $data); + $parsedText = $this->_ci->vorlagelib->parseVorlagetext($result->retval[0]->text, $data); // Parses subject - $subject = $this->ci->vorlagelib->parseVorlagetext($result->retval[0]->subject, $data); + $subject = $this->_ci->vorlagelib->parseVorlagetext($result->retval[0]->subject, $data); // Save message $result = $this->_saveMessage($sender_id, $receiver_id, $subject, $parsedText, $relationmessage_id, $oe_kurzbz); @@ -324,7 +319,7 @@ class MessageLib if (isSuccess($result)) { // If the system is configured to send messages immediately - if ($this->ci->config->item('send_immediately') === true) + if ($this->_ci->config->item('send_immediately') === true) { // Send message by email! $resultSendEmail = $this->sendOne($result->retval, $subject, $parsedText, $multiPartMime); @@ -389,21 +384,21 @@ class MessageLib $sent = true; // optimistic expectation // Gets standard configs - $cfg = $this->ci->maillib->getConfigs(); + $cfg = $this->_ci->maillib->getConfigs(); $cfg->email_number_to_sent = $numberToSent; $cfg->email_number_per_time_range = $numberPerTimeRange; $cfg->email_time_range = $email_time_range; $cfg->email_from_system = $email_from_system; // Overrides configs with the parameters - $this->ci->maillib->overrideConfigs($cfg); + $this->_ci->maillib->overrideConfigs($cfg); - // Gets a number ($this->ci->maillib->getMaxEmailToSent()) of unsent messages from DB + // Gets a number ($this->_ci->maillib->getMaxEmailToSent()) of unsent messages from DB // having EMAIL_KONTAKT_TYPE as relative contact type - $result = $this->ci->RecipientModel->getMessages( + $result = $this->_ci->RecipientModel->getMessages( EMAIL_KONTAKT_TYPE, null, - $this->ci->maillib->getConfigs()->email_number_to_sent + $this->_ci->maillib->getConfigs()->email_number_to_sent ); // Checks if errors were occurred if (isSuccess($result)) @@ -418,14 +413,14 @@ class MessageLib if ((!is_null($result->retval[$i]->receiver) && $result->retval[$i]->receiver != '') || (!is_null($result->retval[$i]->employeecontact) && $result->retval[$i]->employeecontact != '')) { - $href = $this->ci->config->item('message_server').$this->ci->config->item('message_html_view_url').$result->retval[$i]->token; + $href = $this->_ci->config->item('message_server').$this->_ci->config->item('message_html_view_url').$result->retval[$i]->token; - $vorlage = $this->ci->vorlagelib->loadVorlagetext('MessageMailHTML'); + $vorlage = $this->_ci->vorlagelib->loadVorlagetext('MessageMailHTML'); if(hasData($vorlage)) { // Using a template for the html email body - $body = $this->ci->parser->parse_string( + $body = $this->_ci->parser->parse_string( $vorlage->retval[0]->text, array( 'href' => $href, @@ -438,7 +433,7 @@ class MessageLib else { // Using a template for the html email body - $body = $this->ci->parser->parse( + $body = $this->_ci->parser->parse( 'templates/mailHTML', array( 'href' => $href, @@ -450,14 +445,14 @@ class MessageLib } if (is_null($body) || $body == '') { - $this->ci->loglib->logError('Error while parsing the mail template'); + $this->_ci->loglib->logError('Error while parsing the mail template'); } - $vorlage = $this->ci->vorlagelib->loadVorlagetext('MessageMailTXT'); + $vorlage = $this->_ci->vorlagelib->loadVorlagetext('MessageMailTXT'); if(hasData($vorlage)) { // Using a template for the plain text email body - $altBody = $this->ci->parser->parse_string( + $altBody = $this->_ci->parser->parse_string( $vorlage->retval[0]->text, array( 'href' => $href, @@ -470,7 +465,7 @@ class MessageLib else { // Using a template for the plain text email body - $altBody = $this->ci->parser->parse( + $altBody = $this->_ci->parser->parse( 'templates/mailTXT', array( 'href' => $href, @@ -482,7 +477,7 @@ class MessageLib } if (is_null($altBody) || $altBody == '') { - $this->ci->loglib->logError('Error while parsing the mail template'); + $this->_ci->loglib->logError('Error while parsing the mail template'); } // If the sender is not an employee, then system-sender is used if empty @@ -499,7 +494,7 @@ class MessageLib } // Sending email - $sent = $this->ci->maillib->send( + $sent = $this->_ci->maillib->send( $sender, $receiverContact, $result->retval[$i]->subject, @@ -512,7 +507,7 @@ class MessageLib // If errors were occurred while sending the email if (!$sent) { - $this->ci->loglib->logError('Error while sending an email'); + $this->_ci->loglib->logError('Error while sending an email'); // Writing errors in tbl_msg_recipient $sme = $this->setMessageError( $result->retval[$i]->message_id, @@ -522,7 +517,7 @@ class MessageLib ); if (!$sme) { - $this->ci->loglib->logError('Error while updating DB'); + $this->_ci->loglib->logError('Error while updating DB'); } } else @@ -532,13 +527,13 @@ class MessageLib // If some errors occurred if (!$sent) { - $this->ci->loglib->logError('Error while updating DB'); + $this->_ci->loglib->logError('Error while updating DB'); } } } else { - $this->ci->loglib->logError('This person does not have an email account'); + $this->_ci->loglib->logError('This person does not have an email account'); // Writing errors in tbl_msg_recipient $sme = $this->setMessageError( $result->retval[$i]->message_id, @@ -548,7 +543,7 @@ class MessageLib ); if (!$sme) { - $this->ci->loglib->logError('Error while updating DB'); + $this->_ci->loglib->logError('Error while updating DB'); } $sent = true; // Non blocking error } @@ -556,13 +551,13 @@ class MessageLib } else { - $this->ci->loglib->logInfo('There are no email to be sent'); + $this->_ci->loglib->logInfo('There are no email to be sent'); $sent = false; } } else { - $this->ci->loglib->logError('Something went wrong while getting data from DB'); + $this->_ci->loglib->logError('Something went wrong while getting data from DB'); $sent = false; } @@ -577,7 +572,7 @@ class MessageLib $sent = true; // optimistic expectation // Get a specific message from DB having EMAIL_KONTAKT_TYPE as relative contact type - $result = $this->ci->RecipientModel->getMessages( + $result = $this->_ci->RecipientModel->getMessages( EMAIL_KONTAKT_TYPE, null, null, @@ -598,12 +593,12 @@ class MessageLib if ($multiPartMime === true) { // Using a template for the html email body - $href = $this->ci->config->item('message_server').$this->ci->config->item('message_html_view_url').$result->retval[0]->token; + $href = $this->_ci->config->item('message_server').$this->_ci->config->item('message_html_view_url').$result->retval[0]->token; - $vorlage = $this->ci->vorlagelib->loadVorlagetext('MessageMailHTML'); + $vorlage = $this->_ci->vorlagelib->loadVorlagetext('MessageMailHTML'); if(hasData($vorlage)) { - $bodyMsg = $this->ci->parser->parse_string( + $bodyMsg = $this->_ci->parser->parse_string( $vorlage->retval[0]->text, array( 'href' => $href, @@ -615,7 +610,7 @@ class MessageLib } else { - $bodyMsg = $this->ci->parser->parse( + $bodyMsg = $this->_ci->parser->parse( 'templates/mailHTML', array( 'href' => $href, @@ -628,14 +623,14 @@ class MessageLib if (is_null($bodyMsg) || $bodyMsg == '') { // $body = $result->retval[0]->body; - $this->ci->loglib->logError('Error while parsing the html mail template'); + $this->_ci->loglib->logError('Error while parsing the html mail template'); } // Using a template for the plain text email body - $vorlage = $this->ci->vorlagelib->loadVorlagetext('MessageMailTXT'); + $vorlage = $this->_ci->vorlagelib->loadVorlagetext('MessageMailTXT'); if(hasData($vorlage)) { - $altBody = $this->ci->parser->parse_string( + $altBody = $this->_ci->parser->parse_string( $vorlage->retval[0]->text, array( 'href' => $href, @@ -647,7 +642,7 @@ class MessageLib } else { - $altBody = $this->ci->parser->parse( + $altBody = $this->_ci->parser->parse( 'templates/mailTXT', array( 'href' => $href, @@ -659,7 +654,7 @@ class MessageLib } if (is_null($altBody) || $altBody == '') { - $this->ci->loglib->logError('Error while parsing the plain text mail template'); + $this->_ci->loglib->logError('Error while parsing the plain text mail template'); } } else @@ -681,7 +676,7 @@ class MessageLib } // Sending email - $sent = $this->ci->maillib->send( + $sent = $this->_ci->maillib->send( null, $receiverContact, is_null($subject) ? $result->retval[0]->subject : $subject, // if parameter subject is not null, use it! @@ -694,7 +689,7 @@ class MessageLib // If errors were occurred while sending the email if (!$sent) { - $this->ci->loglib->logError('Error while sending an email'); + $this->_ci->loglib->logError('Error while sending an email'); // Writing errors in tbl_msg_recipient $sme = $this->setMessageError( $result->retval[0]->message_id, @@ -704,7 +699,7 @@ class MessageLib ); if (!$sme) { - $this->ci->loglib->logError('Error while updating DB'); + $this->_ci->loglib->logError('Error while updating DB'); } } else @@ -714,13 +709,13 @@ class MessageLib // If the email has been sent and the DB updated if (!$sent) { - $this->ci->loglib->logError('Error while updating DB'); + $this->_ci->loglib->logError('Error while updating DB'); } } } else { - $this->ci->loglib->logError('This person does not have an email account'); + $this->_ci->loglib->logError('This person does not have an email account'); // Writing errors in tbl_msg_recipient $sme = $this->setMessageError( $result->retval[0]->message_id, @@ -730,27 +725,100 @@ class MessageLib ); if (!$sme) { - $this->ci->loglib->logError('Error while updating DB'); + $this->_ci->loglib->logError('Error while updating DB'); } $sent = true; // Non blocking error } } else { - $this->ci->loglib->logInfo('There are no email to be sent'); + $this->_ci->loglib->logInfo('There are no email to be sent'); $sent = false; } } else { - $this->ci->loglib->logError('Something went wrong while getting data from DB'); + $this->_ci->loglib->logError('Something went wrong while getting data from DB'); $sent = false; } return $sent; } - // ------------------------------------------------------------------------ + /** + * parseMessageText + */ + public function parseMessageText($text, $data = array()) + { + return $this->_ci->parser->parse_string($text, $data, true); + } + + /** + * Gets data for Person from view vw_msg_vars_person + * @param $person_id + */ + public function getMessageVarsPerson() + { + $variablesArray = array(); + $variables = $this->_ci->MessageModel->getMessageVarsPerson(); + + if (isError($variables)) + { + show_error($variables->retval); + } + elseif (hasData($variables)) + { + // Skip person_id + for ($i = 1; $i < count($variables->retval); $i++) + { + $variablesArray['{'.str_replace(' ', '_', strtolower($variables->retval[$i])).'}'] = $variables->retval[$i]; + } + array_shift($variables->retval); // Remove person_id + } + + return $variablesArray; + } + + /** + * A person may belongs to more organisation units + */ + public function getOeKurzbz($sender_id) + { + $oe_kurzbz = array(); + + $this->_ci->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel'); + $benutzerResult = $this->_ci->BenutzerfunktionModel->getByPersonId($sender_id); + if (isError($benutzerResult)) + { + show_error($benutzerResult->retval); + } + elseif (hasData($benutzerResult)) + { + foreach ($benutzerResult->retval as $val) + { + $oe_kurzbz[] = $val->oe_kurzbz; + } + } + + return $oe_kurzbz; + } + + /** + * Admin or commoner? + */ + public function getIsAdmin($sender_id) + { + $this->_ci->load->model('system/Benutzerrolle_model', 'BenutzerrolleModel'); + $isAdmin = $this->_ci->BenutzerrolleModel->isAdminByPersonId($sender_id); + if (isError($isAdmin)) + { + show_error($isAdmin->retval); + } + + return $isAdmin->retval; + } + + //------------------------------------------------------------------------------------------------------------------ // Private methods /** @@ -761,7 +829,7 @@ class MessageLib $updated = false; // Updates table tbl_msg_recipient - $resultUpdate = $this->ci->RecipientModel->update(array($receiver_id, $message_id), $parameters); + $resultUpdate = $this->_ci->RecipientModel->update(array($receiver_id, $message_id), $parameters); // Checks if errors were occurred if (isSuccess($resultUpdate) && is_array($resultUpdate->retval)) { @@ -802,13 +870,13 @@ class MessageLib private function _getReceiversByOekurzbz($oe_kurzbz) { // Load Benutzerfunktion_model - $this->ci->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel'); + $this->_ci->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel'); // Join with table public.tbl_benutzer on field uid - $this->ci->BenutzerfunktionModel->addJoin('public.tbl_benutzer', 'uid'); + $this->_ci->BenutzerfunktionModel->addJoin('public.tbl_benutzer', 'uid'); // Get all the valid receivers id using the oe_kurzbz - $receivers = $this->ci->BenutzerfunktionModel->loadWhere( - 'oe_kurzbz = '.$this->ci->db->escape($oe_kurzbz). - ' AND funktion_kurzbz = '.$this->ci->db->escape($this->ci->config->item('assistent_function')). + $receivers = $this->_ci->BenutzerfunktionModel->loadWhere( + 'oe_kurzbz = '.$this->_ci->db->escape($oe_kurzbz). + ' AND funktion_kurzbz = '.$this->_ci->db->escape($this->_ci->config->item('assistent_function')). ' AND (NOW() BETWEEN COALESCE(datum_von, NOW()) AND COALESCE(datum_bis, NOW()))' ); @@ -851,8 +919,8 @@ class MessageLib private function _checkReceiverId($receiver_id) { // Load Person_model - $this->ci->load->model('person/Person_model', 'PersonModel'); - $result = $this->ci->PersonModel->load($receiver_id); + $this->_ci->load->model('person/Person_model', 'PersonModel'); + $result = $this->_ci->PersonModel->load($receiver_id); if (hasData($result)) { return true; @@ -867,7 +935,7 @@ class MessageLib private function _saveMessage($sender_id, $receiver_id, $subject, $body, $relationmessage_id, $oe_kurzbz) { // Starts db transaction - $this->ci->db->trans_start(false); + $this->_ci->db->trans_start(false); // Save Message $msgData = array( @@ -878,7 +946,7 @@ class MessageLib 'relationmessage_id' => $relationmessage_id, 'oe_kurzbz' => $oe_kurzbz ); - $result = $this->ci->MessageModel->insert($msgData); + $result = $this->_ci->MessageModel->insert($msgData); if (isSuccess($result)) { // Link the message with the receiver @@ -888,7 +956,7 @@ class MessageLib 'message_id' => $msg_id, 'token' => generateToken() ); - $result = $this->ci->RecipientModel->insert($recipientData); + $result = $this->_ci->RecipientModel->insert($recipientData); if (isSuccess($result)) { // Save message status @@ -897,20 +965,20 @@ class MessageLib 'person_id' => $receiver_id, 'status' => MSG_STATUS_UNREAD ); - $result = $this->ci->MsgStatusModel->insert($statusData); + $result = $this->_ci->MsgStatusModel->insert($statusData); } } - $this->ci->db->trans_complete(); + $this->_ci->db->trans_complete(); - if ($this->ci->db->trans_status() === false || isError($result)) + if ($this->_ci->db->trans_status() === false || isError($result)) { - $this->ci->db->trans_rollback(); + $this->_ci->db->trans_rollback(); $result = $this->_error($result->msg, EXIT_ERROR); } else { - $this->ci->db->trans_commit(); + $this->_ci->db->trans_commit(); $result = $this->_success($msg_id); } @@ -932,12 +1000,4 @@ class MessageLib { return success($retval, $code, MessageLib::MSG_INDX_PREFIX); } - - /** - * - */ - public function parseMessageText($text, $data = array()) - { - return $this->ci->parser->parse_string($text, $data, true); - } } diff --git a/application/libraries/StudienplanLib.php b/application/libraries/StudienplanLib.php new file mode 100644 index 000000000..c40120721 --- /dev/null +++ b/application/libraries/StudienplanLib.php @@ -0,0 +1,72 @@ +ci =& get_instance(); + + // Loads model Organisationseinheit_model + $this->ci->load->model('organisation/Studienplan_model', 'StudienplanModel'); + } + + public function getLehrveranstaltungTree($studienplan_id, $semester, $studplan = null) + { + $tree = array(); + $data = $this->ci->StudienplanModel->getStudienplanLehrveranstaltung($studienplan_id, $semester); + if(isSuccess($data) && hasData($data)) + { + $this->lehrveranstaltungen = $data->retval; + foreach($this->lehrveranstaltungen as $row) + { + if (!is_null($studplan) && $row->export != $studplan) + continue; + + if (is_null($row->studienplan_lehrveranstaltung_id_parent)) + { + $treeitem = array( + 'lehrveranstaltung_id' => $row->lehrveranstaltung_id, + 'lehrtyp_kurzbz' => $row->lehrtyp_kurzbz, + 'pflicht' => $row->pflicht, + 'bezeichnung' => $row->bezeichnung, + 'ects' => $row->ects + ); + $childs = $this->getChildElements($row->studienplan_lehrveranstaltung_id); + if(is_array($childs) && count($childs) > 0) + $treeitem['childs'] = $childs; + $tree[] = $treeitem; + } + } + } + return $tree; + } + + private function getChildElements($studienplan_lehrveranstaltung_id) + { + $subtree = array(); + + foreach($this->lehrveranstaltungen as $row) + { + if($studienplan_lehrveranstaltung_id == $row->studienplan_lehrveranstaltung_id_parent) + { + $treeitem = array( + 'lehrveranstaltung_id' => $row->lehrveranstaltung_id, + 'lehrtyp_kurzbz' => $row->lehrtyp_kurzbz, + 'pflicht' => $row->pflicht, + 'bezeichnung' => $row->bezeichnung, + 'ects' => $row->ects + ); + $childs = $this->getChildElements($row->studienplan_lehrveranstaltung_id); + if(is_array($childs)) + $treeitem['childs'] = $childs; + $subtree[] = $treeitem; + } + } + return $subtree; + } +} diff --git a/application/models/accounting/Kostenstelle_model.php b/application/models/accounting/Kostenstelle_model.php index f338b69d5..719d08835 100644 --- a/application/models/accounting/Kostenstelle_model.php +++ b/application/models/accounting/Kostenstelle_model.php @@ -13,12 +13,12 @@ class Kostenstelle_model extends DB_Model } /** - * Gets all active Kostenstellen for a geschaeftsjahr, as determined by the geschaeftsjahrvon and bis fields + * Gets Kostenstellen for a geschaeftsjahr, as determined by the geschaeftsjahrvon and bis fields * Gets Kostenstellen of current Geschaeftsjahr if Geschaeftsjahr not specified * @param $geschaeftsjahr * @return array|null Kostenstellen or empty array if no geschaeftsjahr found */ - public function getActiveKostenstellenForGeschaeftsjahr($geschaeftsjahr = null) + public function getKostenstellenForGeschaeftsjahr($geschaeftsjahr = null) { $this->load->model('organisation/geschaeftsjahr_model', 'GeschaeftsjahrModel'); @@ -47,12 +47,12 @@ class Kostenstelle_model extends DB_Model } /** - * Gets all active Kostenstellen for a geschaeftsjahr, as determined by the geschaeftsjahrvon and bis fields, together with their oe, + * Gets Kostenstellen for a geschaeftsjahr, as determined by the geschaeftsjahrvon and bis fields, together with their oe, * hierarchally sorted, gets Kostenstellen of current Geschaeftsjahr if Geschaeftsjahr not specified * @param null $geschaeftsjahr * @return array|null */ - public function getActiveKostenstellenForGeschaeftsjahrWithOe($geschaeftsjahr = null) + public function getKostenstellenForGegitschaeftsjahrWithOe($geschaeftsjahr = null) { $this->load->model('organisation/geschaeftsjahr_model', 'GeschaeftsjahrModel'); diff --git a/application/models/crm/Student_model.php b/application/models/crm/Student_model.php index 0d03fd50f..532658208 100644 --- a/application/models/crm/Student_model.php +++ b/application/models/crm/Student_model.php @@ -14,13 +14,13 @@ class Student_model extends DB_Model } // **** -// * Generiert die Matrikelnummer -// * FORMAT: 0710254001 -// * 07 = Jahr -// * 1/2/0 = WS/SS/incoming -// * 0254 = Studiengangskennzahl vierstellig -// * 001 = Laufende Nummer -// **** + // * Generiert die Matrikelnummer + // * FORMAT: 0710254001 + // * 07 = Jahr + // * 1/2/0 = WS/SS/incoming + // * 0254 = Studiengangskennzahl vierstellig + // * 001 = Laufende Nummer + // **** public function generateMatrikelnummer($studiengang_kz, $studiensemester_kurzbz) { $jahr = mb_substr($studiensemester_kurzbz, 4); diff --git a/application/models/organisation/Studienplan_model.php b/application/models/organisation/Studienplan_model.php index 5fe7ef44d..2c3b36c03 100644 --- a/application/models/organisation/Studienplan_model.php +++ b/application/models/organisation/Studienplan_model.php @@ -11,35 +11,46 @@ class Studienplan_model extends DB_Model $this->dbTable = "lehre.tbl_studienplan"; $this->pk = "studienplan_id"; } - + public function getStudienplaene($studiengang_kz) { $this->addJoin("lehre.tbl_studienordnung", "studienordnung_id"); - + return $this->loadWhere(array("studiengang_kz" => $studiengang_kz)); } - + public function getStudienplaeneBySemester($studiengang_kz, $studiensemester_kurzbz, $ausbildungssemester = null, $orgform_kurzbz = null) { $this->addJoin("lehre.tbl_studienordnung", "studienordnung_id"); $this->addJoin("lehre.tbl_studienplan_semester", "studienplan_id"); - + $whereArray = array( "tbl_studienplan.aktiv" => "TRUE", "tbl_studienordnung.studiengang_kz" => $studiengang_kz, "tbl_studienplan_semester.studiensemester_kurzbz" => $studiensemester_kurzbz ); - + if(!is_null($ausbildungssemester)) { $whereArray["tbl_studienplan_semester.semester"] = $ausbildungssemester; } - + if(!is_null($orgform_kurzbz)) { $whereArray["orgform_kurzbz"] = $orgform_kurzbz; } - + return $this->StudienplanModel->loadWhere($whereArray); } -} \ No newline at end of file + + public function getStudienplanLehrveranstaltung($studienplan_id, $semester) + { + $this->addJoin('lehre.tbl_studienplan_lehrveranstaltung', 'studienplan_id'); + $this->addJoin('lehre.tbl_lehrveranstaltung', 'lehrveranstaltung_id'); + $this->addOrder('tbl_lehrveranstaltung.sort'); + return $this->loadWhere(array( + 'studienplan_id' => $studienplan_id, + 'tbl_studienplan_lehrveranstaltung.semester' => $semester + )); + } +} diff --git a/application/views/person/gradelist/course.php b/application/views/person/gradelist/course.php new file mode 100644 index 000000000..1f1f1911b --- /dev/null +++ b/application/views/person/gradelist/course.php @@ -0,0 +1,16 @@ + +
| p->t('lehre','lehrveranstaltung');?> | +p->t('lehre','ects');?> | +p->t('lehre','note');?> | +
|---|---|---|
| + | + + | ++ |
| p->t('lehre','lehrveranstaltung');?> | +p->t('lehre','ects');?> | +p->t('lehre','note');?> | +
|---|---|---|
| + | + | + |
- Fachhochschule Technikum Wien | University of Applied Sciences Technikum Wien
-
Hoechstaedtplatz 6, 1200 Wien, AUSTRIA
-
www.technikum-wien.at
-
+ Fachhochschule Technikum Wien | University of Applied Sciences Technikum Wien
+
Hoechstaedtplatz 6, 1200 Wien, AUSTRIA
+
www.technikum-wien.at
+
+ Fachhochschule Technikum Wien | University of Applied Sciences Technikum Wien
+
Hoechstaedtplatz 6, 1200 Wien, AUSTRIA
+
www.technikum-wien.at
+