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(); }
} } 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;
'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':