Example #1
0
function cpcont($name, &$data)
{
	static $fps = false, $fpd = false; /* File Pointer for Source, ... Destination */
	static $lastfile = false;
	
	global $__perms;
	
	//echo 'Fdadfas';
	
	setwritable(dirname(getcwd().'/'.$name), true);
	
	/* an array( source dir => dest dir ); -- to make copy into the same directory possible */
	if(!isset($data['dirs_replace'])) $data['dirs_replace'] = array();
	
	if(isset($data['lastnewname']))
	{
		$lastnewname = $data['lastnewname'];
	}else
	{
		$lastnewname = false;
	}
	
	if(empty($data['lastfile']) || $data['lastfile'] != $name)
	{
		if(abs_path($data['newdir']) == abs_path(dirname(getcwd().'/'.$name)))
		{
			$lastnewname = abs_path(gen_copy_name($data['newdir'], getcwd().'/'.$name));
			
			$data['dirs_replace'][abs_path(getcwd().'/'.$name)] = abs_path($lastnewname);
		}else
		{
			$lastnewname = abs_path($data['newdir'].'/'.$name);
			
			foreach($data['dirs_replace'] as $k=>$v)
			{
				if(strlen($lastnewname) < strlen($k)) continue;
				
				if(substr($lastnewname,0,strlen($k)) == $k)
				{
					$lastnewname = $v.substr($lastnewname, strlen($k));
					break;
				}
			}
		}
	}
	
	$newname = $data['lastnewname'] = $lastnewname;
	
	if(is_dir($name))
	{
		$lastfile = $data['lastfile'] = $name;
		$_SESSION['DIRS']++;
		return d_mkdir($newname, d_get_rights($name));
	}
	
	if($lastfile != $name)
	{
		if(is_resource($fps)) fclose($fps);
		if(is_resource($fpd)) fclose($fpd);
		
		$lastfile = $data['lastfile'] = $name;
		
		setreadable($name, true);
		
		if(!$fps = fopen($name, 'rb')) return false;
		
		//error_log('name: '.$name.', newname: '.$newname);
		
		setwritable($dn = dirname($newname), true);
		
		//if(!d_chmod($dn, 777)) echo 'F**k!'.reason()."\n";
		
		//echo "rights: ". get_rights($dn,false) ."\n";
		
		if(file_exists($newname))
		{
			setwritable($newname, true);
            $info = get_files_info(array(basename($newname)), $dn);

			if(fseek($fps, sprintf('%u',filesize($newname))) < 0) return false;
		}else
		{
			$_SESSION['FILES']++;
		}
		
		if(!$fpd = fopen($newname, 'ab'))
		{
			$_SESSION['FILES']--; /* this file was counted, so we cancel it's count */
			return false;
		}
		
		$__perms[$newname] = get_rights($name);
	}
	
	$_SESSION['TOTAL_BYTES'] += fwrite($fpd, fread($fps, 65536));
	
	if(feof($fps)) return true;
	
	return array();
}
Example #2
0
			}
		}
		break;
	case 'mkdir':
		@$f = clean($_SESSION['DIR'].'/'.$_REQUEST['file']);
		if(empty($_GET['apply']))
		{
			light_message('<form action="index.php?act=mkdir&apply=true" method="POST">
			Enter the name of directory you want to create: 
			<br><input type="text" name="file" value="NewFolder"> <input type="submit" value="go">
			</form>');
		}else
		{
			$nomain=false;
			
			if(d_mkdir($f)) light_message(show_file($f).' has been created successfully.');
			else light_message('Directory could not be created.'.reason());
		}
		break;
	case 'zip':
		$nomain=false;
		
		if(empty($_REQUEST['files']))
		{
			light_message('Choose at least one file!');
			break;
		}
		
		if(add_to_zip($_REQUEST['files'])) light_message('Files have been zipped successfully.');
		else light_message('Cannot add files to zip.'.reason());
		break;
Example #3
0
	'total'  => show_size(false,true,$_SESSION['TOTAL_BYTES']),
	'end'    => $end,
	'success' => $_SESSION['DCACHE'] !== false,
	);
	break;
case 'rename':
	$f = clean($_REQUEST['old']);
	if(empty($_REQUEST['new'])) $_REQUEST['new'] = basename($f);
	$newname = clean(dirname($f).'/'.$_REQUEST['new']);
	if(!d_rename($f,$newname)) $_RESULT = array( 'success' => false, 'reason' => reason(), 'f' => $f );
	else $_RESULT = array( 'success' => true );
	
	break;
case 'mkdir':
	$f=clean($_SESSION['DIR'].'/'.$_REQUEST['name']);
	if(!d_mkdir($f)) $_RESULT = array('success' => false, 'reason' => reason());
	else $_RESULT = array('success' => true);
	
	break;
case 'mkfile':
	$f=clean($_SESSION['DIR'].'/'.$_REQUEST['name']);
	if(file_exists($f) && $_REQUEST['confirm']==0)
	{
		$_RESULT = array('exists' => true);
	}else if(file_exists($f) && $_REQUEST['confirm'] == 1 || !file_exists($f))
	{
		$_RESULT = array('success' => d_file_put_contents($f,''), 'reason' => reason());
	}else $_RESULT = array('success' => false, 'reason' => 'unknown situation');
	
	break;
case 'download_get_href':