diff --git a/plugin/advanced_subscription/ajax/advanced_subscription.ajax.php b/plugin/advanced_subscription/ajax/advanced_subscription.ajax.php
index c69ad8a16b..f1e33ea8c2 100644
--- a/plugin/advanced_subscription/ajax/advanced_subscription.ajax.php
+++ b/plugin/advanced_subscription/ajax/advanced_subscription.ajax.php
@@ -53,6 +53,11 @@ if ($verified) {
$res = AdvancedSubscriptionPlugin::create()->startSubscription($data['studentUserId'], $data['sessionId'], $data);
// Check if queue subscription was successful
if ($res === true) {
+ $legalEnabled = api_get_plugin_setting('courselegal', 'tool_enable');
+ if ($legalEnabled) {
+ // Save terms confirmation
+ CourseLegalPlugin::create()->saveUserLegal($data['studentUserId'], $data['courseId'], $data['sessionId']);
+ }
// Prepare data
// Get session data
// Assign variables
@@ -128,9 +133,8 @@ if ($verified) {
// Check if exist an email to render
if (isset($result['mailIds']['render'])) {
// Render mail
- $message = MessageManager::get_message_by_id($result['mailIds']['render']);
- $message = str_replace(array('
', '
', '
'), '', $message['content']);
- echo $message;
+ $url = $plugin->getRenderMailUrl(array('queueId' => $result['mailIds']['render']));
+ Header::location($url);
exit;
}
}
@@ -153,20 +157,27 @@ if ($verified) {
// Check if exist an email to render
if (isset($result['mailIds']['render'])) {
// Render mail
- $message = MessageManager::get_message_by_id($result['mailIds']['render']);
- $message = str_replace(array('
', '
', '
'), '', $message['content']);
- echo $message;
+ $url = $plugin->getRenderMailUrl(array('queueId' => $result['mailIds']['render']));
+ Header::location($url);
exit;
}
}
}
} else {
- if (is_string($res)) {
- $result['errorMessage'] = $res;
+ $lastMessageId = $plugin->getLastMessageId($data['studentUserId'], $data['sessionId']);
+ if ($lastMessageId !== false) {
+ // Render mail
+ $url = $plugin->getRenderMailUrl(array('queueId' => $lastMessageId));
+ Header::location($url);
+ exit;
} else {
- $result['errorMessage'] = 'User can not be subscribed';
+ if (is_string($res)) {
+ $result['errorMessage'] = $res;
+ } else {
+ $result['errorMessage'] = 'User can not be subscribed';
+ }
+ $result['pass'] = false;
}
- $result['pass'] = false;
}
break;
@@ -265,9 +276,8 @@ if ($verified) {
// Check if exist mail to render
if (isset($result['mailIds']['render'])) {
// Render mail
- $message = MessageManager::get_message_by_id($result['mailIds']['render']);
- $message = str_replace(array('
', '
', '
'), '', $message['content']);
- echo $message;
+ $url = $plugin->getRenderMailUrl(array('queueId' => $result['mailIds']['render']));
+ Header::location($url);
exit;
}
}
@@ -276,14 +286,6 @@ if ($verified) {
}
}
break;
- case 'terms_response':
- // Check if new status is set
- if (isset($data['accept_terms']) && $data['accept_terms'] == 1) {
- $legalPlugin = CourseLegalPlugin::create()->saveUserLegal($data['studentId'], $data['courseId'], $data['sessionId']);
- } else {
- $result['errorMessage'] = 'Need terms response params';
- }
- break;
default:
$result['errorMessage'] = 'This action does not exist!';
}
diff --git a/plugin/advanced_subscription/config.php b/plugin/advanced_subscription/config.php
index 9d1df8e83b..6bd8b7eef1 100644
--- a/plugin/advanced_subscription/config.php
+++ b/plugin/advanced_subscription/config.php
@@ -27,4 +27,9 @@ define('ADVANCED_SUBSCRIPTION_QUEUE_STATUS_BOSS_APPROVED', 2);
define('ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_DISAPPROVED', 3);
define('ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_APPROVED', 10);
+define('ADVANCED_SUBSCRIPTION_TERMS_MODE_POPUP', 0);
+define('ADVANCED_SUBSCRIPTION_TERMS_MODE_REJECT', 1);
+
+
+
require_once __DIR__ . '/../../main/inc/global.inc.php';
diff --git a/plugin/advanced_subscription/src/AdvancedSubscriptionPlugin.php b/plugin/advanced_subscription/src/AdvancedSubscriptionPlugin.php
index 8797fc77ec..b3e6515714 100644
--- a/plugin/advanced_subscription/src/AdvancedSubscriptionPlugin.php
+++ b/plugin/advanced_subscription/src/AdvancedSubscriptionPlugin.php
@@ -322,6 +322,17 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$studentId = intval($studentId);
$this->saveLastMessage($mailId, $studentId, $sessionId);
}
+ } elseif (!empty($mailId)) {
+ // Update queue row, updated_at
+ Database::update(
+ Database::get_main_table(TABLE_ADVANCED_SUBSCRIPTION_QUEUE),
+ array(
+ 'updated_at' => api_get_utc_datetime(),
+ ),
+ array(
+ 'user_id = ? AND session_id = ?' => array($studentId, $sessionId)
+ )
+ );
}
return $mailId;
}
@@ -431,7 +442,8 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$data['student']['user_id'],
$this->get_lang('MailStudentRequest'),
$template->fetch('/advanced_subscription/views/student_notice_student.tpl'),
- $data['sessionId']
+ $data['sessionId'],
+ true
);
// Mail to superior
$mailIds[] = $this->sendMailMessage(
@@ -439,8 +451,7 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$data['superior']['user_id'],
$this->get_lang('MailStudentRequest'),
$template->fetch('/advanced_subscription/views/student_notice_superior.tpl'),
- $data['sessionId'],
- true
+ $data['sessionId']
);
break;
case ADVANCED_SUBSCRIPTION_ACTION_SUPERIOR_APPROVE:
@@ -450,7 +461,8 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$data['student']['user_id'],
$this->get_lang('MailBossAccept'),
$template->fetch('/advanced_subscription/views/superior_accepted_notice_student.tpl'),
- $data['sessionId']
+ $data['sessionId'],
+ true
);
// Mail to superior
$mailIds['render'] = $this->sendMailMessage(
@@ -468,8 +480,7 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$adminId,
$this->get_lang('MailBossAccept'),
$template->fetch('/advanced_subscription/views/superior_accepted_notice_admin.tpl'),
- $data['sessionId'],
- true
+ $data['sessionId']
);
}
break;
@@ -499,7 +510,8 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$data['student']['user_id'],
$this->get_lang('MailStudentRequestSelect'),
$template->fetch('/advanced_subscription/views/student_notice_student.tpl'),
- $data['sessionId']
+ $data['sessionId'],
+ true
);
// Mail to superior
$mailIds['render'] = $this->sendMailMessage(
@@ -507,8 +519,7 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$data['superior']['user_id'],
$this->get_lang('MailStudentRequestSelect'),
$template->fetch('/advanced_subscription/views/student_notice_superior.tpl'),
- $data['sessionId'],
- true
+ $data['sessionId']
);
break;
case ADVANCED_SUBSCRIPTION_ACTION_ADMIN_APPROVE:
@@ -518,7 +529,8 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$data['student']['user_id'],
$this->get_lang('MailAdminAccept'),
$template->fetch('/advanced_subscription/views/admin_accepted_notice_student.tpl'),
- $data['sessionId']
+ $data['sessionId'],
+ true
);
// Mail to superior
$mailIds[] = $this->sendMailMessage(
@@ -536,8 +548,7 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$adminId,
$this->get_lang('MailAdminAccept'),
$template->fetch('/advanced_subscription/views/admin_accepted_notice_admin.tpl'),
- $data['sessionId'],
- true
+ $data['sessionId']
);
break;
case ADVANCED_SUBSCRIPTION_ACTION_ADMIN_DISAPPROVE:
@@ -576,7 +587,8 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$data['student']['user_id'],
$this->get_lang('MailStudentRequestNoBoss'),
$template->fetch('/advanced_subscription/views/student_no_superior_notice_student.tpl'),
- $data['sessionId']
+ $data['sessionId'],
+ true
);
// Mail to admin
foreach ($data['admins'] as $adminId => $admin) {
@@ -586,8 +598,7 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$adminId,
$this->get_lang('MailStudentRequestNoBoss'),
$template->fetch('/advanced_subscription/views/student_no_superior_notice_admin.tpl'),
- $data['sessionId'],
- true
+ $data['sessionId']
);
}
break;
@@ -607,8 +618,7 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$data['superior']['user_id'],
$this->get_lang('MailRemindSuperior'),
$template->fetch('/advanced_subscription/views/reminder_notice_superior.tpl'),
- $data['sessionId'],
- true
+ $data['sessionId']
);
break;
case ADVANCED_SUBSCRIPTION_ACTION_REMINDER_SUPERIOR_MAX:
@@ -617,8 +627,7 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$data['superior']['user_id'],
$this->get_lang('MailRemindSuperior'),
$template->fetch('/advanced_subscription/views/reminder_notice_superior_max.tpl'),
- $data['sessionId'],
- true
+ $data['sessionId']
);
break;
case ADVANCED_SUBSCRIPTION_ACTION_REMINDER_ADMIN:
@@ -630,8 +639,7 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$adminId,
$this->get_lang('MailRemindAdmin'),
$template->fetch('/advanced_subscription/views/reminder_notice_admin.tpl'),
- $data['sessionId'],
- true
+ $data['sessionId']
);
}
break;
@@ -1045,7 +1053,7 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
* @param int $mode
* @return string
*/
- public function getTermsUrl($params, $mode = 0)
+ public function getTermsUrl($params, $mode = ADVANCED_SUBSCRIPTION_TERMS_MODE_POPUP)
{
$url = api_get_path(WEB_PLUGIN_PATH) . 'advanced_subscription/src/terms_and_conditions.php?' .
'a=' . Security::remove_XSS($params['action']) . '&' .
@@ -1059,32 +1067,52 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
'r=' . intval($mode) . '&' .
'v=' . $this->generateHash($params);
// Launch popup
- if ($mode == 0) {
- $url = 'javascript:void(window.open(\'' . $url .'\',\'Terms\', \'100\', \'100\' );)';
+ if ($mode == ADVANCED_SUBSCRIPTION_TERMS_MODE_POPUP) {
+ $url = 'javascript:void(window.open(\'' . $url .'\',\'AdvancedSubscriptionTerms\', \'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=700px,height=600px\', \'100\' ))';
}
return $url;
}
/**
- * Return the url to get subscription terms
+ * Return the url to get mail rendered
* @param array $params
- * @param int $acceptTerms
* @return string
*/
- public function getTermsResponseUrl($params, $acceptTerms = 0)
+ public function getRenderMailUrl($params)
{
- $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=' . 0 . '&' .
- 'e=' . 0 . '&' .
- 'u=' . intval($params['studentUserId']) . '&' .
- 'q=' . 0 . '&' .
- 'is_connected=' . 1 . '&' .
- 'profile_completed=' . intval($params['profile_completed']) . '&' .
- 'accept_terms=' . intval($acceptTerms) . '&' .
- 'c=' . intval($params['courseId']) . '&' .
+ $url = api_get_path(WEB_PLUGIN_PATH) . 'advanced_subscription/src/render_mail.php?' .
+ 'q=' . $params['queueId'] . '&' .
'v=' . $this->generateHash($params);
return $url;
}
+
+ /**
+ * Return the last message id from queue row
+ * @param int $studentUserId
+ * @param int $sessionId
+ * @return int|bool
+ */
+ public function getLastMessageId($studentUserId, $sessionId)
+ {
+ $studentUserId = intval($studentUserId);
+ $sessionId = intval($sessionId);
+ if (!empty($sessionId) && !empty($studentUserId)) {
+ $row = Database::select(
+ 'last_message_id',
+ Database::get_main_table(TABLE_ADVANCED_SUBSCRIPTION_QUEUE),
+ array(
+ 'where' => array(
+ 'user_id = ? AND session_id = ?' => array($studentUserId, $sessionId),
+ )
+ )
+ );
+
+ if (count($row) > 0) {
+
+ return $row[0]['last_message_id'];
+ }
+ }
+
+ return false;
+ }
}
diff --git a/plugin/advanced_subscription/src/HookAdvancedSubscription.php b/plugin/advanced_subscription/src/HookAdvancedSubscription.php
index 7ed8dbec7a..4435416b5e 100644
--- a/plugin/advanced_subscription/src/HookAdvancedSubscription.php
+++ b/plugin/advanced_subscription/src/HookAdvancedSubscription.php
@@ -621,82 +621,6 @@ class HookAdvancedSubscription extends HookObserver implements
return $sessionList;
}
- /**
- * Get a list of sessions (id, coach_id, name, courses_num, users_num, classes_num,
- * date_start, date_end, access_days_before_num, session_admin_id, visibility,
- * session_category_id, promotion_id,
- * validated_user_num, waiting_user_num,
- * extra, course) the validated_usernum and waiting_user_num are
- * used when have the plugin for advance incsription enables.
- * The extra data (field_name, field_value)
- * The course data (course_id, course_code, course_title,
- * coach_username, coach_firstname, coach_lastname)
- * @param array $params List of parameters (id, category_name, access_url_id, secret_key)
- * @return array|soap_fault Sessions list (id=>[title=>'title',url='http://...',date_start=>'...',date_end=>''])
- */
- public static function WSTermsAndConditions($params)
- {
- global $debug;
-
- if ($debug) {
- error_log('WSListSessionsDetailsByCategory');
- error_log('Params ' . print_r($params, 1));
- }
- $secretKey = $params['secret_key'];
-
- // Check if secret key is valid
- if (!WSHelperVerifyKey($secretKey)) {
- return return_error(WS_ERROR_SECRET_KEY);
- }
-
- // Get Data
- $data = array();
- $data['sessionId'] = $params['session_id'];
- $data['studentUserId'] = $params['user_id'];
- $data['profile_completed'] = $params['profile_completed'];
- $legalEnabled = api_get_plugin_setting('courselegal', 'tool_enable');
- $legalPlugin = CourseLegalPlugin::create();
- if (
- UserManager::is_user_id_valid($data['studentUserId']) &&
- SessionManager::isValidId($data['sessionId'])
- ) {
- $courses = SessionManager::get_course_list_by_session_id($data['sessionId']);
- $course = current($courses);
- $data['courseId'] = $course['id'];
- $data['session'] = api_get_session_info($data['sessionId']);
- $data['student'] = Usermanager::get_user_info_by_id($data['studentUserId']);
- if ($legalEnabled) {
- // Get Terms content
- $termsContent = $legalPlugin->getData($data['courseId'], $data['sessionId']);
- $termsContent = $termsContent['content'];
- $termsFiles = $legalPlugin->getCurrentFile($data['courseId'], $data['sessionId']);
- $twigString = new \Twig_Environment(new \Twig_Loader_String());
- $termsContent = $twigString->render(
- $termsContent,
- array(
- 'session' => $data['session'],
- 'student' => $data['student'],
- )
- );
- } else {
- $termsContent = '';
- $termsFiles = '';
- }
-
- // Set output data
- $data['action'] = 'terms_response';
- $data['terms_content'] = $termsContent;
- $data['terms_files'] = $termsFiles;
- $data['accept_terms_url'] = self::$plugin->getTermsResponseUrl($data, 1);
- $data['reject_terms_url'] = self::$plugin->getTermsResponseUrl($data, 0);
- $data['reject_message'] = self::$plugin->get_lang('YouMustAcceptTermsAndConditions');
- } else {
- $data = return_error(WS_ERROR_INVALID_INPUT);
- }
-
- return $data;
- }
-
/**
* Return notification content when the hook has been triggered
* @param HookNotificationContentEventInterface $hook
diff --git a/plugin/advanced_subscription/src/render_mail.php b/plugin/advanced_subscription/src/render_mail.php
new file mode 100644
index 0000000000..c0974d1700
--- /dev/null
+++ b/plugin/advanced_subscription/src/render_mail.php
@@ -0,0 +1,25 @@
+checkHash($data, $hash);
+if ($verified) {
+ // Render mail
+ $message = MessageManager::get_message_by_id($data['queueId']);
+ $message = str_replace(array('
', '
', '
'), '', $message['content']);
+ echo $message;
+}
\ No newline at end of file
diff --git a/plugin/advanced_subscription/src/terms_and_conditions.php b/plugin/advanced_subscription/src/terms_and_conditions.php
index 0dc6014057..78e0adf9f1 100644
--- a/plugin/advanced_subscription/src/terms_and_conditions.php
+++ b/plugin/advanced_subscription/src/terms_and_conditions.php
@@ -10,7 +10,6 @@
require_once __DIR__ . '/../config.php';
// start plugin
$plugin = AdvancedSubscriptionPlugin::create();
-$courseLegal = CourseLegalPlugin::create();
// Session ID
$data['action'] = Security::remove_XSS($_REQUEST['a']);
$data['sessionId'] = isset($_REQUEST['s']) ? intval($_REQUEST['s']) : 0;
@@ -30,16 +29,31 @@ if (
!empty($data['studentUserId']) &&
api_get_plugin_setting('courselegal', 'tool_enable')
) {
+ $lastMessageId = $plugin->getLastMessageId($data['studentUserId'], $data['sessionId']);
+ if ($lastMessageId !== false) {
+ // Render mail
+ $url = $plugin->getRenderMailUrl(array('queueId' => $lastMessageId));
+ Header::location($url);
+ exit;
+ }
$courses = SessionManager::get_course_list_by_session_id($data['sessionId']);
$course = current($courses);
$data['courseId'] = $course['id'];
- $termsAndConditions = $courseLegal->getData($data['courseId'], $data['sessionId']);
- $termsAndConditions = $termsAndConditions['content'];
- $termFiles = $courseLegal->getCurrentFile($data['courseId'], $data['sessionId']);
+ $legalEnabled = api_get_plugin_setting('courselegal', 'tool_enable');
+ if ($legalEnabled) {
+ $courseLegal = CourseLegalPlugin::create();
+ $termsAndConditions = $courseLegal->getData($data['courseId'], $data['sessionId']);
+ $termsAndConditions = $termsAndConditions['content'];
+ $termFiles = $courseLegal->getCurrentFile($data['courseId'], $data['sessionId']);
+ } else {
+ $termsAndConditions = $plugin->get('terms_and_conditions');
+ $termFiles = '';
+ }
+
$data['session'] = api_get_session_info($data['sessionId']);
$data['student'] = Usermanager::get_user_info_by_id($data['studentUserId']);
$data['acceptTermsUrl'] = $plugin->getQueueUrl($data);
- $data['rejectTermsUrl'] = $plugin->getTermsUrl($data, 1);
+ $data['rejectTermsUrl'] = $plugin->getTermsUrl($data, ADVANCED_SUBSCRIPTION_TERMS_MODE_REJECT);
// Use Twig with String loader
$twigString = new \Twig_Environment(new \Twig_Loader_String());
$termsContent = $twigString->render(
@@ -67,6 +81,4 @@ $tpl->assign('sessionId', $data['sessionId']);
$tpl->assign('termsContent', $termsContent);
$tpl->assign('termsFiles', $termFiles);
$content = $tpl->fetch('/advanced_subscription/views/terms_and_conditions.tpl');
-$tpl->assign('content', $content);
-// Display
-$tpl->display_one_col_template();
+echo $content;
diff --git a/plugin/advanced_subscription/views/css/style.css b/plugin/advanced_subscription/views/css/style.css
index 108ac52445..1582fc853d 100644
--- a/plugin/advanced_subscription/views/css/style.css
+++ b/plugin/advanced_subscription/views/css/style.css
@@ -60,4 +60,23 @@
#iframeAdvsub {
width: 100%;
height: 100%;
+}
+
+.legal-terms-popup{
+ margin-top: 5%;
+ margin-left: 5%;
+ margin-right: 5%;
+}
+
+.legal-terms{
+ width: 90%;
+ height: 50%;
+}
+
+.legal-terms-buttons {
+ text-align: right;
+}
+
+.legal-terms-title {
+ text-align: center;
}
\ No newline at end of file
diff --git a/plugin/advanced_subscription/views/terms_and_conditions.tpl b/plugin/advanced_subscription/views/terms_and_conditions.tpl
index 89d81d7180..20a4ba414c 100644
--- a/plugin/advanced_subscription/views/terms_and_conditions.tpl
+++ b/plugin/advanced_subscription/views/terms_and_conditions.tpl
@@ -1,15 +1,37 @@
+{# start copy from head.tpl #}
+
+
+
+
+{{ prefetch }}
+{{ favico }}
+{{ browser_specific_head }}
+
+
+
+{# Use the latest engine in ie8/ie9 or use google chrome engine if available #}
+{# Improve usability in portal devices #}
+
+{{ title_string }}
+{{ css_file_to_string }}
+{{ css_style_print }}
+{{ js_file_to_string }}
+{# end copy from head.tpl #}
+
{% if termsRejected == 1 %}
-