@ -14,6 +14,7 @@ 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					 */  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					require_once api_get_path(LIBRARY_PATH).'course.lib.php';  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					require_once api_get_path(LIBRARY_PATH).'usermanager.lib.php';  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					require_once api_get_path(LIBRARY_PATH).'sessionmanager.lib.php';  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					/* CONSTANTS */  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -1122,20 +1123,62 @@ return 'application/octet-stream'; 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    /**  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     * return true if the documentpath have visibility=1 as item_property   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     * Return true if user can see a file   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     *  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     * @param   int     document id  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     * @param   array   course info  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     * @param array  $course the _course array info of the document's course  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     * @param   array  	$course the _course array info of the document's course  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     * @return  bool	  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					     */  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    public static function is_visible_by_id($id, $course, $session_id = 0, $file_type = 'file') {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        $docTable  = Database::get_course_table(TABLE_DOCUMENT, $course['dbName']);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        $propTable = Database::get_course_table(TABLE_ITEM_PROPERTY, $course['dbName']);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        $id         = intval($id);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        $session_id = intval($session_id);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        //$condition  = "AND id_session = $session_id";  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    public static function is_visible_by_id($doc_id, $course_info, $session_id, $user_id) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	$is_visible		= false;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	$user_in_course = false;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	//Checking the course array  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	if (empty($course_info)) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    		$course_info = api_get_course_info();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    		if (empty($course_info)) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    			return false;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    		}    		  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	$doc_id     = intval($doc_id);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	$session_id = intval($session_id);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	// Course and session visibility is handle in local.inc.php  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	//Checking if user exist in course/session  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	if ($session_id == 0 ) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								if (CourseManager::is_user_subscribed_in_course($user_id, $course_info['code'])) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									$user_in_course = true;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    		}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	} else {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    		$user_status = SessionManager::get_user_status_in_session($user_id, $course_info['code'], $session_id);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    		if (in_array($user_status, array('0', '6'))) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    			//student or coach  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    			$user_in_course = true;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    		}    		  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	}    	  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	if ($user_in_course) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    	$item_info = api_get_item_property_info($course['real_id'], 'document', $doc_id, $session_id);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    	if (isset($item_info['visibility'])) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    		if (api_is_platform_admin()) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    			return true;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    		}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    		if ($item_info['visibility'] == 1) {	    	  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    			return true;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    		}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    	}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	return false;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	/*  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        $docTable  = Database::get_course_table(TABLE_DOCUMENT, 	 $course['dbName']);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        $propTable = Database::get_course_table(TABLE_ITEM_PROPERTY, $course['dbName']);          
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        $condition = "AND id_session IN  ('$session_id', '0') ";  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if (!in_array($file_type, array('file','folder'))) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            $file_type = 'file';  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -1150,9 +1193,11 @@ return 'application/octet-stream'; 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                $is_visible = $_SESSION['is_allowed_in_course'] || api_is_platform_admin();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					          
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        //improved protection of documents viewable directly through the url: incorporates the same protections of the course at the url of documents:  access allowed for the whole world Open, access allowed for users registered on the platform Private access, document accessible only to course members (see the Users list), Completely closed; the document is only accessible to the course admin and teaching assistants.  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        //return $_SESSION ['is_allowed_in_course'] || api_is_platform_admin();  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        return $is_visible;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        */  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -2496,20 +2541,16 @@ return 'application/octet-stream'; 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    		}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	//condition for the session  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        $current_session_id = 0;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	if (!empty($session_id)) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    		$current_session_id  = intval($session_id);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	//condition for the session          
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	$session_id  = intval($session_id);    	  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	if (!$user_in_course)  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        	if (empty($current_ session_id)) {    		  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        	if (empty($session_id)) {    		  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        		if (CourseManager::is_user_subscribed_in_course($user_id, $course_info['code'])) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        			$user_in_course = true;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        		}    		  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        	} else {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        		require_once api_get_path(LIBRARY_PATH).'sessionmanager.lib.php';  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        		$user_status = SessionManager::get_user_status_in_session($user_id, $course_info['code'], $current_session_id);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        	} else {        		  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        		$user_status = SessionManager::get_user_status_in_session($user_id, $course_info['code'], $session_id);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        		if (in_array($user_status, array('0', '6'))) { //user and coach   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        			$user_in_course = true;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        		}    		 		  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -2525,8 +2566,8 @@ return 'application/octet-stream'; 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	$added_slash = ($path == '/') ? '' : '/';  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	//$condition_session = " AND (id_session = '$current_ session_id' OR (id_session = '0' AND insert_date < = (SELECT creation_date FROM $tbl_course WHERE code = '".$course_info['code']."' )))";  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	$condition_session = " AND (id_session = '$current_ session_id' OR  id_session = '0' )";  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	//$condition_session = " AND (id_session = '$session_id' OR (id_session = '0' AND insert_date < = (SELECT creation_date FROM $tbl_course WHERE code = '".$course_info['code']."' )))";  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	$condition_session = " AND (id_session = '$session_id' OR  id_session = '0' )";  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							$sql_doc = "SELECT last.visibility, docs.* ".  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    				" FROM  $tbl_item_prop AS last, $tbl_doc AS docs ".  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -2547,15 +2588,14 @@ return 'application/octet-stream'; 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    	$return .= Display::return_icon('new_doc.gif', '', array(), 22);    	  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    	$return .= Display::url(get_lang('NewDocument'), api_get_self().'?'.api_get_cidreq().'&action=add_item&type='.TOOL_DOCUMENT.'&lp_id='.$_SESSION['oLP']->lp_id);   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    	$return .= '< / div > ';  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	} else {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            $txt_sessid = (empty($session_id)?'0':(string)$session_id);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    		$return .= Display::div(Display::url(Display::return_icon('delete.png', get_lang('Close'), array(), 22), '#', array('id'=>'close_div_'.$course_info['real_id'].'_'.$txt_sessid,'class' =>'close_div')), array('style' => 'position:absolute;right:10px'));  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	} else {              
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    		$return .= Display::div(Display::url(Display::return_icon('delete.png', get_lang('Close'), array(), 22), '#', array('id'=>'close_div_'.$course_info['real_id'].'_'.$session_id,'class' =>'close_div')), array('style' => 'position:absolute;right:10px'));  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	// If you want to debug it, I advise you to do "echo" on the eval statements.  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	if (!empty($resources) & &  $user_in_course) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            foreach ($resources as $resource) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                $item_info = api_get_item_property_info($course_info['real_id'], 'document', $resource['id'], $current_ session_id);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                $item_info = api_get_item_property_info($course_info['real_id'], 'document', $resource['id'], $session_id);  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    		  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    		if (empty($item_info)) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    			continue;