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
$mime = trim($mime[0]);
[3000] Fix | Delete
[3001] Fix | Delete
if (in_array($mime, array('application/x-empty', 'inode/x-empty'))) {
[3002] Fix | Delete
// finfo return this mime for empty files
[3003] Fix | Delete
$mime = 'text/plain';
[3004] Fix | Delete
} elseif ($mime == 'application/x-zip') {
[3005] Fix | Delete
// http://elrte.org/redmine/issues/163
[3006] Fix | Delete
$mime = 'application/zip';
[3007] Fix | Delete
}
[3008] Fix | Delete
}
[3009] Fix | Delete
[3010] Fix | Delete
return $mime ? $mime : 'unknown';
[3011] Fix | Delete
}
[3012] Fix | Delete
[3013] Fix | Delete
/**
[3014] Fix | Delete
* Detect file type extension by local path
[3015] Fix | Delete
*
[3016] Fix | Delete
* @param object $volume elFinderVolumeDriver instance
[3017] Fix | Delete
* @param string $path Local path
[3018] Fix | Delete
* @param string $name Filename to save
[3019] Fix | Delete
*
[3020] Fix | Delete
* @return string file type extension with dot
[3021] Fix | Delete
* @author Naoki Sawada
[3022] Fix | Delete
*/
[3023] Fix | Delete
protected function detectFileExtension($volume, $path, $name)
[3024] Fix | Delete
{
[3025] Fix | Delete
$mime = $this->detectMimeType($path);
[3026] Fix | Delete
if ($mime === 'unknown') {
[3027] Fix | Delete
$mime = 'application/octet-stream';
[3028] Fix | Delete
}
[3029] Fix | Delete
$ext = $volume->getExtentionByMime($volume->mimeTypeNormalize($mime, $name));
[3030] Fix | Delete
return $ext ? ('.' . $ext) : '';
[3031] Fix | Delete
}
[3032] Fix | Delete
[3033] Fix | Delete
/**
[3034] Fix | Delete
* Get temporary directory path
[3035] Fix | Delete
*
[3036] Fix | Delete
* @param string $volumeTempPath
[3037] Fix | Delete
*
[3038] Fix | Delete
* @return string
[3039] Fix | Delete
* @author Naoki Sawada
[3040] Fix | Delete
*/
[3041] Fix | Delete
private function getTempDir($volumeTempPath = null)
[3042] Fix | Delete
{
[3043] Fix | Delete
$testDirs = array();
[3044] Fix | Delete
if ($this->uploadTempPath) {
[3045] Fix | Delete
$testDirs[] = rtrim(realpath($this->uploadTempPath), DIRECTORY_SEPARATOR);
[3046] Fix | Delete
}
[3047] Fix | Delete
if ($volumeTempPath) {
[3048] Fix | Delete
$testDirs[] = rtrim(realpath($volumeTempPath), DIRECTORY_SEPARATOR);
[3049] Fix | Delete
}
[3050] Fix | Delete
if (elFinder::$commonTempPath) {
[3051] Fix | Delete
$testDirs[] = elFinder::$commonTempPath;
[3052] Fix | Delete
}
[3053] Fix | Delete
$tempDir = '';
[3054] Fix | Delete
foreach ($testDirs as $testDir) {
[3055] Fix | Delete
if (!$testDir || !is_dir($testDir)) continue;
[3056] Fix | Delete
if (is_writable($testDir)) {
[3057] Fix | Delete
$tempDir = $testDir;
[3058] Fix | Delete
$gc = time() - 3600;
[3059] Fix | Delete
foreach (glob($tempDir . DIRECTORY_SEPARATOR . 'ELF*') as $cf) {
[3060] Fix | Delete
if (filemtime($cf) < $gc) {
[3061] Fix | Delete
unlink($cf);
[3062] Fix | Delete
}
[3063] Fix | Delete
}
[3064] Fix | Delete
break;
[3065] Fix | Delete
}
[3066] Fix | Delete
}
[3067] Fix | Delete
return $tempDir;
[3068] Fix | Delete
}
[3069] Fix | Delete
[3070] Fix | Delete
/**
[3071] Fix | Delete
* chmod
[3072] Fix | Delete
*
[3073] Fix | Delete
* @param array command arguments
[3074] Fix | Delete
*
[3075] Fix | Delete
* @return array
[3076] Fix | Delete
* @throws elFinderAbortException
[3077] Fix | Delete
* @author David Bartle
[3078] Fix | Delete
*/
[3079] Fix | Delete
protected function chmod($args)
[3080] Fix | Delete
{
[3081] Fix | Delete
$targets = $args['targets'];
[3082] Fix | Delete
$mode = intval((string)$args['mode'], 8);
[3083] Fix | Delete
[3084] Fix | Delete
if (!is_array($targets)) {
[3085] Fix | Delete
$targets = array($targets);
[3086] Fix | Delete
}
[3087] Fix | Delete
[3088] Fix | Delete
$result = array();
[3089] Fix | Delete
[3090] Fix | Delete
if (($volume = $this->volume($targets[0])) == false) {
[3091] Fix | Delete
$result['error'] = $this->error(self::ERROR_CONF_NO_VOL);
[3092] Fix | Delete
return $result;
[3093] Fix | Delete
}
[3094] Fix | Delete
[3095] Fix | Delete
$this->itemLock($targets);
[3096] Fix | Delete
[3097] Fix | Delete
$files = array();
[3098] Fix | Delete
$errors = array();
[3099] Fix | Delete
foreach ($targets as $target) {
[3100] Fix | Delete
elFinder::checkAborted();
[3101] Fix | Delete
[3102] Fix | Delete
$file = $volume->chmod($target, $mode);
[3103] Fix | Delete
if ($file) {
[3104] Fix | Delete
$files = array_merge($files, is_array($file) ? $file : array($file));
[3105] Fix | Delete
} else {
[3106] Fix | Delete
$errors = array_merge($errors, $volume->error());
[3107] Fix | Delete
}
[3108] Fix | Delete
}
[3109] Fix | Delete
[3110] Fix | Delete
if ($files) {
[3111] Fix | Delete
$result['changed'] = $files;
[3112] Fix | Delete
if ($errors) {
[3113] Fix | Delete
$result['warning'] = $this->error($errors);
[3114] Fix | Delete
}
[3115] Fix | Delete
} else {
[3116] Fix | Delete
$result['error'] = $this->error($errors);
[3117] Fix | Delete
}
[3118] Fix | Delete
[3119] Fix | Delete
return $result;
[3120] Fix | Delete
}
[3121] Fix | Delete
[3122] Fix | Delete
/**
[3123] Fix | Delete
* Check chunked upload files
[3124] Fix | Delete
*
[3125] Fix | Delete
* @param string $tmpname uploaded temporary file path
[3126] Fix | Delete
* @param string $chunk uploaded chunk file name
[3127] Fix | Delete
* @param string $cid uploaded chunked file id
[3128] Fix | Delete
* @param string $tempDir temporary dirctroy path
[3129] Fix | Delete
* @param null $volume
[3130] Fix | Delete
*
[3131] Fix | Delete
* @return array|null
[3132] Fix | Delete
* @throws elFinderAbortException
[3133] Fix | Delete
* @author Naoki Sawada
[3134] Fix | Delete
*/
[3135] Fix | Delete
private function checkChunkedFile($tmpname, $chunk, $cid, $tempDir, $volume = null)
[3136] Fix | Delete
{
[3137] Fix | Delete
/* @var elFinderVolumeDriver $volume */
[3138] Fix | Delete
if (preg_match('/^(.+)(\.\d+_(\d+))\.part$/s', $chunk, $m)) {
[3139] Fix | Delete
$fname = $m[1];
[3140] Fix | Delete
$encname = md5($cid . '_' . $fname);
[3141] Fix | Delete
$base = $tempDir . DIRECTORY_SEPARATOR . 'ELF' . $encname;
[3142] Fix | Delete
$clast = intval($m[3]);
[3143] Fix | Delete
if (is_null($tmpname)) {
[3144] Fix | Delete
ignore_user_abort(true);
[3145] Fix | Delete
// chunked file upload fail
[3146] Fix | Delete
foreach (glob($base . '*') as $cf) {
[3147] Fix | Delete
unlink($cf);
[3148] Fix | Delete
}
[3149] Fix | Delete
ignore_user_abort(false);
[3150] Fix | Delete
return null;
[3151] Fix | Delete
}
[3152] Fix | Delete
[3153] Fix | Delete
$range = isset($_POST['range']) ? trim($_POST['range']) : '';
[3154] Fix | Delete
if ($range && preg_match('/^(\d+),(\d+),(\d+)$/', $range, $ranges)) {
[3155] Fix | Delete
$start = $ranges[1];
[3156] Fix | Delete
$len = $ranges[2];
[3157] Fix | Delete
$size = $ranges[3];
[3158] Fix | Delete
$tmp = $base . '.part';
[3159] Fix | Delete
$csize = filesize($tmpname);
[3160] Fix | Delete
[3161] Fix | Delete
$tmpExists = is_file($tmp);
[3162] Fix | Delete
if (!$tmpExists) {
[3163] Fix | Delete
// check upload max size
[3164] Fix | Delete
$uploadMaxSize = $volume ? $volume->getUploadMaxSize() : 0;
[3165] Fix | Delete
if ($uploadMaxSize > 0 && $size > $uploadMaxSize) {
[3166] Fix | Delete
return array(self::ERROR_UPLOAD_FILE_SIZE, false);
[3167] Fix | Delete
}
[3168] Fix | Delete
// make temp file
[3169] Fix | Delete
$ok = false;
[3170] Fix | Delete
if ($fp = fopen($tmp, 'wb')) {
[3171] Fix | Delete
flock($fp, LOCK_EX);
[3172] Fix | Delete
$ok = ftruncate($fp, $size);
[3173] Fix | Delete
flock($fp, LOCK_UN);
[3174] Fix | Delete
fclose($fp);
[3175] Fix | Delete
touch($base);
[3176] Fix | Delete
}
[3177] Fix | Delete
if (!$ok) {
[3178] Fix | Delete
unlink($tmp);
[3179] Fix | Delete
return array(self::ERROR_UPLOAD_TEMP, false);
[3180] Fix | Delete
}
[3181] Fix | Delete
} else {
[3182] Fix | Delete
// wait until makeing temp file (for anothor session)
[3183] Fix | Delete
$cnt = 1200; // Time limit 120 sec
[3184] Fix | Delete
while (!is_file($base) && --$cnt) {
[3185] Fix | Delete
usleep(100000); // wait 100ms
[3186] Fix | Delete
}
[3187] Fix | Delete
if (!$cnt) {
[3188] Fix | Delete
return array(self::ERROR_UPLOAD_TEMP, false);
[3189] Fix | Delete
}
[3190] Fix | Delete
}
[3191] Fix | Delete
[3192] Fix | Delete
// check size info
[3193] Fix | Delete
if ($len != $csize || $start + $len > $size || ($tmpExists && $size != filesize($tmp))) {
[3194] Fix | Delete
return array(self::ERROR_UPLOAD_TEMP, false);
[3195] Fix | Delete
}
[3196] Fix | Delete
[3197] Fix | Delete
// write chunk data
[3198] Fix | Delete
$src = fopen($tmpname, 'rb');
[3199] Fix | Delete
$fp = fopen($tmp, 'cb');
[3200] Fix | Delete
fseek($fp, $start);
[3201] Fix | Delete
$writelen = stream_copy_to_stream($src, $fp, $len);
[3202] Fix | Delete
fclose($fp);
[3203] Fix | Delete
fclose($src);
[3204] Fix | Delete
[3205] Fix | Delete
try {
[3206] Fix | Delete
// to check connection is aborted
[3207] Fix | Delete
elFinder::checkAborted();
[3208] Fix | Delete
} catch (elFinderAbortException $e) {
[3209] Fix | Delete
unlink($tmpname);
[3210] Fix | Delete
is_file($tmp) && unlink($tmp);
[3211] Fix | Delete
is_file($base) && unlink($base);
[3212] Fix | Delete
throw $e;
[3213] Fix | Delete
}
[3214] Fix | Delete
[3215] Fix | Delete
if ($writelen != $len) {
[3216] Fix | Delete
return array(self::ERROR_UPLOAD_TEMP, false);
[3217] Fix | Delete
}
[3218] Fix | Delete
[3219] Fix | Delete
// write counts
[3220] Fix | Delete
file_put_contents($base, "\0", FILE_APPEND | LOCK_EX);
[3221] Fix | Delete
[3222] Fix | Delete
if (filesize($base) >= $clast + 1) {
[3223] Fix | Delete
// Completion
[3224] Fix | Delete
unlink($base);
[3225] Fix | Delete
return array($tmp, $fname);
[3226] Fix | Delete
}
[3227] Fix | Delete
} else {
[3228] Fix | Delete
// old way
[3229] Fix | Delete
$part = $base . $m[2];
[3230] Fix | Delete
if (move_uploaded_file($tmpname, $part)) {
[3231] Fix | Delete
chmod($part, 0600);
[3232] Fix | Delete
if ($clast < count(glob($base . '*'))) {
[3233] Fix | Delete
$parts = array();
[3234] Fix | Delete
for ($i = 0; $i <= $clast; $i++) {
[3235] Fix | Delete
$name = $base . '.' . $i . '_' . $clast;
[3236] Fix | Delete
if (is_readable($name)) {
[3237] Fix | Delete
$parts[] = $name;
[3238] Fix | Delete
} else {
[3239] Fix | Delete
$parts = null;
[3240] Fix | Delete
break;
[3241] Fix | Delete
}
[3242] Fix | Delete
}
[3243] Fix | Delete
if ($parts) {
[3244] Fix | Delete
if (!is_file($base)) {
[3245] Fix | Delete
touch($base);
[3246] Fix | Delete
if ($resfile = tempnam($tempDir, 'ELF')) {
[3247] Fix | Delete
$target = fopen($resfile, 'wb');
[3248] Fix | Delete
foreach ($parts as $f) {
[3249] Fix | Delete
$fp = fopen($f, 'rb');
[3250] Fix | Delete
while (!feof($fp)) {
[3251] Fix | Delete
fwrite($target, fread($fp, 8192));
[3252] Fix | Delete
}
[3253] Fix | Delete
fclose($fp);
[3254] Fix | Delete
unlink($f);
[3255] Fix | Delete
}
[3256] Fix | Delete
fclose($target);
[3257] Fix | Delete
unlink($base);
[3258] Fix | Delete
return array($resfile, $fname);
[3259] Fix | Delete
}
[3260] Fix | Delete
unlink($base);
[3261] Fix | Delete
}
[3262] Fix | Delete
}
[3263] Fix | Delete
}
[3264] Fix | Delete
}
[3265] Fix | Delete
}
[3266] Fix | Delete
}
[3267] Fix | Delete
return array('', '');
[3268] Fix | Delete
}
[3269] Fix | Delete
[3270] Fix | Delete
/**
[3271] Fix | Delete
* Save uploaded files
[3272] Fix | Delete
*
[3273] Fix | Delete
* @param array
[3274] Fix | Delete
*
[3275] Fix | Delete
* @return array
[3276] Fix | Delete
* @throws elFinderAbortException
[3277] Fix | Delete
* @author Dmitry (dio) Levashov
[3278] Fix | Delete
*/
[3279] Fix | Delete
protected function upload($args)
[3280] Fix | Delete
{
[3281] Fix | Delete
$ngReg = '/[\/\\?*:|"<>]/';
[3282] Fix | Delete
$target = $args['target'];
[3283] Fix | Delete
$volume = $this->volume($target);
[3284] Fix | Delete
$files = isset($args['FILES']['upload']) && is_array($args['FILES']['upload']) ? $args['FILES']['upload'] : array();
[3285] Fix | Delete
$header = empty($args['html']) ? array() : array('header' => 'Content-Type: text/html; charset=utf-8');
[3286] Fix | Delete
$result = array_merge(array('added' => array()), $header);
[3287] Fix | Delete
$paths = $args['upload_path'] ? $args['upload_path'] : array();
[3288] Fix | Delete
$chunk = $args['chunk'] ? $args['chunk'] : '';
[3289] Fix | Delete
$cid = $args['cid'] ? (int)$args['cid'] : '';
[3290] Fix | Delete
$mtimes = $args['mtime'] ? $args['mtime'] : array();
[3291] Fix | Delete
$tmpfname = '';
[3292] Fix | Delete
[3293] Fix | Delete
if (!$volume) {
[3294] Fix | Delete
return array_merge(array('error' => $this->error(self::ERROR_UPLOAD, self::ERROR_TRGDIR_NOT_FOUND, '#' . $target)), $header);
[3295] Fix | Delete
}
[3296] Fix | Delete
[3297] Fix | Delete
// check $chunk
[3298] Fix | Delete
if (strpos($chunk, '/') !== false || strpos($chunk, '\\') !== false) {
[3299] Fix | Delete
return array('error' => $this->error(self::ERROR_UPLOAD));
[3300] Fix | Delete
}
[3301] Fix | Delete
[3302] Fix | Delete
if ($args['overwrite'] !== '') {
[3303] Fix | Delete
$volume->setUploadOverwrite($args['overwrite']);
[3304] Fix | Delete
}
[3305] Fix | Delete
[3306] Fix | Delete
$renames = $hashes = array();
[3307] Fix | Delete
$suffix = '~';
[3308] Fix | Delete
if ($args['renames'] && is_array($args['renames'])) {
[3309] Fix | Delete
$renames = array_flip($args['renames']);
[3310] Fix | Delete
if (is_string($args['suffix']) && !preg_match($ngReg, $args['suffix'])) {
[3311] Fix | Delete
$suffix = $args['suffix'];
[3312] Fix | Delete
}
[3313] Fix | Delete
}
[3314] Fix | Delete
if ($args['hashes'] && is_array($args['hashes'])) {
[3315] Fix | Delete
$hashes = array_flip($args['hashes']);
[3316] Fix | Delete
}
[3317] Fix | Delete
[3318] Fix | Delete
$this->itemLock($target);
[3319] Fix | Delete
[3320] Fix | Delete
// file extentions table by MIME
[3321] Fix | Delete
$extTable = array_flip(array_unique($volume->getMimeTable()));
[3322] Fix | Delete
[3323] Fix | Delete
if (empty($files)) {
[3324] Fix | Delete
if (isset($args['upload']) && is_array($args['upload']) && ($tempDir = $this->getTempDir($volume->getTempPath()))) {
[3325] Fix | Delete
$names = array();
[3326] Fix | Delete
foreach ($args['upload'] as $i => $url) {
[3327] Fix | Delete
// check chunked file upload commit
[3328] Fix | Delete
if ($chunk) {
[3329] Fix | Delete
if ($url === 'chunkfail' && $args['mimes'] === 'chunkfail') {
[3330] Fix | Delete
$this->checkChunkedFile(null, $chunk, $cid, $tempDir);
[3331] Fix | Delete
if (preg_match('/^(.+)(\.\d+_(\d+))\.part$/s', $chunk, $m)) {
[3332] Fix | Delete
$result['warning'] = $this->error(self::ERROR_UPLOAD_FILE, $m[1], self::ERROR_UPLOAD_TEMP);
[3333] Fix | Delete
}
[3334] Fix | Delete
return $result;
[3335] Fix | Delete
} else {
[3336] Fix | Delete
$tmpfname = $tempDir . '/' . $chunk;
[3337] Fix | Delete
$files['tmp_name'][$i] = $tmpfname;
[3338] Fix | Delete
$files['name'][$i] = $url;
[3339] Fix | Delete
$files['error'][$i] = 0;
[3340] Fix | Delete
$GLOBALS['elFinderTempFiles'][$tmpfname] = true;
[3341] Fix | Delete
break;
[3342] Fix | Delete
}
[3343] Fix | Delete
}
[3344] Fix | Delete
[3345] Fix | Delete
$tmpfname = $tempDir . DIRECTORY_SEPARATOR . 'ELF_FATCH_' . md5($url . microtime(true));
[3346] Fix | Delete
$GLOBALS['elFinderTempFiles'][$tmpfname] = true;
[3347] Fix | Delete
[3348] Fix | Delete
$_name = '';
[3349] Fix | Delete
// check is data:
[3350] Fix | Delete
if (substr($url, 0, 5) === 'data:') {
[3351] Fix | Delete
list($data, $args['name'][$i]) = $this->parse_data_scheme($url, $extTable, $args);
[3352] Fix | Delete
} else {
[3353] Fix | Delete
$fp = fopen($tmpfname, 'wb');
[3354] Fix | Delete
if ($data = $this->get_remote_contents($url, 30, 5, 'Mozilla/5.0', $fp)) {
[3355] Fix | Delete
// to check connection is aborted
[3356] Fix | Delete
try {
[3357] Fix | Delete
elFinder::checkAborted();
[3358] Fix | Delete
} catch(elFinderAbortException $e) {
[3359] Fix | Delete
fclose($fp);
[3360] Fix | Delete
throw $e;
[3361] Fix | Delete
}
[3362] Fix | Delete
if (strpos($url, '%') !== false) {
[3363] Fix | Delete
$url = rawurldecode($url);
[3364] Fix | Delete
}
[3365] Fix | Delete
if (is_callable('mb_convert_encoding') && is_callable('mb_detect_encoding')) {
[3366] Fix | Delete
$url = mb_convert_encoding($url, 'UTF-8', mb_detect_encoding($url));
[3367] Fix | Delete
}
[3368] Fix | Delete
$url = iconv('UTF-8', 'UTF-8//IGNORE', $url);
[3369] Fix | Delete
$_name = preg_replace('~^.*?([^/#?]+)(?:\?.*)?(?:#.*)?$~', '$1', $url);
[3370] Fix | Delete
// Check `Content-Disposition` response header
[3371] Fix | Delete
if (($headers = get_headers($url, true)) && !empty($headers['Content-Disposition'])) {
[3372] Fix | Delete
if (preg_match('/filename\*=(?:([a-zA-Z0-9_-]+?)\'\')"?([a-z0-9_.~%-]+)"?/i', $headers['Content-Disposition'], $m)) {
[3373] Fix | Delete
$_name = rawurldecode($m[2]);
[3374] Fix | Delete
if ($m[1] && strtoupper($m[1]) !== 'UTF-8' && function_exists('mb_convert_encoding')) {
[3375] Fix | Delete
$_name = mb_convert_encoding($_name, 'UTF-8', $m[1]);
[3376] Fix | Delete
}
[3377] Fix | Delete
} else if (preg_match('/filename="?([ a-z0-9_.~%-]+)"?/i', $headers['Content-Disposition'], $m)) {
[3378] Fix | Delete
$_name = rawurldecode($m[1]);
[3379] Fix | Delete
}
[3380] Fix | Delete
}
[3381] Fix | Delete
} else {
[3382] Fix | Delete
fclose($fp);
[3383] Fix | Delete
}
[3384] Fix | Delete
}
[3385] Fix | Delete
if ($data) {
[3386] Fix | Delete
if (isset($args['name'][$i])) {
[3387] Fix | Delete
$_name = $args['name'][$i];
[3388] Fix | Delete
}
[3389] Fix | Delete
if ($_name) {
[3390] Fix | Delete
$_ext = '';
[3391] Fix | Delete
if (preg_match('/(\.[a-z0-9]{1,7})$/', $_name, $_match)) {
[3392] Fix | Delete
$_ext = $_match[1];
[3393] Fix | Delete
}
[3394] Fix | Delete
if ((is_resource($data) && fclose($data)) || file_put_contents($tmpfname, $data)) {
[3395] Fix | Delete
$GLOBALS['elFinderTempFiles'][$tmpfname] = true;
[3396] Fix | Delete
$_name = preg_replace($ngReg, '_', $_name);
[3397] Fix | Delete
list($_a, $_b) = array_pad(explode('.', $_name, 2), 2, '');
[3398] Fix | Delete
if ($_b === '') {
[3399] Fix | Delete
if ($_ext) {
[3400] Fix | Delete
rename($tmpfname, $tmpfname . $_ext);
[3401] Fix | Delete
$tmpfname = $tmpfname . $_ext;
[3402] Fix | Delete
}
[3403] Fix | Delete
$_b = $this->detectFileExtension($volume, $tmpfname, $_name);
[3404] Fix | Delete
$_name = $_a . $_b;
[3405] Fix | Delete
} else {
[3406] Fix | Delete
$_b = '.' . $_b;
[3407] Fix | Delete
}
[3408] Fix | Delete
if (isset($names[$_name])) {
[3409] Fix | Delete
$_name = $_a . '_' . $names[$_name]++ . $_b;
[3410] Fix | Delete
} else {
[3411] Fix | Delete
$names[$_name] = 1;
[3412] Fix | Delete
}
[3413] Fix | Delete
$files['tmp_name'][$i] = $tmpfname;
[3414] Fix | Delete
$files['name'][$i] = $_name;
[3415] Fix | Delete
$files['error'][$i] = 0;
[3416] Fix | Delete
// set to auto rename
[3417] Fix | Delete
$volume->setUploadOverwrite(false);
[3418] Fix | Delete
} else {
[3419] Fix | Delete
unlink($tmpfname);
[3420] Fix | Delete
}
[3421] Fix | Delete
}
[3422] Fix | Delete
}
[3423] Fix | Delete
}
[3424] Fix | Delete
}
[3425] Fix | Delete
if (empty($files)) {
[3426] Fix | Delete
return array_merge(array('error' => $this->error(self::ERROR_UPLOAD, self::ERROR_UPLOAD_NO_FILES)), $header);
[3427] Fix | Delete
}
[3428] Fix | Delete
}
[3429] Fix | Delete
[3430] Fix | Delete
$addedDirs = array();
[3431] Fix | Delete
$errors = array();
[3432] Fix | Delete
foreach ($files['name'] as $i => $name) {
[3433] Fix | Delete
if (($error = $files['error'][$i]) > 0) {
[3434] Fix | Delete
$result['warning'] = $this->error(self::ERROR_UPLOAD_FILE, $name, $error == UPLOAD_ERR_INI_SIZE || $error == UPLOAD_ERR_FORM_SIZE ? self::ERROR_UPLOAD_FILE_SIZE : self::ERROR_UPLOAD_TRANSFER, $error);
[3435] Fix | Delete
$this->uploadDebug = 'Upload error code: ' . $error;
[3436] Fix | Delete
break;
[3437] Fix | Delete
}
[3438] Fix | Delete
[3439] Fix | Delete
$tmpname = $files['tmp_name'][$i];
[3440] Fix | Delete
$thash = ($paths && isset($paths[$i])) ? $paths[$i] : $target;
[3441] Fix | Delete
$mtime = isset($mtimes[$i]) ? $mtimes[$i] : 0;
[3442] Fix | Delete
if ($name === 'blob') {
[3443] Fix | Delete
if ($chunk) {
[3444] Fix | Delete
if ($tempDir = $this->getTempDir($volume->getTempPath())) {
[3445] Fix | Delete
list($tmpname, $name) = $this->checkChunkedFile($tmpname, $chunk, $cid, $tempDir, $volume);
[3446] Fix | Delete
if ($tmpname) {
[3447] Fix | Delete
if ($name === false) {
[3448] Fix | Delete
preg_match('/^(.+)(\.\d+_(\d+))\.part$/s', $chunk, $m);
[3449] Fix | Delete
$result['error'] = $this->error(self::ERROR_UPLOAD_FILE, $m[1], $tmpname);
[3450] Fix | Delete
$result['_chunkfailure'] = true;
[3451] Fix | Delete
$this->uploadDebug = 'Upload error: ' . $tmpname;
[3452] Fix | Delete
} else if ($name) {
[3453] Fix | Delete
$result['_chunkmerged'] = basename($tmpname);
[3454] Fix | Delete
$result['_name'] = $name;
[3455] Fix | Delete
$result['_mtime'] = $mtime;
[3456] Fix | Delete
}
[3457] Fix | Delete
}
[3458] Fix | Delete
} else {
[3459] Fix | Delete
$result['error'] = $this->error(self::ERROR_UPLOAD_FILE, $chunk, self::ERROR_UPLOAD_TEMP);
[3460] Fix | Delete
$this->uploadDebug = 'Upload error: unable open tmp file';
[3461] Fix | Delete
}
[3462] Fix | Delete
return $result;
[3463] Fix | Delete
} else {
[3464] Fix | Delete
// for form clipboard with Google Chrome or Opera
[3465] Fix | Delete
$name = 'image.png';
[3466] Fix | Delete
}
[3467] Fix | Delete
}
[3468] Fix | Delete
[3469] Fix | Delete
// Set name if name eq 'image.png' and $args has 'name' array, e.g. clipboard data
[3470] Fix | Delete
if (strtolower(substr($name, 0, 5)) === 'image' && is_array($args['name']) && isset($args['name'][$i])) {
[3471] Fix | Delete
$type = $files['type'][$i];
[3472] Fix | Delete
$name = $args['name'][$i];
[3473] Fix | Delete
$ext = isset($extTable[$type]) ? '.' . $extTable[$type] : '';
[3474] Fix | Delete
if ($ext) {
[3475] Fix | Delete
$name = preg_replace('/\.[^.]*$/', '', $name);
[3476] Fix | Delete
}
[3477] Fix | Delete
$name .= $ext;
[3478] Fix | Delete
}
[3479] Fix | Delete
[3480] Fix | Delete
// do hook function 'upload.presave'
[3481] Fix | Delete
try {
[3482] Fix | Delete
$this->trigger('upload.presave', array(&$thash, &$name, $tmpname, $this, $volume), $errors);
[3483] Fix | Delete
} catch (elFinderTriggerException $e) {
[3484] Fix | Delete
if (!is_uploaded_file($tmpname) && unlink($tmpname) && $tmpfname) {
[3485] Fix | Delete
unset($GLOBALS['elFinderTempFiles'][$tmpfname]);
[3486] Fix | Delete
}
[3487] Fix | Delete
continue;
[3488] Fix | Delete
}
[3489] Fix | Delete
[3490] Fix | Delete
clearstatcache();
[3491] Fix | Delete
if ($mtime && is_file($tmpname)) {
[3492] Fix | Delete
// for keep timestamp option in the LocalFileSystem volume
[3493] Fix | Delete
touch($tmpname, $mtime);
[3494] Fix | Delete
}
[3495] Fix | Delete
[3496] Fix | Delete
$fp = null;
[3497] Fix | Delete
if (!is_file($tmpname) || ($fp = fopen($tmpname, 'rb')) === false) {
[3498] Fix | Delete
$errors = array_merge($errors, array(self::ERROR_UPLOAD_FILE, $name, ($fp === false? self::ERROR_UPLOAD_TEMP : self::ERROR_UPLOAD_TRANSFER)));
[3499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function