Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/wp-conte.../plugins/wp-file-.../lib/php
File: elFinder.class.php
{
[2000] Fix | Delete
$target = $args['target'];
[2001] Fix | Delete
$download = !empty($args['download']);
[2002] Fix | Delete
$onetime = !empty($args['onetime']);
[2003] Fix | Delete
//$h304 = 'HTTP/1.1 304 Not Modified';
[2004] Fix | Delete
$h403 = 'HTTP/1.0 403 Access Denied';
[2005] Fix | Delete
$a403 = array('error' => 'Access Denied', 'header' => $h403, 'raw' => true);
[2006] Fix | Delete
$h404 = 'HTTP/1.0 404 Not Found';
[2007] Fix | Delete
$a404 = array('error' => 'File not found', 'header' => $h404, 'raw' => true);
[2008] Fix | Delete
[2009] Fix | Delete
if ($onetime) {
[2010] Fix | Delete
$volume = null;
[2011] Fix | Delete
$tmpdir = elFinder::$commonTempPath;
[2012] Fix | Delete
if (!$tmpdir || !is_file($tmpf = $tmpdir . DIRECTORY_SEPARATOR . 'ELF' . $target)) {
[2013] Fix | Delete
return $a404;
[2014] Fix | Delete
}
[2015] Fix | Delete
$GLOBALS['elFinderTempFiles'][$tmpf] = true;
[2016] Fix | Delete
if ($file = json_decode(file_get_contents($tmpf), true)) {
[2017] Fix | Delete
$src = base64_decode($file['file']);
[2018] Fix | Delete
if (!is_file($src) || !($fp = fopen($src, 'rb'))) {
[2019] Fix | Delete
return $a404;
[2020] Fix | Delete
}
[2021] Fix | Delete
if (strpos($src, $tmpdir) === 0) {
[2022] Fix | Delete
$GLOBALS['elFinderTempFiles'][$src] = true;
[2023] Fix | Delete
}
[2024] Fix | Delete
unset($file['file']);
[2025] Fix | Delete
$file['read'] = true;
[2026] Fix | Delete
$file['size'] = filesize($src);
[2027] Fix | Delete
} else {
[2028] Fix | Delete
return $a404;
[2029] Fix | Delete
}
[2030] Fix | Delete
} else {
[2031] Fix | Delete
if (($volume = $this->volume($target)) == false) {
[2032] Fix | Delete
return $a404;
[2033] Fix | Delete
}
[2034] Fix | Delete
[2035] Fix | Delete
if ($volume->commandDisabled('file')) {
[2036] Fix | Delete
return $a403;
[2037] Fix | Delete
}
[2038] Fix | Delete
[2039] Fix | Delete
if (($file = $volume->file($target)) == false) {
[2040] Fix | Delete
return $a404;
[2041] Fix | Delete
}
[2042] Fix | Delete
[2043] Fix | Delete
if (!$file['read']) {
[2044] Fix | Delete
return $a404;
[2045] Fix | Delete
}
[2046] Fix | Delete
[2047] Fix | Delete
$opts = array();
[2048] Fix | Delete
if (!empty($_SERVER['HTTP_RANGE'])) {
[2049] Fix | Delete
$opts['httpheaders'] = array('Range: ' . $_SERVER['HTTP_RANGE']);
[2050] Fix | Delete
}
[2051] Fix | Delete
if (($fp = $volume->open($target, $opts)) == false) {
[2052] Fix | Delete
return $a404;
[2053] Fix | Delete
}
[2054] Fix | Delete
}
[2055] Fix | Delete
[2056] Fix | Delete
// check aborted by user
[2057] Fix | Delete
elFinder::checkAborted();
[2058] Fix | Delete
[2059] Fix | Delete
// allow change MIME type by 'file.pre' callback functions
[2060] Fix | Delete
$mime = isset($args['mime']) ? $args['mime'] : $file['mime'];
[2061] Fix | Delete
if ($download || $onetime) {
[2062] Fix | Delete
$disp = 'attachment';
[2063] Fix | Delete
} else {
[2064] Fix | Delete
$dispInlineRegex = $volume->getOption('dispInlineRegex');
[2065] Fix | Delete
$inlineRegex = false;
[2066] Fix | Delete
if ($dispInlineRegex) {
[2067] Fix | Delete
$inlineRegex = '#' . str_replace('#', '\\#', $dispInlineRegex) . '#';
[2068] Fix | Delete
try {
[2069] Fix | Delete
preg_match($inlineRegex, '');
[2070] Fix | Delete
} catch (Exception $e) {
[2071] Fix | Delete
$inlineRegex = false;
[2072] Fix | Delete
}
[2073] Fix | Delete
}
[2074] Fix | Delete
if (!$inlineRegex) {
[2075] Fix | Delete
$inlineRegex = '#^(?:(?:image|text)|application/x-shockwave-flash$)#';
[2076] Fix | Delete
}
[2077] Fix | Delete
$disp = preg_match($inlineRegex, $mime) ? 'inline' : 'attachment';
[2078] Fix | Delete
}
[2079] Fix | Delete
[2080] Fix | Delete
$filenameEncoded = rawurlencode($file['name']);
[2081] Fix | Delete
if (strpos($filenameEncoded, '%') === false) { // ASCII only
[2082] Fix | Delete
$filename = 'filename="' . $file['name'] . '"';
[2083] Fix | Delete
} else {
[2084] Fix | Delete
$ua = isset($_SERVER['HTTP_USER_AGENT'])? $_SERVER['HTTP_USER_AGENT'] : '';
[2085] Fix | Delete
if (preg_match('/MSIE [4-8]/', $ua)) { // IE < 9 do not support RFC 6266 (RFC 2231/RFC 5987)
[2086] Fix | Delete
$filename = 'filename="' . $filenameEncoded . '"';
[2087] Fix | Delete
} elseif (strpos($ua, 'Chrome') === false && strpos($ua, 'Safari') !== false && preg_match('#Version/[3-5]#', $ua)) { // Safari < 6
[2088] Fix | Delete
$filename = 'filename="' . str_replace('"', '', $file['name']) . '"';
[2089] Fix | Delete
} else { // RFC 6266 (RFC 2231/RFC 5987)
[2090] Fix | Delete
$filename = 'filename*=UTF-8\'\'' . $filenameEncoded;
[2091] Fix | Delete
}
[2092] Fix | Delete
}
[2093] Fix | Delete
[2094] Fix | Delete
if ($args['cpath'] && $args['reqid']) {
[2095] Fix | Delete
setcookie('elfdl' . $args['reqid'], '1', 0, $args['cpath']);
[2096] Fix | Delete
}
[2097] Fix | Delete
[2098] Fix | Delete
$result = array(
[2099] Fix | Delete
'volume' => $volume,
[2100] Fix | Delete
'pointer' => $fp,
[2101] Fix | Delete
'info' => $file,
[2102] Fix | Delete
'header' => array(
[2103] Fix | Delete
'Content-Type: ' . $mime,
[2104] Fix | Delete
'Content-Disposition: ' . $disp . '; ' . $filename,
[2105] Fix | Delete
'Content-Transfer-Encoding: binary',
[2106] Fix | Delete
'Content-Length: ' . $file['size'],
[2107] Fix | Delete
'Last-Modified: ' . gmdate('D, d M Y H:i:s T', $file['ts']),
[2108] Fix | Delete
'Connection: close'
[2109] Fix | Delete
)
[2110] Fix | Delete
);
[2111] Fix | Delete
[2112] Fix | Delete
if (!$onetime) {
[2113] Fix | Delete
// add cache control headers
[2114] Fix | Delete
if ($cacheHeaders = $volume->getOption('cacheHeaders')) {
[2115] Fix | Delete
$result['header'] = array_merge($result['header'], $cacheHeaders);
[2116] Fix | Delete
}
[2117] Fix | Delete
[2118] Fix | Delete
// check 'xsendfile'
[2119] Fix | Delete
$xsendfile = $volume->getOption('xsendfile');
[2120] Fix | Delete
$path = null;
[2121] Fix | Delete
if ($xsendfile) {
[2122] Fix | Delete
$info = stream_get_meta_data($fp);
[2123] Fix | Delete
if ($path = empty($info['uri']) ? null : $info['uri']) {
[2124] Fix | Delete
$basePath = rtrim($volume->getOption('xsendfilePath'), DIRECTORY_SEPARATOR);
[2125] Fix | Delete
if ($basePath) {
[2126] Fix | Delete
$root = rtrim($volume->getRootPath(), DIRECTORY_SEPARATOR);
[2127] Fix | Delete
if (strpos($path, $root) === 0) {
[2128] Fix | Delete
$path = $basePath . substr($path, strlen($root));
[2129] Fix | Delete
} else {
[2130] Fix | Delete
$path = null;
[2131] Fix | Delete
}
[2132] Fix | Delete
}
[2133] Fix | Delete
}
[2134] Fix | Delete
}
[2135] Fix | Delete
if ($path) {
[2136] Fix | Delete
$result['header'][] = $xsendfile . ': ' . $path;
[2137] Fix | Delete
$result['info']['xsendfile'] = $xsendfile;
[2138] Fix | Delete
}
[2139] Fix | Delete
}
[2140] Fix | Delete
[2141] Fix | Delete
// add "Content-Location" if file has url data
[2142] Fix | Delete
if (isset($file['url']) && $file['url'] && $file['url'] != 1) {
[2143] Fix | Delete
$result['header'][] = 'Content-Location: ' . $file['url'];
[2144] Fix | Delete
}
[2145] Fix | Delete
return $result;
[2146] Fix | Delete
}
[2147] Fix | Delete
[2148] Fix | Delete
/**
[2149] Fix | Delete
* Count total files size
[2150] Fix | Delete
*
[2151] Fix | Delete
* @param array command arguments
[2152] Fix | Delete
*
[2153] Fix | Delete
* @return array
[2154] Fix | Delete
* @throws elFinderAbortException
[2155] Fix | Delete
* @author Dmitry (dio) Levashov
[2156] Fix | Delete
*/
[2157] Fix | Delete
protected function size($args)
[2158] Fix | Delete
{
[2159] Fix | Delete
$size = 0;
[2160] Fix | Delete
$files = 0;
[2161] Fix | Delete
$dirs = 0;
[2162] Fix | Delete
$itemCount = true;
[2163] Fix | Delete
$sizes = array();
[2164] Fix | Delete
[2165] Fix | Delete
foreach ($args['targets'] as $target) {
[2166] Fix | Delete
elFinder::checkAborted();
[2167] Fix | Delete
if (($volume = $this->volume($target)) == false
[2168] Fix | Delete
|| ($file = $volume->file($target)) == false
[2169] Fix | Delete
|| !$file['read']) {
[2170] Fix | Delete
return array('error' => $this->error(self::ERROR_OPEN, '#' . $target));
[2171] Fix | Delete
}
[2172] Fix | Delete
[2173] Fix | Delete
$volRes = $volume->size($target);
[2174] Fix | Delete
if (is_array($volRes)) {
[2175] Fix | Delete
$sizeInfo = array('size' => 0, 'fileCnt' => 0, 'dirCnt' => 0);
[2176] Fix | Delete
if (!empty($volRes['size'])) {
[2177] Fix | Delete
$sizeInfo['size'] = $volRes['size'];
[2178] Fix | Delete
$size += $volRes['size'];
[2179] Fix | Delete
}
[2180] Fix | Delete
if (!empty($volRes['files'])) {
[2181] Fix | Delete
$sizeInfo['fileCnt'] = $volRes['files'];
[2182] Fix | Delete
}
[2183] Fix | Delete
if (!empty($volRes['dirs'])) {
[2184] Fix | Delete
$sizeInfo['dirCnt'] = $volRes['dirs'];
[2185] Fix | Delete
}
[2186] Fix | Delete
if ($itemCount) {
[2187] Fix | Delete
$files += $sizeInfo['fileCnt'];
[2188] Fix | Delete
$dirs += $sizeInfo['dirCnt'];
[2189] Fix | Delete
}
[2190] Fix | Delete
$sizes[$target] = $sizeInfo;
[2191] Fix | Delete
} else if (is_numeric($volRes)) {
[2192] Fix | Delete
$size += $volRes;
[2193] Fix | Delete
$files = $dirs = 'unknown';
[2194] Fix | Delete
$itemCount = false;
[2195] Fix | Delete
}
[2196] Fix | Delete
}
[2197] Fix | Delete
return array('size' => $size, 'fileCnt' => $files, 'dirCnt' => $dirs, 'sizes' => $sizes);
[2198] Fix | Delete
}
[2199] Fix | Delete
[2200] Fix | Delete
/**
[2201] Fix | Delete
* Create directory
[2202] Fix | Delete
*
[2203] Fix | Delete
* @param array command arguments
[2204] Fix | Delete
*
[2205] Fix | Delete
* @return array
[2206] Fix | Delete
* @author Dmitry (dio) Levashov
[2207] Fix | Delete
**/
[2208] Fix | Delete
protected function mkdir($args)
[2209] Fix | Delete
{
[2210] Fix | Delete
$target = $args['target'];
[2211] Fix | Delete
$name = $args['name'];
[2212] Fix | Delete
$dirs = $args['dirs'];
[2213] Fix | Delete
if ($name === '' && !$dirs) {
[2214] Fix | Delete
return array('error' => $this->error(self::ERROR_INV_PARAMS, 'mkdir'));
[2215] Fix | Delete
}
[2216] Fix | Delete
[2217] Fix | Delete
if (strpos($name,'..') !== false) {
[2218] Fix | Delete
return array('error' => $this->error('Invalid request', 'mkdir'));
[2219] Fix | Delete
}
[2220] Fix | Delete
[2221] Fix | Delete
if (($volume = $this->volume($target)) == false) {
[2222] Fix | Delete
return array('error' => $this->error(self::ERROR_MKDIR, $name, self::ERROR_TRGDIR_NOT_FOUND, '#' . $target));
[2223] Fix | Delete
}
[2224] Fix | Delete
if ($dirs) {
[2225] Fix | Delete
$maxDirs = $volume->getOption('uploadMaxMkdirs');
[2226] Fix | Delete
if ($maxDirs && $maxDirs < count($dirs)) {
[2227] Fix | Delete
return array('error' => $this->error(self::ERROR_MAX_MKDIRS, $maxDirs));
[2228] Fix | Delete
}
[2229] Fix | Delete
sort($dirs);
[2230] Fix | Delete
$reset = null;
[2231] Fix | Delete
$mkdirs = array();
[2232] Fix | Delete
foreach ($dirs as $dir) {
[2233] Fix | Delete
if(strpos($dir,'..') !== false){
[2234] Fix | Delete
return array('error' => $this->error('Invalid request', 'mkdir'));
[2235] Fix | Delete
}
[2236] Fix | Delete
$tgt =& $mkdirs;
[2237] Fix | Delete
$_names = explode('/', trim($dir, '/'));
[2238] Fix | Delete
foreach ($_names as $_key => $_name) {
[2239] Fix | Delete
if (!isset($tgt[$_name])) {
[2240] Fix | Delete
$tgt[$_name] = array();
[2241] Fix | Delete
}
[2242] Fix | Delete
$tgt =& $tgt[$_name];
[2243] Fix | Delete
}
[2244] Fix | Delete
$tgt =& $reset;
[2245] Fix | Delete
}
[2246] Fix | Delete
$res = $this->ensureDirsRecursively($volume, $target, $mkdirs);
[2247] Fix | Delete
$ret = array(
[2248] Fix | Delete
'added' => $res['stats'],
[2249] Fix | Delete
'hashes' => $res['hashes']
[2250] Fix | Delete
);
[2251] Fix | Delete
if ($res['error']) {
[2252] Fix | Delete
$ret['warning'] = $this->error(self::ERROR_MKDIR, $res['error'][0], $volume->error());
[2253] Fix | Delete
}
[2254] Fix | Delete
return $ret;
[2255] Fix | Delete
} else {
[2256] Fix | Delete
return ($dir = $volume->mkdir($target, $name)) == false
[2257] Fix | Delete
? array('error' => $this->error(self::ERROR_MKDIR, $name, $volume->error()))
[2258] Fix | Delete
: array('added' => array($dir));
[2259] Fix | Delete
}
[2260] Fix | Delete
}
[2261] Fix | Delete
[2262] Fix | Delete
/**
[2263] Fix | Delete
* Create empty file
[2264] Fix | Delete
*
[2265] Fix | Delete
* @param array command arguments
[2266] Fix | Delete
*
[2267] Fix | Delete
* @return array
[2268] Fix | Delete
* @author Dmitry (dio) Levashov
[2269] Fix | Delete
**/
[2270] Fix | Delete
protected function mkfile($args)
[2271] Fix | Delete
{
[2272] Fix | Delete
$target = $args['target'];
[2273] Fix | Delete
$name = str_replace('..', '', $args['name']);
[2274] Fix | Delete
[2275] Fix | Delete
if (($volume = $this->volume($target)) == false) {
[2276] Fix | Delete
return array('error' => $this->error(self::ERROR_MKFILE, $name, self::ERROR_TRGDIR_NOT_FOUND, '#' . $target));
[2277] Fix | Delete
}
[2278] Fix | Delete
[2279] Fix | Delete
return ($file = $volume->mkfile($target, $name)) == false
[2280] Fix | Delete
? array('error' => $this->error(self::ERROR_MKFILE, $name, $volume->error()))
[2281] Fix | Delete
: array('added' => array($file));
[2282] Fix | Delete
}
[2283] Fix | Delete
[2284] Fix | Delete
/**
[2285] Fix | Delete
* Rename file, Accept multiple items >= API 2.1031
[2286] Fix | Delete
*
[2287] Fix | Delete
* @param array $args
[2288] Fix | Delete
*
[2289] Fix | Delete
* @return array
[2290] Fix | Delete
* @throws elFinderAbortException
[2291] Fix | Delete
* @author Dmitry (dio) Levashov
[2292] Fix | Delete
* @author Naoki Sawada
[2293] Fix | Delete
*/
[2294] Fix | Delete
protected function rename($args)
[2295] Fix | Delete
{
[2296] Fix | Delete
$target = $args['target'];
[2297] Fix | Delete
$name = $args['name'];
[2298] Fix | Delete
$query = (!empty($args['q']) && strpos($args['q'], '*') !== false) ? $args['q'] : '';
[2299] Fix | Delete
$targets = !empty($args['targets'])? $args['targets'] : false;
[2300] Fix | Delete
$rms = array();
[2301] Fix | Delete
$notfounds = array();
[2302] Fix | Delete
$locked = array();
[2303] Fix | Delete
$errs = array();
[2304] Fix | Delete
$files = array();
[2305] Fix | Delete
$removed = array();
[2306] Fix | Delete
$res = array();
[2307] Fix | Delete
$type = 'normal';
[2308] Fix | Delete
[2309] Fix | Delete
if (!($volume = $this->volume($target))) {
[2310] Fix | Delete
return array('error' => $this->error(self::ERROR_RENAME, '#' . $target, self::ERROR_FILE_NOT_FOUND));
[2311] Fix | Delete
}
[2312] Fix | Delete
[2313] Fix | Delete
if (strpos($name,'..') !== false) {
[2314] Fix | Delete
return array('error' => $this->error('Invalid request', 'rename'));
[2315] Fix | Delete
}
[2316] Fix | Delete
[2317] Fix | Delete
if ($targets) {
[2318] Fix | Delete
array_unshift($targets, $target);
[2319] Fix | Delete
foreach ($targets as $h) {
[2320] Fix | Delete
if ($rm = $volume->file($h)) {
[2321] Fix | Delete
if ($this->itemLocked($h)) {
[2322] Fix | Delete
$locked[] = $rm['name'];
[2323] Fix | Delete
} else {
[2324] Fix | Delete
$rm['realpath'] = $volume->realpath($h);
[2325] Fix | Delete
$rms[] = $rm;
[2326] Fix | Delete
}
[2327] Fix | Delete
} else {
[2328] Fix | Delete
$notfounds[] = '#' . $h;
[2329] Fix | Delete
}
[2330] Fix | Delete
}
[2331] Fix | Delete
if (!$rms) {
[2332] Fix | Delete
$res['error'] = array();
[2333] Fix | Delete
if ($notfounds) {
[2334] Fix | Delete
$res['error'] = array(self::ERROR_RENAME, join(', ', $notfounds), self::ERROR_FILE_NOT_FOUND);
[2335] Fix | Delete
}
[2336] Fix | Delete
if ($locked) {
[2337] Fix | Delete
array_push($res['error'], self::ERROR_LOCKED, join(', ', $locked));
[2338] Fix | Delete
}
[2339] Fix | Delete
return $res;
[2340] Fix | Delete
}
[2341] Fix | Delete
[2342] Fix | Delete
$res['warning'] = array();
[2343] Fix | Delete
if ($notfounds) {
[2344] Fix | Delete
array_push($res['warning'], self::ERROR_RENAME, join(', ', $notfounds), self::ERROR_FILE_NOT_FOUND);
[2345] Fix | Delete
}
[2346] Fix | Delete
if ($locked) {
[2347] Fix | Delete
array_push($res['warning'], self::ERROR_LOCKED, join(', ', $locked));
[2348] Fix | Delete
}
[2349] Fix | Delete
[2350] Fix | Delete
if ($query) {
[2351] Fix | Delete
// batch rename
[2352] Fix | Delete
$splits = elFinder::splitFileExtention($query);
[2353] Fix | Delete
if ($splits[1] && $splits[0] === '*') {
[2354] Fix | Delete
$type = 'extention';
[2355] Fix | Delete
$name = $splits[1];
[2356] Fix | Delete
} else if (strlen($splits[0]) > 1) {
[2357] Fix | Delete
if (substr($splits[0], -1) === '*') {
[2358] Fix | Delete
$type = 'prefix';
[2359] Fix | Delete
$name = substr($splits[0], 0, strlen($splits[0]) - 1);
[2360] Fix | Delete
} else if (substr($splits[0], 0, 1) === '*') {
[2361] Fix | Delete
$type = 'suffix';
[2362] Fix | Delete
$name = substr($splits[0], 1);
[2363] Fix | Delete
}
[2364] Fix | Delete
}
[2365] Fix | Delete
if ($type !== 'normal') {
[2366] Fix | Delete
if (!empty($this->listeners['rename.pre'])) {
[2367] Fix | Delete
$_args = array('name' => $name);
[2368] Fix | Delete
foreach ($this->listeners['rename.pre'] as $handler) {
[2369] Fix | Delete
$_res = call_user_func_array($handler, array('rename', &$_args, $this, $volume));
[2370] Fix | Delete
if (!empty($_res['preventexec'])) {
[2371] Fix | Delete
break;
[2372] Fix | Delete
}
[2373] Fix | Delete
}
[2374] Fix | Delete
$name = $_args['name'];
[2375] Fix | Delete
}
[2376] Fix | Delete
}
[2377] Fix | Delete
}
[2378] Fix | Delete
foreach ($rms as $rm) {
[2379] Fix | Delete
if ($type === 'normal') {
[2380] Fix | Delete
$rname = $volume->uniqueName($volume->realpath($rm['phash']), $name, '', false);
[2381] Fix | Delete
} else {
[2382] Fix | Delete
$rname = $name;
[2383] Fix | Delete
if ($type === 'extention') {
[2384] Fix | Delete
$splits = elFinder::splitFileExtention($rm['name']);
[2385] Fix | Delete
$rname = $splits[0] . '.' . $name;
[2386] Fix | Delete
} else if ($type === 'prefix') {
[2387] Fix | Delete
$rname = $name . $rm['name'];
[2388] Fix | Delete
} else if ($type === 'suffix') {
[2389] Fix | Delete
$splits = elFinder::splitFileExtention($rm['name']);
[2390] Fix | Delete
$rname = $splits[0] . $name . ($splits[1] ? ('.' . $splits[1]) : '');
[2391] Fix | Delete
}
[2392] Fix | Delete
$rname = $volume->uniqueName($volume->realpath($rm['phash']), $rname, '', true);
[2393] Fix | Delete
}
[2394] Fix | Delete
if ($file = $volume->rename($rm['hash'], $rname)) {
[2395] Fix | Delete
$files[] = $file;
[2396] Fix | Delete
$removed[] = $rm;
[2397] Fix | Delete
} else {
[2398] Fix | Delete
$errs[] = $rm['name'];
[2399] Fix | Delete
}
[2400] Fix | Delete
}
[2401] Fix | Delete
[2402] Fix | Delete
if (!$files) {
[2403] Fix | Delete
$res['error'] = $this->error(self::ERROR_RENAME, join(', ', $errs), $volume->error());
[2404] Fix | Delete
if (!$res['warning']) {
[2405] Fix | Delete
unset($res['warning']);
[2406] Fix | Delete
}
[2407] Fix | Delete
return $res;
[2408] Fix | Delete
}
[2409] Fix | Delete
if ($errs) {
[2410] Fix | Delete
array_push($res['warning'], self::ERROR_RENAME, join(', ', $errs), $volume->error());
[2411] Fix | Delete
}
[2412] Fix | Delete
if (!$res['warning']) {
[2413] Fix | Delete
unset($res['warning']);
[2414] Fix | Delete
}
[2415] Fix | Delete
$res['added'] = $files;
[2416] Fix | Delete
$res['removed'] = $removed;
[2417] Fix | Delete
return $res;
[2418] Fix | Delete
} else {
[2419] Fix | Delete
if (!($rm = $volume->file($target))) {
[2420] Fix | Delete
return array('error' => $this->error(self::ERROR_RENAME, '#' . $target, self::ERROR_FILE_NOT_FOUND));
[2421] Fix | Delete
}
[2422] Fix | Delete
if ($this->itemLocked($target)) {
[2423] Fix | Delete
return array('error' => $this->error(self::ERROR_LOCKED, $rm['name']));
[2424] Fix | Delete
}
[2425] Fix | Delete
$rm['realpath'] = $volume->realpath($target);
[2426] Fix | Delete
[2427] Fix | Delete
$file = $volume->rename($target, $name);
[2428] Fix | Delete
if ($file === false) {
[2429] Fix | Delete
return array('error' => $this->error(self::ERROR_RENAME, $rm['name'], $volume->error()));
[2430] Fix | Delete
} else {
[2431] Fix | Delete
if ($file['hash'] !== $rm['hash']) {
[2432] Fix | Delete
return array('added' => array($file), 'removed' => array($rm));
[2433] Fix | Delete
} else {
[2434] Fix | Delete
return array('changed' => array($file));
[2435] Fix | Delete
}
[2436] Fix | Delete
}
[2437] Fix | Delete
}
[2438] Fix | Delete
}
[2439] Fix | Delete
[2440] Fix | Delete
/**
[2441] Fix | Delete
* Duplicate file - create copy with "copy %d" suffix
[2442] Fix | Delete
*
[2443] Fix | Delete
* @param array $args command arguments
[2444] Fix | Delete
*
[2445] Fix | Delete
* @return array
[2446] Fix | Delete
* @throws elFinderAbortException
[2447] Fix | Delete
* @author Dmitry (dio) Levashov
[2448] Fix | Delete
*/
[2449] Fix | Delete
protected function duplicate($args)
[2450] Fix | Delete
{
[2451] Fix | Delete
$targets = is_array($args['targets']) ? $args['targets'] : array();
[2452] Fix | Delete
$result = array();
[2453] Fix | Delete
$suffix = empty($args['suffix']) ? 'copy' : $args['suffix'];
[2454] Fix | Delete
[2455] Fix | Delete
$this->itemLock($targets);
[2456] Fix | Delete
[2457] Fix | Delete
foreach ($targets as $target) {
[2458] Fix | Delete
elFinder::checkAborted();
[2459] Fix | Delete
[2460] Fix | Delete
if (($volume = $this->volume($target)) == false
[2461] Fix | Delete
|| ($src = $volume->file($target)) == false) {
[2462] Fix | Delete
$result['warning'] = $this->error(self::ERROR_COPY, '#' . $target, self::ERROR_FILE_NOT_FOUND);
[2463] Fix | Delete
break;
[2464] Fix | Delete
}
[2465] Fix | Delete
[2466] Fix | Delete
if (($file = $volume->duplicate($target, $suffix)) == false) {
[2467] Fix | Delete
$result['warning'] = $this->error($volume->error());
[2468] Fix | Delete
break;
[2469] Fix | Delete
}
[2470] Fix | Delete
}
[2471] Fix | Delete
[2472] Fix | Delete
return $result;
[2473] Fix | Delete
}
[2474] Fix | Delete
[2475] Fix | Delete
/**
[2476] Fix | Delete
* Remove dirs/files
[2477] Fix | Delete
*
[2478] Fix | Delete
* @param array command arguments
[2479] Fix | Delete
*
[2480] Fix | Delete
* @return array
[2481] Fix | Delete
* @throws elFinderAbortException
[2482] Fix | Delete
* @author Dmitry (dio) Levashov
[2483] Fix | Delete
*/
[2484] Fix | Delete
protected function rm($args)
[2485] Fix | Delete
{
[2486] Fix | Delete
$targets = is_array($args['targets']) ? $args['targets'] : array();
[2487] Fix | Delete
$result = array('removed' => array());
[2488] Fix | Delete
[2489] Fix | Delete
foreach ($targets as $target) {
[2490] Fix | Delete
elFinder::checkAborted();
[2491] Fix | Delete
[2492] Fix | Delete
if (($volume = $this->volume($target)) == false) {
[2493] Fix | Delete
$result['warning'] = $this->error(self::ERROR_RM, '#' . $target, self::ERROR_FILE_NOT_FOUND);
[2494] Fix | Delete
break;
[2495] Fix | Delete
}
[2496] Fix | Delete
[2497] Fix | Delete
if ($this->itemLocked($target)) {
[2498] Fix | Delete
$rm = $volume->file($target);
[2499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function