|
@@ -1,22 +1,21 @@
|
|
|
<?php
|
|
|
/* For licensing terms, see /license.txt */
|
|
|
/**
|
|
|
- * @TODO: Improve description
|
|
|
* This class is used to add an advanced subscription allowing the admin to
|
|
|
* create user queues requesting a subscribe to a session
|
|
|
- * @package chamilo.plugin.advancedsubscription
|
|
|
+ * @package chamilo.plugin.advanced_subscription
|
|
|
*/
|
|
|
|
|
|
|
|
|
class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
{
|
|
|
+ protected $strings;
|
|
|
/**
|
|
|
* Constructor
|
|
|
*/
|
|
|
function __construct()
|
|
|
{
|
|
|
$parameters = array(
|
|
|
- 'tool_enable' => 'boolean',
|
|
|
'yearly_cost_limit' => 'text',
|
|
|
'yearly_hours_limit' => 'text',
|
|
|
'yearly_cost_unit_converter' => 'text',
|
|
@@ -25,7 +24,6 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
'ws_url' => 'text',
|
|
|
'min_profile_percentage' => 'text',
|
|
|
'check_induction' => 'boolean',
|
|
|
- 'confirmation_message' => 'wysiwyg',
|
|
|
'secret_key' => 'text',
|
|
|
);
|
|
|
|
|
@@ -70,9 +68,9 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
*/
|
|
|
private function installDatabase()
|
|
|
{
|
|
|
- $pAdvSubQueueTable = Database::get_main_table(TABLE_ADV_SUB_QUEUE);
|
|
|
+ $advancedSubscriptionQueueTable = Database::get_main_table(TABLE_ADVANCED_SUBSCRIPTION_QUEUE);
|
|
|
|
|
|
- $sql = "CREATE TABLE IF NOT EXISTS $pAdvSubQueueTable (" .
|
|
|
+ $sql = "CREATE TABLE IF NOT EXISTS $advancedSubscriptionQueueTable (" .
|
|
|
"id int UNSIGNED NOT NULL AUTO_INCREMENT, " .
|
|
|
"session_id int UNSIGNED NOT NULL, " .
|
|
|
"user_id int UNSIGNED NOT NULL, " .
|
|
@@ -80,8 +78,8 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
"last_message_id int UNSIGNED NOT NULL, " .
|
|
|
"created_at datetime NOT NULL, " .
|
|
|
"updated_at datetime NULL, " .
|
|
|
- "PRIMARY KEY PK_advsub_queue (id), " .
|
|
|
- "UNIQUE KEY UK_advsub_queue (user_id, session_id)); ";
|
|
|
+ "PRIMARY KEY PK_advanced_subscription_queue (id), " .
|
|
|
+ "UNIQUE KEY UK_advanced_subscription_queue (user_id, session_id)); ";
|
|
|
Database::query($sql);
|
|
|
}
|
|
|
|
|
@@ -92,18 +90,18 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
private function uninstallDatabase()
|
|
|
{
|
|
|
/* Drop plugin tables */
|
|
|
- $pAdvSubQueueTable = Database::get_main_table(TABLE_ADV_SUB_QUEUE);
|
|
|
+ $advancedSubscriptionQueueTable = Database::get_main_table(TABLE_ADVANCED_SUBSCRIPTION_QUEUE);
|
|
|
|
|
|
- $sql = "DROP TABLE IF EXISTS $pAdvSubQueueTable; ";
|
|
|
+ $sql = "DROP TABLE IF EXISTS $advancedSubscriptionQueueTable; ";
|
|
|
Database::query($sql);
|
|
|
|
|
|
/* Delete settings */
|
|
|
- $tSettings = Database::get_main_table(TABLE_MAIN_SETTINGS_CURRENT);
|
|
|
- Database::query("DELETE FROM $tSettings WHERE subkey = 'advancedsubscription'");
|
|
|
+ $settingsTable = Database::get_main_table(TABLE_MAIN_SETTINGS_CURRENT);
|
|
|
+ Database::query("DELETE FROM $settingsTable WHERE subkey = 'advanced_subscription'");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Return true if user is able to be added to queue for session subscription
|
|
|
+ * Return true if user is allowed to be added to queue for session subscription
|
|
|
* @param int $userId
|
|
|
* @param array $params MUST have keys:
|
|
|
* "is_connected" Indicate if the user is online on external web
|
|
@@ -111,42 +109,42 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
* @throws Exception
|
|
|
* @return bool
|
|
|
*/
|
|
|
- public function isAbleToRequest($userId, $params = array())
|
|
|
+ public function isAllowedToDoRequest($userId, $params = array())
|
|
|
{
|
|
|
if (isset($params['is_connected']) && isset($params['profile_completed'])) {
|
|
|
- $isAble = false;
|
|
|
- $advSubPlugin = self::create();
|
|
|
- $wsUrl = $advSubPlugin->get('ws_url');
|
|
|
+ $isAllowed = false;
|
|
|
+ $plugin = self::create();
|
|
|
+ $wsUrl = $plugin->get('ws_url');
|
|
|
// @TODO: Get connection status from user by WS
|
|
|
$isConnected = $params['is_connected'];
|
|
|
if ($isConnected) {
|
|
|
- $profileCompletedMin = (float) $advSubPlugin->get('min_profile_percentage');
|
|
|
+ $profileCompletedMin = (float) $plugin->get('min_profile_percentage');
|
|
|
// @TODO: Get completed profile percentage by WS
|
|
|
$profileCompleted = (float) $params['profile_completed'];
|
|
|
if ($profileCompleted > $profileCompletedMin) {
|
|
|
- $checkInduction = $advSubPlugin->get('check_induction');
|
|
|
+ $checkInduction = $plugin->get('check_induction');
|
|
|
// @TODO: check if user have completed at least one induction session
|
|
|
$completedInduction = true;
|
|
|
if (!$checkInduction || $completedInduction) {
|
|
|
- $uitMax = $advSubPlugin->get('yearly_cost_unit_converter');
|
|
|
- $uitMax *= $advSubPlugin->get('yearly_cost_limit');
|
|
|
+ $uitMax = $plugin->get('yearly_cost_unit_converter');
|
|
|
+ $uitMax *= $plugin->get('yearly_cost_limit');
|
|
|
// @TODO: Get UIT completed by user this year by WS
|
|
|
$uitUser = 0;
|
|
|
$extra = new ExtraFieldValue('session');
|
|
|
$var = $extra->get_values_by_handler_and_field_variable($params['session_id'], 'cost');
|
|
|
$uitUser += $var['field_value'];
|
|
|
if ($uitMax >= $uitUser) {
|
|
|
- $expendedTimeMax = $advSubPlugin->get('yearly_hours_limit');
|
|
|
+ $expendedTimeMax = $plugin->get('yearly_hours_limit');
|
|
|
// @TODO: Get Expended time from user data
|
|
|
$expendedTime = 0;
|
|
|
$var = $extra->get_values_by_handler_and_field_variable($params['session_id'], 'duration');
|
|
|
$expendedTime += $var['field_value'];
|
|
|
if ($expendedTimeMax >= $expendedTime) {
|
|
|
- $expendedNumMax = $advSubPlugin->get('courses_count_limit');
|
|
|
+ $expendedNumMax = $plugin->get('courses_count_limit');
|
|
|
// @TODO: Get Expended num from user
|
|
|
$expendedNum = 0;
|
|
|
if ($expendedNumMax >= $expendedNum) {
|
|
|
- $isAble = true;
|
|
|
+ $isAllowed = true;
|
|
|
} else {
|
|
|
throw new \Exception($this->get_lang('AdvancedSubscriptionCourseXLimitReached'));
|
|
|
}
|
|
@@ -166,7 +164,7 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
throw new \Exception($this->get_lang('AdvancedSubscriptionNotConnected'));
|
|
|
}
|
|
|
|
|
|
- return $isAble;
|
|
|
+ return $isAllowed;
|
|
|
} else {
|
|
|
throw new \Exception($this->get_lang('AdvancedSubscriptionIncompleteParams'));
|
|
|
}
|
|
@@ -181,8 +179,11 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
*/
|
|
|
public function addToQueue($userId, $sessionId)
|
|
|
{
|
|
|
+ // Filter input variables
|
|
|
+ $userId = intval($userId);
|
|
|
+ $sessionId = intval($sessionId);
|
|
|
$now = api_get_utc_datetime();
|
|
|
- $pAdvSubQueueTable = Database::get_main_table(TABLE_ADV_SUB_QUEUE);
|
|
|
+ $advancedSubscriptionQueueTable = Database::get_main_table(TABLE_ADVANCED_SUBSCRIPTION_QUEUE);
|
|
|
$attributes = array(
|
|
|
'session_id' => $sessionId,
|
|
|
'user_id' => $userId,
|
|
@@ -191,7 +192,7 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
'updated_at' => null,
|
|
|
);
|
|
|
|
|
|
- $id = Database::insert($pAdvSubQueueTable, $attributes);
|
|
|
+ $id = Database::insert($advancedSubscriptionQueueTable, $attributes);
|
|
|
|
|
|
return $id;
|
|
|
}
|
|
@@ -205,7 +206,11 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
*/
|
|
|
public function saveLastMessage($mailId, $userId, $sessionId)
|
|
|
{
|
|
|
- $queueTable = Database::get_main_table(TABLE_ADV_SUB_QUEUE);
|
|
|
+ // Filter variables
|
|
|
+ $mailId = intval($mailId);
|
|
|
+ $userId = intval($userId);
|
|
|
+ $sessionId = intval($sessionId);
|
|
|
+ $queueTable = Database::get_main_table(TABLE_ADVANCED_SUBSCRIPTION_QUEUE);
|
|
|
$attributes = array(
|
|
|
'last_message_id' => $mailId,
|
|
|
);
|
|
@@ -230,10 +235,10 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
{
|
|
|
$result = false;
|
|
|
if (!empty($sessionId) && !empty($userId)) {
|
|
|
- $advSub = self::create();
|
|
|
+ $plugin = self::create();
|
|
|
try {
|
|
|
- if ($advSub->isAbleToRequest($userId, $params)) {
|
|
|
- $result = (bool) $advSub->addToQueue($userId, $sessionId);
|
|
|
+ if ($plugin->isAllowedToDoRequest($userId, $params)) {
|
|
|
+ $result = (bool) $plugin->addToQueue($userId, $sessionId);
|
|
|
} else {
|
|
|
throw new \Exception($this->get_lang('AdvancedSubscriptionNotMoreAble'));
|
|
|
}
|
|
@@ -259,19 +264,10 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
*/
|
|
|
public function sendMailMessage($studentId, $receiverId, $subject, $content, $sessionId, $save = false)
|
|
|
{
|
|
|
- global $_configuration; // @TODO: Add $_configuration['no_reply_user_id'] to configuration file
|
|
|
-
|
|
|
$mailId = MessageManager::send_message(
|
|
|
$receiverId,
|
|
|
$subject,
|
|
|
- $content,
|
|
|
- null,
|
|
|
- null,
|
|
|
- null,
|
|
|
- null,
|
|
|
- null,
|
|
|
- null,
|
|
|
- $_configuration['no_reply_user_id']
|
|
|
+ $content
|
|
|
);
|
|
|
|
|
|
if ($save && !empty($mailId)) {
|
|
@@ -287,7 +283,7 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
* @param string $fieldVariable
|
|
|
* @return bool
|
|
|
*/
|
|
|
- public function isSessionOpen($sessionId, $fieldVariable = 'es_abierta')
|
|
|
+ public function isSessionOpen($sessionId, $fieldVariable = 'is_open_session')
|
|
|
{
|
|
|
$sessionId = (int) $sessionId;
|
|
|
$fieldVariable = Database::escape_string($fieldVariable);
|
|
@@ -321,23 +317,24 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
*/
|
|
|
public function updateQueueStatus($params, $newStatus)
|
|
|
{
|
|
|
+ $newStatus = intval($newStatus);
|
|
|
if (isset($params['queue']['id'])) {
|
|
|
$where = array(
|
|
|
- 'id = ?' => $params['queue']['id'],
|
|
|
+ 'id = ?' => intval($params['queue']['id']),
|
|
|
);
|
|
|
- } elseif(isset($params['u']) && isset($params['s'])) {
|
|
|
+ } elseif(isset($params['studentUserId']) && isset($params['sessionId'])) {
|
|
|
$where = array(
|
|
|
'user_id = ? AND session_id = ? AND status <> ? AND status <> ?' => array(
|
|
|
- $params['u'],
|
|
|
- $params['s'],
|
|
|
+ intval($params['studentUserId']),
|
|
|
+ intval($params['sessionId']),
|
|
|
$newStatus,
|
|
|
- ADV_SUB_QUEUE_STATUS_ADMIN_APPROVED,
|
|
|
+ ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_APPROVED,
|
|
|
),
|
|
|
);
|
|
|
}
|
|
|
if (isset($where)) {
|
|
|
$res = (bool) Database::update(
|
|
|
- Database::get_main_table(TABLE_ADV_SUB_QUEUE),
|
|
|
+ Database::get_main_table(TABLE_ADVANCED_SUBSCRIPTION_QUEUE),
|
|
|
array(
|
|
|
'status' => $newStatus,
|
|
|
'updated_at' => api_get_utc_datetime(),
|
|
@@ -359,9 +356,9 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
*/
|
|
|
public function sendMail($data, $actionType)
|
|
|
{
|
|
|
- $tpl = new Template($this->get_lang('plugin_title'));
|
|
|
- $tpl->assign('data', $data);
|
|
|
- $tplParams = array(
|
|
|
+ $template = new Template($this->get_lang('plugin_title'));
|
|
|
+ $template->assign('data', $data);
|
|
|
+ $templateParams = array(
|
|
|
'user',
|
|
|
'student',
|
|
|
'students',
|
|
@@ -373,174 +370,174 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
'acceptUrl',
|
|
|
'rejectUrl'
|
|
|
);
|
|
|
- foreach ($tplParams as $tplParam) {
|
|
|
- $tpl->assign($tplParam, $data[$tplParam]);
|
|
|
+ foreach ($templateParams as $templateParam) {
|
|
|
+ $template->assign($templateParam, $data[$templateParam]);
|
|
|
}
|
|
|
$mailIds = array();
|
|
|
switch ($actionType) {
|
|
|
- case ADV_SUB_ACTION_STUDENT_REQUEST:
|
|
|
+ case ADVANCED_SUBSCRIPTION_ACTION_STUDENT_REQUEST:
|
|
|
// Mail to student
|
|
|
$mailIds['render'] = $this->sendMailMessage(
|
|
|
- $data['u'],
|
|
|
+ $data['studentUserId'],
|
|
|
$data['student']['user_id'],
|
|
|
$this->get_lang('MailStudentRequest'),
|
|
|
- $tpl->fetch('/advancedsubscription/views/advsub_request_received.tpl'),
|
|
|
- $data['s']
|
|
|
+ $template->fetch('/advanced_subscription/views/student_notice_student.tpl'),
|
|
|
+ $data['sessionId']
|
|
|
);
|
|
|
// Mail to superior
|
|
|
$mailIds[] = $this->sendMailMessage(
|
|
|
- $data['u'],
|
|
|
+ $data['studentUserId'],
|
|
|
$data['superior']['user_id'],
|
|
|
$this->get_lang('MailStudentRequest'),
|
|
|
- $tpl->fetch('/advancedsubscription/views/advsub_request_superior.tpl'),
|
|
|
- $data['s'],
|
|
|
+ $template->fetch('/advanced_subscription/views/student_notice_superior.tpl'),
|
|
|
+ $data['sessionId'],
|
|
|
true
|
|
|
);
|
|
|
break;
|
|
|
- case ADV_SUB_ACTION_SUPERIOR_APPROVE:
|
|
|
+ case ADVANCED_SUBSCRIPTION_ACTION_SUPERIOR_APPROVE:
|
|
|
// Mail to student
|
|
|
$mailIds[] = $this->sendMailMessage(
|
|
|
- $data['u'],
|
|
|
+ $data['studentUserId'],
|
|
|
$data['student']['user_id'],
|
|
|
$this->get_lang('MailBossAccept'),
|
|
|
- $tpl->fetch('/advancedsubscription/views/advsub_request_superior_approved.tpl'),
|
|
|
- $data['s']
|
|
|
+ $template->fetch('/advanced_subscription/views/superior_accepted_notice_student.tpl'),
|
|
|
+ $data['sessionId']
|
|
|
);
|
|
|
// Mail to superior
|
|
|
$mailIds['render'] = $this->sendMailMessage(
|
|
|
- $data['u'],
|
|
|
+ $data['studentUserId'],
|
|
|
$data['superior']['user_id'],
|
|
|
$this->get_lang('MailBossAccept'),
|
|
|
- $tpl->fetch('/advancedsubscription/views/advsub_request_approve_confirmed.tpl'),
|
|
|
- $data['s']
|
|
|
+ $template->fetch('/advanced_subscription/views/superior_accepted_notice_superior.tpl'),
|
|
|
+ $data['sessionId']
|
|
|
);
|
|
|
// Mail to admin
|
|
|
foreach ($data['admins'] as $adminId => $admin) {
|
|
|
- $tpl->assign('admin', $admin);
|
|
|
+ $template->assign('admin', $admin);
|
|
|
$mailIds[] = $this->sendMailMessage(
|
|
|
- $data['u'],
|
|
|
+ $data['studentUserId'],
|
|
|
$adminId,
|
|
|
$this->get_lang('MailBossAccept'),
|
|
|
- $tpl->fetch('/advancedsubscription/views/advsub_request_approved_info_admin.tpl'),
|
|
|
- $data['s'],
|
|
|
+ $template->fetch('/advanced_subscription/views/superior_accepted_notice_admin.tpl'),
|
|
|
+ $data['sessionId'],
|
|
|
true
|
|
|
);
|
|
|
}
|
|
|
break;
|
|
|
- case ADV_SUB_ACTION_SUPERIOR_DISAPPROVE:
|
|
|
+ case ADVANCED_SUBSCRIPTION_ACTION_SUPERIOR_DISAPPROVE:
|
|
|
// Mail to student
|
|
|
$mailIds[] = $this->sendMailMessage(
|
|
|
- $data['u'],
|
|
|
+ $data['studentUserId'],
|
|
|
$data['student']['user_id'],
|
|
|
$this->get_lang('MailBossReject'),
|
|
|
- $tpl->fetch('/advancedsubscription/views/advsub_request_superior_disapproved.tpl'),
|
|
|
- $data['s'],
|
|
|
+ $template->fetch('/advanced_subscription/views/superior_rejected_notice_student.tpl'),
|
|
|
+ $data['sessionId'],
|
|
|
true
|
|
|
);
|
|
|
// Mail to superior
|
|
|
$mailIds['render'] = $this->sendMailMessage(
|
|
|
- $data['u'],
|
|
|
+ $data['studentUserId'],
|
|
|
$data['superior']['user_id'],
|
|
|
$this->get_lang('MailBossReject'),
|
|
|
- $tpl->fetch('/advancedsubscription/views/advsub_request_disapprove_confirmed.tpl'),
|
|
|
- $data['s']
|
|
|
+ $template->fetch('/advanced_subscription/views/superior_rejected_notice_superior.tpl'),
|
|
|
+ $data['sessionId']
|
|
|
);
|
|
|
break;
|
|
|
- case ADV_SUB_ACTION_SUPERIOR_SELECT:
|
|
|
+ case ADVANCED_SUBSCRIPTION_ACTION_SUPERIOR_SELECT:
|
|
|
// Mail to student
|
|
|
$mailIds[] = $this->sendMailMessage(
|
|
|
- $data['u'],
|
|
|
+ $data['studentUserId'],
|
|
|
$data['student']['user_id'],
|
|
|
$this->get_lang('MailStudentRequestSelect'),
|
|
|
- $tpl->fetch('/advancedsubscription/views/advsub_request_received.tpl'),
|
|
|
- $data['s']
|
|
|
+ $template->fetch('/advanced_subscription/views/student_notice_student.tpl'),
|
|
|
+ $data['sessionId']
|
|
|
);
|
|
|
// Mail to superior
|
|
|
$mailIds['render'] = $this->sendMailMessage(
|
|
|
- $data['u'],
|
|
|
+ $data['studentUserId'],
|
|
|
$data['superior']['user_id'],
|
|
|
$this->get_lang('MailStudentRequestSelect'),
|
|
|
- $tpl->fetch('/advancedsubscription/views/advsub_request_superior.tpl'),
|
|
|
- $data['s'],
|
|
|
+ $template->fetch('/advanced_subscription/views/student_notice_superior.tpl'),
|
|
|
+ $data['sessionId'],
|
|
|
true
|
|
|
);
|
|
|
break;
|
|
|
- case ADV_SUB_ACTION_ADMIN_APPROVE:
|
|
|
+ case ADVANCED_SUBSCRIPTION_ACTION_ADMIN_APPROVE:
|
|
|
// Mail to student
|
|
|
$mailIds[] = $this->sendMailMessage(
|
|
|
- $data['u'],
|
|
|
+ $data['studentUserId'],
|
|
|
$data['student']['user_id'],
|
|
|
$this->get_lang('MailAdminAccept'),
|
|
|
- $tpl->fetch('/advancedsubscription/views/advsub_approval_admin_accepted_notice_student.tpl'),
|
|
|
- $data['s']
|
|
|
+ $template->fetch('/advanced_subscription/views/admin_accepted_notice_student.tpl'),
|
|
|
+ $data['sessionId']
|
|
|
);
|
|
|
// Mail to superior
|
|
|
$mailIds[] = $this->sendMailMessage(
|
|
|
- $data['u'],
|
|
|
+ $data['studentUserId'],
|
|
|
$data['superior']['user_id'],
|
|
|
$this->get_lang('MailAdminAccept'),
|
|
|
- $tpl->fetch('/advancedsubscription/views/advsub_approval_admin_accepted_notice_superior.tpl'),
|
|
|
- $data['s']
|
|
|
+ $template->fetch('/advanced_subscription/views/admin_accepted_notice_superior.tpl'),
|
|
|
+ $data['sessionId']
|
|
|
);
|
|
|
// Mail to admin
|
|
|
- $adminId = $data['current_user_id'];
|
|
|
- $tpl->assign('admin', $data['admins'][$adminId]);
|
|
|
+ $adminId = $data['currentUserId'];
|
|
|
+ $template->assign('admin', $data['admins'][$adminId]);
|
|
|
$mailIds['render'] = $this->sendMailMessage(
|
|
|
- $data['u'],
|
|
|
+ $data['studentUserId'],
|
|
|
$adminId,
|
|
|
$this->get_lang('MailAdminAccept'),
|
|
|
- $tpl->fetch('/advancedsubscription/views/advsub_approval_admin_accepted_notice_admin.tpl'),
|
|
|
- $data['s'],
|
|
|
+ $template->fetch('/advanced_subscription/views/admin_accepted_notice_admin.tpl'),
|
|
|
+ $data['sessionId'],
|
|
|
true
|
|
|
);
|
|
|
break;
|
|
|
- case ADV_SUB_ACTION_ADMIN_DISAPPROVE:
|
|
|
+ case ADVANCED_SUBSCRIPTION_ACTION_ADMIN_DISAPPROVE:
|
|
|
// Mail to student
|
|
|
$mailIds[] = $this->sendMailMessage(
|
|
|
- $data['u'],
|
|
|
+ $data['studentUserId'],
|
|
|
$data['student']['user_id'],
|
|
|
$this->get_lang('MailAdminReject'),
|
|
|
- $tpl->fetch('/advancedsubscription/views/advsub_approval_admin_rejected_notice_student.tpl'),
|
|
|
- $data['s'],
|
|
|
+ $template->fetch('/advanced_subscription/views/admin_rejected_notice_student.tpl'),
|
|
|
+ $data['sessionId'],
|
|
|
true
|
|
|
);
|
|
|
// Mail to superior
|
|
|
$mailIds[] = $this->sendMailMessage(
|
|
|
- $data['u'],
|
|
|
+ $data['studentUserId'],
|
|
|
$data['superior']['user_id'],
|
|
|
$this->get_lang('MailAdminReject'),
|
|
|
- $tpl->fetch('/advancedsubscription/views/advsub_approval_admin_rejected_notice_superior.tpl'),
|
|
|
- $data['s']
|
|
|
+ $template->fetch('/advanced_subscription/views/admin_rejected_notice_superior.tpl'),
|
|
|
+ $data['sessionId']
|
|
|
);
|
|
|
// Mail to admin
|
|
|
- $adminId = $data['current_user_id'];
|
|
|
- $tpl->assign('admin', $data['admins'][$adminId]);
|
|
|
+ $adminId = $data['currentUserId'];
|
|
|
+ $template->assign('admin', $data['admins'][$adminId]);
|
|
|
$mailIds['render'] = $this->sendMailMessage(
|
|
|
- $data['u'],
|
|
|
+ $data['studentUserId'],
|
|
|
$adminId,
|
|
|
$this->get_lang('MailAdminReject'),
|
|
|
- $tpl->fetch('/advancedsubscription/views/advsub_approval_admin_rejected_notice_admin.tpl'),
|
|
|
- $data['s']
|
|
|
+ $template->fetch('/advanced_subscription/views/admin_rejected_notice_admin.tpl'),
|
|
|
+ $data['sessionId']
|
|
|
);
|
|
|
break;
|
|
|
- case ADV_SUB_ACTION_STUDENT_REQUEST_NO_BOSS:
|
|
|
+ case ADVANCED_SUBSCRIPTION_ACTION_STUDENT_REQUEST_NO_BOSS:
|
|
|
// Mail to student
|
|
|
$mailIds['render'] = $this->sendMailMessage(
|
|
|
- $data['u'],
|
|
|
+ $data['studentUserId'],
|
|
|
$data['student']['user_id'],
|
|
|
$this->get_lang('MailStudentRequestNoBoss'),
|
|
|
- $tpl->fetch('/advancedsubscription/views/advsub_request_received_no_boss.tpl'),
|
|
|
- $data['s']
|
|
|
+ $template->fetch('/advanced_subscription/views/student_no_superior_notice_student.tpl'),
|
|
|
+ $data['sessionId']
|
|
|
);
|
|
|
// Mail to admin
|
|
|
foreach ($data['admins'] as $adminId => $admin) {
|
|
|
- $tpl->assign('admin', $admin);
|
|
|
+ $template->assign('admin', $admin);
|
|
|
$mailIds[] = $this->sendMailMessage(
|
|
|
- $data['u'],
|
|
|
+ $data['studentUserId'],
|
|
|
$adminId,
|
|
|
$this->get_lang('MailStudentRequestNoBoss'),
|
|
|
- $tpl->fetch('/advancedsubscription/views/advsub_request_approved_info_admin.tpl'),
|
|
|
- $data['s'],
|
|
|
+ $template->fetch('/advanced_subscription/views/student_no_superior_notice_admin.tpl'),
|
|
|
+ $data['sessionId'],
|
|
|
true
|
|
|
);
|
|
|
}
|
|
@@ -565,16 +562,22 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
{
|
|
|
$count = 0;
|
|
|
if (!empty($params) && is_array($params)) {
|
|
|
- $advsubQueueTable = Database::get_main_table(TABLE_ADV_SUB_QUEUE);
|
|
|
+ $advancedSubscriptionQueueTable = Database::get_main_table(TABLE_ADVANCED_SUBSCRIPTION_QUEUE);
|
|
|
$where['1 = ? '] = 1;
|
|
|
if (isset($params['sessions']) && is_array($params['sessions'])) {
|
|
|
+ foreach ($params['sessions'] as &$sessionId) {
|
|
|
+ $sessionId = intval($sessionId);
|
|
|
+ }
|
|
|
$where['AND session_id IN ( ? ) '] = implode($params['sessions']);
|
|
|
}
|
|
|
if (isset($params['status']) && is_array($params['status'])) {
|
|
|
+ foreach ($params['status'] as &$status) {
|
|
|
+ $status = intval($status);
|
|
|
+ }
|
|
|
$where['AND status IN ( ? ) '] = implode($params['status']);
|
|
|
}
|
|
|
$where['where'] = $where;
|
|
|
- $count = Database::select('COUNT(*)', $advsubQueueTable, $where);
|
|
|
+ $count = Database::select('COUNT(*)', $advancedSubscriptionQueueTable, $where);
|
|
|
$count = $count[0]['COUNT(*)'];
|
|
|
}
|
|
|
return $count;
|
|
@@ -614,8 +617,10 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
*/
|
|
|
public function getQueueStatus($userId, $sessionId)
|
|
|
{
|
|
|
+ $userId = intval($userId);
|
|
|
+ $sessionId = intval($sessionId);
|
|
|
if (!empty($userId) && !empty($sessionId)) {
|
|
|
- $queueTable = Database::get_main_table(TABLE_ADV_SUB_QUEUE);
|
|
|
+ $queueTable = Database::get_main_table(TABLE_ADVANCED_SUBSCRIPTION_QUEUE);
|
|
|
$row = Database::select(
|
|
|
'status',
|
|
|
$queueTable,
|
|
@@ -631,7 +636,7 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
return $row[0]['status'];
|
|
|
} else {
|
|
|
|
|
|
- return ADV_SUB_QUEUE_STATUS_NO_QUEUE;
|
|
|
+ return ADVANCED_SUBSCRIPTION_QUEUE_STATUS_NO_QUEUE;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -650,8 +655,12 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
$var = $extra->get_values_by_handler_and_field_variable($sessionId, 'vacancies');
|
|
|
$vacancy = intval($var['field_value']);
|
|
|
if (!empty($vacancy)) {
|
|
|
- $vacancy -= $this->countQueueByParams(array('sessions' => $sessionId, 'status' => ADV_SUB_QUEUE_STATUS_ADMIN_APPROVED));
|
|
|
-
|
|
|
+ $vacancy -= $this->countQueueByParams(
|
|
|
+ array(
|
|
|
+ 'sessions' => array($sessionId),
|
|
|
+ 'status' => array(ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_APPROVED),
|
|
|
+ )
|
|
|
+ );
|
|
|
if ($vacancy >= 0) {
|
|
|
|
|
|
return $vacancy;
|
|
@@ -670,26 +679,33 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
public function getSessionDetails($sessionId)
|
|
|
{
|
|
|
if (!empty($sessionId)) {
|
|
|
- $extra = new ExtraFieldValue('session');
|
|
|
- $var = $extra->get_values_by_handler_and_field_variable($sessionId, 'id');
|
|
|
- $data['id'] = $var['field_value'];
|
|
|
- $var = $extra->get_values_by_handler_and_field_variable($sessionId, 'cost');
|
|
|
- $data['cost'] = $var['field_value'];
|
|
|
- $var = $extra->get_values_by_handler_and_field_variable($sessionId, 'place');
|
|
|
- $data['place'] = $var['field_value'];
|
|
|
- $var = $extra->get_values_by_handler_and_field_variable($sessionId, 'allow_visitors');
|
|
|
- $data['allow_visitors'] = $var['field_value'];
|
|
|
- $var = $extra->get_values_by_handler_and_field_variable($sessionId, 'horas_lectivas');
|
|
|
- $data['duration'] = $var['field_value'];
|
|
|
- // Get brochure URL
|
|
|
- $var = $extra->get_values_by_handler_and_field_variable($sessionId, 'brochure');
|
|
|
- $data['brochure'] = api_get_path(WEB_CODE_PATH) . $var['field_value'];
|
|
|
- // Get banner URL
|
|
|
- $var = $extra->get_values_by_handler_and_field_variable($sessionId, 'banner');
|
|
|
- $data['banner'] = api_get_path(WEB_CODE_PATH) . $var['field_value'];
|
|
|
- $data['description'] = SessionManager::getDescriptionFromSessionId($sessionId);
|
|
|
-
|
|
|
- return $data;
|
|
|
+ // Assign variables
|
|
|
+ $fieldsArray = array('id', 'cost', 'place', 'allow_visitors', 'teaching_hours', 'brochure', 'banner');
|
|
|
+ $extraSession = new ExtraFieldValue('session');
|
|
|
+ $extraField = new ExtraField('session');
|
|
|
+ // Get session fields
|
|
|
+ $fieldList = $extraField->get_all(array(
|
|
|
+ 'field_variable IN ( ?, ?, ?, ?, ?)' => $fieldsArray
|
|
|
+ ));
|
|
|
+ // Index session fields
|
|
|
+ foreach ($fieldList as $field) {
|
|
|
+ $fields[$field['id']] = $field['field_variable'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $mergedArray = array_merge(array($sessionId), array_keys($fields));
|
|
|
+ $sessionFieldValueList = $extraSession->get_all(array('session_id = ? field_id IN ( ?, ?, ?, ?, ?, ?, ? )' => $mergedArray));
|
|
|
+ foreach ($sessionFieldValueList as $sessionFieldValue) {
|
|
|
+ // Check if session field value is set in session field list
|
|
|
+ if (isset($fields[$sessionFieldValue['field_id']])) {
|
|
|
+ $var = $fields[$sessionFieldValue['field_id']];
|
|
|
+ $val = $sessionFieldValue['field_value'];
|
|
|
+ // Assign session field value to session
|
|
|
+ $sessionArray[$var] = $val;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $sessionArray['description'] = SessionManager::getDescriptionFromSessionId($sessionId);
|
|
|
+
|
|
|
+ return $sessionArray;
|
|
|
}
|
|
|
|
|
|
return false;
|
|
@@ -706,26 +722,26 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
$message = '';
|
|
|
switch ($status)
|
|
|
{
|
|
|
- case ADV_SUB_QUEUE_STATUS_NO_QUEUE:
|
|
|
+ case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_NO_QUEUE:
|
|
|
if ($isAble) {
|
|
|
$message = $this->get_lang('AdvancedSubscriptionNoQueueIsAble');
|
|
|
} else {
|
|
|
$message = $this->get_lang('AdvancedSubscriptionNoQueue');
|
|
|
}
|
|
|
break;
|
|
|
- case ADV_SUB_QUEUE_STATUS_START:
|
|
|
+ case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_START:
|
|
|
$message = $this->get_lang('AdvancedSubscriptionQueueStart');
|
|
|
break;
|
|
|
- case ADV_SUB_QUEUE_STATUS_BOSS_DISAPPROVED:
|
|
|
+ case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_BOSS_DISAPPROVED:
|
|
|
$message = $this->get_lang('AdvancedSubscriptionQueueBossDisapproved');
|
|
|
break;
|
|
|
- case ADV_SUB_QUEUE_STATUS_BOSS_APPROVED:
|
|
|
+ case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_BOSS_APPROVED:
|
|
|
$message = $this->get_lang('AdvancedSubscriptionQueueBossApproved');
|
|
|
break;
|
|
|
- case ADV_SUB_QUEUE_STATUS_ADMIN_DISAPPROVED:
|
|
|
+ case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_DISAPPROVED:
|
|
|
$message = $this->get_lang('AdvancedSubscriptionQueueAdminDisapproved');
|
|
|
break;
|
|
|
- case ADV_SUB_QUEUE_STATUS_ADMIN_APPROVED:
|
|
|
+ case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_APPROVED:
|
|
|
$message = $this->get_lang('AdvancedSubscriptionQueueAdminApproved');
|
|
|
break;
|
|
|
default:
|
|
@@ -743,7 +759,7 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
*/
|
|
|
public function getSessionUrl($sessionId)
|
|
|
{
|
|
|
- $url = api_get_path(WEB_CODE_PATH) . 'session/?session_id=' . $sessionId;
|
|
|
+ $url = api_get_path(WEB_CODE_PATH) . 'session/?session_id=' . intval($sessionId);
|
|
|
return $url;
|
|
|
}
|
|
|
|
|
@@ -754,15 +770,15 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
*/
|
|
|
public function getQueueUrl($params)
|
|
|
{
|
|
|
- $url = api_get_path(WEB_PLUGIN_PATH) . 'advancedsubscription/ajax/advsub.ajax.php?' .
|
|
|
- 'a=' . $params['a'] . '&' .
|
|
|
- 's=' . $params['s'] . '&' .
|
|
|
- 'current_user_id=' . $params['current_user_id'] . '&' .
|
|
|
- 'e=' . $params['e'] . '&' .
|
|
|
- 'u=' . $params['u'] . '&' .
|
|
|
- 'q=' . $params['q'] . '&' .
|
|
|
- 'is_connected=' . $params['is_connected'] . '&' .
|
|
|
- 'profile_completed=' . $params['profile_completed'] . '&' .
|
|
|
+ $url = api_get_path(WEB_PLUGIN_PATH) . 'advanced_subscription/ajax/advanced_subscription.ajax.php?' .
|
|
|
+ 'a=' . Security::remove_XSS($params['action']) . '&' .
|
|
|
+ 's=' . intval($params['sessionId']) . '&' .
|
|
|
+ 'current_user_id=' . intval($params['currentUserId']) . '&' .
|
|
|
+ 'e=' . intval($params['newStatus']) . '&' .
|
|
|
+ 'u=' . intval($params['studentUserId']) . '&' .
|
|
|
+ 'q=' . intval($params['queueId']) . '&' .
|
|
|
+ 'is_connected=' . intval($params['is_connected']) . '&' .
|
|
|
+ 'profile_completed=' . intval($params['profile_completed']) . '&' .
|
|
|
'v=' . $this->generateHash($params);
|
|
|
return $url;
|
|
|
}
|
|
@@ -774,19 +790,34 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
*/
|
|
|
public function listAllStudentsInQueueBySession($sessionId)
|
|
|
{
|
|
|
+ // Filter input variable
|
|
|
+ $sessionId = intval($sessionId);
|
|
|
+ // Assign variables
|
|
|
+ $fieldsArray = array('target', 'publication_end_date', 'mode', 'recommended_number_of_participants', 'vacancies');
|
|
|
+ $sessionArray = api_get_session_info($sessionId);
|
|
|
$extraSession = new ExtraFieldValue('session');
|
|
|
- $session = api_get_session_info($sessionId);
|
|
|
- $var = $extraSession->get_values_by_handler_and_field_variable($sessionId, 'target');
|
|
|
- $session['target'] = $var['field_value'];
|
|
|
- $var = $extraSession->get_values_by_handler_and_field_variable($sessionId, 'publication_end_date');
|
|
|
- $session['publication_end_date'] = $var['field_value'];
|
|
|
- $var = $extraSession->get_values_by_handler_and_field_variable($sessionId, 'mode');
|
|
|
- $session['mode'] = $var['field_value'];
|
|
|
- $var = $extraSession->get_values_by_handler_and_field_variable($sessionId, 'recommended_number_of_participants');
|
|
|
- $session['recommended_number_of_participants'] = $var['field_value'];
|
|
|
- $var = $extraSession->get_values_by_handler_and_field_variable($sessionId, 'vacancies');
|
|
|
- $session['vacancies'] = $var['field_value'];
|
|
|
- $queueTable = Database::get_main_table(TABLE_ADV_SUB_QUEUE);
|
|
|
+ $extraField = new ExtraField('session');
|
|
|
+ // Get session fields
|
|
|
+ $fieldList = $extraField->get_all(array(
|
|
|
+ 'field_variable IN ( ?, ?, ?, ?, ?)' => $fieldsArray
|
|
|
+ ));
|
|
|
+ // Index session fields
|
|
|
+ foreach ($fieldList as $field) {
|
|
|
+ $fields[$field['id']] = $field['field_variable'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $mergedArray = array_merge(array($sessionId), array_keys($fields));
|
|
|
+ $sessionFieldValueList = $extraSession->get_all(array('session_id = ? field_id IN ( ?, ?, ?, ?, ?, ?, ? )' => $mergedArray));
|
|
|
+ foreach ($sessionFieldValueList as $sessionFieldValue) {
|
|
|
+ // Check if session field value is set in session field list
|
|
|
+ if (isset($fields[$sessionFieldValue['field_id']])) {
|
|
|
+ $var = $fields[$sessionFieldValue['field_id']];
|
|
|
+ $val = $sessionFieldValue['field_value'];
|
|
|
+ // Assign session field value to session
|
|
|
+ $sessionArray[$var] = $val;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $queueTable = Database::get_main_table(TABLE_ADVANCED_SUBSCRIPTION_QUEUE);
|
|
|
$userTable = Database::get_main_table(TABLE_MAIN_USER);
|
|
|
$userJoinTable = $queueTable . ' q INNER JOIN ' . $userTable . ' u ON q.user_id = u.user_id';
|
|
|
$where = array(
|
|
@@ -794,8 +825,8 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
array(
|
|
|
'q.session_id = ? AND q.status <> ? AND q.status <> ?' => array(
|
|
|
$sessionId,
|
|
|
- ADV_SUB_QUEUE_STATUS_ADMIN_APPROVED,
|
|
|
- ADV_SUB_QUEUE_STATUS_ADMIN_DISAPPROVED,
|
|
|
+ ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_APPROVED,
|
|
|
+ ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_DISAPPROVED,
|
|
|
)
|
|
|
)
|
|
|
);
|
|
@@ -804,16 +835,16 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
foreach ($students as &$student) {
|
|
|
$status = intval($student['status']);
|
|
|
switch($status) {
|
|
|
- case ADV_SUB_QUEUE_STATUS_NO_QUEUE:
|
|
|
- case ADV_SUB_QUEUE_STATUS_START:
|
|
|
+ case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_NO_QUEUE:
|
|
|
+ case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_START:
|
|
|
$student['validation'] = '';
|
|
|
break;
|
|
|
- case ADV_SUB_QUEUE_STATUS_BOSS_DISAPPROVED:
|
|
|
- case ADV_SUB_QUEUE_STATUS_ADMIN_DISAPPROVED:
|
|
|
+ case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_BOSS_DISAPPROVED:
|
|
|
+ case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_DISAPPROVED:
|
|
|
$student['validation'] = get_lang('No');
|
|
|
break;
|
|
|
- case ADV_SUB_QUEUE_STATUS_BOSS_APPROVED:
|
|
|
- case ADV_SUB_QUEUE_STATUS_ADMIN_APPROVED:
|
|
|
+ case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_BOSS_APPROVED:
|
|
|
+ case ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_APPROVED:
|
|
|
$student['validation'] = get_lang('Yes');
|
|
|
break;
|
|
|
default:
|
|
@@ -821,7 +852,7 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
}
|
|
|
}
|
|
|
$return = array(
|
|
|
- 'session' => $session,
|
|
|
+ 'session' => $sessionArray,
|
|
|
'students' => $students,
|
|
|
);
|
|
|
|
|
@@ -831,13 +862,23 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
|
|
|
/**
|
|
|
* List all session (id, name) for select input
|
|
|
+ * @param int $limit
|
|
|
* @return array
|
|
|
*/
|
|
|
- public function listAllSessions()
|
|
|
+ public function listAllSessions($limit = 100)
|
|
|
{
|
|
|
+ $limit = intval($limit);
|
|
|
$sessionTable = Database::get_main_table(TABLE_MAIN_SESSION);
|
|
|
$columns = 'id, name';
|
|
|
- return Database::select($columns, $sessionTable);
|
|
|
+ $conditions = array();
|
|
|
+ if ($limit > 0) {
|
|
|
+ $conditions = array(
|
|
|
+ 'order' => 'name',
|
|
|
+ 'limit' => $limit,
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ return Database::select($columns, $sessionTable, $conditions);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -849,12 +890,12 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
{
|
|
|
$key = sha1($this->get('secret_key'));
|
|
|
// Prepare array to have specific type variables
|
|
|
- $dataPrepared['a'] = strval($data['a']);
|
|
|
- $dataPrepared['s'] = intval($data['s']);
|
|
|
- $dataPrepared['current_user_id'] = intval($data['current_user_id']);
|
|
|
- $dataPrepared['u'] = intval($data['u']);
|
|
|
- $dataPrepared['q'] = intval($data['q']);
|
|
|
- $dataPrepared['e'] = intval($data['e']);
|
|
|
+ $dataPrepared['action'] = strval($data['action']);
|
|
|
+ $dataPrepared['sessionId'] = intval($data['sessionId']);
|
|
|
+ $dataPrepared['currentUserId'] = intval($data['currentUserId']);
|
|
|
+ $dataPrepared['studentUserId'] = intval($data['studentUserId']);
|
|
|
+ $dataPrepared['queueId'] = intval($data['queueId']);
|
|
|
+ $dataPrepared['newStatus'] = intval($data['newStatus']);
|
|
|
$dataPrepared = serialize($dataPrepared);
|
|
|
return sha1($dataPrepared . $key);
|
|
|
}
|
|
@@ -869,4 +910,14 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
|
|
|
{
|
|
|
return $this->generateHash($data) == $hash;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Copied and fixed from plugin.class.php
|
|
|
+ * Returns the "system" name of the plugin in lowercase letters
|
|
|
+ * @return string
|
|
|
+ */
|
|
|
+ public function get_name()
|
|
|
+ {
|
|
|
+ return 'advanced_subscription';
|
|
|
+ }
|
|
|
}
|