Fix for mail table delete - refs BT#9092

1.10.x
Daniel Barreto 11 years ago
parent a5986290a2
commit c0d2a46f5f
  1. 11
      plugin/advancedsubscription/config.php
  2. 113
      plugin/advancedsubscription/src/AdvancedSubscriptionPlugin.class.php

@ -7,9 +7,6 @@
*/
define('TABLE_ADV_SUB_QUEUE', 'plugin_advsub_queue');
define('TABLE_ADV_SUB_MAIL', 'plugin_advsub_mail');
define('TABLE_ADV_SUB_MAIL_TYPE', 'plugin_advsub_mail_type');
define('TABLE_ADV_SUB_MAIL_STATUS', 'plugin_advsub_mail_status');
define('ADV_SUB_ACTION_STUDENT_REQUEST', 0);
define('ADV_SUB_ACTION_SUPERIOR_APPROVE', 1);
@ -25,14 +22,6 @@ define('ADV_SUB_QUEUE_STATUS_BOSS_APPROVED', 2);
define('ADV_SUB_QUEUE_STATUS_ADMIN_DISAPPROVED', 3);
define('ADV_SUB_QUEUE_STATUS_ADMIN_APPROVED', 10);
define('ADV_SUB_MAIL_TYPE_A', 1);
define('ADV_SUB_MAIL_TYPE_B', 2);
define('ADV_SUB_MAIL_TYPE_C', 3);
define('ADV_SUB_MAIL_STATUS_MAIL_SENT', 1);
define('ADV_SUB_MAIL_STATUS_MAIL_ANSWERED', 2);
define('ADV_SUB_MAIL_STATUS_MAIL_EXPIRED', 3);
require_once __DIR__ . '/../../main/inc/global.inc.php';
require_once api_get_path(LIBRARY_PATH) . 'plugin.class.php';
require_once __DIR__ . '/resources/phpcrypt/phpCrypt.php';

@ -173,6 +173,7 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
}
/**
* Register a user into a queue for a session
* @param $userId
* @param $sessionId
* @return bool|int
@ -194,59 +195,27 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
return $id;
}
/**
* Register a message type
* @param $description
* @return bool|int
*/
public function addMessageType($description)
{
$pAdvSubMessageTable = Database::get_main_table(TABLE_ADV_SUB_MAIL_TYPE);
$attributes = array(
'description' => $description,
);
$id = Database::insert($pAdvSubMessageTable, $attributes);
return $id;
}
/**
* Register a message status
* @param $description
* @return bool|int
*/
public function addMessageStatus($description)
{
$pAdvSubMessageTable = Database::get_main_table(TABLE_ADV_SUB_MAIL_STATUS);
$attributes = array(
'description' => $description,
);
$id = Database::insert($pAdvSubMessageTable, $attributes);
return $id;
}
/**
* Register message with type and status
* @param $mailId
* @param $mailTypeId
* @param $mailStatusId
* @param $userId
* @param $sessionId
* @return bool|int
*/
public function addMessage($mailId, $mailTypeId, $mailStatusId)
public function saveLastMessage($mailId, $userId, $sessionId)
{
$pAdvSubMessageTable = Database::get_main_table(TABLE_ADV_SUB_MAIL);
$queueTable = Database::get_main_table(TABLE_ADV_SUB_QUEUE);
$attributes = array(
'message_id' => $mailId,
'mail_type_id' => $mailTypeId,
'mail_status_id' => $mailStatusId,
'last_message_id' => $mailId,
);
$id = Database::insert($pAdvSubMessageTable, $attributes);
$num = Database::update(
$queueTable,
$attributes,
array('user_id = ? AND session_id = ?' => array($userId, $sessionId))
);
return $id;
return $num;
}
/**
@ -277,7 +246,15 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
return $result;
}
public function sendMailMessage($studentId, $subject, $content, $type = '')
/**
* Send message for the student subscription approval to a specific session
* @param $studentId
* @param $subject
* @param $content
* @param $sessionId
* @return bool|int
*/
public function sendMailMessage($studentId, $subject, $content, $sessionId)
{
global $_configuration; // @TODO: Add $_configuration['no_reply_user_id'] to configuration file
@ -296,7 +273,7 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
if (!empty($mailId)) {
// Save as sent message
$mailId = $this->addMessage($mailId, $type, ADV_SUB_MAIL_STATUS_MAIL_SENT);
$mailId = $this->saveLastMessage($mailId, $studentId, $sessionId);
}
return $mailId;
@ -334,6 +311,12 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
return $isOpen;
}
/**
* Update the queue status for subscription approval rejected or accepted
* @param $params
* @param $newStatus
* @return bool
*/
public function updateQueueStatus($params, $newStatus)
{
if (isset($params['queue']['id'])) {
@ -384,14 +367,14 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$data['student']['id'],
$this->get_lang('MailStudentRequest'),
$tpl->fetch('/advancedsubscription/views/advsub_request_received.tpl'),
ADV_SUB_MAIL_TYPE_A
$data['session_id']
);
// Mail to superior
$mailIds[] = $this->sendMailMessage(
$data['superior']['id'],
$this->get_lang('MailStudentRequest'),
$tpl->fetch('/advancedsubscription/views/advsub_request_superior.tpl'),
ADV_SUB_MAIL_TYPE_B
$data['session_id']
);
break;
case ADV_SUB_ACTION_SUPERIOR_APPROVE:
@ -400,21 +383,21 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$data['student']['id'],
$this->get_lang('MailStudentRequest'),
$tpl->fetch('/advancedsubscription/views/advsub_request_superior_approved.tpl'),
ADV_SUB_MAIL_TYPE_A
$data['session_id']
);
// Mail to superior
$mailIds[] = $this->sendMailMessage(
$data['superior']['id'],
$this->get_lang('MailStudentRequest'),
$tpl->fetch('/advancedsubscription/views/advsub_approve_confirmed.tpl'),
ADV_SUB_MAIL_TYPE_B
$data['session_id']
);
// Mail to admin
$mailIds[] = $this->sendMailMessage(
$data['admin']['id'],
$this->get_lang('MailStudentRequest'),
$tpl->fetch('/advancedsubscription/views/advsub_request_approved_info_admin.tpl'),
ADV_SUB_MAIL_TYPE_C
$data['session_id']
);
break;
case ADV_SUB_ACTION_SUPERIOR_DISAPPROVE:
@ -423,14 +406,14 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$data['student']['id'],
$this->get_lang('MailStudentRequest'),
$tpl->fetch('/advancedsubscription/views/advsub_request_superior_disapproved.tpl'),
ADV_SUB_MAIL_TYPE_A
$data['session_id']
);
// Mail to superior
$mailIds[] = $this->sendMailMessage(
$data['superior']['id'],
$this->get_lang('MailStudentRequest'),
$tpl->fetch('/advancedsubscription/views/advsub_disapprove_confirmed.tpl'),
ADV_SUB_MAIL_TYPE_B
$data['session_id']
);
break;
case ADV_SUB_ACTION_SUPERIOR_SELECT:
@ -439,14 +422,14 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$data['student']['id'],
$this->get_lang('MailStudentRequest'),
$tpl->fetch('/advancedsubscription/views/advsub_request_received.tpl'),
ADV_SUB_MAIL_TYPE_A
$data['session_id']
);
// Mail to superior
$mailIds[] = $this->sendMailMessage(
$data['superior']['id'],
$this->get_lang('MailStudentRequest'),
$tpl->fetch('/advancedsubscription/views/advsub_request_superior.tpl'),
ADV_SUB_MAIL_TYPE_B
$data['session_id']
);
break;
case ADV_SUB_ACTION_ADMIN_APPROVE:
@ -455,21 +438,21 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$data['student']['id'],
$this->get_lang('MailStudentRequest'),
$tpl->fetch('/advancedsubscription/views/advsub_approval_admin_accepted_notice_student.tpl'),
ADV_SUB_MAIL_TYPE_A
$data['session_id']
);
// Mail to superior
$mailIds[] = $this->sendMailMessage(
$data['superior']['id'],
$this->get_lang('MailStudentRequest'),
$tpl->fetch('/advancedsubscription/views/advsub_approval_admin_accepted_notice_superior.tpl'),
ADV_SUB_MAIL_TYPE_B
$data['session_id']
);
// Mail to admin
$mailIds[] = $this->sendMailMessage(
$data['admin']['id'],
$this->get_lang('MailStudentRequest'),
$tpl->fetch('/advancedsubscription/views/advsub_approval_admin_accepted_notice_admin.tpl'),
ADV_SUB_MAIL_TYPE_C
$data['session_id']
);
break;
case ADV_SUB_ACTION_ADMIN_DISAPPROVE:
@ -478,21 +461,21 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$data['student']['id'],
$this->get_lang('MailStudentRequest'),
$tpl->fetch('/advancedsubscription/views/advsub_approval_admin_rejected_notice_student.tpl'),
ADV_SUB_MAIL_TYPE_A
$data['session_id']
);
// Mail to superior
$mailIds[] = $this->sendMailMessage(
$data['superior']['id'],
$this->get_lang('MailStudentRequest'),
$tpl->fetch('/advancedsubscription/views/advsub_approval_admin_rejected_notice_superior.tpl'),
ADV_SUB_MAIL_TYPE_B
$data['session_id']
);
// Mail to admin
$mailIds[] = $this->sendMailMessage(
$data['admin']['id'],
$this->get_lang('MailStudentRequest'),
$tpl->fetch('/advancedsubscription/views/advsub_approval_admin_rejected_notice_admin.tpl'),
ADV_SUB_MAIL_TYPE_C
$data['session_id']
);
break;
default:
@ -716,12 +699,22 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
return $message;
}
/**
* Return the url to go to session
* @param $sessionId
* @return string
*/
public function getSessionUrl($sessionId)
{
$url = api_get_path(WEB_CODE_PATH) . 'session/?session_id=' . $sessionId;
return $url;
}
/**
* Return the url to enter to subscription queue to session
* @param $params
* @return string
*/
public function getQueueUrl($params)
{
$data = array(

Loading…
Cancel
Save