|
|
|
@ -475,53 +475,66 @@ class HookAdvancedSubscription extends HookObserver implements |
|
|
|
|
if (is_array($params) && !empty($params['session_id']) && !empty($params['user_id'])) { |
|
|
|
|
$userId = (int) $params['user_id']; |
|
|
|
|
$sessionId = (int) $params['session_id']; |
|
|
|
|
// Check if student is already subscribed |
|
|
|
|
$plugin = AdvancedSubscriptionPlugin::create(); |
|
|
|
|
$isOpen = $plugin->isSessionOpen($sessionId); |
|
|
|
|
$status = $plugin->getQueueStatus($userId, $sessionId); |
|
|
|
|
$vacancy = $plugin->getVacancy($sessionId); |
|
|
|
|
$data = $plugin->getSessionDetails($sessionId); |
|
|
|
|
if (!empty($data) && is_array($data)) { |
|
|
|
|
$data['status'] = $status; |
|
|
|
|
// 5 Cases: |
|
|
|
|
if ($isOpen) { |
|
|
|
|
// Go to Course session |
|
|
|
|
$data['action_url'] = self::$plugin->getSessionUrl($sessionId); |
|
|
|
|
} else { |
|
|
|
|
try { |
|
|
|
|
$isAble = self::$plugin->isAllowedToDoRequest($userId, $params); |
|
|
|
|
$data['message'] = self::$plugin->getStatusMessage($status, $isAble); |
|
|
|
|
} catch (\Exception $e) { |
|
|
|
|
$data['message'] = $e->getMessage(); |
|
|
|
|
} |
|
|
|
|
$params['action'] = 'subscribe'; |
|
|
|
|
$params['sessionId'] = intval($sessionId); |
|
|
|
|
$params['currentUserId'] = 0; // No needed |
|
|
|
|
$params['studentUserId'] = intval($userId); |
|
|
|
|
$params['queueId'] = 0; // No needed |
|
|
|
|
$params['newStatus'] = ADVANCED_SUBSCRIPTION_QUEUE_STATUS_START; |
|
|
|
|
if ($vacancy > 0) { |
|
|
|
|
// Check conditions |
|
|
|
|
if ($status === ADVANCED_SUBSCRIPTION_QUEUE_STATUS_NO_QUEUE) { |
|
|
|
|
// No in Queue, require queue subscription url action |
|
|
|
|
$data['action_url'] = self::$plugin->getQueueUrl($params); |
|
|
|
|
} elseif ($status === ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_APPROVED) { |
|
|
|
|
// send url action |
|
|
|
|
$data['action_url'] = self::$plugin->getSessionUrl($sessionId); |
|
|
|
|
} else { |
|
|
|
|
// In queue, output status message, no more info. |
|
|
|
|
} |
|
|
|
|
// Check if user exists |
|
|
|
|
if ( |
|
|
|
|
UserManager::is_user_id_valid($userId) && |
|
|
|
|
SessionManager::isValidId($sessionId) |
|
|
|
|
) { |
|
|
|
|
// Check if student is already subscribed |
|
|
|
|
$plugin = AdvancedSubscriptionPlugin::create(); |
|
|
|
|
$isOpen = $plugin->isSessionOpen($sessionId); |
|
|
|
|
$status = $plugin->getQueueStatus($userId, $sessionId); |
|
|
|
|
$vacancy = $plugin->getVacancy($sessionId); |
|
|
|
|
$data = $plugin->getSessionDetails($sessionId); |
|
|
|
|
if (!empty($data) && is_array($data)) { |
|
|
|
|
$data['status'] = $status; |
|
|
|
|
// Vacancy and queue status cases: |
|
|
|
|
if ($isOpen) { |
|
|
|
|
// Go to Course session |
|
|
|
|
$data['action_url'] = self::$plugin->getSessionUrl($sessionId); |
|
|
|
|
} else { |
|
|
|
|
if ($status === ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_APPROVED) { |
|
|
|
|
$data['action_url'] = self::$plugin->getSessionUrl($sessionId); |
|
|
|
|
try { |
|
|
|
|
$isAllowed = self::$plugin->isAllowedToDoRequest($userId, $params); |
|
|
|
|
$data['message'] = self::$plugin->getStatusMessage($status, $isAllowed); |
|
|
|
|
} catch (\Exception $e) { |
|
|
|
|
$data['message'] = $e->getMessage(); |
|
|
|
|
} |
|
|
|
|
$params['action'] = 'subscribe'; |
|
|
|
|
$params['sessionId'] = intval($sessionId); |
|
|
|
|
$params['currentUserId'] = 0; // No needed |
|
|
|
|
$params['studentUserId'] = intval($userId); |
|
|
|
|
$params['queueId'] = 0; // No needed |
|
|
|
|
$params['newStatus'] = ADVANCED_SUBSCRIPTION_QUEUE_STATUS_START; |
|
|
|
|
if ($vacancy > 0) { |
|
|
|
|
// Check conditions |
|
|
|
|
if ($status == ADVANCED_SUBSCRIPTION_QUEUE_STATUS_NO_QUEUE) { |
|
|
|
|
// No in Queue, require queue subscription url action |
|
|
|
|
$data['action_url'] = self::$plugin->getQueueUrl($params); |
|
|
|
|
} elseif ($status == ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_APPROVED) { |
|
|
|
|
// send url action |
|
|
|
|
$data['action_url'] = self::$plugin->getSessionUrl($sessionId); |
|
|
|
|
} else { |
|
|
|
|
// In queue, output status message, no more info. |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
// in Queue or not, cannot be subscribed to session |
|
|
|
|
$data['action_url'] = self::$plugin->getQueueUrl($params); |
|
|
|
|
if ($status == ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_APPROVED) { |
|
|
|
|
$data['action_url'] = self::$plugin->getSessionUrl($sessionId); |
|
|
|
|
} elseif ($status == ADVANCED_SUBSCRIPTION_QUEUE_STATUS_NO_QUEUE) { |
|
|
|
|
// in Queue or not, cannot be subscribed to session |
|
|
|
|
$data['action_url'] = self::$plugin->getQueueUrl($params); |
|
|
|
|
} else { |
|
|
|
|
// In queue, output status message, no more info. |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$result = $data; |
|
|
|
|
} else { |
|
|
|
|
// Return soap fault No result was found |
|
|
|
|
$result = return_error(WS_ERROR_NOT_FOUND_RESULT); |
|
|
|
|
} |
|
|
|
|
var_dump($data); |
|
|
|
|
$result = $data; |
|
|
|
|
} else { |
|
|
|
|
// Return soap fault No result was found |
|
|
|
|
$result = return_error(WS_ERROR_NOT_FOUND_RESULT); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
// Return soap fault Not valid input params |
|
|
|
|