- Added new template for plain text email

- Renamed template for html email mail.php -> mailHTML.php
- Changed method getMessageByToken of Recipient_model for getting only the last message by token
- Changed method getMessages of Recipient_model for getting event the token
- Changed method send of library MailLib to add the possibility to send an alternative plain text
body for a html mail
- Changed library MessageLib to add the possibility to send emails in html/text format to inform
the users about new messages
- Added method toHTML to controller Messages
- Added new configuration entries in message.php
- Added new view messageHTML.php
This commit is contained in:
bison-paolo
2016-10-06 16:27:04 +02:00
parent 5ab5b291b3
commit bfaf901550
8 changed files with 142 additions and 56 deletions
+4 -1
View File
@@ -5,6 +5,8 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
$config['msg_delivery'] = true;
$config['send_immediately'] = false; // If the message should be sent immediately
$config['system_person_id'] = 1; // Dummy sender, used for sending messages from the system
$config['cis_message_view_url'] = 'readMessageByToken.php'; // Dummy sender, used for sending messages from the system
$config['message_html_view_url'] = 'index.ci.php/system/Messages/toHTML/';
define('EMAIL_KONTAKT_TYPE', 'email'); // Email kontakt type
define('SENT_INFO_NEWLINE', '\n'); // tbl_msg_recipient->sentInfo separator
@@ -57,4 +59,5 @@ define('MSG_ERR_INVALID_SENDER_ID', 104);
define('MSG_ERR_INVALID_RECIPIENTS', 105);
define('MSG_ERR_INVALID_RECEIVER_ID', 106);
define('MSG_ERR_INVALID_OU', 107);
define('MSG_ERR_INVALID_TEMPLATE', 108);
define('MSG_ERR_INVALID_TEMPLATE', 108);
define('MSG_ERR_INVALID_TOKEN', 109);
+50 -32
View File
@@ -1,19 +1,19 @@
<?php
if (! defined("BASEPATH")) exit("No direct script access allowed");
if (! defined('BASEPATH')) exit('No direct script access allowed');
class Messages extends VileSci_Controller
{
public function __construct()
{
parent::__construct();
$this->load->library("MessageLib");
$this->load->model("person/Person_model", "PersonModel");
$this->load->library('MessageLib');
$this->load->model('person/Person_model', 'PersonModel');
}
public function index()
{
$this->load->view("system/messages.php", array("person_id" => $this->getPersonId()));
$this->load->view('system/messages.php', array('person_id' => $this->getPersonId()));
}
public function inbox($person_id)
@@ -31,11 +31,11 @@ class Messages extends VileSci_Controller
}
$data = array (
"messages" => $msg->retval,
"person" => $person->retval[0]
'messages' => $msg->retval,
'person' => $person->retval[0]
);
$this->load->view("system/messagesInbox.php", $data);
$this->load->view('system/messagesInbox.php', $data);
}
public function outbox($person_id)
@@ -53,11 +53,11 @@ class Messages extends VileSci_Controller
}
$data = array (
"messages" => $msg->retval,
"person" => $person->retval[0]
'messages' => $msg->retval,
'person' => $person->retval[0]
);
$this->load->view("system/messagesOutbox.php", $data);
$this->load->view('system/messagesOutbox.php', $data);
}
public function view($msg_id, $person_id)
@@ -68,7 +68,7 @@ class Messages extends VileSci_Controller
show_error($msg->retval);
}
$v = $this->load->view("system/messageView", array("message" => $msg->retval[0]));
$v = $this->load->view('system/messageView', array('message' => $msg->retval[0]));
}
public function reply($msg_id, $person_id)
@@ -79,15 +79,15 @@ class Messages extends VileSci_Controller
show_error($msg->retval);
}
$v = $this->load->view("system/messageReply", array("message" => $msg->retval[0]));
$v = $this->load->view('system/messageReply', array('message' => $msg->retval[0]));
}
public function sendReply($msg_id, $person_id)
{
$subject = $this->input->post("subject");
$body = $this->input->post("body");
$subject = $this->input->post('subject');
$body = $this->input->post('body');
$this->load->model("system/Message_model", "MessageModel");
$this->load->model('system/Message_model', 'MessageModel');
$originMsg = $this->MessageModel->load($msg_id);
if ($originMsg->error)
{
@@ -100,7 +100,7 @@ class Messages extends VileSci_Controller
show_error($msg->retval);
}
redirect("/system/Messages/view/" . $msg->retval . "/" . $originMsg->retval[0]->person_id);
redirect('/system/Messages/view/' . $msg->retval . '/' . $originMsg->retval[0]->person_id);
}
public function write($sender_id, $receiver_id)
@@ -112,20 +112,20 @@ class Messages extends VileSci_Controller
}
$data = array (
"sender_id" => $sender_id,
"receiver_id" => $receiver_id,
"receiver" => $person->retval[0]
'sender_id' => $sender_id,
'receiver_id' => $receiver_id,
'receiver' => $person->retval[0]
);
$v = $this->load->view("system/messageWrite", $data);
$v = $this->load->view('system/messageWrite', $data);
}
public function send($sender_id, $receiver_id)
{
$subject = $this->input->post("subject");
$body = $this->input->post("body");
$subject = $this->input->post('subject');
$body = $this->input->post('body');
$this->load->model("system/Message_model", "MessageModel");
$this->load->model('system/Message_model', 'MessageModel');
$originMsg = $this->MessageModel->load($msg_id);
if ($originMsg->error)
{
@@ -138,25 +138,43 @@ class Messages extends VileSci_Controller
show_error($msg->retval);
}
redirect("/system/Messages/view/" . $msg->retval . "/" . $receiver_id);
redirect('/system/Messages/view/' . $msg->retval . '/' . $receiver_id);
}
public function toHTML($token)
{
$msg = $this->messagelib->getMessageByToken($token);
if ($msg->error)
{
show_error($msg->retval);
}
if (is_array($msg->retval) && count($msg->retval) > 0)
{
$data = array (
'message' => $msg->retval[0]
);
$this->load->view('system/messageHTML.php', $data);
}
}
private function getPersonId()
{
$person_id = null;
if ($this->input->get("person_id") !== null)
if ($this->input->get('person_id') !== null)
{
$person_id = $this->input->get("person_id");
$person_id = $this->input->get('person_id');
}
else if ($this->input->post("person_id") !== null)
else if ($this->input->post('person_id') !== null)
{
$person_id = $this->input->get("person_id");
$person_id = $this->input->get('person_id');
}
if (!is_numeric($person_id))
{
show_error("Person_id is not numeric");
show_error('Person_id is not numeric');
}
return $person_id;
@@ -164,12 +182,12 @@ class Messages extends VileSci_Controller
public function getVorlage()
{
$vorlage_kurzbz = $this->input->get("vorlage_kurzbz");
$vorlage_kurzbz = $this->input->get('vorlage_kurzbz');
if (isset($vorlage_kurzbz))
{
$this->load->model("system/Vorlagestudiengang_model", "VorlagestudiengangModel");
$result = $this->VorlagestudiengangModel->loadWhere(array("vorlage_kurzbz" => $vorlage_kurzbz));
$this->load->model('system/Vorlagestudiengang_model', 'VorlagestudiengangModel');
$result = $this->VorlagestudiengangModel->loadWhere(array('vorlage_kurzbz' => $vorlage_kurzbz));
$this->output
->set_content_type('application/json')
+2 -1
View File
@@ -45,7 +45,7 @@ class MailLib
/**
* Sends a single email
*/
public function send($from, $to, $subject, $message, $alias = "", $cc = null, $bcc = null)
public function send($from, $to, $subject, $message, $alias = "", $cc = null, $bcc = null, $altMessage = '')
{
// If from is not specified then use the standard one
if (is_null($from) || $from == "")
@@ -59,6 +59,7 @@ class MailLib
if (!is_null($bcc)) $this->ci->email->bcc($bcc);
$this->ci->email->subject($subject);
$this->ci->email->message($message);
if (!empty($altMessage)) $this->ci->email->set_alt_message($altMessage);
// Avoid printing on standard output ugly error messages
$result = @$this->ci->email->send();
+72 -16
View File
@@ -113,7 +113,7 @@ class MessageLib
public function getMessageByToken($token)
{
if (empty($token))
return $this->_error('', MSG_ERR_INVALID_MSG_ID);
return $this->_error('', MSG_ERR_INVALID_TOKEN);
$result = $this->ci->RecipientModel->getMessageByToken($token);
if (is_object($result) && $result->error == EXIT_SUCCESS && is_array($result->retval) && count($result->retval) > 0)
@@ -138,7 +138,12 @@ class MessageLib
'status' => MSG_STATUS_READ
);
$result = $this->ci->MsgStatusModel->insert($statusKey);
$resultIns = $this->ci->MsgStatusModel->insert($statusKey);
// If an error occured while writing on data base, then return it
if ($resultIns->error == EXIT_ERROR)
{
$result = $resultIns;
}
}
}
@@ -236,7 +241,8 @@ class MessageLib
$msg_id = $result->retval;
$recipientData = array(
'person_id' => $receiver_id,
'message_id' => $msg_id
'message_id' => $msg_id,
'token' => generateToken()
);
$result = $this->ci->RecipientModel->insert($recipientData);
if (is_object($result) && $result->error == EXIT_SUCCESS)
@@ -259,7 +265,7 @@ class MessageLib
if ($this->ci->config->item('send_immediately') === true)
{
// Send message by email!
$resultSendEmail = $this->sendOne($msg_id, $subject, $parsedText);
$resultSendEmail = $this->sendOne($msg_id, $subject, $body);
}
}*/
}
@@ -506,11 +512,31 @@ class MessageLib
// If the person has an email account
if (!is_null($result->retval[$i]->receiver) && $result->retval[$i]->receiver != '')
{
// Using a template as email body
$body = $this->ci->parser->parse('templates/mail', array('body' => $result->retval[$i]->body), true);
$href = CIS_ROOT . $this->ci->config->item('cis_message_view_url') . '?token=' . $result->retval[$i]->token;
// Using a template for the html email body
$body = $this->ci->parser->parse(
'templates/mailHTML',
array(
'src' => APP_ROOT . $this->ci->config->item('message_html_view_url') . $result->retval[$i]->token,
'href' => $href
),
true
);
if (is_null($body) || $body == '')
{
// $body = $result->retval[$i]->body;
$this->ci->loglib->logError('Error while parsing the mail template');
}
// Using a template for the plain text email body
$altBody = $this->ci->parser->parse(
'templates/mailTXT',
array(
'href' => $href
),
true
);
if (is_null($altBody) || $altBody == '')
{
$this->ci->loglib->logError('Error while parsing the mail template');
}
@@ -525,7 +551,11 @@ class MessageLib
$sender,
$result->retval[$i]->receiver,
$result->retval[$i]->subject,
$body
$body,
null,
null,
null,
$altBody
);
// If errors were occurred while sending the email
if (!$sent)
@@ -533,10 +563,10 @@ class MessageLib
$this->ci->loglib->logError('Error while sending an email');
// Writing errors in tbl_message_status
$sme = $this->setMessageError(
$result->retval[$i]->message_id,
$result->retval[$i]->receiver_id,
'Error while sending an email',
$result->retval[$i]->sentinfo
$result->retval[$i]->message_id,
$result->retval[$i]->receiver_id,
'Error while sending an email',
$result->retval[$i]->sentinfo
);
if (!$sme)
{
@@ -613,16 +643,38 @@ class MessageLib
// Using a template as email body if it is not given as method parameter
if (is_null($body))
{
$bodyMsg = $this->ci->parser->parse('templates/mail', array('body' => $result->retval[0]->body), true);
// Using a template for the html email body
$href = CIS_ROOT . $this->ci->config->item('cis_message_view_url') . '?token=' . $result->retval[$i]->token;
$bodyMsg = $this->ci->parser->parse(
'templates/mailHTML',
array(
'src' => APP_ROOT . $this->ci->config->item('message_html_view_url') . $result->retval[$i]->token,
'href' => $href
),
true
);
if (is_null($bodyMsg) || $bodyMsg == '')
{
// $body = $result->retval[0]->body;
$this->ci->loglib->logError('Error while parsing the mail template');
$this->ci->loglib->logError('Error while parsing the html mail template');
}
// Using a template for the plain text email body
$altBody = $this->ci->parser->parse(
'templates/mailTXT',
array(
'href' => $href
),
true
);
if (is_null($altBody) || $altBody == '')
{
$this->ci->loglib->logError('Error while parsing the plain text mail template');
}
}
else
{
$bodyMsg = $body;
$bodyMsg = $altBody = $body;
}
// If the sender kontakt does not exist, then use system
@@ -637,7 +689,11 @@ class MessageLib
$sender,
$result->retval[0]->receiver,
is_null($subject) ? $result->retval[0]->subject : $subject, // if parameter subject is not null, use it!
$bodyMsg
$bodyMsg,
null,
null,
null,
$altBody
);
// If errors were occurred while sending the email
if (!$sent)
@@ -68,8 +68,8 @@ class Recipient_model extends DB_Model
return $this->_error(lang("fhc_".FHC_NORIGHT)." -> ".$this->getBerechtigungKurzbz("public.tbl_msg_status"), FHC_MODEL_ERROR);
$sql = "SELECT r.message_id,
r.person_id as receiver_id,
m.person_id as sender_id,
r.person_id as receiver_id,
m.subject,
m.body,
m.insertamum,
@@ -80,13 +80,12 @@ class Recipient_model extends DB_Model
s.insertamum as statusamum
FROM public.tbl_msg_recipient r JOIN public.tbl_msg_message m USING (message_id)
JOIN (
SELECT * FROM public.tbl_msg_status ORDER BY insertamum DESC LIMIT 1
SELECT * FROM public.tbl_msg_status WHERE status < ? ORDER BY insertamum DESC, status DESC
) s ON (r.message_id = s.message_id AND r.person_id = s.person_id)
WHERE r.token = ?
AND status < ?
ORDER BY s.insertamum DESC";
LIMIT 1";
$result = $this->db->query($sql, array($token, MSG_STATUS_DELETED));
$result = $this->db->query($sql, array(MSG_STATUS_DELETED, $token));
if (is_object($result))
return $this->_success($result->result());
else
@@ -236,6 +235,7 @@ class Recipient_model extends DB_Model
ks.kontakt as sender,
kr.kontakt as receiver,
mr.person_id as receiver_id,
mr.token,
mm.subject,
mm.body,
mr.sentinfo
+6
View File
@@ -0,0 +1,6 @@
<div>
S: <?php echo $message->subject; ?>
</div>
<div>
B: <?php echo $message->body; ?>
</div>
@@ -8,7 +8,8 @@
</div>
<div class="container">
<div class="body">
{body}
<iframe width="100%" frameborder="0" src="{src}"></iframe>
<a href="{href}">Click here!!!</a>
</div>
</div>
<div class="footer">
+1
View File
@@ -0,0 +1 @@
Click here!!!! >>>> {href} <<<<<