Browse Source

Add automatic session subscription feature to session catalog - refs BT#9528

Imanol Losada 10 years ago
parent
commit
f5c5081f74
3 changed files with 23 additions and 6 deletions
  1. 6 1
      main/auth/courses.php
  2. 15 5
      main/auth/courses_controller.php
  3. 2 0
      main/install/configuration.dist.php

+ 6 - 1
main/auth/courses.php

@@ -80,7 +80,8 @@ $actions = array(
     'display_courses',
     'display_random_courses',
     'subscribe_user_with_password',
-    'display_sessions'
+    'display_sessions',
+    'subscribe_to_session'
 );
 
 $action = CoursesAndSessionsCatalog::is(CATALOG_SESSIONS) ? 'display_sessions' : 'display_random_courses';
@@ -208,4 +209,8 @@ switch ($action) {
     case 'display_sessions':
         $courses_controller->sessionsList($action, $nameTools, $limit);
         break;
+    case 'subscribe_to_session':
+        SessionManager::suscribe_users_to_session($_GET['session_id'], array($_GET['user_id']));
+        header('Location: courses.php');
+        break;
 }

+ 15 - 5
main/auth/courses_controller.php

@@ -483,14 +483,19 @@ class CoursesController
 
     /**
      * Get a HTML button for subscribe to session
-     * @param string $sessionName The session name
+     * @param string $sessionData The session data
      * @return string The button
      */
-    public function getRegisterInSessionButton($sessionName)
+    public function getRegisterInSessionButton($sessionData)
     {
-        $sessionName = urlencode($sessionName);
+        global $_configuration;
+
+        $sessionData = urlencode($sessionData);
 
-        $url = api_get_path(WEB_PATH) . "main/inc/email_editor.php?action=subscribe_me_to_session&session=$sessionName";
+        $url = api_get_path(WEB_CODE_PATH);
+        $url .= $_configuration['catalog_allow_session_auto_subscription'] ?
+            "auth/courses.php?action=subscribe_to_session&session_id=$sessionData&user_id=".api_get_user_id() :
+            "inc/email_editor.php?action=subscribe_me_to_session&session=$sessionData";
 
         return Display::url(get_lang('Subscribe'), $url, array(
             'class' => 'btn btn-large btn-primary',
@@ -526,6 +531,8 @@ class CoursesController
      */
     public function sessionsList($action, $nameTools, $limit = array())
     {
+        global $_configuration;
+
         $date = isset($_POST['date']) ? $_POST['date'] : date('Y-m-d');
         $hiddenLinks = isset($_GET['hidden_links']) ? intval($_GET['hidden_links']) == 1 : false;
 
@@ -547,6 +554,9 @@ class CoursesController
         $courseUrl = getCourseCategoryUrl(1, $limit['length'], null, 0, 'subscribe');
 
         foreach ($sessions as $session) {
+            $subscribeSessionTarget = $_configuration['catalog_allow_session_auto_subscription'] ?
+                $session['id'] :
+                $session['name'];
             $sessionsBlock = array(
                 'id' => $session['id'],
                 'name' => $session['name'],
@@ -556,7 +566,7 @@ class CoursesController
                 'is_subscribed' => $session['is_subscribed'],
                 'icon' => $this->getSessionIcon($session['name']),
                 'date' => SessionManager::getSessionFormattedDate($session),
-                'subscribe_button' => $this->getRegisterInSessionButton($session['name']),
+                'subscribe_button' => $this->getRegisterInSessionButton($subscribeSessionTarget),
                 'showDescription' => $session['show_description']
             );
 

+ 2 - 0
main/install/configuration.dist.php

@@ -306,3 +306,5 @@ $_configuration['system_stable']     = NEW_VERSION_STABLE;
 // $_configuration['add_document_to_work'] = false;
 // Allow user comments in work
 // $_configuration['work_user_comments'] = false;
+// Allow student to enroll into a session without an approval needing
+//$_configuration['catalog_allow_session_auto_subscription'] = true;