<?php
/**
* VFM - veno file manager move or copy files
*
* PHP version >= 5.3
*
* @category PHP
* @package VenoFileManager
* @author Nicola Franchini <support@veno.it>
* @copyright 2013 Nicola Franchini
* @license Exclusively sold on CodeCanyon
* @link http://filemanager.veno.it/
*/
if (!isset($_SERVER['HTTP_X_REQUESTED_WITH'])
|| (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest')
) {
exit;
}
require_once dirname(__DIR__).'/class/class.actions.php';
require_once dirname(__DIR__).'/class/class.downloader.php';
require_once dirname(__DIR__).'/class/class.setup.php';
require_once dirname(__DIR__).'/class/class.utils.php';
require_once dirname(__DIR__).'/class/class.gatekeeper.php';
$setUp = new SetUp();
$gateKeeper = new GateKeeper();
$downloader = new Downloader();
$actions = new Actions();
$copy = filter_input(INPUT_POST, 'copy', FILTER_VALIDATE_BOOLEAN);
$setmove = filter_input(INPUT_POST, 'setmove', FILTER_SANITIZE_SPECIAL_CHARS);
$dest = filter_input(INPUT_POST, 'dest', FILTER_SANITIZE_SPECIAL_CHARS);
$hash = filter_input(INPUT_POST, 'h', FILTER_SANITIZE_SPECIAL_CHARS);
$time = filter_input(INPUT_POST, 't', FILTER_SANITIZE_SPECIAL_CHARS);
// $setmove = htmlspecialchars($_POST['setmove']);
// $dest = htmlspecialchars($_POST['dest']);
// $hash = htmlspecialchars($_POST['h']);
// $time = htmlspecialchars($_POST['t']);
$salt = $setUp->getConfig('salt');
$starting_dir = $setUp->getConfig('starting_dir');
if ($hash && $time && $dest
&& $gateKeeper->isUserLoggedIn()
&& ($gateKeeper->isAllowed('move_enable') || $gateKeeper->isAllowed('copy_enable'))
) {
if ($setmove && md5($salt.$time) === $hash) {
$setmove = explode(',', $setmove);
$destcoded = urldecode($dest);
$dest = '../.'.$destcoded;
if (strlen($dest) > strlen('../.'.$starting_dir)) {
$cleandest = str_replace('../.'.$starting_dir, '', $dest);
} else {
$cleandest = $destcoded;
}
$counter = 0;
$total = count($setmove);
foreach ($setmove as $pezzo) {
if ($downloader->checkFile($pezzo, '../') == true) {
$filename = urldecode(base64_decode($pezzo));
$myfile = '../../'.$filename;
$filepathinfo = Utils::mbPathinfo($filename);
$basename = $filepathinfo['basename'];
if ($copy) {
$filesize = filesize($myfile);
if ($actions->checkUserSpace($myfile, $filesize) == false) {
Utils::setError('<i class="bi bi-x-circle"></i> '.$setUp->getString('available_space_exhausted').': <strong>'.$basename.'</strong> ('.$setUp->formatSize($filesize).') ');
echo "ok";
exit;
}
}
if ($actions->renameFile($myfile, $dest.'/'.$basename, $basename, true, $copy)) {
$counter++;
}
}
}
if ($counter > 0) {
if ($total == 1) {
$counter = $basename;
}
if ($copy) {
Utils::setSuccess('<strong>'.$counter.'</strong> '.$setUp->getString('files_copied_to').': <strong>'.$cleandest.'</strong>');
} else {
Utils::setSuccess('<strong>'.$counter.'</strong> '.$setUp->getString('files_moved_to').': <strong>'.$cleandest.'</strong>');
}
}
echo "ok";
exit;
} else {
echo $setUp->getString('not_allowed');
}
} else {
echo "Not enough data";
}
exit;