Browse Source

Improving performace: loading user info once in local.inc. Moving requires in global.inc instead of adding the requires in other files in inc/lib (internationalization)

Julio Montoya 12 years ago
parent
commit
f6beb2420f

+ 14 - 6
main/inc/global.inc.php

@@ -105,10 +105,19 @@ if ($alreadyInstalled) {
 // Include the main Chamilo platform library file.
 require_once $includePath.'/lib/main_api.lib.php';
 
+
+/** Inclusion of internationalization libraries */
+require_once $includePath.'/lib/internationalization.lib.php';
+
+/**
+ * Functions for internal use behind this API
+ */
+require_once $includePath.'/lib/internationalization_internal.lib.php';
+
+
 // Do not over-use this variable. It is only for this script's local use.
 $libPath = $includePath.'/lib/';
 
-
 /*
 $settingsFile = __DIR__."/../../app/config/settings.yml";
 $app->register(new Igorw\Silex\ConfigServiceProvider($settingsFile, array(
@@ -143,8 +152,8 @@ $app['configuration'] = $_configuration;
 $app['languages_file'] = array();
 $app['installed'] = $alreadyInstalled;
 
-//require_once __DIR__.'/../../src/ChamiloLMS/Resources/config/prod.php';
-require_once __DIR__.'/../../src/ChamiloLMS/Resources/config/dev.php';
+require_once __DIR__.'/../../src/ChamiloLMS/Resources/config/prod.php';
+//require_once __DIR__.'/../../src/ChamiloLMS/Resources/config/dev.php';
 
 //Setting HttpCacheService provider in order to use do: $app['http_cache']->run();
 /*
@@ -623,6 +632,7 @@ require $includePath.'/local.inc.php';
 //Adding web profiler
 if (is_writable($app['cache.path'])) {
     //if ($app['debug']) {
+
     if (api_get_setting('allow_web_profiler') == 'true') {
         $app->register($p = new Silex\Provider\WebProfilerServiceProvider(), array(
                 'profiler.cache_dir' => $app['profiler.cache_dir'],
@@ -677,8 +687,6 @@ if ($alreadyInstalled) {
 // to use it within the function get_lang(...).
 $language_interface_initial_value = $language_interface;
 
-//load_translations($app);
-
 $langPath = api_get_path(SYS_LANG_PATH);
 
 $this_script = $app['this_script'];
@@ -978,7 +986,7 @@ $app->get('/index', 'index.controller:indexAction')->bind('index');
 $app->get('/userportal', 'userportal.controller:indexAction');
 
 //Logout page
-$app->get('/logout', 'index.controller:logoutAction');
+$app->get('/logout', 'index.controller:logoutAction')->bind('logout');
 
 
 $app->match('/courses/{courseCode}/index.php', 'course_home.controller:indexAction', 'GET|POST');

+ 0 - 2
main/inc/lib/chamilo_session.class.php

@@ -76,8 +76,6 @@ class ChamiloSession extends System\Session
      */
     static function start($alreadyInstalled = true)
     {
-        global $_configuration;
-
         /* Causes too many problems and is not configurable dynamically.
           if ($alreadyInstalled) {
           $session_lifetime = 360000;

+ 3 - 3
main/inc/lib/course.lib.php

@@ -3405,7 +3405,7 @@ class CourseManager {
      * @param   int number of hottest courses
      */
     public static function return_hot_courses($days = 30, $limit = 5) {
-        global $_configuration;
+        $urlId = api_get_current_access_url_id();
         $limit  = intval($limit);
 
         //Getting my courses
@@ -3441,7 +3441,7 @@ class CourseManager {
        $sql = "SELECT COUNT(course_access_id) course_count, a.course_code, visibility ".
               "FROM $table_course c INNER JOIN $table_course_access a ".
               "  ON (c.code = a.course_code) INNER JOIN $table_course_url u ON u.course_code = a.course_code ".
-              "  WHERE   u.access_url_id = ".$_configuration['access_url']." AND".
+              "  WHERE   u.access_url_id = ".$urlId." AND".
               "          login_course_date <= now() AND ".
               "          login_course_date > DATE_SUB(now(), INTERVAL $days DAY) AND".
               "          visibility <> '".COURSE_VISIBILITY_CLOSED."'".
@@ -4718,4 +4718,4 @@ class CourseManager {
         rmdir($tmp_dir_name);
         return $course_properties;
     }
-} //end class CourseManager
+} //end class CourseManager

+ 0 - 6
main/inc/lib/internationalization.lib.php

@@ -4032,9 +4032,3 @@ function setting_gettext()
     bind_textdomain_codeset($domain, 'UTF-8');
     textdomain($domain);
 }
-
-/**
- * Functions for internal use behind this API
- */
-
-require_once dirname(__FILE__).'/internationalization_internal.lib.php';

+ 0 - 8
main/inc/lib/main_api.lib.php

@@ -368,14 +368,6 @@ define('TEACHER_HTML', 3);
 define('STUDENT_HTML_FULLPAGE', 4);
 define('TEACHER_HTML_FULLPAGE', 5);
 
-
-/**
- * Inclusion of internationalization libraries
- */
-
-require_once dirname(__FILE__).'/internationalization.lib.php';
-
-
 /* PATHS & FILES - ROUTINES */
 
 /**

+ 3 - 2
main/inc/lib/template.lib.php

@@ -257,7 +257,7 @@ class Template
         $this->user_is_logged_in = false;
 
         if (api_user_is_login()) {
-            $user_info = api_get_user_info(api_get_user_id());
+            $user_info = $this->app['current_user'];
             $user_info['logged'] = 1;
 
             $user_info['is_admin'] = 0;
@@ -746,7 +746,8 @@ class Template
 
         $lang = null; //el for "Edit Language"
         $user_language_choice = isset($_SESSION['user_language_choice']) ? $_SESSION['user_language_choice'] : null;
-        $user_info = api_get_user_id() ? api_get_user_info() : null;
+
+        $user_info = $this->app['current_user'];
 
         if (!empty($user_language_choice)) {
             $lang = $user_language_choice;

+ 22 - 33
main/inc/local.inc.php

@@ -144,7 +144,7 @@ if (!empty($_SESSION['_user']['user_id']) && !($login || $logout)) {
 
         //Lookup the user in the main database
         $user_table = Database::get_main_table(TABLE_MAIN_USER);
-        $sql = "SELECT user_id, username, password, auth_source, active, expiration_date, status FROM $user_table
+        $sql = "SELECT * FROM $user_table
                 WHERE username = '".Database::escape_string($login)."'";
 
         $result = Database::query($sql);
@@ -157,13 +157,16 @@ if (!empty($_SESSION['_user']['user_id']) && !($login || $logout)) {
                 $password = api_get_encrypted_password(trim(stripslashes($password)));
 
                 // Check the user's password
-                if ( ($password == $uData['password']  OR $cas_login) AND (trim($login) == $uData['username'])) {
+                if (($password == $uData['password'] OR $cas_login) AND (trim($login) == $uData['username'])) {
                     $update_type = UserManager::get_extra_user_data_by_field($uData['user_id'], 'update_type');
                     $update_type= $update_type['update_type'];
+
                     if (!empty($extAuthSource[$update_type]['updateUser']) && file_exists($extAuthSource[$update_type]['updateUser'])) {
                         include_once $extAuthSource[$update_type]['updateUser'];
                     }
 
+                    unset($uData['password']);
+
                     // Check if the account is active (not locked)
                     if ($uData['active'] == '1') {
 
@@ -184,14 +187,11 @@ if (!empty($_SESSION['_user']['user_id']) && !($login || $logout)) {
 
                                 if ($my_user_is_admin === false) {
 
-                                    if (is_array($my_url_list) && count($my_url_list)>0 ) {
+                                    if (is_array($my_url_list) && count($my_url_list) > 0 ) {
                                         // the user have the permissions to enter at this site
                                         if (in_array($current_access_url_id, $my_url_list)) {
                                             ConditionalLogin::check_conditions($uData);
-
-                                            $_user['user_id'] = $uData['user_id'];
-                                            $_user['status']  = $uData['status'];
-                                            Session::write('_user',$_user);
+                                            Session::write('_user', $uData);
                                             event_login();
                                             $logging_in = true;
                                         } else {
@@ -209,16 +209,12 @@ if (!empty($_SESSION['_user']['user_id']) && !($login || $logout)) {
                                 } else { //Only admins of the "main" (first) Chamilo portal can login wherever they want
                                     if (in_array(1, $my_url_list)) { //Check if this admin have the access_url_id = 1 which means the principal
                                         ConditionalLogin::check_conditions($uData);
-                                        $_user['user_id'] = $uData['user_id'];
-                                        $_user['status']  = $uData['status'];
-                                        Session::write('_user',$_user);
+                                        Session::write('_user', $uData);
                                         event_login();
                                     } else {
                                         //This means a secondary admin wants to login so we check as he's a normal user
                                         if (in_array($current_access_url_id, $my_url_list)) {
-                                            $_user['user_id'] = $uData['user_id'];
-                                            $_user['status']  = $uData['status'];
-                                            Session::write('_user',$_user);
+                                            Session::write('_user', $uData);
                                             event_login();
                                         } else {
                                             $loginFailed = true;
@@ -229,12 +225,8 @@ if (!empty($_SESSION['_user']['user_id']) && !($login || $logout)) {
                                     }
                                 }
                             } else {
-                                //error_log('Loggedin');
                                 ConditionalLogin::check_conditions($uData);
-                                $_user['user_id'] = $uData['user_id'];
-                                $_user['status']  = $uData['status'];
-
-                                Session::write('_user',$_user);
+                                Session::write('_user', $uData);
                                 event_login();
                                 $logging_in = true;
                             }
@@ -450,15 +442,8 @@ if (!empty($_SESSION['_user']['user_id']) && !($login || $logout)) {
             $use_anonymous = false;
         }
     }
-
-    //    else {} => continue as anonymous user
     $uidReset = true;
-
-    //    $cidReset = true;
-    //    $gidReset = true;
-} // end else
-
-
+} // end
 
 //Now check for anonymous user mode
 if (isset($use_anonymous) && $use_anonymous) {
@@ -484,6 +469,11 @@ if (!empty($cidReq) && (!isset($_SESSION['_cid']) or (isset($_SESSION['_cid']) &
     $gidReset = true;    // As groups depend from courses, group id is reset
 }
 
+//Setting app user variable
+$_user = Session::read('_user');
+
+$app['current_user'] = $_user;
+
 /* USER INIT */
 if (isset($uidReset) && $uidReset) {    // session data refresh requested
     unset($_SESSION['_user']['uidReset']);
@@ -511,7 +501,7 @@ if (isset($uidReset) && $uidReset) {    // session data refresh requested
             // Extracting the user data
 
             $uData = Database::fetch_array($result);
-            $_user =  _api_format_user($uData, false);
+            $_user = _api_format_user($uData, false);
             $_user['lastLogin']        = api_strtotime($uData['login_date'], 'UTC');
 
             $is_platformAdmin           = (bool) (! is_null( $uData['is_admin']));
@@ -521,26 +511,25 @@ if (isset($uidReset) && $uidReset) {    // session data refresh requested
             Session::write('_user', $_user);
             UserManager::update_extra_field_value($_user['user_id'], 'already_logged_in', 'true');
 
-            Session::write('is_platformAdmin',$is_platformAdmin);
-            Session::write('is_allowedCreateCourse',$is_allowedCreateCourse);
+            Session::write('is_platformAdmin', $is_platformAdmin);
+            Session::write('is_allowedCreateCourse', $is_allowedCreateCourse);
 
         } else {
             header('location:'.api_get_path(WEB_PATH));
-            //exit("WARNING UNDEFINED UID !! ");
+            exit;
         }
     } else { // no uid => logout or Anonymous
         Session::erase('_user');
         Session::erase('_uid');
     }
-    Session::write('is_platformAdmin',$is_platformAdmin);
-    Session::write('is_allowedCreateCourse',$is_allowedCreateCourse);
+    Session::write('is_platformAdmin', $is_platformAdmin);
+    Session::write('is_allowedCreateCourse', $is_allowedCreateCourse);
 } else { // continue with the previous values
     $_user                    = $_SESSION['_user'];
     $is_platformAdmin         = isset($_SESSION['is_platformAdmin']) ? $_SESSION['is_platformAdmin'] : false;
     $is_allowedCreateCourse   = isset($_SESSION['is_allowedCreateCourse']) ? $_SESSION['is_allowedCreateCourse'] : false;
 }
 
-
 /*  COURSE INIT */
 
 if (isset($cidReset) && $cidReset) {