<?php
// Подключаем основные классы
require_once('../../../main_classes.php');

$admin = new Admin();

// Проверка авторизации пользователя
$admin->admin_session_valid(array(0 =>'Documents', 1 => 'InformationSystems'));

$kernel = & singleton('kernel');

// Инсталяция всех модулей ядря
$kernel->LoadModules(!isset($_REQUEST['JsHttpRequest']));

// Инициализация CURRENT_SITE и констант
$admin->admin_init();

/* Ассоциированные иконки */
$icon_array = $kernel->icon_array;

if (is_file(CMS_FOLDER . 'admin/wysiwyg/fm/lng/'.CURRENT_LNG.DIRECTORY_SEPARATOR.CURRENT_LNG.'.php'))
{
	include(CMS_FOLDER . 'admin/wysiwyg/fm/lng/'.CURRENT_LNG.DIRECTORY_SEPARATOR.CURRENT_LNG.'.php');
}
else
{
	if (is_file(CMS_FOLDER . 'admin/wysiwyg/fm/lng/'.DEFAULT_LNG.DIRECTORY_SEPARATOR.DEFAULT_LNG.'.php'))
	{
		include(CMS_FOLDER . 'admin/wysiwyg/fm/lng/'.DEFAULT_LNG.DIRECTORY_SEPARATOR.DEFAULT_LNG.'.php');
	}
}

if (!isset($GLOBALS['MSG_wysiwyg_fm']))
{
	show_error_message('Ошибка! Не найден языковой файл!');
	exit();
}
/**
 * Функция обработки (удаление имени файла, "лишних" слэшей и т.д) пути к директории
 * @param $current_dir исходная директория

 * @return корректный путь к исходной директории
 *
 */
function cdir_correction($current_dir)
{
	// Получаем данные о директории, выше которой пользователь
	// Центра администрирования не имеет доступ
	$UserAccess = new user_access();

	$Files = new File();

	$user_row = $UserAccess->GetUserByName($_SESSION['valid_user']);

	if ($user_row)
	{
		$users_type_row = $UserAccess->GetUserType($user_row['users_type_id']);

		// Текущая папка, в которой находимся
		$users_type_root_dir = $Files->PathCorrection($users_type_row['users_type_root_dir']);

		if (trim($users_type_root_dir) == '')
		{
			$users_type_root_dir = DIRECTORY_SEPARATOR;
		}

		// Удаляем первый слэш в $users_type_root_dir (путь - только относительный от CMS_FOLDER)
		$users_type_root_dir = (mb_substr($users_type_root_dir, 0, 1) == DIRECTORY_SEPARATOR && mb_strlen($users_type_root_dir) > 1)
		? mb_substr($users_type_root_dir, 1, mb_strlen($users_type_root_dir) - 1)
		: $users_type_root_dir;
	}
	else
	{
		$users_type_root_dir = DIRECTORY_SEPARATOR;
	}

	// Текущая папка, в которой находимся
	if (trim($current_dir) != '')
	{
		$current_dir = $Files->PathCorrection(urldecode($current_dir));

		// Если есть хотя бы один слэш
		if (mb_strrpos($current_dir, DIRECTORY_SEPARATOR) !== false)
		{
			$current_dir = mb_substr($current_dir, 0, mb_strrpos($current_dir, DIRECTORY_SEPARATOR) + 1);
		}
		else
		{
			// Положим равной корневой для группы
			$current_dir = $users_type_root_dir;
		}
	}
	else
	{
		// Положим равной корневой для группы
		$current_dir = $users_type_root_dir;
	}

	// Удаляем первый слэш в CDIR (путь - только относительный от CMS_FOLDER)
	$current_dir = (mb_substr($current_dir, 0, 1) == DIRECTORY_SEPARATOR && mb_strlen($current_dir) > 1)
	? mb_substr($current_dir, 1, mb_strlen($current_dir) - 1)
	: $current_dir;

	return $current_dir;
}

if (!isset($_REQUEST['JsHttpRequest']))
{
$timestamp = 1281795023;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title><?php echo $GLOBALS['MSG_wysiwyg_fm']['fm_title']?></title>
<meta http-equiv="Content-Language" content="ru">
<meta content="text/html; charset=UTF-8" http-equiv=Content-Type>
<link rel="stylesheet" type="text/css" href="/admin/css/style.css">
<?php $lng = isset($_SESSION["current_lng"])
		? quote_smart($_SESSION["current_lng"])
		: 'ru';
?>


<script type="text/javascript" src="/admin/js/jquery/jquery.js"></script>
<script type="text/javascript" src="/admin/js/JsHttpRequest.js"></script>
<?php 
$kernel->AddJs("/admin/js/lng/{$lng}/{$lng}.js");

$aJs = $kernel->GetAllJs();
if (is_array($aJs) && count($aJs) > 0)
{
	foreach ($aJs as $sPath)
	{
		?><script type="text/javascript" src="<?php echo $sPath . '?' . $timestamp?>"></script>
<?php
	}
}
?>

<script language="javascript" type="text/javascript">
var js = "FM.insertFile";
function insertURL(url)
{
	eval("window.opener." + js + "(url);");
	close();
	return;
}
</script>
</head>
<body>
<div style="margin: 20px"><?php 
}

$admin_forms = & singleton('admin_forms');

$DateClass = new DateClass();

$UserAccess = & singleton('user_access');
$Files = & singleton('File');

function load_files($source, $file_name, $dir_file, $rewrite = true)
{
	$source = to_array($source);
	$file_name = to_str($file_name);
	$dir_file = to_str($dir_file);

	// формируем имя файла
	if ($file_name == '')
	{
		$file_name = to_str($source['name']);
	}

	if (is_file($dir_file.$file_name))
	{
		if (!$rewrite)
		{
			return false;
		}
		else
		{
			@unlink($dir_file.$file_name);
		}
	}

	if (is_dir($dir_file) && move_uploaded_file(to_str($source['tmp_name']), $dir_file.$file_name))
	{
		@chmod($dir_file.$file_name, CHMOD_FILE);
		return true;
	}
	else
	{
		return false;
	}
}

function del_file($file_name)
{
	// Если удаляем файл
	if (is_file($file_name))
	{
		return @unlink($file_name);
	}
	else
	{
		return false;
	}
}

// Получаем данные о корневом пути для группы, в которой размещен текущий пользователь
$user_row = $UserAccess->GetUserByName($_SESSION['valid_user']);

if ($user_row)
{
	$users_type_row = $UserAccess->GetUserType($user_row['users_type_id']);

	// Текущая папка, в которой находимся
	$users_type_root_dir = $Files->PathCorrection($users_type_row['users_type_root_dir']);

	if (trim($users_type_root_dir) == '')
	{
		$users_type_root_dir = DIRECTORY_SEPARATOR;
	}

	// Удаляем первый слэш в $users_type_root_dir (путь - только относительный от CMS_FOLDER)
	$users_type_root_dir = (mb_substr($users_type_root_dir, 0, 1) == DIRECTORY_SEPARATOR && mb_strlen($users_type_root_dir) > 1)
	? mb_substr($users_type_root_dir, 1, mb_strlen($users_type_root_dir) - 1)
	: $users_type_root_dir;
}
else
{
	ob_start();
	show_error_message($GLOBALS['MSG_wysiwyg_fm']['fm_user_not_find_message']);
	$error = ob_get_clean();

	$JsHttpRequest = new JsHttpRequest('UTF-8');

	// Отправляем только сообщение о произведенных действиях
	$GLOBALS['_RESULT'] = array(
	'error' => $error,
	'form_html' => '',
	'title' => '');

	echo $JsHttpRequest->LOADER;
	exit();
}

// Текущая папка, в которой находимся
if (isset($_REQUEST['cdir']) && trim($_REQUEST['cdir']) != '')
{
	$current_dir = $Files->PathCorrection(urldecode(to_str($_REQUEST['cdir'])));
}
else
{
	// Положим равной корневой для группы
	$current_dir = $users_type_root_dir;
}

// Удаляем первый слэш в CDIR (путь - только относительный от CMS_FOLDER)
$current_dir = (mb_substr($current_dir, 0, 1) == DIRECTORY_SEPARATOR && mb_strlen($current_dir) > 1)
? mb_substr($current_dir, 1, mb_strlen($current_dir) - 1)
: $current_dir;

// Строка пути НЕ начинается относительно корневого пути
// или корневой путь DIRECTORY_SEPARATOR - пропускаем
if (mb_strpos($current_dir, $users_type_root_dir) !== 0 && $users_type_root_dir != DIRECTORY_SEPARATOR)
{
	$current_dir = $users_type_root_dir;
	
	if (!isset($_REQUEST['JsHttpRequest']))
	{
		//show_error_message($GLOBALS['MSG_wysiwyg_fm']['fm_user_access_denide_dir']);
	}
	else
	{
		ob_start();
		show_error_message($GLOBALS['MSG_wysiwyg_fm']['fm_user_access_denide_dir']);
		$error = ob_get_clean();

		$JsHttpRequest = new JsHttpRequest('UTF-8');

		// Отправляем только сообщение о произведенных действиях
		$GLOBALS['_RESULT'] = array(
	'error' => $error,
	'form_html' => '',
	'title' => '');

		echo $JsHttpRequest->LOADER;
		exit();
	}
}

if ($current_dir == DIRECTORY_SEPARATOR)
{
	$path = CMS_FOLDER;
}
else
{
	$path = CMS_FOLDER . $current_dir;
}

// Загружаем файл на сервер
if (isset($_REQUEST['load_file']))
{
	ob_start();

	if (defined('READ_ONLY') && READ_ONLY)
	{
		$kernel->ReadMode();
	}
	else
	{
		if (load_files(to_array($_FILES['file']), @iconv("UTF-8", "Windows-1251//IGNORE//TRANSLIT", to_str($_FILES['file']['name'])), $path, false))
		{
			show_message($GLOBALS['MSG_wysiwyg_fm']['fm_file_message']);
		}
		else
		{
			show_error_message($GLOBALS['MSG_wysiwyg_fm']['fm_file_error']);
		}

		// Допишем cdir
		$admin_forms->AAdditionalParams = "&cdir=" . rawurlencode(cdir_correction(to_str($_REQUEST['cdir'])));
	}

	$message = ob_get_clean();

	$JsHttpRequest = new JsHttpRequest('UTF-8');

	// Отображаем форму
	include(CMS_FOLDER . 'admin/wysiwyg/fm/action/load_file_manager.php');

	$GLOBALS['_RESULT'] = $admin_forms->ShowForm(130, 'load_data');

	// Добавляем определенное выше сообщение
	$GLOBALS['_RESULT']['error'] = $message;

	echo $JsHttpRequest->LOADER;
	exit();
}

// Создание директории
if (isset($_REQUEST['create_dir']))
{
	ob_start();

	if (defined('READ_ONLY') && READ_ONLY)
	{
		$kernel->ReadMode();
	}
	else
	{
		include(CMS_FOLDER . 'admin/wysiwyg/fm/action/create_dir.php');
	}

	// Допишем cdir
	$admin_forms->AAdditionalParams = "&cdir=" . rawurlencode(cdir_correction(to_str($_REQUEST['cdir'])));

	$message = ob_get_clean();

	$JsHttpRequest = new JsHttpRequest('UTF-8');

	// Отображаем форму
	include(CMS_FOLDER . 'admin/wysiwyg/fm/action/load_file_manager.php');

	$GLOBALS['_RESULT'] = $admin_forms->ShowForm(130, 'load_data');
	// Добавляем определенное выше сообщение
	$GLOBALS['_RESULT']['error'] = $message;

	echo $JsHttpRequest->LOADER;
	exit();
}

// Изменение содержимого файла
if (isset($_REQUEST['add_file']) || isset($_REQUEST['save_file']))
{
	ob_start();

	if (defined('READ_ONLY') && READ_ONLY)
	{
		$kernel->ReadMode();
	}
	else
	{
		include(CMS_FOLDER . 'admin/wysiwyg/fm/action/edit_file.php');
	}

	$message = ob_get_clean();

	$JsHttpRequest = new JsHttpRequest('UTF-8');

	// При добавлении (не сохранении) - отправляем команду на загрузку
	if (isset($_REQUEST['add_file']))
	{
		// Отображаем форму
		include(CMS_FOLDER . 'admin/wysiwyg/fm/action/load_file_manager.php');
		$GLOBALS['_RESULT'] = $admin_forms->ShowForm(130, 'load_data');
		// Добавляем определенное выше сообщение
		$GLOBALS['_RESULT']['error'] = $message;
	}
	else
	{
		// Отправляем только сообщение о произведенных действиях
		$GLOBALS['_RESULT'] = array(
		'error' => $message,
		'form_html' => '',
		'title' => '');
	}

	echo $JsHttpRequest->LOADER;
	exit();
}

// Отображение форм
switch (to_int($_REQUEST['admin_forms_id']))
{
	case 41:
	default:
		{
			include(CMS_FOLDER . 'admin/wysiwyg/fm/action/load_file_manager.php');
			$admin_forms->ProcessAjax(130);
			break;
		}
}

if (!isset($_REQUEST['JsHttpRequest']))
{
	?></div>
</body>
</html>
<?php
}
?>