<?php
//    MyDMS. Document Management System
//    Copyright (C) 2002-2005  Markus Westphal
//    Copyright (C) 2006-2008 Malcolm Cowe
//    Copyright (C) 2010 Matteo Lucarelli
//
//    This program is free software; you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation; either version 2 of the License, or
//    (at your option) any later version.
//
//    This program is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU General Public License for more details.
//
//    You should have received a copy of the GNU General Public License
//    along with this program; if not, write to the Free Software
//    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

function renameFile($old, $new)
{
	return @rename($old, $new);
}

function removeFile($file)
{
	return @unlink($file);
}

function copyFile($source, $target)
{
	return @copy($source, $target);
}

function moveFile($source, $target)
{
	if (!@copyFile($source, $target))
		return false;
	return @removeFile($source);
}

function renameDir($old, $new)
{
	return @rename($old, $new);
}

function makeDir($path)
{
	/*
	if (strncmp($path, DIRECTORY_SEPARATOR, 1) == 0) {
		$mkfolder = DIRECTORY_SEPARATOR;
	}
	else {
		$mkfolder = "";
	}
	$path = preg_split( "/[\\\\\/]/" , $path );
	for(  $i=0 ; isset( $path[$i] ) ; $i++ )
	{
		if(!strlen(trim($path[$i])))continue;
		$mkfolder .= $path[$i];
		
		if( !is_dir( $mkfolder ) ){
			$res=@mkdir( "$mkfolder" ,  0777);
			if (!$res) return false;
		}
		$mkfolder .= DIRECTORY_SEPARATOR;
	}

	return true;*/
	
	// patch from alekseynfor safe_mod or open_basedir 
	
	global $settings;
	$path = substr_replace ($path, "/", 0, strlen($settings->_contentDir));

	$mkfolder = $settings->_contentDir;
    
	$path = preg_split( "/[\\\\\/]/" , $path );
        
	for(  $i=0 ; isset( $path[$i] ) ; $i++ )
	{
		if(!strlen(trim($path[$i])))continue;
		$mkfolder .= $path[$i];
        
		if( !is_dir( $mkfolder ) ){
			$res= @mkdir( "$mkfolder" ,  0777);
			if (!$res) return false;    
		}
		$mkfolder .= DIRECTORY_SEPARATOR;
	}
    
	return true;
	
}

function removeDir($path)
{
	$handle = @opendir($path);
	while ($entry = @readdir($handle) )
	{
		if ($entry == ".." || $entry == ".")
			continue;
		else if (is_dir($path . $entry))
		{
			if (!removeDir($path . $entry . "/"))
				return false;
		}
		else
		{
			if (!@unlink($path . $entry))
				return false;
		}
	}
	@closedir($handle);
	return @rmdir($path);
}

function copyDir($sourcePath, $targetPath)
{
	if (mkdir($targetPath, 0777))
	{
		$handle = @opendir($sourcePath);
		while ($entry = @readdir($handle) )
		{
			if ($entry == ".." || $entry == ".")
				continue;
			else if (is_dir($sourcePath . $entry))
			{
				if (!copyDir($sourcePath . $entry . "/", $targetPath . $entry . "/"))
					return false;
			}
			else
			{
				if (!@copy($sourcePath . $entry, $targetPath . $entry))
					return false;
			}
		}
		@closedir($handle);
	}
	else
		return false;
	
	return true;
}

function moveDir($sourcePath, $targetPath)
{
	if (!copyDir($sourcePath, $targetPath))
		return false;
	return removeDir($sourcePath);
}

// code by Kioob (php.net manual)
function gzcompressfile($source,$level=false)
{
	$dest=$source.'.gz';
	$mode='wb'.$level;
	$error=false;
	if($fp_out=@gzopen($dest,$mode)){
		if($fp_in=@fopen($source,'rb')){
			while(!feof($fp_in))
				@gzwrite($fp_out,fread($fp_in,1024*512));
			@fclose($fp_in);
		}
		else $error=true;
		@gzclose($fp_out);
	}
	else $error=true;
	
	if($error) return false;
	else return $dest;
} 

?>