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: elFinderVolumeDropbox2.class.php
$this->options['app_key'] = ELFINDER_DROPBOX_APPKEY;
[500] Fix | Delete
} else {
[501] Fix | Delete
return $this->setError('Required option "app_key" is undefined.');
[502] Fix | Delete
}
[503] Fix | Delete
}
[504] Fix | Delete
if (empty($this->options['app_secret'])) {
[505] Fix | Delete
if (defined('ELFINDER_DROPBOX_APPSECRET') && ELFINDER_DROPBOX_APPSECRET) {
[506] Fix | Delete
$this->options['app_secret'] = ELFINDER_DROPBOX_APPSECRET;
[507] Fix | Delete
} else {
[508] Fix | Delete
return $this->setError('Required option "app_secret" is undefined.');
[509] Fix | Delete
}
[510] Fix | Delete
}
[511] Fix | Delete
if (isset($this->options['tokens']) && is_array($this->options['tokens']) && !empty($this->options['tokens']['access_token'])) {
[512] Fix | Delete
$this->options['access_token'] = $this->options['tokens']['access_token'];
[513] Fix | Delete
}
[514] Fix | Delete
if (!$this->options['access_token']) {
[515] Fix | Delete
return $this->setError('Required option "access_token" or "refresh_token" is undefined.');
[516] Fix | Delete
}
[517] Fix | Delete
[518] Fix | Delete
try {
[519] Fix | Delete
// make net mount key for network mount
[520] Fix | Delete
$aToken = $this->options['access_token'];
[521] Fix | Delete
$this->netMountKey = md5($aToken . '-' . $this->options['path']);
[522] Fix | Delete
[523] Fix | Delete
$errors = [];
[524] Fix | Delete
if ($this->needOnline && !$this->service) {
[525] Fix | Delete
$app = new DropboxApp($this->options['app_key'], $this->options['app_secret'], $aToken);
[526] Fix | Delete
$this->service = new Dropbox($app);
[527] Fix | Delete
// to check access_token
[528] Fix | Delete
$this->service->getCurrentAccount();
[529] Fix | Delete
}
[530] Fix | Delete
} catch (DropboxClientException $e) {
[531] Fix | Delete
$errors[] = 'Dropbox error: ' . $e->getMessage();
[532] Fix | Delete
} catch (Exception $e) {
[533] Fix | Delete
$errors[] = $e->getMessage();
[534] Fix | Delete
}
[535] Fix | Delete
[536] Fix | Delete
if ($this->needOnline && !$this->service) {
[537] Fix | Delete
$errors[] = 'Dropbox Service could not be loaded.';
[538] Fix | Delete
}
[539] Fix | Delete
[540] Fix | Delete
if ($errors) {
[541] Fix | Delete
return $this->setError($errors);
[542] Fix | Delete
}
[543] Fix | Delete
[544] Fix | Delete
// normalize root path
[545] Fix | Delete
$this->options['path'] = strtolower($this->options['path']);
[546] Fix | Delete
if ($this->options['path'] == 'root') {
[547] Fix | Delete
$this->options['path'] = '/';
[548] Fix | Delete
}
[549] Fix | Delete
$this->root = $this->options['path'] = $this->_normpath($this->options['path']);
[550] Fix | Delete
[551] Fix | Delete
if (empty($this->options['alias'])) {
[552] Fix | Delete
$this->options['alias'] = sprintf($this->options['aliasFormat'], ($this->options['path'] === '/') ? 'Root' : $this->_basename($this->options['path']));
[553] Fix | Delete
if (!empty($this->options['netkey'])) {
[554] Fix | Delete
elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'alias', $this->options['alias']);
[555] Fix | Delete
}
[556] Fix | Delete
}
[557] Fix | Delete
[558] Fix | Delete
$this->rootName = $this->options['alias'];
[559] Fix | Delete
[560] Fix | Delete
if (!empty($this->options['tmpPath'])) {
[561] Fix | Delete
if ((is_dir($this->options['tmpPath']) || mkdir($this->options['tmpPath'])) && is_writable($this->options['tmpPath'])) {
[562] Fix | Delete
$this->tmp = $this->options['tmpPath'];
[563] Fix | Delete
}
[564] Fix | Delete
}
[565] Fix | Delete
[566] Fix | Delete
if (!$this->tmp && ($tmp = elFinder::getStaticVar('commonTempPath'))) {
[567] Fix | Delete
$this->tmp = $tmp;
[568] Fix | Delete
}
[569] Fix | Delete
[570] Fix | Delete
// This driver dose not support `syncChkAsTs`
[571] Fix | Delete
$this->options['syncChkAsTs'] = false;
[572] Fix | Delete
[573] Fix | Delete
// 'lsPlSleep' minmum 10 sec
[574] Fix | Delete
$this->options['lsPlSleep'] = max(10, $this->options['lsPlSleep']);
[575] Fix | Delete
[576] Fix | Delete
// enable command archive
[577] Fix | Delete
$this->options['useRemoteArchive'] = true;
[578] Fix | Delete
[579] Fix | Delete
return true;
[580] Fix | Delete
}
[581] Fix | Delete
[582] Fix | Delete
/**
[583] Fix | Delete
* Configure after successfull mount.
[584] Fix | Delete
*
[585] Fix | Delete
* @author Naoki Sawada
[586] Fix | Delete
* @throws elFinderAbortException
[587] Fix | Delete
*/
[588] Fix | Delete
protected function configure()
[589] Fix | Delete
{
[590] Fix | Delete
parent::configure();
[591] Fix | Delete
[592] Fix | Delete
// fallback of $this->tmp
[593] Fix | Delete
if (!$this->tmp && $this->tmbPathWritable) {
[594] Fix | Delete
$this->tmp = $this->tmbPath;
[595] Fix | Delete
}
[596] Fix | Delete
[597] Fix | Delete
if ($this->isMyReload()) {
[598] Fix | Delete
//$this->_db_getDirectoryData(false);
[599] Fix | Delete
}
[600] Fix | Delete
}
[601] Fix | Delete
[602] Fix | Delete
/*********************************************************************/
[603] Fix | Delete
/* FS API */
[604] Fix | Delete
/*********************************************************************/
[605] Fix | Delete
[606] Fix | Delete
/**
[607] Fix | Delete
* Close opened connection.
[608] Fix | Delete
**/
[609] Fix | Delete
public function umount()
[610] Fix | Delete
{
[611] Fix | Delete
}
[612] Fix | Delete
[613] Fix | Delete
/**
[614] Fix | Delete
* Cache dir contents.
[615] Fix | Delete
*
[616] Fix | Delete
* @param string $path dir path
[617] Fix | Delete
*
[618] Fix | Delete
* @return
[619] Fix | Delete
* @author Naoki Sawada
[620] Fix | Delete
*/
[621] Fix | Delete
protected function cacheDir($path)
[622] Fix | Delete
{
[623] Fix | Delete
$this->dirsCache[$path] = [];
[624] Fix | Delete
$hasDir = false;
[625] Fix | Delete
[626] Fix | Delete
$res = $this->service->listFolder($path, $this->FETCH_OPTIONS);
[627] Fix | Delete
[628] Fix | Delete
if ($res) {
[629] Fix | Delete
$items = $res->getItems()->all();
[630] Fix | Delete
foreach ($items as $raw) {
[631] Fix | Delete
if ($stat = $this->_db_parseRaw($raw)) {
[632] Fix | Delete
$mountPath = $this->_joinPath($path, $stat['name']);
[633] Fix | Delete
$stat = $this->updateCache($mountPath, $stat);
[634] Fix | Delete
if (empty($stat['hidden']) && $path !== $mountPath) {
[635] Fix | Delete
if (!$hasDir && $stat['mime'] === 'directory') {
[636] Fix | Delete
$hasDir = true;
[637] Fix | Delete
}
[638] Fix | Delete
$this->dirsCache[$path][] = $mountPath;
[639] Fix | Delete
}
[640] Fix | Delete
}
[641] Fix | Delete
}
[642] Fix | Delete
}
[643] Fix | Delete
[644] Fix | Delete
if (isset($this->sessionCache['subdirs'])) {
[645] Fix | Delete
$this->sessionCache['subdirs'][$path] = $hasDir;
[646] Fix | Delete
}
[647] Fix | Delete
[648] Fix | Delete
return $this->dirsCache[$path];
[649] Fix | Delete
}
[650] Fix | Delete
[651] Fix | Delete
/**
[652] Fix | Delete
* Recursive files search.
[653] Fix | Delete
*
[654] Fix | Delete
* @param string $path dir path
[655] Fix | Delete
* @param string $q search string
[656] Fix | Delete
* @param array $mimes
[657] Fix | Delete
*
[658] Fix | Delete
* @return array
[659] Fix | Delete
* @throws elFinderAbortException
[660] Fix | Delete
* @author Naoki Sawada
[661] Fix | Delete
*/
[662] Fix | Delete
protected function doSearch($path, $q, $mimes)
[663] Fix | Delete
{
[664] Fix | Delete
if (!empty($this->doSearchCurrentQuery['matchMethod']) || $mimes) {
[665] Fix | Delete
// has custom match method or mimes, use elFinderVolumeDriver::doSearch()
[666] Fix | Delete
return parent::doSearch($path, $q, $mimes);
[667] Fix | Delete
}
[668] Fix | Delete
[669] Fix | Delete
$timeout = $this->options['searchTimeout'] ? $this->searchStart + $this->options['searchTimeout'] : 0;
[670] Fix | Delete
[671] Fix | Delete
$searchRes = $this->service->search($path, $q, ['start' => 0, 'max_results' => 1000]);
[672] Fix | Delete
$items = $searchRes->getItems();
[673] Fix | Delete
$more = $searchRes->hasMoreItems();
[674] Fix | Delete
while ($more) {
[675] Fix | Delete
if ($timeout && $timeout < time()) {
[676] Fix | Delete
$this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->_path($path));
[677] Fix | Delete
break;
[678] Fix | Delete
}
[679] Fix | Delete
$searchRes = $this->service->search($path, $q, ['start' => $searchRes->getCursor(), 'max_results' => 1000]);
[680] Fix | Delete
$more = $searchRes->hasMoreItems();
[681] Fix | Delete
$items = $items->merge($searchRes->getItems());
[682] Fix | Delete
}
[683] Fix | Delete
[684] Fix | Delete
$result = [];
[685] Fix | Delete
foreach ($items as $raw) {
[686] Fix | Delete
if ($stat = $this->_db_parseRaw($raw->getMetadata())) {
[687] Fix | Delete
$stat = $this->updateCache($stat['path'], $stat);
[688] Fix | Delete
if (empty($stat['hidden'])) {
[689] Fix | Delete
$result[] = $stat;
[690] Fix | Delete
}
[691] Fix | Delete
}
[692] Fix | Delete
}
[693] Fix | Delete
[694] Fix | Delete
return $result;
[695] Fix | Delete
}
[696] Fix | Delete
[697] Fix | Delete
/**
[698] Fix | Delete
* Copy file/recursive copy dir only in current volume.
[699] Fix | Delete
* Return new file path or false.
[700] Fix | Delete
*
[701] Fix | Delete
* @param string $src source path
[702] Fix | Delete
* @param string $dst destination dir path
[703] Fix | Delete
* @param string $name new file name (optionaly)
[704] Fix | Delete
*
[705] Fix | Delete
* @return string|false
[706] Fix | Delete
* @throws elFinderAbortException
[707] Fix | Delete
* @author Naoki Sawada
[708] Fix | Delete
*/
[709] Fix | Delete
protected function copy($src, $dst, $name)
[710] Fix | Delete
{
[711] Fix | Delete
$srcStat = $this->stat($src);
[712] Fix | Delete
$target = $this->_joinPath($dst, $name);
[713] Fix | Delete
$tgtStat = $this->stat($target);
[714] Fix | Delete
if ($tgtStat) {
[715] Fix | Delete
if ($srcStat['mime'] === 'directory') {
[716] Fix | Delete
return parent::copy($src, $dst, $name);
[717] Fix | Delete
} else {
[718] Fix | Delete
$this->_unlink($target);
[719] Fix | Delete
}
[720] Fix | Delete
}
[721] Fix | Delete
$this->clearcache();
[722] Fix | Delete
if ($res = $this->_copy($src, $dst, $name)) {
[723] Fix | Delete
$this->added[] = $this->stat($target);
[724] Fix | Delete
$res = $target;
[725] Fix | Delete
}
[726] Fix | Delete
[727] Fix | Delete
return $res;
[728] Fix | Delete
}
[729] Fix | Delete
[730] Fix | Delete
/**
[731] Fix | Delete
* Remove file/ recursive remove dir.
[732] Fix | Delete
*
[733] Fix | Delete
* @param string $path file path
[734] Fix | Delete
* @param bool $force try to remove even if file locked
[735] Fix | Delete
* @param bool $recursive
[736] Fix | Delete
*
[737] Fix | Delete
* @return bool
[738] Fix | Delete
* @throws elFinderAbortException
[739] Fix | Delete
* @author Naoki Sawada
[740] Fix | Delete
*/
[741] Fix | Delete
protected function remove($path, $force = false, $recursive = false)
[742] Fix | Delete
{
[743] Fix | Delete
$stat = $this->stat($path);
[744] Fix | Delete
$stat['realpath'] = $path;
[745] Fix | Delete
$this->rmTmb($stat);
[746] Fix | Delete
$this->clearcache();
[747] Fix | Delete
[748] Fix | Delete
if (empty($stat)) {
[749] Fix | Delete
return $this->setError(elFinder::ERROR_RM, $this->_path($path), elFinder::ERROR_FILE_NOT_FOUND);
[750] Fix | Delete
}
[751] Fix | Delete
[752] Fix | Delete
if (!$force && !empty($stat['locked'])) {
[753] Fix | Delete
return $this->setError(elFinder::ERROR_LOCKED, $this->_path($path));
[754] Fix | Delete
}
[755] Fix | Delete
[756] Fix | Delete
if ($stat['mime'] == 'directory') {
[757] Fix | Delete
if (!$recursive && !$this->_rmdir($path)) {
[758] Fix | Delete
return $this->setError(elFinder::ERROR_RM, $this->_path($path));
[759] Fix | Delete
}
[760] Fix | Delete
} else {
[761] Fix | Delete
if (!$recursive && !$this->_unlink($path)) {
[762] Fix | Delete
return $this->setError(elFinder::ERROR_RM, $this->_path($path));
[763] Fix | Delete
}
[764] Fix | Delete
}
[765] Fix | Delete
[766] Fix | Delete
$this->removed[] = $stat;
[767] Fix | Delete
[768] Fix | Delete
return true;
[769] Fix | Delete
}
[770] Fix | Delete
[771] Fix | Delete
/**
[772] Fix | Delete
* Create thumnbnail and return it's URL on success.
[773] Fix | Delete
*
[774] Fix | Delete
* @param string $path file path
[775] Fix | Delete
* @param $stat
[776] Fix | Delete
*
[777] Fix | Delete
* @return string|false
[778] Fix | Delete
* @throws ImagickException
[779] Fix | Delete
* @throws elFinderAbortException
[780] Fix | Delete
* @author Naoki Sawada
[781] Fix | Delete
*/
[782] Fix | Delete
protected function createTmb($path, $stat)
[783] Fix | Delete
{
[784] Fix | Delete
if (!$stat || !$this->canCreateTmb($path, $stat)) {
[785] Fix | Delete
return false;
[786] Fix | Delete
}
[787] Fix | Delete
[788] Fix | Delete
$name = $this->tmbname($stat);
[789] Fix | Delete
$tmb = $this->tmbPath . DIRECTORY_SEPARATOR . $name;
[790] Fix | Delete
[791] Fix | Delete
// copy image into tmbPath so some drivers does not store files on local fs
[792] Fix | Delete
if (!$data = $this->_db_getThumbnail($path)) {
[793] Fix | Delete
return false;
[794] Fix | Delete
}
[795] Fix | Delete
if (!file_put_contents($tmb, $data)) {
[796] Fix | Delete
return false;
[797] Fix | Delete
}
[798] Fix | Delete
[799] Fix | Delete
$tmbSize = $this->tmbSize;
[800] Fix | Delete
[801] Fix | Delete
if (($s = getimagesize($tmb)) == false) {
[802] Fix | Delete
return false;
[803] Fix | Delete
}
[804] Fix | Delete
[805] Fix | Delete
$result = true;
[806] Fix | Delete
[807] Fix | Delete
/* If image smaller or equal thumbnail size - just fitting to thumbnail square */
[808] Fix | Delete
if ($s[0] <= $tmbSize && $s[1] <= $tmbSize) {
[809] Fix | Delete
$result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
[810] Fix | Delete
} else {
[811] Fix | Delete
if ($this->options['tmbCrop']) {
[812] Fix | Delete
[813] Fix | Delete
/* Resize and crop if image bigger than thumbnail */
[814] Fix | Delete
if (!(($s[0] > $tmbSize && $s[1] <= $tmbSize) || ($s[0] <= $tmbSize && $s[1] > $tmbSize)) || ($s[0] > $tmbSize && $s[1] > $tmbSize)) {
[815] Fix | Delete
$result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, false, 'png');
[816] Fix | Delete
}
[817] Fix | Delete
[818] Fix | Delete
if ($result && ($s = getimagesize($tmb)) != false) {
[819] Fix | Delete
$x = $s[0] > $tmbSize ? intval(($s[0] - $tmbSize) / 2) : 0;
[820] Fix | Delete
$y = $s[1] > $tmbSize ? intval(($s[1] - $tmbSize) / 2) : 0;
[821] Fix | Delete
$result = $this->imgCrop($tmb, $tmbSize, $tmbSize, $x, $y, 'png');
[822] Fix | Delete
}
[823] Fix | Delete
} else {
[824] Fix | Delete
$result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, true, 'png');
[825] Fix | Delete
}
[826] Fix | Delete
[827] Fix | Delete
if ($result) {
[828] Fix | Delete
$result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
[829] Fix | Delete
[830] Fix | Delete
}
[831] Fix | Delete
}
[832] Fix | Delete
[833] Fix | Delete
if (!$result) {
[834] Fix | Delete
unlink($tmb);
[835] Fix | Delete
[836] Fix | Delete
return false;
[837] Fix | Delete
}
[838] Fix | Delete
[839] Fix | Delete
return $name;
[840] Fix | Delete
}
[841] Fix | Delete
[842] Fix | Delete
/**
[843] Fix | Delete
* Return thumbnail file name for required file.
[844] Fix | Delete
*
[845] Fix | Delete
* @param array $stat file stat
[846] Fix | Delete
*
[847] Fix | Delete
* @return string
[848] Fix | Delete
* @author Naoki Sawada
[849] Fix | Delete
**/
[850] Fix | Delete
protected function tmbname($stat)
[851] Fix | Delete
{
[852] Fix | Delete
$name = $this->driverId . '_';
[853] Fix | Delete
if (isset($this->options['tokens']) && is_array($this->options['tokens'])) {
[854] Fix | Delete
$name .= $this->options['tokens']['uid'];
[855] Fix | Delete
}
[856] Fix | Delete
[857] Fix | Delete
return $name . md5($stat['iid']) . $stat['ts'] . '.png';
[858] Fix | Delete
}
[859] Fix | Delete
[860] Fix | Delete
/**
[861] Fix | Delete
* Return content URL (for netmout volume driver)
[862] Fix | Delete
* If file.url == 1 requests from JavaScript client with XHR.
[863] Fix | Delete
*
[864] Fix | Delete
* @param string $hash file hash
[865] Fix | Delete
* @param array $options options array
[866] Fix | Delete
*
[867] Fix | Delete
* @return bool|string
[868] Fix | Delete
* @author Naoki Sawada
[869] Fix | Delete
*/
[870] Fix | Delete
public function getContentUrl($hash, $options = [])
[871] Fix | Delete
{
[872] Fix | Delete
if (!empty($options['onetime']) && $this->options['onetimeUrl']) {
[873] Fix | Delete
return parent::getContentUrl($hash, $options);
[874] Fix | Delete
}
[875] Fix | Delete
if (!empty($options['temporary'])) {
[876] Fix | Delete
// try make temporary file
[877] Fix | Delete
$url = parent::getContentUrl($hash, $options);
[878] Fix | Delete
if ($url) {
[879] Fix | Delete
return $url;
[880] Fix | Delete
}
[881] Fix | Delete
}
[882] Fix | Delete
$file = $this->file($hash);
[883] Fix | Delete
if (($file = $this->file($hash)) !== false && (!$file['url'] || $file['url'] == 1)) {
[884] Fix | Delete
$path = $this->decode($hash);
[885] Fix | Delete
$url = '';
[886] Fix | Delete
try {
[887] Fix | Delete
$res = $this->service->postToAPI('/sharing/list_shared_links', ['path' => $path, 'direct_only' => true])->getDecodedBody();
[888] Fix | Delete
if ($res && !empty($res['links'])) {
[889] Fix | Delete
foreach ($res['links'] as $link) {
[890] Fix | Delete
if (isset($link['link_permissions'])
[891] Fix | Delete
&& isset($link['link_permissions']['requested_visibility'])
[892] Fix | Delete
&& $link['link_permissions']['requested_visibility']['.tag'] === $this->options['publishPermission']['requested_visibility']) {
[893] Fix | Delete
$url = $link['url'];
[894] Fix | Delete
break;
[895] Fix | Delete
}
[896] Fix | Delete
}
[897] Fix | Delete
}
[898] Fix | Delete
if (!$url) {
[899] Fix | Delete
$res = $this->service->postToAPI('/sharing/create_shared_link_with_settings', ['path' => $path, 'settings' => $this->options['publishPermission']])->getDecodedBody();
[900] Fix | Delete
if (isset($res['url'])) {
[901] Fix | Delete
$url = $res['url'];
[902] Fix | Delete
}
[903] Fix | Delete
}
[904] Fix | Delete
if ($url) {
[905] Fix | Delete
$url = str_replace('www.dropbox.com', 'dl.dropboxusercontent.com', $url);
[906] Fix | Delete
$url = str_replace('?dl=0', '', $url);
[907] Fix | Delete
[908] Fix | Delete
return $url;
[909] Fix | Delete
}
[910] Fix | Delete
} catch (DropboxClientException $e) {
[911] Fix | Delete
return $this->setError('Dropbox error: ' . $e->getMessage());
[912] Fix | Delete
}
[913] Fix | Delete
}
[914] Fix | Delete
[915] Fix | Delete
return false;
[916] Fix | Delete
}
[917] Fix | Delete
[918] Fix | Delete
/**
[919] Fix | Delete
* Return debug info for client.
[920] Fix | Delete
*
[921] Fix | Delete
* @return array
[922] Fix | Delete
**/
[923] Fix | Delete
public function debug()
[924] Fix | Delete
{
[925] Fix | Delete
$res = parent::debug();
[926] Fix | Delete
if (!empty($this->options['netkey']) && isset($this->options['tokens']) && !empty($this->options['tokens']['uid'])) {
[927] Fix | Delete
$res['Dropbox uid'] = $this->options['tokens']['uid'];
[928] Fix | Delete
$res['access_token'] = $this->options['tokens']['access_token'];
[929] Fix | Delete
}
[930] Fix | Delete
[931] Fix | Delete
return $res;
[932] Fix | Delete
}
[933] Fix | Delete
[934] Fix | Delete
/*********************** paths/urls *************************/
[935] Fix | Delete
[936] Fix | Delete
/**
[937] Fix | Delete
* Return parent directory path.
[938] Fix | Delete
*
[939] Fix | Delete
* @param string $path file path
[940] Fix | Delete
*
[941] Fix | Delete
* @return string
[942] Fix | Delete
* @author Naoki Sawada
[943] Fix | Delete
**/
[944] Fix | Delete
protected function _dirname($path)
[945] Fix | Delete
{
[946] Fix | Delete
list($dirname) = $this->_db_splitPath($path);
[947] Fix | Delete
[948] Fix | Delete
return $dirname;
[949] Fix | Delete
}
[950] Fix | Delete
[951] Fix | Delete
/**
[952] Fix | Delete
* Return file name.
[953] Fix | Delete
*
[954] Fix | Delete
* @param string $path file path
[955] Fix | Delete
*
[956] Fix | Delete
* @return string
[957] Fix | Delete
* @author Naoki Sawada
[958] Fix | Delete
**/
[959] Fix | Delete
protected function _basename($path)
[960] Fix | Delete
{
[961] Fix | Delete
list(, $basename) = $this->_db_splitPath($path);
[962] Fix | Delete
[963] Fix | Delete
return $basename;
[964] Fix | Delete
}
[965] Fix | Delete
[966] Fix | Delete
/**
[967] Fix | Delete
* Join dir name and file name and retur full path.
[968] Fix | Delete
*
[969] Fix | Delete
* @param string $dir
[970] Fix | Delete
* @param string $name
[971] Fix | Delete
*
[972] Fix | Delete
* @return string
[973] Fix | Delete
* @author Dmitry (dio) Levashov
[974] Fix | Delete
**/
[975] Fix | Delete
protected function _joinPath($dir, $name)
[976] Fix | Delete
{
[977] Fix | Delete
return rtrim($dir, '/') . '/' . strtolower($name);
[978] Fix | Delete
}
[979] Fix | Delete
[980] Fix | Delete
/**
[981] Fix | Delete
* Return normalized path, this works the same as os.path.normpath() in Python.
[982] Fix | Delete
*
[983] Fix | Delete
* @param string $path path
[984] Fix | Delete
*
[985] Fix | Delete
* @return string
[986] Fix | Delete
* @author Naoki Sawada
[987] Fix | Delete
**/
[988] Fix | Delete
protected function _normpath($path)
[989] Fix | Delete
{
[990] Fix | Delete
return '/' . ltrim($path, '/');
[991] Fix | Delete
}
[992] Fix | Delete
[993] Fix | Delete
/**
[994] Fix | Delete
* Return file path related to root dir.
[995] Fix | Delete
*
[996] Fix | Delete
* @param string $path file path
[997] Fix | Delete
*
[998] Fix | Delete
* @return string
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function