Laurent Opprecht 12 years ago
parent
commit
73381baf41
37 changed files with 170 additions and 123 deletions
  1. 1 0
      .hgignore
  2. 0 1
      main/auth/shibboleth/_readme.txt
  3. 6 1
      main/auth/shibboleth/app/controller/shibboleth_controller.class.php
  4. 2 0
      main/auth/shibboleth/app/model/admin.class.php
  5. 4 1
      main/auth/shibboleth/app/model/scaffold/admin.class.php
  6. 4 1
      main/auth/shibboleth/app/model/scaffold/user.class.php
  7. 2 0
      main/auth/shibboleth/app/model/shibboleth_store.class.php
  8. 2 0
      main/auth/shibboleth/app/model/shibboleth_user.class.php
  9. 2 0
      main/auth/shibboleth/app/model/user.class.php
  10. 39 55
      main/auth/shibboleth/app/shibboleth.class.php
  11. 2 0
      main/auth/shibboleth/app/view/admin_login.php
  12. 2 0
      main/auth/shibboleth/app/view/request.php
  13. 4 0
      main/auth/shibboleth/app/view/shibboleth_display.class.php
  14. 2 0
      main/auth/shibboleth/app/view/shibboleth_email_form.class.php
  15. 2 0
      main/auth/shibboleth/app/view/shibboleth_status_request_form.class.php
  16. 2 0
      main/auth/shibboleth/config-dist.php
  17. 0 11
      main/auth/shibboleth/config.php
  18. 4 2
      main/auth/shibboleth/config/aai.class.php
  19. 4 0
      main/auth/shibboleth/db/shibboleth_upgrade.class.php
  20. 14 12
      main/auth/shibboleth/init.php
  21. 2 0
      main/auth/shibboleth/lib/model.class.php
  22. 2 0
      main/auth/shibboleth/lib/scaffolder/scaffolder.class.php
  23. 2 0
      main/auth/shibboleth/lib/scaffolder/template/default.php
  24. 2 0
      main/auth/shibboleth/lib/scaffolder/template/model.php
  25. 2 0
      main/auth/shibboleth/lib/scaffolder/template/public.php
  26. 2 0
      main/auth/shibboleth/lib/shibboleth_config.class.php
  27. 5 0
      main/auth/shibboleth/lib/shibboleth_session.class.php
  28. 4 0
      main/auth/shibboleth/lib/store.class.php
  29. 3 1
      main/auth/shibboleth/login.php
  30. 0 0
      main/auth/shibboleth/script/output/user.class.php
  31. 2 0
      main/auth/shibboleth/script/scaffold.php
  32. 7 5
      main/auth/shibboleth/test/shibboleth_test.class.php
  33. 2 0
      main/auth/shibboleth/test/shibboleth_test_helper.class.php
  34. 2 0
      main/auth/shibboleth/test/test.php
  35. 2 0
      main/auth/shibboleth/test/test_no_email.php
  36. 26 26
      main/inc/lib/autoload.class.php
  37. 7 7
      main/inc/local.inc.php

+ 1 - 0
.hgignore

@@ -115,6 +115,7 @@ searchdb/*
 main/inc/cache/*
 test_laurent.php
 *.orig
+main/auth/shibboleth/config.php
 syntax: regexp
 ^main/upload/users$
 

+ 0 - 1
main/auth/shibboleth/_readme.txt

@@ -8,4 +8,3 @@ with a web server security directive.
 
 Modify configuration to your federation's needs.
 
-Add a login url/redirection to chamilo/main/auth/login.php.

+ 6 - 1
main/auth/shibboleth/app/controller/shibboleth_controller.class.php

@@ -1,5 +1,10 @@
 <?php
 
+namespace Shibboleth;
+
+use \Redirect;
+use \Display;
+
 /**
  * Controller for the Shibboleth authentication system. 
  *
@@ -64,7 +69,7 @@ class ShibbolethController
 
         if ($is_new_user && $user->status_request)
         {
-            Shibboleth::redirect('main/auth/shibboleth/app/view/request.php');
+            Shibboleth::redirect('/main/auth/shibboleth/app/view/request.php');
         }
         else
         {

+ 2 - 0
main/auth/shibboleth/app/model/admin.class.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 require_once dirname(__FILE__) . '/scaffold/admin.class.php';
 
 /**

+ 4 - 1
main/auth/shibboleth/app/model/scaffold/admin.class.php

@@ -1,4 +1,7 @@
 <?php
+
+namespace Shibboleth;
+
 /**
  * This file is autogenerated. Do not modifiy it.
  */
@@ -77,7 +80,7 @@ class _AdminStore extends Store
     
     public function __construct()
     {
-        parent::__construct('admin', 'Admin', 'user_id');
+        parent::__construct('admin', '\Shibboleth\Admin', 'user_id');
     }
     
     /**

+ 4 - 1
main/auth/shibboleth/app/model/scaffold/user.class.php

@@ -1,4 +1,7 @@
 <?php
+
+namespace Shibboleth;
+
 /**
  * This file is autogenerated. Do not modifiy it.
  */
@@ -105,7 +108,7 @@ class _UserStore extends Store
     
     public function __construct()
     {
-        parent::__construct('user', 'User', 'user_id');
+        parent::__construct('user', '\Shibboleth\User', 'user_id');
     }
     
     /**

+ 2 - 0
main/auth/shibboleth/app/model/shibboleth_store.class.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 /**
  * Returns Shibboleth user's values based on Shibboleth's configuration.
  * Shibboleth returns not only whether a user is authenticated but returns as

+ 2 - 0
main/auth/shibboleth/app/model/shibboleth_user.class.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 /**
  * Represent a Shibboleth user. Not to be missunderstand with a Chamilo user
  * since they don't have the same attributes.

+ 2 - 0
main/auth/shibboleth/app/model/user.class.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 require_once dirname(__FILE__) . '/scaffold/user.class.php';
 
 /**

+ 39 - 55
main/auth/shibboleth/app/shibboleth.class.php

@@ -1,5 +1,9 @@
 <?php
 
+namespace Shibboleth;
+
+use \Redirect;
+
 /**
  * Shibboleth main class. Provides access to various Shibboleth sub components and
  * provides the high level functionalities.
@@ -19,20 +23,13 @@ class Shibboleth
 
     public static function format_status($status)
     {
-        if ($status == Shibboleth::TEACHER_STATUS)
-        {
+        if ($status == Shibboleth::TEACHER_STATUS) {
             return 'Teacher';
-        }
-        else if ($status == Shibboleth::STUDENT_STATUS)
-        {
+        } else if ($status == Shibboleth::STUDENT_STATUS) {
             return 'Student';
-        }
-        else if ($status == Shibboleth::UNKNOWN_STATUS)
-        {
+        } else if ($status == Shibboleth::UNKNOWN_STATUS) {
             return 'Unknown';
-        }
-        else
-        {
+        } else {
             return '???';
         }
     }
@@ -94,8 +91,7 @@ class Shibboleth
 
     public static function redirect($url = '')
     {
-        if (empty($url))
-        {
+        if (empty($url)) {
             $url = isset($_SESSION['shibb_direct_url']) ? $_SESSION['shibb_direct_url'] : '';
             unset($_SESSION['shibb_direct_url']);
 
@@ -111,25 +107,23 @@ class Shibboleth
              *       If any interest or question, please contact Nicolas.Rod_at_adm.unige.ch
              *
              */
-            if ($url)
-            {
-                //needed to log the user in his courses. Normally it is done by visiting /chamilo/index.php    
-                $include_path = api_get_path(INCLUDE_PATH);
-                require("$include_path/local.inc.php");
-
-                if (strpos($url, '?') === false)
-                {
-                    $url = "$url?";
-                }
-
-                $rootWeb = api_get_path('WEB_PATH');
-                $first_slash_pos = strpos($rootWeb, '/', 8);
-                $rootWeb_wo_uri = substr($rootWeb, 0, $first_slash_pos);
-                $url = $rootWeb_wo_uri . $course_url . '_stop';
-                Redirect::go($url);
-            }
         }
-        Redirect::go();
+        if ($url) {
+            //needed to log the user in his courses. Normally it is done by visiting /chamilo/index.php    
+//            $include_path = api_get_path(INCLUDE_PATH);
+//            require("$include_path/local.inc.php");
+//
+//            if (strpos($url, '?') === false) {
+//                $url = "$url?";
+//            }
+//
+//            $rootWeb = api_get_path('WEB_PATH');
+//            $first_slash_pos = strpos($rootWeb, '/', 8);
+//            $rootWeb_wo_uri = substr($rootWeb, 0, $first_slash_pos);
+//            $url = $rootWeb_wo_uri . $course_url . '_stop';
+            Redirect::go($url);
+        }
+        Redirect::home();
     }
 
     /**
@@ -144,22 +138,21 @@ class Shibboleth
         $shibb_user->shibb_persistent_id = $shibb_user->persistent_id;
 
         $user = User::store()->get_by_shibboleth_id($shibb_user->unique_id);
-        if (empty($user))
-        {
+        if (empty($user)) {
             $shibb_user->auth_source == self::NAME;
             return User::create($shibb_user)->save();
         }
 
         $shibb_user->status_request = false;
         $fields = self::config()->update_fields;
-        foreach ($fields as $key => $updatable)
-        {
-            if ($updatable)
-            {
+        foreach ($fields as $key => $updatable) {
+            if ($updatable) {
                 $user->{$key} = $shibb_user->{$key};
             }
             $user->auth_source == self::NAME;
         }
+        $user->shibb_unique_id = $user->unique_id;
+        $user->shibb_persistent_id = $user->persistent_id;
         $user->save();
         return $result;
     }
@@ -178,11 +171,9 @@ class Shibboleth
         $map = self::config()->affiliation_status;
 
         $rights = array();
-        foreach ($affiliations as $affiliation)
-        {
+        foreach ($affiliations as $affiliation) {
             $affiliation = strtolower($affiliation);
-            if (isset($map[$affiliation]))
-            {
+            if (isset($map[$affiliation])) {
                 $right = $map[$affiliation];
                 $rights[$right] = $right;
             }
@@ -192,13 +183,11 @@ class Shibboleth
         $student_status = isset($rights[self::STUDENT_STATUS]);
 
         //if the user has got teacher rights, we doesn't check anything else
-        if ($teacher_status)
-        {
+        if ($teacher_status) {
             return self::TEACHER_STATUS;
         }
 
-        if ($student_status)
-        {
+        if ($student_status) {
             return self::STUDENT_STATUS;
         }
 
@@ -217,23 +206,19 @@ class Shibboleth
      */
     public static function infer_status_request($user)
     {
-        if ($user->status == self::TEACHER_STATUS)
-        {
+        if ($user->status == self::TEACHER_STATUS) {
             return false;
         }
-        if ($user->status == self::UNKNOWN_STATUS)
-        {
+        if ($user->status == self::UNKNOWN_STATUS) {
             return true;
         }
 
         $config = Shibboleth::config();
         $affiliations = $user->affiliation;
         $affiliations = is_array($affiliations) ? $affiliations : array($affiliations);
-        foreach ($affiliations as $affiliation)
-        {
+        foreach ($affiliations as $affiliation) {
             $result = isset($config->affiliation_status_request[$affiliation]) ? $config->affiliation_status_request[$affiliation] : false;
-            if ($result)
-            {
+            if ($result) {
                 return true;
             }
         }
@@ -268,8 +253,7 @@ EOT;
         $header = "From: $email \n";
 
         $shibb_admin_email = Shibboleth::config()->admnistrator_email;
-        if ($shibb_admin_email)
-        {
+        if ($shibb_admin_email) {
             $header .= "Cc: $shibb_admin_email";
         }
 

+ 2 - 0
main/auth/shibboleth/app/view/admin_login.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 /**
  * Administratrive login. Useful when the standard login is not available anymore
  * which is usually the case. 

+ 2 - 0
main/auth/shibboleth/app/view/request.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 /**
  * Display the Request another status/additional rights. The request is emailed
  * to the shibboleth and platform administrators for processing.

+ 4 - 0
main/auth/shibboleth/app/view/shibboleth_display.class.php

@@ -1,5 +1,9 @@
 <?php
 
+namespace Shibboleth;
+
+use \Display;
+
 /**
  * Utility display functions tailored for the Shibboleth pluging.
  * 

+ 2 - 0
main/auth/shibboleth/app/view/shibboleth_email_form.class.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 /**
  * Enter email form. When the email is mandatory and the Shibboleth email user field
  * is empty the system display this form and ask the user to provide an email.

+ 2 - 0
main/auth/shibboleth/app/view/shibboleth_status_request_form.class.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 /**
  * Status request form. Display a form allowing the user to request additional
  * rights/ another status. 

+ 2 - 0
main/auth/shibboleth/config-dist.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 /**
  * Example of a config.php file. Not used. Configuration must appear in 
  * config.php.

+ 0 - 11
main/auth/shibboleth/config.php

@@ -1,11 +0,0 @@
-<?php
-
-/**
- * Shibboleth configuration. See /config/aai.php for an example.
- *
- * @license see /license.txt
- * @author Laurent Opprecht <laurent@opprecht.info>, Nicolas Rod for the University of Geneva
- */
-require_once dirname(__FILE__) . '/config/aai.class.php';
-
-Shibboleth::set_config(aai::config());

+ 4 - 2
main/auth/shibboleth/config/aai.class.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 /**
  * Shibboleth configuration for the AAI federation.
  *
@@ -39,8 +41,8 @@ class aai
         );
 
         $result->update_fields = array(
-            'firstname'     => false,
-            'lastname'      => false,
+            'firstname'     => true,
+            'lastname'      => true,
             'email'         => true,
             'status'        => false,
             'persistent_id' => true,

+ 4 - 0
main/auth/shibboleth/db/shibboleth_upgrade.class.php

@@ -1,5 +1,9 @@
 <?php
 
+namespace Shibboleth;
+
+use \Database;
+
 /**
  * Migrate the datatabase. Adds needed fields by Shibboleth to the User table.
  * Upgrade is checked at each user login so there is no need to manually run

+ 14 - 12
main/auth/shibboleth/init.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 /**
  * Initialize the Shibboleth authentication system. All scripts that can be directly
  * called must include this file
@@ -12,18 +14,18 @@ $__dir = dirname(__FILE__) . '/';
 $no_redirection = true;  //no redirection in global.
 include_once($__dir . '/../../inc/global.inc.php');
 
-require_once $__dir . 'lib/shibboleth_config.class.php';
-require_once $__dir . 'lib/shibboleth_session.class.php';
-require_once $__dir . 'lib/store.class.php';
-require_once $__dir . 'app/controller/shibboleth_controller.class.php';
-require_once $__dir . 'app/model/shibboleth_store.class.php';
-require_once $__dir . 'app/model/shibboleth_user.class.php';
-require_once $__dir . 'app/model/user.class.php';
-require_once $__dir . 'app/view/shibboleth_email_form.class.php';
-require_once $__dir . 'app/view/shibboleth_status_request_form.class.php';
-require_once $__dir . 'app/view/shibboleth_display.class.php';
-require_once $__dir . 'app/shibboleth.class.php';
-require_once $__dir . 'db/shibboleth_upgrade.class.php';
+//require_once $__dir . 'lib/shibboleth_config.class.php';
+//require_once $__dir . 'lib/shibboleth_session.class.php';
+//require_once $__dir . 'lib/store.class.php';
+//require_once $__dir . 'app/controller/shibboleth_controller.class.php';
+//require_once $__dir . 'app/model/shibboleth_store.class.php';
+//require_once $__dir . 'app/model/shibboleth_user.class.php';
+//require_once $__dir . 'app/model/user.class.php';
+//require_once $__dir . 'app/view/shibboleth_email_form.class.php';
+//require_once $__dir . 'app/view/shibboleth_status_request_form.class.php';
+//require_once $__dir . 'app/view/shibboleth_display.class.php';
+//require_once $__dir . 'app/shibboleth.class.php';
+//require_once $__dir . 'db/shibboleth_upgrade.class.php';
 
 require_once $__dir . 'config.php';
 

+ 2 - 0
main/auth/shibboleth/lib/model.class.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 /**
  * Description of model
  *

+ 2 - 0
main/auth/shibboleth/lib/scaffolder/scaffolder.class.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 /**
  * Scaffolder. Genereate code templates from the database layout.
  * See /template/ for the code being generated

+ 2 - 0
main/auth/shibboleth/lib/scaffolder/template/default.php

@@ -9,6 +9,8 @@
 echo '<?php';
 ?>
 
+namespace Shibboleth;
+
 /**
  * This file is autogenerated. Do not modifiy it.
  */

+ 2 - 0
main/auth/shibboleth/lib/scaffolder/template/model.php

@@ -9,6 +9,8 @@
 echo '<?php';
 ?>
 
+namespace Shibboleth;
+
 /**
  * This file is autogenerated. Do not modifiy it.
  */

+ 2 - 0
main/auth/shibboleth/lib/scaffolder/template/public.php

@@ -9,6 +9,8 @@
 echo '<?php';
 ?>
 
+namespace Shibboleth;
+
 /**
  *
  * Model for table <?php echo $table_name ?> 

+ 2 - 0
main/auth/shibboleth/lib/shibboleth_config.class.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 /**
  * Shibboleth configuration. All configuration for the Shibboleth authentication
  * plugin: field names mapping, etc.

+ 5 - 0
main/auth/shibboleth/lib/shibboleth_session.class.php

@@ -1,6 +1,11 @@
 <?php
 
+namespace Shibboleth;
+
 use \ChamiloSession as Session;
+use \Chamilo;
+use \Database;
+use \Redirect;
 
 
 /**

+ 4 - 0
main/auth/shibboleth/lib/store.class.php

@@ -1,5 +1,9 @@
 <?php
 
+namespace Shibboleth;
+
+use \Database;
+
 /**
  * A database store. Used interact with the database - save objects, run queries.
  * 

+ 3 - 1
main/auth/shibboleth/login.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 /**
  * Shibboleth login page. 
  * 
@@ -25,7 +27,7 @@ include_once(dirname(__FILE__) . '/init.php');
  */
 //Shibboleth::session()->logout();
 //ShibbolethTest::helper()->setup_new_student_no_email();
-//ShibbolethTest::helper()->setup_new_staff();
+ShibbolethTest::helper()->setup_new_staff();
 //ShibbolethTest::helper()->setup_new_teacher();
 //ShibbolethTest::helper()->setup_new_student();
 //ShibbolethTest::helper()->setup_new_minimal_data();

+ 0 - 0
main/auth/shibboleth/script/output/user.class.php


+ 2 - 0
main/auth/shibboleth/script/scaffold.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 /**
  * Scaffold script. Generates the required database models for the Shibboleth
  * plugin. 

+ 7 - 5
main/auth/shibboleth/test/shibboleth_test.class.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 /**
  * Various Unit Tests. Note that those tests create users in the database but
  * don't delete them.
@@ -122,8 +124,8 @@ class ShibbolethTest
         $fields = Shibboleth::config()->update_fields;
         self::assert($fields['email']);
         self::assert($fields['persistent_id']);
-        self::assert(!$fields['firstname']);
-        self::assert(!$fields['lastname']);
+        self::assert($fields['firstname']);
+        self::assert($fields['lastname']);
         self::assert(!$fields['status']);
 
         self::helper()->setup_teacher();
@@ -142,10 +144,10 @@ class ShibbolethTest
         $user = User::store()->get_by_shibboleth_id($shib_user->unique_id);
 
         self::assert($user->email == $new_shib_user->email);
-        self::assert($user->shibb_persistent_id == $new_shib_user->persistent_id);
+        self::assert($value = ($user->shibb_persistent_id == $new_shib_user->persistent_id));
 
-        self::assert($user->firstname == $shib_user->firstname);
-        self::assert($user->lastname == $shib_user->lastname);
+        self::assert($user->firstname == $new_shib_user->firstname);
+        self::assert($user->lastname == $new_shib_user->lastname);
         self::assert($user->status == $shib_user->status);
         self::assert(!empty($user->password));
         self::assert(!empty($user->username));

+ 2 - 0
main/auth/shibboleth/test/shibboleth_test_helper.class.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 /**
  * Helper functions for the tests. Set up various dummy user types: teacher, student, etc.
  *

+ 2 - 0
main/auth/shibboleth/test/test.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 /**
  * Run unit tests. Server needs to be a test server to run those.
  * 

+ 2 - 0
main/auth/shibboleth/test/test_no_email.php

@@ -1,5 +1,7 @@
 <?php
 
+namespace Shibboleth;
+
 /**
  * @license see /license.txt
  * @author Laurent Opprecht <laurent@opprecht.info>, Nicolas Rod for the University of Geneva

+ 26 - 26
main/inc/lib/autoload.class.php

@@ -62,9 +62,7 @@ class Autoload
         $result['Accessurledituserstourl'] = '/main/inc/lib/access_url_edit_users_to_url_functions.lib.php';
         $result['AddCourseToSession'] = '/main/inc/lib/add_courses_to_session_functions.lib.php';
         $result['AddManySessionToCategoryFunctions'] = '/main/inc/lib/add_many_session_to_category_functions.lib.php';
-        $result['Admin'] = '/main/auth/shibboleth/app/model/admin.class.php';
         $result['AdminPage'] = '/main/admin/admin_page.class.php';
-        $result['AdminStore'] = '/main/auth/shibboleth/app/model/admin.class.php';
         $result['Agenda'] = '/main/calendar/agenda.lib.php';
         $result['Announcement'] = '/main/coursecopy/classes/Announcement.class.php';
         $result['AnnouncementEmail'] = '/main/announcements/announcement_email.class.php';
@@ -129,7 +127,6 @@ class Autoload
         $result['DataForm'] = '/main/gradebook/lib/fe/dataform.class.php';
         $result['Debug'] = '/main/inc/lib/debug.lib.php';
         $result['Diagnoser'] = '/main/inc/lib/diagnoser.lib.php';
-        $result['Diagnosis'] = '/main/inc/lib/doctor/diagnosis.class.php';
         $result['Display'] = '/main/inc/lib/display.lib.php';
         $result['Document'] = '/main/coursecopy/classes/Document.class.php';
         $result['DocumentManager'] = '/main/inc/lib/document.lib.php';
@@ -143,9 +140,9 @@ class Autoload
         $result['EvalLink'] = '/main/gradebook/lib/be/evallink.class.php';
         $result['Evaluation'] = '/main/gradebook/lib/be/evaluation.class.php';
         $result['Event'] = '/main/coursecopy/classes/Event.class.php';
-        $result['EventsMail'] = '/main/inc/lib/events_email.class.php';
-        $result['EventsDispatcher'] = '/main/inc/lib/events_dispatcher.class.php';
         $result['EventEmailTemplate'] = '/main/inc/lib/event_email_template.class.php';
+        $result['EventsDispatcher'] = '/main/inc/lib/events_dispatcher.class.php';
+        $result['EventsMail'] = '/main/inc/lib/events_email.class.php';
         $result['Exercise'] = '/main/exercice/exercise.class.php';
         $result['ExerciseLink'] = '/main/gradebook/lib/be/exerciselink.class.php';
         $result['ExerciseResult'] = '/main/exercice/exercise_result.class.php';
@@ -239,14 +236,12 @@ class Autoload
         $result['Header'] = '/main/inc/lib/system/web/header.class.php';
         $result['HotSpot'] = '/main/exercice/hotspot.class.php';
         $result['HotSpotDelineation'] = '/main/exercice/hotspot.class.php';
-        $result['Html'] = '/main/inc/lib/html.class.php';
         $result['Html_Quickform_Rule_Date'] = '/main/inc/lib/pear/HTML/QuickForm/Rule/Date.php';
         $result['HttpResource'] = '/main/inc/lib/external_media/renderer/http_resource.class.php';
         $result['Image'] = '/main/inc/lib/image.lib.php';
         $result['ImageWrapper'] = '/main/inc/lib/image.lib.php';
         $result['ImagickWrapper'] = '/main/inc/lib/image.lib.php';
         $result['Import'] = '/main/inc/lib/import.lib.php';
-        $result['InactiveCourseReport'] = '/main/admin/inactive_course_report.class.php';
         $result['IndexManager'] = '/main/inc/lib/userportal.lib.php';
         $result['IndexableChunk'] = '/main/inc/lib/search/IndexableChunk.class.php';
         $result['Install'] = '/main/install/install.class.php';
@@ -263,6 +258,7 @@ class Autoload
         $result['LoginRedirection'] = '/main/inc/lib/login_redirection.class.php';
         $result['Matching'] = '/main/exercice/matching.class.php';
         $result['MessageManager'] = '/main/inc/lib/message.lib.php';
+        $result['Model'] = '/main/inc/lib/model.lib.php';
         $result['Model\Course'] = '/main/inc/lib/course.class.php';
         $result['Model\Document'] = '/main/inc/lib/document.class.php';
         $result['Model\ItemProperty'] = '/main/inc/lib/item_property.class.php';
@@ -319,28 +315,40 @@ class Autoload
         $result['Request'] = '/main/inc/lib/system/web/request.class.php';
         $result['RequestServer'] = '/main/inc/lib/system/web/request_server.class.php';
         $result['Resource'] = '/main/coursecopy/classes/Resource.class.php';
+        $result['Response'] = '/main/inc/lib/response.class.php';
         $result['Result'] = '/main/gradebook/lib/be/result.class.php';
         $result['ResultSet'] = '/main/inc/lib/result_set.class.php';
         $result['ResultTable'] = '/main/gradebook/lib/fe/resulttable.class.php';
         $result['ResultsDataGenerator'] = '/main/gradebook/lib/results_data_generator.class.php';
         $result['Rights'] = '/main/inc/lib/rights.lib.php';
-        $result['Scaffolder'] = '/main/auth/shibboleth/lib/scaffolder/scaffolder.class.php';
         $result['ScoreDisplay'] = '/main/gradebook/lib/scoredisplay.class.php';
         $result['ScoreDisplayForm'] = '/main/gradebook/lib/fe/scoredisplayform.class.php';
         $result['ScormDocument'] = '/main/coursecopy/classes/ScormDocument.class.php';
         $result['Security'] = '/main/inc/lib/security.lib.php';
         $result['SessionHandler'] = '/main/inc/lib/session_handler.class.php';
         $result['SessionManager'] = '/main/inc/lib/sessionmanager.lib.php';
-        $result['Shibboleth'] = '/main/auth/shibboleth/app/shibboleth.class.php';
-        $result['ShibbolethConfig'] = '/main/auth/shibboleth/lib/shibboleth_config.class.php';
-        $result['ShibbolethController'] = '/main/auth/shibboleth/app/controller/shibboleth_controller.class.php';
-        $result['ShibbolethDisplay'] = '/main/auth/shibboleth/app/view/shibboleth_display.class.php';
-        $result['ShibbolethEmailForm'] = '/main/auth/shibboleth/app/view/shibboleth_email_form.class.php';
-        $result['ShibbolethSession'] = '/main/auth/shibboleth/lib/shibboleth_session.class.php';
-        $result['ShibbolethStatusRequestForm'] = '/main/auth/shibboleth/app/view/shibboleth_status_request_form.class.php';
-        $result['ShibbolethStore'] = '/main/auth/shibboleth/app/model/shibboleth_store.class.php';
-        $result['ShibbolethUpgrade'] = '/main/auth/shibboleth/db/shibboleth_upgrade.class.php';
-        $result['ShibbolethUser'] = '/main/auth/shibboleth/app/model/shibboleth_user.class.php';
+        $result['Shibboleth\Admin'] = '/main/auth/shibboleth/app/model/admin.class.php';
+        $result['Shibboleth\AdminStore'] = '/main/auth/shibboleth/app/model/admin.class.php';
+        $result['Shibboleth\Model'] = '/main/auth/shibboleth/lib/model.class.php';
+        $result['Shibboleth\Scaffolder'] = '/main/auth/shibboleth/lib/scaffolder/scaffolder.class.php';
+        $result['Shibboleth\Shibboleth'] = '/main/auth/shibboleth/app/shibboleth.class.php';
+        $result['Shibboleth\ShibbolethConfig'] = '/main/auth/shibboleth/lib/shibboleth_config.class.php';
+        $result['Shibboleth\ShibbolethController'] = '/main/auth/shibboleth/app/controller/shibboleth_controller.class.php';
+        $result['Shibboleth\ShibbolethDisplay'] = '/main/auth/shibboleth/app/view/shibboleth_display.class.php';
+        $result['Shibboleth\ShibbolethEmailForm'] = '/main/auth/shibboleth/app/view/shibboleth_email_form.class.php';
+        $result['Shibboleth\ShibbolethSession'] = '/main/auth/shibboleth/lib/shibboleth_session.class.php';
+        $result['Shibboleth\ShibbolethStatusRequestForm'] = '/main/auth/shibboleth/app/view/shibboleth_status_request_form.class.php';
+        $result['Shibboleth\ShibbolethStore'] = '/main/auth/shibboleth/app/model/shibboleth_store.class.php';
+        $result['Shibboleth\ShibbolethUpgrade'] = '/main/auth/shibboleth/db/shibboleth_upgrade.class.php';
+        $result['Shibboleth\ShibbolethUser'] = '/main/auth/shibboleth/app/model/shibboleth_user.class.php';
+        $result['Shibboleth\Store'] = '/main/auth/shibboleth/lib/store.class.php';
+        $result['Shibboleth\User'] = '/main/auth/shibboleth/app/model/user.class.php';
+        $result['Shibboleth\UserStore'] = '/main/auth/shibboleth/app/model/user.class.php';
+        $result['Shibboleth\_Admin'] = '/main/auth/shibboleth/app/model/scaffold/admin.class.php';
+        $result['Shibboleth\_AdminStore'] = '/main/auth/shibboleth/app/model/scaffold/admin.class.php';
+        $result['Shibboleth\_User'] = '/main/auth/shibboleth/app/model/scaffold/user.class.php';
+        $result['Shibboleth\_UserStore'] = '/main/auth/shibboleth/app/model/scaffold/user.class.php';
+        $result['Shibboleth\aai'] = '/main/auth/shibboleth/config/aai.class.php';
         $result['Skill'] = '/main/inc/lib/skill.lib.php';
         $result['SkillProfile'] = '/main/inc/lib/skill.lib.php';
         $result['SkillRelGradebook'] = '/main/inc/lib/skill.lib.php';
@@ -361,7 +369,6 @@ class Autoload
         $result['Spreadsheet_Excel_Writer_Workbook'] = '/main/inc/lib/pear/Spreadsheet_Excel_Writer/Writer/Workbook.php';
         $result['Spreadsheet_Excel_Writer_Worksheet'] = '/main/inc/lib/pear/Spreadsheet_Excel_Writer/Writer/Worksheet.php';
         $result['Statistics'] = '/main/admin/statistics/statistics.lib.php';
-        $result['Store'] = '/main/auth/shibboleth/lib/store.class.php';
         $result['StudentPublicationLink'] = '/main/gradebook/lib/be/studentpublicationlink.class.php';
         $result['SubLanguageManager'] = '/main/admin/sub_language.class.php';
         $result['Survey'] = '/main/coursecopy/classes/Survey.class.php';
@@ -409,13 +416,11 @@ class Autoload
         $result['UniqueAnswerNoOption'] = '/main/exercice/unique_answer_no_option.class.php';
         $result['Uri'] = '/main/inc/lib/uri.class.php';
         $result['UrlManager'] = '/main/inc/lib/urlmanager.lib.php';
-        $result['User'] = '/main/auth/shibboleth/app/model/user.class.php';
         $result['UserApiKeyManager'] = '/main/inc/lib/user_api_key_manager.class.php';
         $result['UserDataGenerator'] = '/main/gradebook/lib/user_data_generator.class.php';
         $result['UserForm'] = '/main/gradebook/lib/fe/userform.class.php';
         $result['UserGroup'] = '/main/inc/lib/usergroup.lib.php';
         $result['UserManager'] = '/main/inc/lib/usermanager.lib.php';
-        $result['UserStore'] = '/main/auth/shibboleth/app/model/user.class.php';
         $result['UserTable'] = '/main/gradebook/lib/fe/usertable.class.php';
         $result['Utf8'] = '/main/inc/lib/system/text/utf8.class.php';
         $result['Utf8Decoder'] = '/main/inc/lib/system/text/utf8_decoder.class.php';
@@ -425,12 +430,7 @@ class Autoload
         $result['Zip'] = '/main/inc/lib/zip.class.php';
         $result['ZombieManager'] = '/main/inc/lib/zombie/zombie_manager.class.php';
         $result['ZombieReport'] = '/main/inc/lib/zombie/zombie_report.class.php';
-        $result['_Admin'] = '/main/auth/shibboleth/app/model/scaffold/admin.class.php';
-        $result['_AdminStore'] = '/main/auth/shibboleth/app/model/scaffold/admin.class.php';
         $result['_IndexableChunk'] = '/main/inc/lib/search/IndexableChunk.class.php';
-        $result['_User'] = '/main/auth/shibboleth/app/model/scaffold/user.class.php';
-        $result['_UserStore'] = '/main/auth/shibboleth/app/model/scaffold/user.class.php';
-        $result['aai'] = '/main/auth/shibboleth/config/aai.class.php';
         $result['aicc'] = '/main/newscorm/aicc.class.php';
         $result['aiccBlock'] = '/main/newscorm/aiccBlock.class.php';
         $result['aiccItem'] = '/main/newscorm/aiccItem.class.php';

+ 7 - 7
main/inc/local.inc.php

@@ -664,8 +664,8 @@ if (isset($uidReset) && $uidReset) {    // session data refresh requested
 	Session::write('is_allowedCreateCourse',$is_allowedCreateCourse);
 } else { // continue with the previous values
     $_user                    = $_SESSION['_user'];
-    $is_platformAdmin         = $_SESSION['is_platformAdmin'];
-    $is_allowedCreateCourse   = $_SESSION['is_allowedCreateCourse'];
+    $is_platformAdmin         = isset($_SESSION['is_platformAdmin']) ? $_SESSION['is_platformAdmin'] : false;
+    $is_allowedCreateCourse   = isset($_SESSION['is_allowedCreateCourse']) ? $_SESSION['is_allowedCreateCourse'] : false;
 }
 
 /*  COURSE INIT */
@@ -1059,11 +1059,11 @@ if ((isset($uidReset) && $uidReset) || (isset($cidReset) && $cidReset)) {
 		$_courseUser       = $_SESSION ['_courseUser'];
 	}
 
-    $is_courseAdmin       = $_SESSION ['is_courseAdmin'];
-    $is_courseTutor       = $_SESSION ['is_courseTutor'];
-    $is_courseCoach       = $_SESSION ['is_courseCoach'];
-	$is_courseMember      = $_SESSION ['is_courseMember'];
-	$is_allowed_in_course = $_SESSION ['is_allowed_in_course'];
+    $is_courseAdmin       = isset($_SESSION ['is_courseAdmin']) ? $_SESSION ['is_courseAdmin'] : false;
+    $is_courseTutor       = isset($_SESSION ['is_courseTutor']) ? $_SESSION ['is_courseTutor'] : false;
+    $is_courseCoach       = isset($_SESSION ['is_courseCoach']) ? $_SESSION ['is_courseCoach'] : false;
+	$is_courseMember      = isset($_SESSION ['is_courseMember']) ? $_SESSION ['is_courseMember'] : false;
+	$is_allowed_in_course = isset($_SESSION ['is_allowed_in_course']) ? $_SESSION ['is_allowed_in_course'] : false;
 }
 
 /*  GROUP INIT */