diff --git a/application/controllers/system/messages/Messages.php b/application/controllers/system/messages/Messages.php
index 869caec39..513eee634 100644
--- a/application/controllers/system/messages/Messages.php
+++ b/application/controllers/system/messages/Messages.php
@@ -92,9 +92,17 @@ class Messages extends Auth_Controller
public function parseMessageText()
{
$person_id = $this->input->get('person_id');
+ $prestudent_id = $this->input->get('prestudent_id');
$text = $this->input->get('text');
- $this->outputJson($this->CLMessagesModel->parseMessageText($person_id, $text));
+ if (!isEmptyString($person_id))
+ {
+ $this->outputJson($this->CLMessagesModel->parseMessageText($person_id, $text));
+ }
+ else
+ {
+ $this->outputJson($this->CLMessagesModel->parseMessageTextPrestudent($prestudent_id, $text));
+ }
}
// -----------------------------------------------------------------------------------------------------------------
diff --git a/application/libraries/MessageLib.php b/application/libraries/MessageLib.php
index cff457a77..5be444243 100644
--- a/application/libraries/MessageLib.php
+++ b/application/libraries/MessageLib.php
@@ -190,6 +190,30 @@ class MessageLib
return $messageVarsPerson; // otherwise returns the error
}
+ /**
+ * Retrieves message vars from view vw_msg_vars
+ */
+ public function getMessageVarsPrestudent()
+ {
+ // Retrieves message vars from view vw_msg_vars
+ $messageVars = $this->_ci->MessageModel->getMessageVars();
+ if (isSuccess($messageVars)) // if everything is ok
+ {
+ $variablesArray = array();
+ $tmpVariablesArray = getData($messageVars);
+
+ // Starts from 1 to skip the first element which is person_id
+ for ($i = 1; $i < count($tmpVariablesArray); $i++)
+ {
+ $variablesArray['{'.str_replace(' ', '_', strtolower($tmpVariablesArray[$i])).'}'] = $tmpVariablesArray[$i];
+ }
+
+ return success($variablesArray);
+ }
+
+ return $messageVars; // otherwise returns the error
+ }
+
/**
* Retrieves organisation units for each role that a user plays inside that organisation unit
*/
diff --git a/application/models/CL/Messages_model.php b/application/models/CL/Messages_model.php
index 0ede1591d..50639b55b 100644
--- a/application/models/CL/Messages_model.php
+++ b/application/models/CL/Messages_model.php
@@ -230,18 +230,18 @@ class Messages_model extends CI_Model
// Retrieves message using the given token
$messageResult = $this->MessageTokenModel->getMessageByToken($token);
- if (isError($messageResult)) show_error(getData($messageResult));
+ if (isError($messageResult)) show_error(getError($messageResult));
if (!hasData($messageResult)) show_error('No message found with the given token');
$message = getData($messageResult)[0]; // Found message data
// Set message as read
$srmsbtResult = $this->MessageTokenModel->setReadMessageStatusByToken($token);
- if (isError($srmsbtResult)) show_error(getData($srmsbtResult));
+ if (isError($srmsbtResult)) show_error(getError($srmsbtResult));
// Retrieves message sender information
$senderResult = $this->MessageTokenModel->getSenderData($message->sender_id);
- if (isError($senderResult)) show_error(getData($senderResult));
+ if (isError($senderResult)) show_error(getError($senderResult));
if (!hasData($senderResult)) show_error('No sender information found');
$sender = getData($senderResult)[0]; // Found sender data
@@ -249,7 +249,7 @@ class Messages_model extends CI_Model
// Check if the receiver is an employee
$isEmployee = false; // not by default
$isEmployeeResult = $this->MessageTokenModel->isEmployee($message->receiver_id);
- if (isError($isEmployeeResult)) show_error(getData($isEmployeeResult));
+ if (isError($isEmployeeResult)) show_error(getError($isEmployeeResult));
if (hasData($isEmployeeResult)) $isEmployee = true;
// If the sender is an employee and are present configurations to reply
@@ -277,14 +277,14 @@ class Messages_model extends CI_Model
// Retrieves message using the given token
$messageResult = $this->MessageTokenModel->getMessageByToken($token);
- if (isError($messageResult)) show_error(getData($messageResult));
+ if (isError($messageResult)) show_error(getError($messageResult));
if (!hasData($messageResult)) show_error('No message found with the given token');
$message = getData($messageResult)[0]; // Found message data
// Retrieves message sender information
$senderResult = $this->MessageTokenModel->getSenderData($message->sender_id);
- if (isError($senderResult)) show_error(getData($senderResult));
+ if (isError($senderResult)) show_error(getError($senderResult));
if (!hasData($senderResult)) show_error('No sender information found');
$sender = getData($senderResult)[0]; // Found sender data
@@ -338,7 +338,7 @@ class Messages_model extends CI_Model
// Retrieves message vars data for the given user/s
$msgVarsData = $this->MessageModel->getMsgVarsDataByPersonId($persons);
- if (isError($msgVarsData)) show_error(getData($msgVarsData));
+ if (isError($msgVarsData)) show_error(getError($msgVarsData));
if (!hasData($msgVarsData)) show_error('No recipients were given');
foreach (getData($msgVarsData) as $receiver)
@@ -381,7 +381,7 @@ class Messages_model extends CI_Model
// Retrieves message vars data for the given user/s
$msgVarsData = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudents);
- if (isError($msgVarsData)) show_error(getData($msgVarsData));
+ if (isError($msgVarsData)) show_error(getError($msgVarsData));
if (!hasData($msgVarsData)) show_error('No recipients were given');
$prestudentsData = $this->PrestudentModel->getOrganisationunits($prestudents);
@@ -425,13 +425,13 @@ class Messages_model extends CI_Model
{
// Retrieves message sender information
$senderResult = $this->MessageTokenModel->getSenderData($receiver_id);
- if (isError($senderResult)) show_error(getData($senderResult));
+ if (isError($senderResult)) show_error(getError($senderResult));
if (!hasData($senderResult)) show_error('No sender information found');
$sender = getData($senderResult)[0]; // Found sender data
$messageResult = $this->MessageTokenModel->getMessageByToken($token);
- if (isError($messageResult)) show_error(getData($messageResult));
+ if (isError($messageResult)) show_error(getError($messageResult));
// Security check! It is possible to reply only to a received message!!
if (!hasData($messageResult) || $relationmessage_id != getData($messageResult)[0]->message_id)
{
@@ -537,6 +537,32 @@ class Messages_model extends CI_Model
return $parseMessageText;
}
+ /**
+ * Parse the given given text using data from the given user
+ * Use the CI parser which performs simple text substitution for pseudo-variable
+ */
+ public function parseMessageTextPrestudent($prestudent_id, $text)
+ {
+ $parseMessageText = error('The given prestudent_id is not a valid number');
+
+ if (is_numeric($prestudent_id))
+ {
+ $parseMessageText = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id);
+ }
+
+ if (hasData($parseMessageText))
+ {
+ $parseMessageText = success(
+ parseText(
+ $text,
+ $this->_lowerReplaceSpaceArrayKeys((array)getData($parseMessageText)[0])
+ )
+ );
+ }
+
+ return $parseMessageText;
+ }
+
/**
* Outputs message data for a message (identified my msg id and receiver id) in JSON format
*/
@@ -638,8 +664,9 @@ class Messages_model extends CI_Model
*/
private function _prepareHtmlWriteTemplate($info, $message_id, $recipient_id)
{
+
// Checks that info parameter is valid
- if (isError($info)) show_error(getData($info));
+ if (isError($info)) show_error(getError($info));
if (!hasData($info)) show_error('No recipients were given');
// If the message id and recipient id are given, then both they must be valid numbers
@@ -678,7 +705,7 @@ class Messages_model extends CI_Model
{
// Retrieves a received message from tbl_msg_recipient
$messageResult = $this->messagelib->getMessage($message_id, $recipient_id);
- if (isError($messageResult)) show_error(getData($messageResult));
+ if (isError($messageResult)) show_error(getError($messageResult));
if (!hasData($messageResult)) show_error('The selected message does not exist');
$message = getData($messageResult)[0];
@@ -689,9 +716,25 @@ class Messages_model extends CI_Model
}
// ---------------------------------------------------------------------------------------
- // Retrieves message vars from database view vw_msg_vars_person
- $variablesResult = $this->messagelib->getMessageVarsPerson();
- if (isError($variablesResult)) show_error(getData($variablesResult));
+ // Retrieves message vars from database view vw_msg_vars/vw_msg_vars_person
+ $variablesResult = null;
+ $type = '';
+
+ // If data contains a prestudent id
+ // NOTE:
+ // - info is checked at the beginning of this method so it is safe to use getData($info)[0]
+ // - the provided data inside info are all persons or prestudents, so it is safe to check only the first one
+ if (isset(getData($info)[0]->prestudent_id) && is_numeric(getData($info)[0]->prestudent_id))
+ {
+ $variablesResult = $this->messagelib->getMessageVarsPrestudent();
+ $type = '';
+ }
+ else
+ {
+ $variablesResult = $this->messagelib->getMessageVarsPerson();
+ $type = '';
+ }
+ if (isError($variablesResult)) show_error(getError($variablesResult));
// Then builds an array that contains objects with id (person_id) and description (Vorname + Nachname) of recipient
$variables = array();
@@ -712,9 +755,9 @@ class Messages_model extends CI_Model
// ---------------------------------------------------------------------------------------
// Organisation units and a boolean (true if the sender is administrator) are used to get the templates
$organisationUnits = $this->messagelib->getOeKurzbz($sender_id);
- if (isError($organisationUnits)) show_error(getData($organisationUnits));
+ if (isError($organisationUnits)) show_error(getError($organisationUnits));
$senderIsAdmin = $this->BenutzerrolleModel->isAdminByPersonId($sender_id);
- if (isError($senderIsAdmin)) show_error(getData($senderIsAdmin));
+ if (isError($senderIsAdmin)) show_error(getError($senderIsAdmin));
// ---------------------------------------------------------------------------------------
// Returns data as an array
@@ -727,7 +770,8 @@ class Messages_model extends CI_Model
'senderIsAdmin' => getData($senderIsAdmin),
'recipientsArray' => $recipientsArray,
'persons' => $persons,
- 'relationmessage_id' => $relationmessage
+ 'relationmessage_id' => $relationmessage,
+ 'type' => $type
);
}
}
diff --git a/application/views/system/messages/htmlWriteTemplate.php b/application/views/system/messages/htmlWriteTemplate.php
index 40d13a7d6..5309e0cb5 100644
--- a/application/views/system/messages/htmlWriteTemplate.php
+++ b/application/views/system/messages/htmlWriteTemplate.php
@@ -158,6 +158,7 @@
+
diff --git a/public/js/messaging/messageWrite.js b/public/js/messaging/messageWrite.js
index 1b3efcda4..04a262cbc 100644
--- a/public/js/messaging/messageWrite.js
+++ b/public/js/messaging/messageWrite.js
@@ -19,12 +19,20 @@ function tinymcePreviewSetContent()
function parseMessageText(receiver_id, text)
{
+ var data = {text: text};
+
+ if ($("#type").val() == 'person_id')
+ {
+ data.person_id = receiver_id;
+ }
+ else
+ {
+ data.prestudent_id = receiver_id;
+ }
+
FHC_AjaxClient.ajaxCallGet(
"system/messages/Messages/parseMessageText",
- {
- person_id: receiver_id,
- text: text
- },
+ data,
{
successCallback: function(data, textStatus, jqXHR) {