Browse Source

added check path exists inside document table when you create one

Cristian Fasanando 15 years ago
parent
commit
491dfe5050
2 changed files with 23 additions and 21 deletions
  1. 1 7
      main/coursecopy/classes/CourseRestorer.class.php
  2. 22 14
      main/inc/lib/fileUpload.lib.php

+ 1 - 7
main/coursecopy/classes/CourseRestorer.class.php

@@ -219,17 +219,11 @@ class CourseRestorer
 			    $dirs = explode('/', dirname($document->path));
 
 				//if (count($dirs)==1) {
-
 		    	if ($document->file_type==FOLDER) {
 		    		$visibility = $document->item_properties[0]['visibility'];
 		    		$new = substr($document->path, 8);
 		    		if (!is_dir($path.'document/'.$new)) {
-			    		$sql = "SELECT id FROM ".$table." WHERE path='/".Database::escape_string($new)."'";
-						$res = Database::query($sql);
-						$num_result = Database::num_rows($res);
-						if ($num_result==0) {
-							$created_dir = create_unexisting_directory($destination_course,api_get_user_id(),0, 0 ,$path.'document',$new,basename($new),$visibility);
-						}
+						$created_dir = create_unexisting_directory($destination_course,api_get_user_id(),0, 0 ,$path.'document',$new,basename($new),$visibility);
 		    		}
 		    	}
 

+ 22 - 14
main/inc/lib/fileUpload.lib.php

@@ -1393,20 +1393,28 @@ function create_unexisting_directory($_course,$user_id,$to_group_id,$to_user_id,
 	}
 
 	if (mkdir($base_work_dir.$desired_dir_name.$nb, api_get_permissions_for_new_directories(), true))
-	{
-		$document_id = add_document($_course, $desired_dir_name.$nb,'folder',0,$title);
-		if ($document_id)
-		{
-			//update document item_property
-			$current_session_id = api_get_session_id();
-			if ($visibility !== '') {
-				$visibilities = array(0 => 'invisible', 1 => 'visible', 2 => 'delete');
-				api_item_property_update($_course,TOOL_DOCUMENT,$document_id,$visibilities[$visibility],$user_id,$to_group_id,$to_user_id,null,null,$current_session_id);
-			} else {
-				api_item_property_update($_course,TOOL_DOCUMENT,$document_id,'FolderCreated',$user_id,$to_group_id,$to_user_id,null,null,$current_session_id);
-			}
-			return $desired_dir_name.$nb;
-		}
+	{					
+		// check if pathname already exists inside document table
+		$tbl_document = Database::get_course_table(TABLE_DOCUMENT, $_course['dbName']);
+		$sql = "SELECT path FROM $tbl_document WHERE path='".$desired_dir_name.$nb."'";
+		$rs  = Database::query($sql); 
+		if (Database::num_rows($rs) == 0) {
+			$document_id = add_document($_course, $desired_dir_name.$nb,'folder',0,$title);		
+			if ($document_id)
+			{
+				//update document item_property
+				$current_session_id = api_get_session_id();
+				if ($visibility !== '') {
+					$visibilities = array(0 => 'invisible', 1 => 'visible', 2 => 'delete');
+					api_item_property_update($_course,TOOL_DOCUMENT,$document_id,$visibilities[$visibility],$user_id,$to_group_id,$to_user_id,null,null,$current_session_id);
+				} else {
+					api_item_property_update($_course,TOOL_DOCUMENT,$document_id,'FolderCreated',$user_id,$to_group_id,$to_user_id,null,null,$current_session_id);
+				}
+				return $desired_dir_name.$nb;
+			}	
+		} else {
+			return false;
+		}		
 	}
 	else
 	{