diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php
index a6643c44d6..43c1b88b51 100755
--- a/main/inc/lib/course.lib.php
+++ b/main/inc/lib/course.lib.php
@@ -669,7 +669,7 @@ class CourseManager
      * @return boolean true if subscription succeeds, boolean false otherwise.
      * @assert ('', '') === false
      */
-    public static function add_user_to_course($user_id, $course_code, $status = STUDENT)
+    public static function add_user_to_course($user_id, $course_code, $status = STUDENT, $userCourseCategoryId = 0)
     {
         $debug = false;
         $user_table = Database::get_main_table(TABLE_MAIN_USER);
@@ -723,7 +723,8 @@ class CourseManager
             'c_id' => $courseId,
             'user_id' => $user_id,
             'status' => $status,
-            'sort' => $max_sort + 1
+            'sort' => $max_sort + 1,
+            'user_course_cat' => $userCourseCategoryId
         ];
         $insertId = Database::insert($course_user_table, $params);
 
@@ -3743,8 +3744,10 @@ class CourseManager
         while ($row = Database::fetch_array($result)) {
             // We simply display the title of the category.
             $params = array(
-                'icon' => Display::return_icon('folder_yellow.png', api_htmlentities($row['title']), array(),
-                    ICON_SIZE_LARGE),
+                'icon' => Display::return_icon(
+                    'folder_yellow.png',
+                    api_htmlentities($row['title']), array(), ICON_SIZE_LARGE
+                ),
                 'title' => $row['title'],
                 'class' => 'table_user_course_category'
             );
@@ -3759,6 +3762,7 @@ class CourseManager
 
         // Step 2: We display the course without a user category.
         $courseInCategory = self:: display_courses_in_category(0, $load_dirs);
+
         $html .= $courseInCategory['html'];
         $courseCount += $courseInCategory['course_count'];
 
@@ -3809,7 +3813,7 @@ class CourseManager
                     course.id = course_rel_user.c_id AND
                     url.c_id = course.id AND
                     course_rel_user.user_id = '" . $user_id . "' AND
-                    course_rel_user.user_course_cat='" . $user_category_id . "'
+                    course_rel_user.user_course_cat = '" . $user_category_id . "'
                     $without_special_courses ";
 
         // If multiple URL access mode is enabled, only fetch courses
diff --git a/main/inc/lib/document.lib.php b/main/inc/lib/document.lib.php
index f53792b7ca..c6e13b40e2 100755
--- a/main/inc/lib/document.lib.php
+++ b/main/inc/lib/document.lib.php
@@ -3184,7 +3184,7 @@ class DocumentManager
         $overwrite_url = null,
         $showInvisibleFiles = false,
         $showOnlyFolders = false,
-        $folderId = 0
+        $folderId = false
     ) {
         if (empty($course_info['real_id']) || empty($course_info['code']) || !is_array($course_info)) {
             return '';
@@ -3231,7 +3231,7 @@ class DocumentManager
 
         $tbl_doc = Database::get_course_table(TABLE_DOCUMENT);
         $tbl_item_prop = Database::get_course_table(TABLE_ITEM_PROPERTY);
-        $condition_session = " AND (session_id = '$session_id' OR session_id = '0' )";
+        $condition_session = " AND (last.session_id = '$session_id' OR last.session_id = '0' )";
 
         $add_folder_filter = null;
         if (!empty($filter_by_folder)) {
@@ -3261,7 +3261,8 @@ class DocumentManager
             }
         }
 
-        if ($folderId !== 0) {
+        $parentData = [];
+        if ($folderId !== false) {
             $parentData = self::get_document_data_by_id($folderId, $course_info['code']);
             if (!empty($parentData)) {
                 $cleanedPath = $parentData['path'];
@@ -3285,7 +3286,6 @@ class DocumentManager
         }
 
         $levelCondition = null;
-
         if ($folderId === false) {
             $levelCondition = " AND docs.path NOT LIKE'/%/%'";
         }
@@ -3334,6 +3334,7 @@ class DocumentManager
 
         // If you want to debug it, I advise you to do "echo" on the eval statements.
         $newResources = array();
+
         if (!empty($resources) && $user_in_course) {
             foreach ($resources as $resource) {
                 $is_visible = self::is_visible_by_id(
@@ -3351,16 +3352,20 @@ class DocumentManager
         }
 
         $label = get_lang('Documents');
+
+        $documents = [];
         if ($folderId === false) {
             $documents[$label] = array(
                 'id' => 0,
                 'files' => $newResources
             );
         } else {
-            $documents[$parentData['title']] = array(
-                'id' => intval($folderId),
-                'files' => $newResources
-            );
+            if (!empty($parentData)) {
+                $documents[$parentData['title']] = array(
+                    'id' => intval($folderId),
+                    'files' => $newResources
+                );
+            }
         }
 
         $write_result = self::write_resources_tree(
@@ -3618,7 +3623,6 @@ class DocumentManager
         }
         $return .= '
';
 
-
         $return .= '
 ';
         $return .= ''.$title.'';
         $return .= '';
@@ -5768,15 +5772,16 @@ class DocumentManager
     public static function create_dir_form($dirId)
     {
         global $document_id;
-        $form = new FormValidator('create_dir_form', 'post', api_get_self().'?'.api_get_cidreq(), '', null, false);
+        $form = new FormValidator('create_dir_form', 'post', api_get_self().'?'.api_get_cidreq());
         $form->addElement('hidden', 'create_dir', 1);
         $form->addElement('hidden', 'dir_id', intval($document_id));
         $form->addElement('hidden', 'id', intval($dirId));
-        $form->addElement('header', '', get_lang('CreateDir'));
-        $form->addElement('text', 'dirname', get_lang('NewDir'), array('autofocus' => 'autofocus'));
-        $form->addButtonCreate(get_lang('CreateFolder'), 'submit');
-        $new_folder_text = $form->returnForm();
-        return $new_folder_text;
+        $form->addElement('header', get_lang('CreateDir'));
+        $form->addText('dirname', get_lang('NewDir'), array('autofocus' => 'autofocus'));
+        $form->addButtonCreate(get_lang('CreateFolder'));
+
+        return $form->returnForm();
+
     }
 
     /**
diff --git a/main/user/subscribe_user.php b/main/user/subscribe_user.php
index 4cf2a30463..fc0e99b017 100755
--- a/main/user/subscribe_user.php
+++ b/main/user/subscribe_user.php
@@ -77,12 +77,20 @@ $list_not_register_user='';
 if (isset($_REQUEST['register'])) {
 	if ($type =='teacher') {
 		if (!empty($current_session_id)) {
-			$result_simple_sub = SessionManager::set_coach_to_course_session($_REQUEST['user_id'], $current_session_id, $_course['sysCode']);
+			$result_simple_sub = SessionManager::set_coach_to_course_session(
+				$_REQUEST['user_id'],
+				$current_session_id,
+				$_course['code']
+			);
 		} else {
-			$result_simple_sub = CourseManager :: subscribe_user($_REQUEST['user_id'], $_course['sysCode'], COURSEMANAGER);
+			$result_simple_sub = CourseManager:: subscribe_user(
+				$_REQUEST['user_id'],
+				$_course['code'],
+				COURSEMANAGER
+			);
 		}
 	} else {
-		$result_simple_sub=CourseManager :: subscribe_user($_REQUEST['user_id'], $_course['sysCode']);
+		$result_simple_sub = CourseManager :: subscribe_user($_REQUEST['user_id'], $_course['code']);
 	}
 
 	$user_id_temp = $_SESSION['session_user_id'];
@@ -106,7 +114,7 @@ if (isset($_REQUEST['register'])) {
 
 if (isset ($_POST['action'])) {
 	switch ($_POST['action']) {
-		case 'subscribe' :
+		case 'subscribe':
 			if (is_array($_POST['user'])) {
 				foreach ($_POST['user'] as $index => $user_id) {
 					$user_id=intval($user_id);
@@ -118,12 +126,12 @@ if (isset ($_POST['action'])) {
                                 $_course['sysCode']
                             );
 						} else {
-							$is_suscribe[] = CourseManager::subscribe_user($user_id, $_course['sysCode'],COURSEMANAGER);
+							$is_suscribe[] = CourseManager::subscribe_user($user_id, $_course['code'],COURSEMANAGER);
 						}
 					} else {
-						$is_suscribe[]=CourseManager::subscribe_user($user_id, $_course['sysCode']);
+						$is_suscribe[] = CourseManager::subscribe_user($user_id, $_course['code']);
 					}
-                    $is_suscribe_user_id[]=$user_id;
+                    $is_suscribe_user_id[] = $user_id;
 				}
 			}
 
@@ -132,8 +140,8 @@ if (isset ($_POST['action'])) {
 
 			unset($_SESSION['session_user_id']);
  			unset($_SESSION['session_user_name']);
-			$counter=0;
-			$is_suscribe_counter=count($is_suscribe_user_id);
+			$counter = 0;
+			$is_suscribe_counter = count($is_suscribe_user_id);
 
 			$list_register_user='';
 
@@ -181,7 +189,12 @@ $is_western_name_order = api_is_western_name_order();
 $sort_by_first_name = api_sort_by_first_name();
 
 // Build table
-$table = new SortableTable('subscribe_users', 'get_number_of_users', 'get_user_data', ($is_western_name_order xor $sort_by_first_name) ? 3 : 2);
+$table = new SortableTable(
+	'subscribe_users',
+	'get_number_of_users',
+	'get_user_data',
+	($is_western_name_order xor $sort_by_first_name) ? 3 : 2
+);
 $parameters['keyword'] = $keyword;
 $parameters['type'] = $type;
 $table->set_additional_parameters($parameters);
@@ -247,7 +260,7 @@ function get_number_of_users()
 						u.status = 1 AND
 						(u.official_code <> 'ADMIN' OR u.official_code IS NULL) ";
 
-			if ($_configuration['multiple_access_urls']) {
+			if (api_is_multiple_url_enabled()) {
 				$url_access_id = api_get_current_access_url_id();
 				if ($url_access_id !=-1) {
 					$tbl_url_rel_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
@@ -257,7 +270,12 @@ function get_number_of_users()
 							ON u.user_id = cu.user_id and cu.c_id = '".api_get_course_int_id()."' AND session_id ='".api_get_session_id()."'
 							INNER JOIN  $tbl_url_rel_user as url_rel_user
 							ON (url_rel_user.user_id = u.user_id)
-							WHERE cu.user_id IS NULL AND access_url_id= $url_access_id AND u.status=1 AND (u.official_code <> 'ADMIN' OR u.official_code IS NULL) ";
+							WHERE
+								cu.user_id IS NULL AND
+								access_url_id= $url_access_id AND
+								u.status = 1 AND
+								(u.official_code <> 'ADMIN' OR u.official_code IS NULL)
+							";
 				}
 			}
 		} else {
@@ -298,7 +316,7 @@ function get_number_of_users()
 						u.status<>".DRH." AND
 						(u.official_code <> 'ADMIN' OR u.official_code IS NULL) ";
 
-			if ($_configuration['multiple_access_urls']) {
+			if (api_is_multiple_url_enabled()) {
 				$url_access_id = api_get_current_access_url_id();
 				if ($url_access_id !=-1) {
 					$tbl_url_rel_user = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
@@ -340,7 +358,7 @@ function get_number_of_users()
 				$sql .=	"WHERE cu.user_id IS NULL AND u.status<>".DRH." ";
 			}
 
-			if (isset($_configuration['multiple_access_urls']) && $_configuration['multiple_access_urls']) {
+			if (api_is_multiple_url_enabled()) {
 				$url_access_id = api_get_current_access_url_id();
 
 				if ($url_access_id !=-1) {
@@ -534,7 +552,7 @@ function get_user_data($from, $number_of_items, $column, $direction)
                     	c_id ='".$courseId."' AND
                     	session_id ='".$session_id."' ";
 
-            if (isset($_configuration['multiple_access_urls']) && $_configuration['multiple_access_urls']) {
+            if (api_is_multiple_url_enabled()) {
                 $sql .= " INNER JOIN $tbl_url_rel_user as url_rel_user ON (url_rel_user.user_id = u.user_id) ";
             }
 
@@ -557,7 +575,7 @@ function get_user_data($from, $number_of_items, $column, $direction)
                 			(u.official_code <> 'ADMIN' OR u.official_code IS NULL) ";
             }
 
-            if (isset($_configuration['multiple_access_urls']) && $_configuration['multiple_access_urls']) {
+            if (api_is_multiple_url_enabled()) {
                 $sql .=  "AND access_url_id = $url_access_id";
             }
 
@@ -586,10 +604,8 @@ function get_user_data($from, $number_of_items, $column, $direction)
 
 			//showing only the courses of the current Chamilo access_url_id
 
-			if (isset($_configuration['multiple_access_urls']) && $_configuration['multiple_access_urls']) {
-
+			if (api_is_multiple_url_enabled()) {
 				if ($url_access_id !=-1) {
-
 					$sql = "SELECT $select_fields
 						FROM $user_table u
 						LEFT JOIN $course_user_table cu
diff --git a/main/user/user.php b/main/user/user.php
index ed93d43bff..917ad3ebd6 100755
--- a/main/user/user.php
+++ b/main/user/user.php
@@ -384,14 +384,15 @@ if (api_is_allowed_to_edit(null, true)) {
             $tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
             $tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
 
-            $sql = 'SELECT '.$tbl_user.'.user_id
+            $sql = 'SELECT user.user_id
 					FROM '.$tbl_user.' user
 					INNER JOIN '.$tbl_session_rel_user.' reluser
 					ON user.user_id = reluser.user_id AND reluser.relation_type<>'.SESSION_RELATION_TYPE_RRHH.'
 					INNER JOIN '.$tbl_session_rel_course.' rel_course
-					ON rel_course.session_id = reluser.id_session
-					WHERE user.user_id = "'.$user_id.'"
-					AND rel_course.c_id = "'.$courseId.'"';
+					ON rel_course.session_id = reluser.session_id
+					WHERE
+					    user.user_id = "'.$user_id.'" AND
+					    rel_course.c_id = "'.$courseId.'"';
 
             $result = Database::query($sql);
             $row = Database::fetch_array($result, 'ASSOC');