Merge branch 'messages'

This commit is contained in:
Paolo
2019-02-25 15:57:40 +01:00
8 changed files with 320 additions and 262 deletions
+13 -67
View File
@@ -33,6 +33,7 @@ class ViewMessage extends FHC_Controller
// Load model MessageToken_model, not calling the authentication system
$this->load->model('system/MessageToken_model', 'MessageTokenModel');
$this->load->model('CL/Messages_model', 'CLMessagesModel');
}
/**
@@ -45,10 +46,10 @@ class ViewMessage extends FHC_Controller
if ($msg->error)
{
show_error($msg->retval);
show_error(getData($msg));
}
if (is_array($msg->retval) && count($msg->retval) > 0)
if (is_array(getData($msg)) && count(getData($msg)) > 0)
{
$setReadMessageStatusByToken = $this->MessageTokenModel->setReadMessageStatusByToken($token);
@@ -57,8 +58,8 @@ class ViewMessage extends FHC_Controller
show_error($msg->$setReadMessageStatusByToken);
}
$sender_id = $msg->retval[0]->sender_id;
$receiver_id = $msg->retval[0]->receiver_id;
$sender_id = getData($msg)[0]->sender_id;
$receiver_id = getData($msg)[0]->receiver_id;
$sender = $this->MessageTokenModel->getSenderData($sender_id);
// To decide how to change the redirection
@@ -75,8 +76,8 @@ class ViewMessage extends FHC_Controller
$data = array (
'sender_id' => $sender_id,
'sender' => $sender->retval[0],
'message' => $msg->retval[0],
'sender' => getData($sender)[0],
'message' => getData($msg)[0],
'isEmployee' => $isEmployee,
'href' => $href
);
@@ -101,24 +102,22 @@ class ViewMessage extends FHC_Controller
// Get message data if possible
$msg = $this->MessageTokenModel->getMessageByToken($token);
if (!hasData($msg))
{
show_error('No message found');
}
$msg = $msg->retval[0];
$msg = getData($msg)[0];
// Get variables
$receiverData = $this->MessageTokenModel->getPersonData($msg->sender_id);
if (!hasData($receiverData))
{
show_error('No sender found');
}
$data = array (
'receivers' => $receiverData->retval,
'receivers' => getData($receiverData),
'message' => $msg,
'token' => $token
);
@@ -127,13 +126,10 @@ class ViewMessage extends FHC_Controller
}
/**
* send reply
* Send a reply
*/
public function sendReply()
{
$this->load->model('system/Message_model', 'MessageModel');
$this->load->library('MessageLib');
$subject = $this->input->post('subject');
$body = $this->input->post('body');
$persons = $this->input->post('persons');
@@ -145,60 +141,10 @@ class ViewMessage extends FHC_Controller
show_error('Error while sending reply');
}
$relationmsg = $this->MessageTokenModel->getMessageByToken($token);
// check if correct message
if (!hasData($relationmsg) || $relationmessage_id !== $relationmsg->retval[0]->message_id)
$sendReply = $this->CLMessagesModel->sendReply($subject, $body, $persons, $relationmessage_id, $token);
if (isError($sendReply))
{
show_error('Error while sending reply');
}
// get sender (receiver of previous msg)
$sender_id = $relationmsg->retval[0]->receiver_id;
// get message data of persons
$data = $this->MessageTokenModel->getPersonData($persons);
// 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);
// Write log entry for sender
$logtype_kurzbz = 'Action';
$logdata = array(
'name' => 'Message sent',
'message' => 'Message sent from person '.$sender_id.' to '.$dataArray['person_id'].', messageid '.$msg->retval,
'success' => 'true'
);
$taetigkeit_kurzbz = 'kommunikation';
$app = 'core';
$oe_kurzbz = null;
$insertvon = 'online';
// Logs person data
$personLog = $this->personloglib->log(
$sender_id,
$logtype_kurzbz,
$logdata,
$taetigkeit_kurzbz,
$app,
$oe_kurzbz,
$insertvon
);
// Unpark bewerber after he sends message
$personLog = $this->personloglib->unPark($sender_id);
}
show_error(getData($sendReply));
}
$this->load->view('system/messages/messageReplySent');
+47 -11
View File
@@ -48,16 +48,16 @@ class FASMessages extends Auth_Controller
$msgVarsData = $this->_getMsgVarsData($prestudent_id);
// Retrieves message vars for a person from view view vw_msg_vars_person
$variablesArray = $this->messagelib->getMessageVarsPerson();
$variablesArray = $this->_getMessageVarsPerson();
// Organisation units used to get the templates
$oe_kurzbz = $this->messagelib->getOeKurzbz($sender_id);
$oe_kurzbz = $this->_getOeKurzbz($sender_id);
// Admin or commoner?
$isAdmin = $this->messagelib->getIsAdmin($sender_id);
$isAdmin = $this->_getIsAdmin($sender_id);
$data = array(
'recipients' => $msgVarsData->retval,
'recipients' => getData($msgVarsData),
'variables' => $variablesArray,
'oe_kurzbz' => $oe_kurzbz, // used to get the templates
'isAdmin' => $isAdmin
@@ -93,16 +93,16 @@ class FASMessages extends Auth_Controller
$msgVarsData = $this->_getMsgVarsData($prestudent_id);
// Retrieves message vars for a person from view view vw_msg_vars_person
$variablesArray = $this->messagelib->getMessageVarsPerson();
$variablesArray = $this->_getMessageVarsPerson();
// Organisation units used to get the templates
$oe_kurzbz = $this->messagelib->getOeKurzbz($sender_id);
$oe_kurzbz = $this->_getOeKurzbz($sender_id);
// Admin or commoner?
$isAdmin = $this->messagelib->getIsAdmin($sender_id);
$isAdmin = $this->_getIsAdmin($sender_id);
$data = array(
'recipients' => $msgVarsData->retval,
'recipients' => getData($msgVarsData),
'message' => $msg,
'variables' => $variablesArray,
'oe_kurzbz' => $oe_kurzbz, // used to get the templates
@@ -123,7 +123,7 @@ class FASMessages extends Auth_Controller
$msg = $this->messagelib->getMessage($msg_id, $receiver_id);
if (isError($msg))
{
show_error($msg->retval);
show_error(getData($msg));
}
elseif (!hasData($msg))
{
@@ -131,7 +131,7 @@ class FASMessages extends Auth_Controller
}
else
{
$msg = $msg->retval[0];
$msg = getData($msg)[0];
}
return $msg;
@@ -147,9 +147,45 @@ class FASMessages extends Auth_Controller
if (isError($msgVarsData))
{
show_error($msgVarsData->retval);
show_error(getData($msgVarsData));
}
return $msgVarsData;
}
/**
* Wrapper method to call messagelib->getMessageVarsPerson
*/
private function _getMessageVarsPerson()
{
$variables = $this->messagelib->getMessageVarsPerson();
if (isError($variables)) show_error(getData($variables));
return getData($variables);
}
/**
* Wrapper method to call messagelib->getOeKurzbz
*/
private function _getOeKurzbz($sender_id)
{
$oe_kurzbz = $this->messagelib->getOeKurzbz($sender_id);
if (isError($oe_kurzbz)) show_error(getData($oe_kurzbz));
return getData($oe_kurzbz);
}
/**
* Wrapper method to call messagelib->getIsAdmin
*/
private function _getIsAdmin($sender_id)
{
$isAdmin = $this->messagelib->getIsAdmin($sender_id);
if (isError($isAdmin)) show_error(getData($isAdmin));
return getData($isAdmin);
}
}
+24 -153
View File
@@ -27,6 +27,7 @@ class Messages extends Auth_Controller
$this->load->library('WidgetLib');
$this->load->model('system/Message_model', 'MessageModel');
$this->load->model('CL/Messages_model', 'CLMessagesModel');
$this->loadPhrases(
array(
@@ -47,32 +48,36 @@ class Messages extends Auth_Controller
$person_id = $this->input->post('person_id');
$sender_id = null;
$authUser = $this->_getAuthUser();
$authUser = $this->CLMessagesModel->getAuthUser();
if (isError($authUser))
{
show_error($authUser->retval);
show_error(getData($authUser));
}
else
{
$sender_id = getData($authUser)[0]->person_id;
}
$msgVarsData = $this->_getMsgVarsData($person_id);
$msgVarsData = $this->MessageModel->getMsgVarsDataByPersonId($person_id);
if (isError($msgVarsData)) show_error(getData($msgVarsData));
// Retrieves message vars for a person from view view vw_msg_vars_person
$variablesArray = $this->messagelib->getMessageVarsPerson();
$variables = $this->messagelib->getMessageVarsPerson();
if (isError($variables)) show_error(getData($variables));
// Organisation units used to get the templates
$oe_kurzbz = $this->messagelib->getOeKurzbz($sender_id);
if (isError($oe_kurzbz)) show_error(getData($oe_kurzbz));
// Admin or commoner?
$isAdmin = $this->messagelib->getIsAdmin($sender_id);
$isAdmin = $this->messagelib->getIsAdmin($sender_id);
if (isError($isAdmin)) show_error(getData($isAdmin));
$data = array (
'recipients' => $msgVarsData->retval,
'variables' => $variablesArray,
'oe_kurzbz' => $oe_kurzbz, // used to get the templates
'isAdmin' => $isAdmin
'recipients' => getData($msgVarsData),
'variables' => getData($variables),
'oe_kurzbz' => getData($oe_kurzbz), // used to get the templates
'isAdmin' => getData($isAdmin)
);
$this->load->view('system/messages/messageWrite', $data);
@@ -88,7 +93,7 @@ class Messages extends Auth_Controller
$msgVarsData = $this->MessageModel->getMsgVarsDataByPersonId($persons);
$send = $this->_send($msgVarsData, $relationmessage_id);
$send = $this->CLMessagesModel->send($msgVarsData, $relationmessage_id);
$this->load->view('system/messages/messageSent', array('success' => isSuccess($send)));
}
@@ -111,103 +116,17 @@ class Messages extends Auth_Controller
// 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;
}
}
}
$this->CLMessagesModel->addOeToPrestudents($msgVarsData, $prestudentsData);
}
$send = $this->_send($msgVarsData, null, $oe_kurzbz, $vorlage_kurzbz, $msgVars);
$send = $this->CLMessagesModel->send($msgVarsData, null, $oe_kurzbz, $vorlage_kurzbz, $msgVars);
if (isError($send))
{
$this->outputJsonError($send->retval);
$this->outputJsonError(getData($send));
}
else
{
$this->outputJsonSuccess($send->retval);
}
}
// -----------------------------------------------------------------------------------------------------------------
// Private methods
/**
* Executes message sending
* @param $sender_id
* @return array wether execution was successfull - error or success
*/
private function _send($msgVarsData, $relationmessage_id = null, $oe_kurzbz = null, $vorlage_kurzbz = null, $msgVars = null)
{
$subject = $this->input->post('subject');
$body = $this->input->post('body');
$authUser = $this->_getAuthUser();
if (isError($authUser)) return $authUser;
$sender_id = getData($authUser)[0]->person_id;
// Send message(s)
if (hasData($msgVarsData))
{
// Loads the person log library
$this->load->library('PersonLogLib');
for ($i = 0; $i < count($msgVarsData->retval); $i++)
{
$parsedText = "";
$msgVarsDataArray = $this->_replaceKeys((array)$msgVarsData->retval[$i]); // replaces array keys
// Send without vorlage
if (isEmptyString($vorlage_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
else
{
if (is_array($msgVars))
{
// Additional message variables
foreach ($msgVars as $key => $msgvar)
{
$msgVarsDataArray[$key] = $msgvar;
}
}
$msg = $this->messagelib->sendMessageVorlage($sender_id, $msgVarsDataArray['person_id'], $vorlage_kurzbz, $oe_kurzbz, $msgVarsDataArray);
}
if (isError($msg)) return $msg;
// Write log entry
$personLog = $this->personloglib->log(
$msgVarsDataArray['person_id'],
'Action',
array(
'name' => 'Message sent',
'message' => 'Message sent from person '.$sender_id.' to '.$msgVarsDataArray['person_id'].', messageid '.$msg->retval,
'success' => 'true'
),
'kommunikation',
'core',
null,
getAuthUID()
);
}
return success('Messages sent successfully');
}
else
{
return $msgVarsData;
$this->outputJsonSuccess(getData($send));
}
}
@@ -233,11 +152,11 @@ class Messages extends Auth_Controller
if (isError($result) || !hasData($result))
{
$this->outputJsonError($result->retval);
$this->outputJsonError(getData($result));
}
else
{
$this->outputJsonSuccess($result->retval);
$this->outputJsonSuccess(getData($result));
}
}
@@ -262,11 +181,11 @@ class Messages extends Auth_Controller
if (isError($data) || !hasData($data))
{
$this->outputJsonError($data->retval);
$this->outputJsonError(getData($data));
}
else
{
$parsedText = $this->messagelib->parseMessageText($text, $this->_replaceKeys((array)$data->retval[0]));
$parsedText = $this->messagelib->parseMessageText($text, $this->CLMessagesModel->replaceKeys((array)getData($data)[0]));
$this->outputJsonSuccess($parsedText);
}
@@ -286,54 +205,6 @@ class Messages extends Auth_Controller
$this->output
->set_content_type('application/json')
->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;
->set_output(json_encode(array(getData($msg)[0])));
}
}
@@ -722,8 +722,14 @@ class InfoCenter extends Auth_Controller
$person_id = $this->input->post('person_id');
$result = $this->personloglib->unPark($person_id);
$this->output->set_content_type('application/json')->set_output(json_encode($result));
if (isError($result))
{
$this->outputJsonError($result);
}
else
{
$this->output->set_content_type('application/json')->set_output(json_encode(getData($result)));
}
}
/**
+6 -3
View File
@@ -69,12 +69,15 @@ function isSuccess($result)
}
/**
* Checks if the result represents a success and also if it contains data from DB
* Checks if the result represents a success and also if it contains valid data
*/
function hasData($result)
{
if (isSuccess($result) && isset($result->retval) &&
is_array($result->retval) && count($result->retval) > 0)
if (isSuccess($result) && isset($result->retval)
&& (!isEmptyArray($result->retval)
|| !isEmptyString($result->retval)
|| is_numeric($result->retval)
|| is_object($result->retval)))
{
return true;
}
+14 -18
View File
@@ -760,23 +760,23 @@ class MessageLib
public function getMessageVarsPerson()
{
$variablesArray = array();
$variables = $this->_ci->MessageModel->getMessageVarsPerson();
$variables = $this->_ci->MessageModel->getMessageVarsPerson();
if (isError($variables))
{
show_error($variables->retval);
return $variables;
}
elseif (hasData($variables))
{
$tmpVariablesArray = getData($variables);
// Skip person_id
for ($i = 1; $i < count($variables->retval); $i++)
for ($i = 1; $i < count($tmpVariablesArray); $i++)
{
$variablesArray['{'.str_replace(' ', '_', strtolower($variables->retval[$i])).'}'] = $variables->retval[$i];
$variablesArray['{'.str_replace(' ', '_', strtolower($tmpVariablesArray[$i])).'}'] = $tmpVariablesArray[$i];
}
array_shift($variables->retval); // Remove person_id
}
return $variablesArray;
return success($variablesArray);
}
/**
@@ -787,20 +787,21 @@ class MessageLib
$oe_kurzbz = array();
$this->_ci->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
$benutzerResult = $this->_ci->BenutzerfunktionModel->getByPersonId($sender_id);
if (isError($benutzerResult))
$benutzer = $this->_ci->BenutzerfunktionModel->getByPersonId($sender_id);
if (isError($benutzer))
{
show_error($benutzerResult->retval);
return $benutzer;
}
elseif (hasData($benutzerResult))
elseif (hasData($benutzer))
{
foreach ($benutzerResult->retval as $val)
foreach (getData($benutzer) as $val)
{
$oe_kurzbz[] = $val->oe_kurzbz;
}
}
return $oe_kurzbz;
return success($oe_kurzbz);
}
/**
@@ -809,13 +810,8 @@ class MessageLib
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;
return $this->_ci->BenutzerrolleModel->isAdminByPersonId($sender_id);
}
//------------------------------------------------------------------------------------------------------------------
+13 -8
View File
@@ -42,11 +42,7 @@ class PersonLogLib
'insertvon' => $user
);
$result = $this->ci->PersonLogModel->insert($data);
if (isSuccess($result))
return true;
else
show_error($result->retval);
return $this->ci->PersonLogModel->insert($data);
}
/**
@@ -120,10 +116,9 @@ class PersonLogLib
*/
public function unPark($person_id)
{
$result = $this->ci->PersonLogModel->getLogsInFuture($person_id);
$deleted = array();
$result = $this->ci->PersonLogModel->getLogsInFuture($person_id);
if (hasData($result))
{
foreach ($result->retval as $log)
@@ -133,12 +128,22 @@ class PersonLogLib
{
$delresult = $this->ci->PersonLogModel->deleteLog($log->log_id);
if (isSuccess($delresult))
{
$deleted[] = $log->log_id;
}
else
{
return $delresult;
}
}
}
}
else
{
return $result;
}
return $deleted;
return success($deleted);
}
/**
+195
View File
@@ -0,0 +1,195 @@
<?php
/**
* This model extends FHC_Model because here is just implemented logic
* It does not represent a resource (ex. like models that extend DB_Model)
*/
class Messages_model extends FHC_Model
{
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
// Loads the message library
$this->load->library('MessageLib');
// Loads the person log library
$this->load->library('PersonLogLib');
$this->load->model('system/MessageToken_model', 'MessageTokenModel');
}
/**
* Executes message sending
* @param $sender_id
* @return array wether execution was successfull - error or success
*/
public function send($msgVarsData, $relationmessage_id = null, $oe_kurzbz = null, $vorlage_kurzbz = null, $msgVars = null)
{
$subject = $this->input->post('subject');
$body = $this->input->post('body');
$authUser = $this->getAuthUser();
if (isError($authUser)) return $authUser;
$sender_id = getData($authUser)[0]->person_id;
// Send message(s)
if (hasData($msgVarsData))
{
for ($i = 0; $i < count(getData($msgVarsData)); $i++)
{
$parsedText = "";
$msgVarsDataArray = $this->replaceKeys((array)getData($msgVarsData)[$i]); // replaces array keys
// Send without vorlage
if (isEmptyString($vorlage_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
else
{
if (is_array($msgVars))
{
// Additional message variables
foreach ($msgVars as $key => $msgvar)
{
$msgVarsDataArray[$key] = $msgvar;
}
}
$msg = $this->messagelib->sendMessageVorlage($sender_id, $msgVarsDataArray['person_id'], $vorlage_kurzbz, $oe_kurzbz, $msgVarsDataArray);
}
if (isError($msg)) return $msg;
// Write log entry
$personLog = $this->personloglib->log(
$msgVarsDataArray['person_id'],
'Action',
array(
'name' => 'Message sent',
'message' => 'Message sent from person '.$sender_id.' to '.$msgVarsDataArray['person_id'].', messageid '.getData($msg),
'success' => 'true'
),
'kommunikation',
'core',
null,
getAuthUID()
);
if (isError($personLog)) return $personLog;
}
return success('Messages sent successfully');
}
else
{
return $msgVarsData;
}
}
/**
* Send a reply
*/
public function sendReply($subject, $body, $persons, $relationmessage_id, $token)
{
$relationmsg = $this->MessageTokenModel->getMessageByToken($token);
if (!hasData($relationmsg) || $relationmessage_id !== getData($relationmsg)[0]->message_id)
{
show_error('Error while sending reply');
}
// Get sender (receiver of previous msg)
$sender_id = getData($relationmsg)[0]->receiver_id;
// Get message data of persons
$data = $this->MessageTokenModel->getPersonData($persons);
if (hasData($data))
{
for ($i = 0; $i < count(getData($data)); $i++)
{
$dataArray = (array)getData($data)[$i];
$msg = $this->messagelib->sendMessage($sender_id, $dataArray['person_id'], $subject, $body, PRIORITY_NORMAL, $relationmessage_id, null);
if (isError($msg)) return $msg;
// Logs person data
$personLog = $this->personloglib->log(
$sender_id,
'Action',
array(
'name' => 'Message sent',
'message' => 'Message sent from person '.$sender_id.' to '.$dataArray['person_id'].', messageid '.getData($msg),
'success' => 'true'
),
'kommunikation',
'core',
null,
'online'
);
// Unpark bewerber after he sends message
$personLog = $this->personloglib->unPark($sender_id);
if (isError($personLog)) return $personLog;
}
}
return success('Reply sent');
}
/**
*
*/
public 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;
}
/**
*
*/
public 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;
}
/**
*
*/
public function addOeToPrestudents(&$msgVarsData, $prestudentsData)
{
for ($i = 0; $i < count(getData($msgVarsData)); $i++)
{
for ($p = 0; $p < count(getData($prestudentsData)); $p++)
{
if (getData($prestudentsData)[$p]->prestudent_id == getData($msgVarsData)[$i]->prestudent_id)
{
$msgVarsData->retval[$i]->oe_kurzbz = getData($prestudentsData)[$p]->oe_kurzbz;
break;
}
}
}
}
}