<?




/**
 * Сканирует переданную папку и создает "дерево" всех подпапок
 * @return список папок в виде абсолютных путей
 */
function create_tree_folder($start_dir, $ignor_folder) {
	$folder_list = array();

	$folder_mas0 = list_folders($start_dir);
	foreach($folder_mas0 as $lev0=>$folder0_name) {
		if(in_array($folder0_name, $ignor_folder) !== false) continue;

		if(!$folder_mas1 = list_folders("$start_dir/$folder0_name")) continue;

		//print "$start_dir/$folder0_name<br>";flush();

		foreach($folder_mas1 as $lev1=>$folder1_name) {
			if(in_array($folder1_name, $ignor_folder) !== false) continue;

			if(!$folder_mas2 = list_folders("$start_dir/$folder0_name/$folder1_name")) continue;

			//print "$start_dir/$folder0_name/$folder1_name<br>";flush();

			foreach($folder_mas2 as $lev2=>$folder2_name) {
				if(in_array($folder2_name, $ignor_folder) !== false) continue;

				$folder_list[] = "$start_dir/$folder0_name/$folder1_name/$folder2_name";
			}
			$folder_list[] = "$start_dir/$folder0_name/$folder1_name";
		}
		$folder_list[] = "$start_dir/$folder0_name";
	}

	return $folder_list;
}

#Загружает файл в массив. Если не удалось останавливает работу скрипта.
function load_array($fname) {
	$temp = file($fname);
	if($temp === false) die("<br>Не удалось открыть файл $fname");

	$mas = array();
	foreach($temp as $str)
		if($str = trim($str))
			$mas[] = $str;

	if(sizeof($mas)) return $mas;
	else false;
}

#Загружаем файл в переменную. Если файл пустой, прекращаем работу скрипта
function load_file($fname) {
	$temp = file_get_contents($fname);
	if($temp === false) die("<br>Не удалось открыть файл $fname");
	if($temp = trim($temp)) return $temp;
	else false;
}

#Сохраняем строчку в файл, если файл существует, перезаписываем его
function save_file($fname, $str) {
	$fh = fopen($fname ,'w') or die("<br>Не удалось открыть файл $fname для записи");
	fwrite($fh, $str);
	fclose($fh);
}



#возвращает список файлов находящихся в заданой директории
function list_files($dir_name, $type = '*') {
	$list = array();

	$folder = glob("$dir_name/*.$type", GLOB_BRACE);
	for($i=0; $i<count($folder); $i++)
		$list[] = basename($folder[$i], "$dir_name/");

	if(sizeof($list)) return $list;
	return false;
}

// используется в финальном этапе!
#возвращает список диретокторий находящихся в заданой директории
function list_folders($dir_name) {
	$list = array();

	$folder = glob("$dir_name/*", GLOB_BRACE);
	for($i=0; $i<count($folder); $i++)
		if(is_dir($folder[$i]))
			$list[] = basename($folder[$i], "$dir_name/");

	if(sizeof($list)) return $list;
	return false;
}

#удаляет папку, если она существует
function del_folder($file) {
	if(!file_exists($file)) return false;

	if(is_dir($file)) {
		$handle = opendir($file);
		while($filename = readdir($handle)) {
 			 if ($filename != "." && $filename != "..") {
  			 	del_folder($file."/".$filename);
 			 }
		}
		closedir($handle);
		rmdir($file);
	} else {
		unlink($file);
	}
}

#удаляем содержимое папки
function del_in_folder($file, $sub=false) {
	if(!file_exists($file)) return false;

	if(is_dir($file)) {
		$handle = opendir($file);
		while($filename = readdir($handle)) {
 			 if ($filename != "." && $filename != "..") {
  			 	del_in_folder($file."/".$filename, true);
 			 }
		}
		closedir($handle);
		if($sub) rmdir($file);  //удаляем только внутренние папки
	} else {
		unlink($file);
	}
}


#удаляет все из папки
function clear_folder($folder, $isk='*') {
	$folder = glob("$folder/*.$isk", GLOB_BRACE);
	print "Кол-во файлов: " . sizeof($folder) . "<br>";
	for($z=0; $z<count($folder); $z++)	{
		$site_dir = basename($folder[$z], "$folder/");
		unlink($folder[$z]);
	}
}

#копирует содержимое папки в другую папку, все кроме файлов с расширением .tpl
function copy_folder($otkuda, $kuda) {
	#$otkuda - путь к папке которая копируется
	#$kuda - путь к папке в которую копиуется

	#если папки нет, создаем ее
	if(!file_exists($kuda))
		mkdir($kuda);

	#берем список файлов в исходной папке
	$handle = opendir($otkuda);
	while($filename = readdir($handle)) {
 		if($filename != "." && $filename != ".." && !stristr($filename, '.tpl')) {
 			if(is_dir("$otkuda/$filename"))
 				copy_folder("$otkuda/$filename", "$kuda/$filename");
 			else
 				copy("$otkuda/$filename", "$kuda/$filename");
 		}
 	}
}

?>