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(); }
$_RESULT = array( 'res' => $res ? $res['res'] : false, 'count' => $res ? $res['cnt'] : false, 'fileinfo' => get_files_info($first_files), 'DIR' => $_SESSION['DIR'], 'stats' => stats(false), 'info' => get_info($_SESSION['DIR']), 'type' => (!empty($req['type']) && empty($drives) ? $req['type'] : (empty($drives) ? tDIR : tMYCOMP)), 'up' => $res ? $res['up'] : false, 'reason' => reason(), 'error' => !$res, ); break; case 'files-info': $_RESULT = array( 'info' => get_files_info($_REQUEST['files']), ); break; case 'info': $_RESULT = get_info($f,$_REQUEST); break; case 'delete': if(empty($_SESSION['DCACHE']) || $_SESSION['DFILEZ']!=$fz) /* Delete Cache */ { $_SESSION['TOTAL_BYTES'] = $_SESSION['DIRS'] = $_SESSION['FILES'] = 0; $_SESSION['DCACHE'] = multipart_begin(array( 'basedir' => dirname($fz[0]), 'files' => array_map('basename', $_SESSION['DFILEZ'] = $fz), 'processors' => array('remove'), 'dircall' => 'after',