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: elFinderVolumeDriver.class.php
*
[4000] Fix | Delete
* @return mixed
[4001] Fix | Delete
* @author Dmitry (dio) Levashov
[4002] Fix | Delete
**/
[4003] Fix | Delete
protected function uncrypt($hash)
[4004] Fix | Delete
{
[4005] Fix | Delete
return $hash;
[4006] Fix | Delete
}
[4007] Fix | Delete
[4008] Fix | Delete
/**
[4009] Fix | Delete
* Validate file name based on $this->options['acceptedName'] regexp or function
[4010] Fix | Delete
*
[4011] Fix | Delete
* @param string $name file name
[4012] Fix | Delete
* @param bool $isDir
[4013] Fix | Delete
*
[4014] Fix | Delete
* @return bool
[4015] Fix | Delete
* @author Dmitry (dio) Levashov
[4016] Fix | Delete
*/
[4017] Fix | Delete
protected function nameAccepted($name, $isDir = false)
[4018] Fix | Delete
{
[4019] Fix | Delete
if (json_encode($name) === false) {
[4020] Fix | Delete
return false;
[4021] Fix | Delete
}
[4022] Fix | Delete
$nameValidator = $isDir ? $this->dirnameValidator : $this->nameValidator;
[4023] Fix | Delete
if ($nameValidator) {
[4024] Fix | Delete
if (is_callable($nameValidator)) {
[4025] Fix | Delete
$res = call_user_func($nameValidator, $name);
[4026] Fix | Delete
return $res;
[4027] Fix | Delete
}
[4028] Fix | Delete
if (preg_match($nameValidator, '') !== false) {
[4029] Fix | Delete
return preg_match($nameValidator, $name);
[4030] Fix | Delete
}
[4031] Fix | Delete
}
[4032] Fix | Delete
return true;
[4033] Fix | Delete
}
[4034] Fix | Delete
[4035] Fix | Delete
/**
[4036] Fix | Delete
* Return session rootstat cache key
[4037] Fix | Delete
*
[4038] Fix | Delete
* @return string
[4039] Fix | Delete
*/
[4040] Fix | Delete
protected function getRootstatCachekey()
[4041] Fix | Delete
{
[4042] Fix | Delete
return md5($this->root . (isset($this->options['alias']) ? $this->options['alias'] : ''));
[4043] Fix | Delete
}
[4044] Fix | Delete
[4045] Fix | Delete
/**
[4046] Fix | Delete
* Return new unique name based on file name and suffix
[4047] Fix | Delete
*
[4048] Fix | Delete
* @param $dir
[4049] Fix | Delete
* @param $name
[4050] Fix | Delete
* @param string $suffix suffix append to name
[4051] Fix | Delete
* @param bool $checkNum
[4052] Fix | Delete
* @param int $start
[4053] Fix | Delete
*
[4054] Fix | Delete
* @return string
[4055] Fix | Delete
* @internal param string $path file path
[4056] Fix | Delete
* @author Dmitry (dio) Levashov
[4057] Fix | Delete
*/
[4058] Fix | Delete
public function uniqueName($dir, $name, $suffix = ' copy', $checkNum = true, $start = 1)
[4059] Fix | Delete
{
[4060] Fix | Delete
static $lasts = null;
[4061] Fix | Delete
[4062] Fix | Delete
if ($lasts === null) {
[4063] Fix | Delete
$lasts = array();
[4064] Fix | Delete
}
[4065] Fix | Delete
[4066] Fix | Delete
$ext = '';
[4067] Fix | Delete
[4068] Fix | Delete
$splits = elFinder::splitFileExtention($name);
[4069] Fix | Delete
if ($splits[1]) {
[4070] Fix | Delete
$ext = '.' . $splits[1];
[4071] Fix | Delete
$name = $splits[0];
[4072] Fix | Delete
}
[4073] Fix | Delete
[4074] Fix | Delete
if ($checkNum && preg_match('/(' . preg_quote($suffix, '/') . ')(\d*)$/i', $name, $m)) {
[4075] Fix | Delete
$i = (int)$m[2];
[4076] Fix | Delete
$name = substr($name, 0, strlen($name) - strlen($m[2]));
[4077] Fix | Delete
} else {
[4078] Fix | Delete
$i = $start;
[4079] Fix | Delete
$name .= $suffix;
[4080] Fix | Delete
}
[4081] Fix | Delete
$max = $i + 100000;
[4082] Fix | Delete
[4083] Fix | Delete
if (isset($lasts[$name])) {
[4084] Fix | Delete
$i = max($i, $lasts[$name]);
[4085] Fix | Delete
}
[4086] Fix | Delete
[4087] Fix | Delete
while ($i <= $max) {
[4088] Fix | Delete
$n = $name . ($i > 0 ? sprintf($this->options['uniqueNumFormat'], $i) : '') . $ext;
[4089] Fix | Delete
[4090] Fix | Delete
if (!$this->isNameExists($this->joinPathCE($dir, $n))) {
[4091] Fix | Delete
$this->clearcache();
[4092] Fix | Delete
$lasts[$name] = ++$i;
[4093] Fix | Delete
return $n;
[4094] Fix | Delete
}
[4095] Fix | Delete
$i++;
[4096] Fix | Delete
}
[4097] Fix | Delete
return $name . md5($dir) . $ext;
[4098] Fix | Delete
}
[4099] Fix | Delete
[4100] Fix | Delete
/**
[4101] Fix | Delete
* Converts character encoding from UTF-8 to server's one
[4102] Fix | Delete
*
[4103] Fix | Delete
* @param mixed $var target string or array var
[4104] Fix | Delete
* @param bool $restoreLocale do retore global locale, default is false
[4105] Fix | Delete
* @param string $unknown replaces character for unknown
[4106] Fix | Delete
*
[4107] Fix | Delete
* @return mixed
[4108] Fix | Delete
* @author Naoki Sawada
[4109] Fix | Delete
*/
[4110] Fix | Delete
public function convEncIn($var = null, $restoreLocale = false, $unknown = '_')
[4111] Fix | Delete
{
[4112] Fix | Delete
return (!$this->encoding) ? $var : $this->convEnc($var, 'UTF-8', $this->encoding, $this->options['locale'], $restoreLocale, $unknown);
[4113] Fix | Delete
}
[4114] Fix | Delete
[4115] Fix | Delete
/**
[4116] Fix | Delete
* Converts character encoding from server's one to UTF-8
[4117] Fix | Delete
*
[4118] Fix | Delete
* @param mixed $var target string or array var
[4119] Fix | Delete
* @param bool $restoreLocale do retore global locale, default is true
[4120] Fix | Delete
* @param string $unknown replaces character for unknown
[4121] Fix | Delete
*
[4122] Fix | Delete
* @return mixed
[4123] Fix | Delete
* @author Naoki Sawada
[4124] Fix | Delete
*/
[4125] Fix | Delete
public function convEncOut($var = null, $restoreLocale = true, $unknown = '_')
[4126] Fix | Delete
{
[4127] Fix | Delete
return (!$this->encoding) ? $var : $this->convEnc($var, $this->encoding, 'UTF-8', $this->options['locale'], $restoreLocale, $unknown);
[4128] Fix | Delete
}
[4129] Fix | Delete
[4130] Fix | Delete
/**
[4131] Fix | Delete
* Converts character encoding (base function)
[4132] Fix | Delete
*
[4133] Fix | Delete
* @param mixed $var target string or array var
[4134] Fix | Delete
* @param string $from from character encoding
[4135] Fix | Delete
* @param string $to to character encoding
[4136] Fix | Delete
* @param string $locale local locale
[4137] Fix | Delete
* @param $restoreLocale
[4138] Fix | Delete
* @param string $unknown replaces character for unknown
[4139] Fix | Delete
*
[4140] Fix | Delete
* @return mixed
[4141] Fix | Delete
*/
[4142] Fix | Delete
protected function convEnc($var, $from, $to, $locale, $restoreLocale, $unknown = '_')
[4143] Fix | Delete
{
[4144] Fix | Delete
if (strtoupper($from) !== strtoupper($to)) {
[4145] Fix | Delete
if ($locale) {
[4146] Fix | Delete
setlocale(LC_ALL, $locale);
[4147] Fix | Delete
}
[4148] Fix | Delete
if (is_array($var)) {
[4149] Fix | Delete
$_ret = array();
[4150] Fix | Delete
foreach ($var as $_k => $_v) {
[4151] Fix | Delete
$_ret[$_k] = $this->convEnc($_v, $from, $to, '', false, $unknown = '_');
[4152] Fix | Delete
}
[4153] Fix | Delete
$var = $_ret;
[4154] Fix | Delete
} else {
[4155] Fix | Delete
$_var = false;
[4156] Fix | Delete
if (is_string($var)) {
[4157] Fix | Delete
$_var = $var;
[4158] Fix | Delete
$errlev = error_reporting();
[4159] Fix | Delete
error_reporting($errlev ^ E_NOTICE);
[4160] Fix | Delete
if (false !== ($_var = iconv($from, $to . '//TRANSLIT', $_var))) {
[4161] Fix | Delete
$_var = str_replace('?', $unknown, $_var);
[4162] Fix | Delete
}
[4163] Fix | Delete
error_reporting($errlev);
[4164] Fix | Delete
}
[4165] Fix | Delete
if ($_var !== false) {
[4166] Fix | Delete
$var = $_var;
[4167] Fix | Delete
}
[4168] Fix | Delete
}
[4169] Fix | Delete
if ($restoreLocale) {
[4170] Fix | Delete
setlocale(LC_ALL, elFinder::$locale);
[4171] Fix | Delete
}
[4172] Fix | Delete
}
[4173] Fix | Delete
return $var;
[4174] Fix | Delete
}
[4175] Fix | Delete
[4176] Fix | Delete
/**
[4177] Fix | Delete
* Normalize MIME-Type by options['mimeMap']
[4178] Fix | Delete
*
[4179] Fix | Delete
* @param string $type MIME-Type
[4180] Fix | Delete
* @param string $name Filename
[4181] Fix | Delete
* @param string $ext File extention without first dot (optional)
[4182] Fix | Delete
*
[4183] Fix | Delete
* @return string Normalized MIME-Type
[4184] Fix | Delete
*/
[4185] Fix | Delete
public function mimeTypeNormalize($type, $name, $ext = '')
[4186] Fix | Delete
{
[4187] Fix | Delete
if ($ext === '') {
[4188] Fix | Delete
$ext = (false === $pos = strrpos($name, '.')) ? '' : substr($name, $pos + 1);
[4189] Fix | Delete
}
[4190] Fix | Delete
$_checkKey = strtolower($ext . ':' . $type);
[4191] Fix | Delete
if ($type === '') {
[4192] Fix | Delete
$_keylen = strlen($_checkKey);
[4193] Fix | Delete
foreach ($this->options['mimeMap'] as $_key => $_type) {
[4194] Fix | Delete
if (substr($_key, 0, $_keylen) === $_checkKey) {
[4195] Fix | Delete
$type = $_type;
[4196] Fix | Delete
break;
[4197] Fix | Delete
}
[4198] Fix | Delete
}
[4199] Fix | Delete
} else if (isset($this->options['mimeMap'][$_checkKey])) {
[4200] Fix | Delete
$type = $this->options['mimeMap'][$_checkKey];
[4201] Fix | Delete
} else {
[4202] Fix | Delete
$_checkKey = strtolower($ext . ':*');
[4203] Fix | Delete
if (isset($this->options['mimeMap'][$_checkKey])) {
[4204] Fix | Delete
$type = $this->options['mimeMap'][$_checkKey];
[4205] Fix | Delete
} else {
[4206] Fix | Delete
$_checkKey = strtolower('*:' . $type);
[4207] Fix | Delete
if (isset($this->options['mimeMap'][$_checkKey])) {
[4208] Fix | Delete
$type = $this->options['mimeMap'][$_checkKey];
[4209] Fix | Delete
}
[4210] Fix | Delete
}
[4211] Fix | Delete
}
[4212] Fix | Delete
return $type;
[4213] Fix | Delete
}
[4214] Fix | Delete
[4215] Fix | Delete
/*********************** util mainly for inheritance class *********************/
[4216] Fix | Delete
[4217] Fix | Delete
/**
[4218] Fix | Delete
* Get temporary filename. Tempfile will be removed when after script execution finishes or exit() is called.
[4219] Fix | Delete
* When needing the unique file to a path, give $path to parameter.
[4220] Fix | Delete
*
[4221] Fix | Delete
* @param string $path for get unique file to a path
[4222] Fix | Delete
*
[4223] Fix | Delete
* @return string|false
[4224] Fix | Delete
* @author Naoki Sawada
[4225] Fix | Delete
*/
[4226] Fix | Delete
protected function getTempFile($path = '')
[4227] Fix | Delete
{
[4228] Fix | Delete
static $cache = array();
[4229] Fix | Delete
[4230] Fix | Delete
$key = '';
[4231] Fix | Delete
if ($path !== '') {
[4232] Fix | Delete
$key = $this->id . '#' . $path;
[4233] Fix | Delete
if (isset($cache[$key])) {
[4234] Fix | Delete
return $cache[$key];
[4235] Fix | Delete
}
[4236] Fix | Delete
}
[4237] Fix | Delete
[4238] Fix | Delete
if ($tmpdir = $this->getTempPath()) {
[4239] Fix | Delete
$name = tempnam($tmpdir, 'ELF');
[4240] Fix | Delete
if ($key) {
[4241] Fix | Delete
$cache[$key] = $name;
[4242] Fix | Delete
}
[4243] Fix | Delete
// register auto delete on shutdown
[4244] Fix | Delete
$GLOBALS['elFinderTempFiles'][$name] = true;
[4245] Fix | Delete
return $name;
[4246] Fix | Delete
}
[4247] Fix | Delete
[4248] Fix | Delete
return false;
[4249] Fix | Delete
}
[4250] Fix | Delete
[4251] Fix | Delete
/**
[4252] Fix | Delete
* File path of local server side work file path
[4253] Fix | Delete
*
[4254] Fix | Delete
* @param string $path path need convert encoding to server encoding
[4255] Fix | Delete
*
[4256] Fix | Delete
* @return string
[4257] Fix | Delete
* @author Naoki Sawada
[4258] Fix | Delete
*/
[4259] Fix | Delete
protected function getWorkFile($path)
[4260] Fix | Delete
{
[4261] Fix | Delete
if ($wfp = $this->tmpfile()) {
[4262] Fix | Delete
if ($fp = $this->_fopen($path)) {
[4263] Fix | Delete
while (!feof($fp)) {
[4264] Fix | Delete
fwrite($wfp, fread($fp, 8192));
[4265] Fix | Delete
}
[4266] Fix | Delete
$info = stream_get_meta_data($wfp);
[4267] Fix | Delete
fclose($wfp);
[4268] Fix | Delete
if ($info && !empty($info['uri'])) {
[4269] Fix | Delete
return $info['uri'];
[4270] Fix | Delete
}
[4271] Fix | Delete
}
[4272] Fix | Delete
}
[4273] Fix | Delete
return false;
[4274] Fix | Delete
}
[4275] Fix | Delete
[4276] Fix | Delete
/**
[4277] Fix | Delete
* Get image size array with `dimensions`
[4278] Fix | Delete
*
[4279] Fix | Delete
* @param string $path path need convert encoding to server encoding
[4280] Fix | Delete
* @param string $mime file mime type
[4281] Fix | Delete
*
[4282] Fix | Delete
* @return array|false
[4283] Fix | Delete
* @throws ImagickException
[4284] Fix | Delete
* @throws elFinderAbortException
[4285] Fix | Delete
*/
[4286] Fix | Delete
public function getImageSize($path, $mime = '')
[4287] Fix | Delete
{
[4288] Fix | Delete
$size = false;
[4289] Fix | Delete
if ($mime === '' || strtolower(substr($mime, 0, 5)) === 'image') {
[4290] Fix | Delete
if ($work = $this->getWorkFile($path)) {
[4291] Fix | Delete
if ($size = getimagesize($work)) {
[4292] Fix | Delete
$size['dimensions'] = $size[0] . 'x' . $size[1];
[4293] Fix | Delete
$srcfp = fopen($work, 'rb');
[4294] Fix | Delete
$cArgs = elFinder::$currentArgs;
[4295] Fix | Delete
if (!empty($cArgs['target']) && $subImgLink = $this->getSubstituteImgLink($cArgs['target'], $size, $srcfp)) {
[4296] Fix | Delete
$size['url'] = $subImgLink;
[4297] Fix | Delete
}
[4298] Fix | Delete
}
[4299] Fix | Delete
}
[4300] Fix | Delete
is_file($work) && unlink($work);
[4301] Fix | Delete
}
[4302] Fix | Delete
return $size;
[4303] Fix | Delete
}
[4304] Fix | Delete
[4305] Fix | Delete
/**
[4306] Fix | Delete
* Delete dirctory trees
[4307] Fix | Delete
*
[4308] Fix | Delete
* @param string $localpath path need convert encoding to server encoding
[4309] Fix | Delete
*
[4310] Fix | Delete
* @return boolean
[4311] Fix | Delete
* @throws elFinderAbortException
[4312] Fix | Delete
* @author Naoki Sawada
[4313] Fix | Delete
*/
[4314] Fix | Delete
protected function delTree($localpath)
[4315] Fix | Delete
{
[4316] Fix | Delete
foreach ($this->_scandir($localpath) as $p) {
[4317] Fix | Delete
elFinder::checkAborted();
[4318] Fix | Delete
$stat = $this->stat($this->convEncOut($p));
[4319] Fix | Delete
$this->convEncIn();
[4320] Fix | Delete
($stat['mime'] === 'directory') ? $this->delTree($p) : $this->_unlink($p);
[4321] Fix | Delete
}
[4322] Fix | Delete
$res = $this->_rmdir($localpath);
[4323] Fix | Delete
$res && $this->clearstatcache();
[4324] Fix | Delete
return $res;
[4325] Fix | Delete
}
[4326] Fix | Delete
[4327] Fix | Delete
/**
[4328] Fix | Delete
* Copy items to a new temporary directory on the local server
[4329] Fix | Delete
*
[4330] Fix | Delete
* @param array $hashes target hashes
[4331] Fix | Delete
* @param string $dir destination directory (for recurcive)
[4332] Fix | Delete
* @param string $canLink it can use link() (for recurcive)
[4333] Fix | Delete
*
[4334] Fix | Delete
* @return string|false saved path name
[4335] Fix | Delete
* @throws elFinderAbortException
[4336] Fix | Delete
* @author Naoki Sawada
[4337] Fix | Delete
*/
[4338] Fix | Delete
protected function getItemsInHand($hashes, $dir = null, $canLink = null)
[4339] Fix | Delete
{
[4340] Fix | Delete
static $banChrs = null;
[4341] Fix | Delete
static $totalSize = 0;
[4342] Fix | Delete
[4343] Fix | Delete
if (is_null($banChrs)) {
[4344] Fix | Delete
$banChrs = DIRECTORY_SEPARATOR !== '/'? array('\\', '/', ':', '*', '?', '"', '<', '>', '|') : array('\\', '/');
[4345] Fix | Delete
}
[4346] Fix | Delete
[4347] Fix | Delete
if (is_null($dir)) {
[4348] Fix | Delete
$totalSize = 0;
[4349] Fix | Delete
if (!$tmpDir = $this->getTempPath()) {
[4350] Fix | Delete
return false;
[4351] Fix | Delete
}
[4352] Fix | Delete
$dir = tempnam($tmpDir, 'elf');
[4353] Fix | Delete
if (!unlink($dir) || !mkdir($dir, 0700, true)) {
[4354] Fix | Delete
return false;
[4355] Fix | Delete
}
[4356] Fix | Delete
register_shutdown_function(array($this, 'rmdirRecursive'), $dir);
[4357] Fix | Delete
}
[4358] Fix | Delete
if (is_null($canLink)) {
[4359] Fix | Delete
$canLink = ($this instanceof elFinderVolumeLocalFileSystem);
[4360] Fix | Delete
}
[4361] Fix | Delete
elFinder::checkAborted();
[4362] Fix | Delete
$res = true;
[4363] Fix | Delete
$files = array();
[4364] Fix | Delete
foreach ($hashes as $hash) {
[4365] Fix | Delete
if (($file = $this->file($hash)) == false) {
[4366] Fix | Delete
continue;
[4367] Fix | Delete
}
[4368] Fix | Delete
if (!$file['read']) {
[4369] Fix | Delete
continue;
[4370] Fix | Delete
}
[4371] Fix | Delete
[4372] Fix | Delete
$name = $file['name'];
[4373] Fix | Delete
// remove ctrl characters
[4374] Fix | Delete
$name = preg_replace('/[[:cntrl:]]+/', '', $name);
[4375] Fix | Delete
// replace ban characters
[4376] Fix | Delete
$name = str_replace($banChrs, '_', $name);
[4377] Fix | Delete
[4378] Fix | Delete
// for call from search results
[4379] Fix | Delete
if (isset($files[$name])) {
[4380] Fix | Delete
$name = preg_replace('/^(.*?)(\..*)?$/', '$1_' . $files[$name]++ . '$2', $name);
[4381] Fix | Delete
} else {
[4382] Fix | Delete
$files[$name] = 1;
[4383] Fix | Delete
}
[4384] Fix | Delete
$target = $dir . DIRECTORY_SEPARATOR . $name;
[4385] Fix | Delete
[4386] Fix | Delete
if ($file['mime'] === 'directory') {
[4387] Fix | Delete
$chashes = array();
[4388] Fix | Delete
$_files = $this->scandir($hash);
[4389] Fix | Delete
foreach ($_files as $_file) {
[4390] Fix | Delete
if ($file['read']) {
[4391] Fix | Delete
$chashes[] = $_file['hash'];
[4392] Fix | Delete
}
[4393] Fix | Delete
}
[4394] Fix | Delete
if (($res = mkdir($target, 0700, true)) && $chashes) {
[4395] Fix | Delete
$res = $this->getItemsInHand($chashes, $target, $canLink);
[4396] Fix | Delete
}
[4397] Fix | Delete
if (!$res) {
[4398] Fix | Delete
break;
[4399] Fix | Delete
}
[4400] Fix | Delete
!empty($file['ts']) && touch($target, $file['ts']);
[4401] Fix | Delete
} else {
[4402] Fix | Delete
$path = $this->decode($hash);
[4403] Fix | Delete
if (!$canLink || !($canLink = $this->localFileSystemSymlink($path, $target))) {
[4404] Fix | Delete
if (file_exists($target)) {
[4405] Fix | Delete
unlink($target);
[4406] Fix | Delete
}
[4407] Fix | Delete
if ($fp = $this->fopenCE($path)) {
[4408] Fix | Delete
if ($tfp = fopen($target, 'wb')) {
[4409] Fix | Delete
$totalSize += stream_copy_to_stream($fp, $tfp);
[4410] Fix | Delete
fclose($tfp);
[4411] Fix | Delete
}
[4412] Fix | Delete
!empty($file['ts']) && touch($target, $file['ts']);
[4413] Fix | Delete
$this->fcloseCE($fp, $path);
[4414] Fix | Delete
}
[4415] Fix | Delete
} else {
[4416] Fix | Delete
$totalSize += filesize($path);
[4417] Fix | Delete
}
[4418] Fix | Delete
if ($this->options['maxArcFilesSize'] > 0 && $this->options['maxArcFilesSize'] < $totalSize) {
[4419] Fix | Delete
$res = $this->setError(elFinder::ERROR_ARC_MAXSIZE);
[4420] Fix | Delete
}
[4421] Fix | Delete
}
[4422] Fix | Delete
}
[4423] Fix | Delete
return $res ? $dir : false;
[4424] Fix | Delete
}
[4425] Fix | Delete
[4426] Fix | Delete
/*********************** file stat *********************/
[4427] Fix | Delete
[4428] Fix | Delete
/**
[4429] Fix | Delete
* Check file attribute
[4430] Fix | Delete
*
[4431] Fix | Delete
* @param string $path file path
[4432] Fix | Delete
* @param string $name attribute name (read|write|locked|hidden)
[4433] Fix | Delete
* @param bool $val attribute value returned by file system
[4434] Fix | Delete
* @param bool $isDir path is directory (true: directory, false: file)
[4435] Fix | Delete
*
[4436] Fix | Delete
* @return bool
[4437] Fix | Delete
* @author Dmitry (dio) Levashov
[4438] Fix | Delete
**/
[4439] Fix | Delete
protected function attr($path, $name, $val = null, $isDir = null)
[4440] Fix | Delete
{
[4441] Fix | Delete
if (!isset($this->defaults[$name])) {
[4442] Fix | Delete
return false;
[4443] Fix | Delete
}
[4444] Fix | Delete
[4445] Fix | Delete
$relpath = $this->relpathCE($path);
[4446] Fix | Delete
if ($this->separator !== '/') {
[4447] Fix | Delete
$relpath = str_replace($this->separator, '/', $relpath);
[4448] Fix | Delete
}
[4449] Fix | Delete
$relpath = '/' . $relpath;
[4450] Fix | Delete
[4451] Fix | Delete
$perm = null;
[4452] Fix | Delete
[4453] Fix | Delete
if ($this->access) {
[4454] Fix | Delete
$perm = call_user_func($this->access, $name, $path, $this->options['accessControlData'], $this, $isDir, $relpath);
[4455] Fix | Delete
if ($perm !== null) {
[4456] Fix | Delete
return !!$perm;
[4457] Fix | Delete
}
[4458] Fix | Delete
}
[4459] Fix | Delete
[4460] Fix | Delete
foreach ($this->attributes as $attrs) {
[4461] Fix | Delete
if (isset($attrs[$name]) && isset($attrs['pattern']) && preg_match($attrs['pattern'], $relpath)) {
[4462] Fix | Delete
$perm = $attrs[$name];
[4463] Fix | Delete
break;
[4464] Fix | Delete
}
[4465] Fix | Delete
}
[4466] Fix | Delete
[4467] Fix | Delete
return $perm === null ? (is_null($val) ? $this->defaults[$name] : $val) : !!$perm;
[4468] Fix | Delete
}
[4469] Fix | Delete
[4470] Fix | Delete
/**
[4471] Fix | Delete
* Return true if file with given name can be created in given folder.
[4472] Fix | Delete
*
[4473] Fix | Delete
* @param string $dir parent dir path
[4474] Fix | Delete
* @param string $name new file name
[4475] Fix | Delete
* @param null $isDir
[4476] Fix | Delete
*
[4477] Fix | Delete
* @return bool
[4478] Fix | Delete
* @author Dmitry (dio) Levashov
[4479] Fix | Delete
*/
[4480] Fix | Delete
protected function allowCreate($dir, $name, $isDir = null)
[4481] Fix | Delete
{
[4482] Fix | Delete
return $this->attr($this->joinPathCE($dir, $name), 'write', true, $isDir);
[4483] Fix | Delete
}
[4484] Fix | Delete
[4485] Fix | Delete
/**
[4486] Fix | Delete
* Return true if file MIME type can save with check uploadOrder config.
[4487] Fix | Delete
*
[4488] Fix | Delete
* @param string $mime
[4489] Fix | Delete
*
[4490] Fix | Delete
* @return boolean
[4491] Fix | Delete
*/
[4492] Fix | Delete
protected function allowPutMime($mime)
[4493] Fix | Delete
{
[4494] Fix | Delete
// logic based on http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#order
[4495] Fix | Delete
$allow = $this->mimeAccepted($mime, $this->uploadAllow, null);
[4496] Fix | Delete
$deny = $this->mimeAccepted($mime, $this->uploadDeny, null);
[4497] Fix | Delete
if (strtolower($this->uploadOrder[0]) == 'allow') { // array('allow', 'deny'), default is to 'deny'
[4498] Fix | Delete
$res = false; // default is deny
[4499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function