|  | @@ -104,26 +104,36 @@ class FileUpload
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	public function setUploadDir($dir, $create_if_missing=false)
 | 
	
		
			
				|  |  | +	public function setUploadDir($dir, $create_if_missing=false, $check_writable=true)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  | -		if (is_dir($dir) && is_writable($dir)) {
 | 
	
		
			
				|  |  | -			// dossier existe et writable
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		} else if (is_dir($dir)) {
 | 
	
		
			
				|  |  | -			// dossier existe mais pas writeable
 | 
	
		
			
				|  |  | -			return false;
 | 
	
		
			
				|  |  | +		if (is_dir($dir)) {
 | 
	
		
			
				|  |  | +			// dossier existe
 | 
	
		
			
				|  |  | +			if ($check_writable) {
 | 
	
		
			
				|  |  | +				// check if writable
 | 
	
		
			
				|  |  | +				if (! is_writable($dir)) {
 | 
	
		
			
				|  |  | +					// not writable
 | 
	
		
			
				|  |  | +					return false;
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		} else if (! $create_if_missing) {
 | 
	
		
			
				|  |  | +		} else {
 | 
	
		
			
				|  |  |  			// dossier n'existe pas
 | 
	
		
			
				|  |  | -			return false;
 | 
	
		
			
				|  |  | +			if (! $create_if_missing) {
 | 
	
		
			
				|  |  | +				// dossier n'existe pas
 | 
	
		
			
				|  |  | +				return false;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		} else {
 | 
	
		
			
				|  |  | -			// dossier n'existe pas et on va le creer
 | 
	
		
			
				|  |  | -			if (@mkdir($dir)) {
 | 
	
		
			
				|  |  | -				// ok
 | 
	
		
			
				|  |  | +			} else if (is_writable(dirname($dir))) {
 | 
	
		
			
				|  |  | +				// check if parent is writable
 | 
	
		
			
				|  |  | +				// dossier n'existe pas et on va le creer
 | 
	
		
			
				|  |  | +				if (@mkdir($dir)) {
 | 
	
		
			
				|  |  | +					// ok
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +				} else {
 | 
	
		
			
				|  |  | +					// impossible de créer le dossier
 | 
	
		
			
				|  |  | +					return false;
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			} else {
 | 
	
		
			
				|  |  | -				// impossible de créer le dossier
 | 
	
		
			
				|  |  |  				return false;
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 |