<?php
/*
 * This file is part of the Easy-CMS project.
 * Easy-CMS 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.
 *
 * Easy-CMS 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 Easy-CMS; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

// define the path context
chdir('..');
define('EASY_GUI_APP_DIR', '../');


include_once('config.inc.php');
include_once('classes/core/Site.class.php');

include_once('classes/system/Dir.class.php');
include_once('classes/system/File.class.php');


include_once('interface/egScript.class.php');
include_once('interface/egManager.class.php');
include_once('interface/egContainer.class.php');
include_once('interface/egMenuItem.class.php');
include_once('interface/egFrame.class.php');
include_once('interface/egToolTip.class.php');
include_once('interface/egRichText.class.php');
include_once('interface/egLink.class.php');
include_once('interface/egStatic.class.php');
include_once('interface/egEdit.class.php');
include_once('interface/egCheckBox.class.php');
include_once('interface/egRadioButton.class.php');
include_once('interface/egPressButton.class.php');
include_once('interface/egDropDownListBox.class.php');
include_once('interface/egPropertyList.class.php');
include_once('interface/egPropertySheet.class.php');
include_once('interface/egPropertyPage.class.php');
include_once('interface/egTreeNode.class.php');
include_once('interface/egTreeList.class.php');
include_once('interface/egSubWindow.class.php');


$site = &Site::getInstance(); // constructor checks the $_GET, $_POST and $_SESSION arrays

//security check : user must be identified to upload some file
$user = $site->getCurrentUser();
if(!$user || $user->getUserId() == USER_ID_ANONYMOUS) {
	die("access denied");
	exit();
}

function &decodeURLPath($urlPath){
	return str_replace(',', '/', urldecode($urlPath));
}

$mode 					= $site->getSubmittedVar('mode', ASK_MOVE_FILE);
$path 	 				= $site->getSubmittedVar('path');
$newDir 				= $site->getSubmittedVar('new_dir');
$repositoryType = $site->getSubmittedVar('repository_type', DOCUMENTS_FOLDER);

if(isset($newDir)) {
	$newDir = decodeURLPath($newDir);
}

if(!isset($newDir) || !is_dir($newDir) || strcmp(substr($newDir, 0, strlen(REPOSITORY_FOLDER)), REPOSITORY_FOLDER)) {
	// invalid destination directory 
	$mode  = ASK_MOVE_FILE;
}

if(!is_file($path)) {
	$mode = MOVE_FILE;
}

switch ($mode) {
	case ASK_MOVE_FILE :
		$manager = &egManager::getInstance(LANG_FILE_MOVE_TITLE);
		$main = &new egContainer("main_ctn", 0, 0, 0, 0);
		$manager->addContainer($main);

		$stringTxtValue = "";
		$stringTxtBold = false;

		if(isset($newDir)) {
			$stringTxtValue = LANG_FILE_MOVE_INVALID;
			$stringTxtBold = true;
			$newDir = '';
		}
		else {
			$stringTxtValue = LANG_FILE_MOVE_CHOOSE_DIR;
		}

		$txtValue = &new egStatic("txt_value_1", $stringTxtValue, 10, 15, 350, 0, $stringTxtBold);
		$nameValue = &new egStatic("name_value_1", LANG_FILE_MOVE_NEW_DIR_STATIC.LANG_COLON, 10, 60, 130, 0, true);

		$newDirItem = &new egEdit("new_dir_item", $newDir, 135, 60, 130, 18, "new_dir");

		$chooseButton = &new egPressbutton("btn_choose", LANG_BROWSE_BUTTON, 275, 58, 80, null, "launchDirSelectionWindow();");

		$okButton = &new egPressbutton("btn_ok", LANG_OK_BUTTON, 190, 100, 80, null, "clickOKButton();");
		$cancelButton = &new egPressbutton("btn_cancel", LANG_CANCEL_BUTTON, 275, 100, 80, null, "clickCancelButton();");

		$hiddenValuesContainer = &new egContainer("ctn_hidden_values", 0, 0, 1, 1);

		$objMode = &new egEdit("hidden_control_mode", MOVE_FILE, 0, 0, 0, 0, "mode");
		$objPath = &new egEdit("hidden_control_path", $path, 0, 0, 0, 0, "path");

		$hiddenValuesContainer->addObject($objMode);
		$hiddenValuesContainer->addObject($objPath);

		$manager->addContainer($hiddenValuesContainer);

		$main->addObject($chooseButton);
		$main->addObject($okButton);
		$main->addObject($cancelButton);

		$main->addObject($txtValue);
		$main->addObject($nameValue);
		$main->addObject($newDirItem);

		$scripts = &new egScript();
		$line = "function clickOKButton() {
document.forms[0].submit();
}
function clickCancelButton() {
window.close();
}
function openWindow(url, width, height, options) {
  var top  = (screen.height-height)/2;
  var left = (screen.width-width)/2;
  window.open(url,'','top='+top+',left='+left+',width='+width+',height='+height+','+options);
}
function launchDirSelectionWindow(vars) {
  openWindow('select_directory.php?'+'parent_control_name=new_dir_item_value&repository_type=".$repositoryType."&'+vars,425, 450, 'scrollbars=no,menubar=no,resizable=no,toolbar=no,location=no,status=no');
}
";
		$scripts->addLine($line);
		$manager->addScripts($scripts);

		echo $manager->getHTML();

		break;
	case MOVE_FILE :
		if(is_file($path)) {
			$node = &new File("", $path);
			$newName = $newDir."/".$node->getName();
			$newNode = &new File('', $newName, true, file_get_contents($path));

			// new file successully  created
			if(is_file($newName) && filesize($path) == filesize($newName)) {
				$node->remove();
			}
		}

		$manager = &egManager::getInstance();
		$main = &new egContainer("main_ctn", 0, 0, 0, 0);
		$manager->addContainer($main);

		$scripts = new egScript();
		$line = "window.opener.location.reload();window.close();";
		$scripts->addLine($line);

		$manager->addScripts($scripts);
		echo $manager->getHTML();

		break;
}
?>