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: elFinderVolumeGoogleDrive.class.php
if ($this->options['path'] == 'root') {
[1000] Fix | Delete
$this->options['path'] = '/';
[1001] Fix | Delete
}
[1002] Fix | Delete
$this->root = $this->options['path'] = $this->_normpath($this->options['path']);
[1003] Fix | Delete
[1004] Fix | Delete
if (empty($this->options['alias'])) {
[1005] Fix | Delete
if ($this->needOnline) {
[1006] Fix | Delete
$this->options['root'] = ($this->options['root'] === '')? $this->_gd_getNameByPath('root') : $this->options['root'];
[1007] Fix | Delete
$this->options['alias'] = ($this->options['path'] === '/') ? $this->options['root'] : sprintf($this->options['gdAlias'], $this->_gd_getNameByPath($this->options['path']));
[1008] Fix | Delete
if (!empty($this->options['netkey'])) {
[1009] Fix | Delete
elFinder::$instance->updateNetVolumeOption($this->options['netkey'], 'alias', $this->options['alias']);
[1010] Fix | Delete
}
[1011] Fix | Delete
} else {
[1012] Fix | Delete
$this->options['root'] = ($this->options['root'] === '')? 'GoogleDrive' : $this->options['root'];
[1013] Fix | Delete
$this->options['alias'] = $this->options['root'];
[1014] Fix | Delete
}
[1015] Fix | Delete
}
[1016] Fix | Delete
[1017] Fix | Delete
$this->rootName = isset($this->options['alias'])? $this->options['alias'] : 'GoogleDrive';
[1018] Fix | Delete
[1019] Fix | Delete
if (!empty($this->options['tmpPath'])) {
[1020] Fix | Delete
if ((is_dir($this->options['tmpPath']) || mkdir($this->options['tmpPath'])) && is_writable($this->options['tmpPath'])) {
[1021] Fix | Delete
$this->tmp = $this->options['tmpPath'];
[1022] Fix | Delete
}
[1023] Fix | Delete
}
[1024] Fix | Delete
[1025] Fix | Delete
if (!$this->tmp && ($tmp = elFinder::getStaticVar('commonTempPath'))) {
[1026] Fix | Delete
$this->tmp = $tmp;
[1027] Fix | Delete
}
[1028] Fix | Delete
[1029] Fix | Delete
// This driver dose not support `syncChkAsTs`
[1030] Fix | Delete
$this->options['syncChkAsTs'] = false;
[1031] Fix | Delete
[1032] Fix | Delete
// 'lsPlSleep' minmum 10 sec
[1033] Fix | Delete
$this->options['lsPlSleep'] = max(10, $this->options['lsPlSleep']);
[1034] Fix | Delete
[1035] Fix | Delete
if ($this->options['useGoogleTmb']) {
[1036] Fix | Delete
$this->options['tmbURL'] = 'https://';
[1037] Fix | Delete
$this->options['tmbPath'] = '';
[1038] Fix | Delete
}
[1039] Fix | Delete
[1040] Fix | Delete
// enable command archive
[1041] Fix | Delete
$this->options['useRemoteArchive'] = true;
[1042] Fix | Delete
[1043] Fix | Delete
return true;
[1044] Fix | Delete
}
[1045] Fix | Delete
[1046] Fix | Delete
/**
[1047] Fix | Delete
* Configure after successfull mount.
[1048] Fix | Delete
*
[1049] Fix | Delete
* @author Dmitry (dio) Levashov
[1050] Fix | Delete
**/
[1051] Fix | Delete
protected function configure()
[1052] Fix | Delete
{
[1053] Fix | Delete
parent::configure();
[1054] Fix | Delete
[1055] Fix | Delete
// fallback of $this->tmp
[1056] Fix | Delete
if (!$this->tmp && $this->tmbPathWritable) {
[1057] Fix | Delete
$this->tmp = $this->tmbPath;
[1058] Fix | Delete
}
[1059] Fix | Delete
[1060] Fix | Delete
if ($this->needOnline && $this->isMyReload()) {
[1061] Fix | Delete
$this->_gd_getDirectoryData(false);
[1062] Fix | Delete
}
[1063] Fix | Delete
}
[1064] Fix | Delete
[1065] Fix | Delete
/*********************************************************************/
[1066] Fix | Delete
/* FS API */
[1067] Fix | Delete
/*********************************************************************/
[1068] Fix | Delete
[1069] Fix | Delete
/**
[1070] Fix | Delete
* Close opened connection.
[1071] Fix | Delete
*
[1072] Fix | Delete
* @author Dmitry (dio) Levashov
[1073] Fix | Delete
**/
[1074] Fix | Delete
public function umount()
[1075] Fix | Delete
{
[1076] Fix | Delete
}
[1077] Fix | Delete
[1078] Fix | Delete
/**
[1079] Fix | Delete
* Cache dir contents.
[1080] Fix | Delete
*
[1081] Fix | Delete
* @param string $path dir path
[1082] Fix | Delete
*
[1083] Fix | Delete
* @return array
[1084] Fix | Delete
* @author Dmitry Levashov
[1085] Fix | Delete
*/
[1086] Fix | Delete
protected function cacheDir($path)
[1087] Fix | Delete
{
[1088] Fix | Delete
$this->dirsCache[$path] = [];
[1089] Fix | Delete
$hasDir = false;
[1090] Fix | Delete
[1091] Fix | Delete
list(, $pid) = $this->_gd_splitPath($path);
[1092] Fix | Delete
[1093] Fix | Delete
$opts = [
[1094] Fix | Delete
'fields' => self::FETCHFIELDS_LIST,
[1095] Fix | Delete
'q' => sprintf('trashed=false and "%s" in parents', $pid),
[1096] Fix | Delete
];
[1097] Fix | Delete
[1098] Fix | Delete
$res = $this->_gd_query($opts);
[1099] Fix | Delete
[1100] Fix | Delete
$mountPath = $this->_normpath($path . '/');
[1101] Fix | Delete
[1102] Fix | Delete
if ($res) {
[1103] Fix | Delete
foreach ($res as $raw) {
[1104] Fix | Delete
if ($stat = $this->_gd_parseRaw($raw)) {
[1105] Fix | Delete
$stat = $this->updateCache($mountPath . $raw->id, $stat);
[1106] Fix | Delete
if (empty($stat['hidden']) && $path !== $mountPath . $raw->id) {
[1107] Fix | Delete
if (!$hasDir && $stat['mime'] === 'directory') {
[1108] Fix | Delete
$hasDir = true;
[1109] Fix | Delete
}
[1110] Fix | Delete
$this->dirsCache[$path][] = $mountPath . $raw->id;
[1111] Fix | Delete
}
[1112] Fix | Delete
}
[1113] Fix | Delete
}
[1114] Fix | Delete
}
[1115] Fix | Delete
[1116] Fix | Delete
if (isset($this->sessionCache['subdirs'])) {
[1117] Fix | Delete
$this->sessionCache['subdirs'][$path] = $hasDir;
[1118] Fix | Delete
}
[1119] Fix | Delete
[1120] Fix | Delete
return $this->dirsCache[$path];
[1121] Fix | Delete
}
[1122] Fix | Delete
[1123] Fix | Delete
/**
[1124] Fix | Delete
* Recursive files search.
[1125] Fix | Delete
*
[1126] Fix | Delete
* @param string $path dir path
[1127] Fix | Delete
* @param string $q search string
[1128] Fix | Delete
* @param array $mimes
[1129] Fix | Delete
*
[1130] Fix | Delete
* @return array
[1131] Fix | Delete
* @throws elFinderAbortException
[1132] Fix | Delete
* @author Naoki Sawada
[1133] Fix | Delete
*/
[1134] Fix | Delete
protected function doSearch($path, $q, $mimes)
[1135] Fix | Delete
{
[1136] Fix | Delete
if (!empty($this->doSearchCurrentQuery['matchMethod'])) {
[1137] Fix | Delete
// has custom match method use elFinderVolumeDriver::doSearch()
[1138] Fix | Delete
return parent::doSearch($path, $q, $mimes);
[1139] Fix | Delete
}
[1140] Fix | Delete
[1141] Fix | Delete
list(, $itemId) = $this->_gd_splitPath($path);
[1142] Fix | Delete
[1143] Fix | Delete
$path = $this->_normpath($path . '/');
[1144] Fix | Delete
$result = [];
[1145] Fix | Delete
$query = '';
[1146] Fix | Delete
[1147] Fix | Delete
if ($itemId !== 'root') {
[1148] Fix | Delete
$dirs = array_merge([$itemId], $this->_gd_getDirectories($itemId));
[1149] Fix | Delete
$query = '(\'' . implode('\' in parents or \'', $dirs) . '\' in parents)';
[1150] Fix | Delete
}
[1151] Fix | Delete
[1152] Fix | Delete
$tmp = [];
[1153] Fix | Delete
if (!$mimes) {
[1154] Fix | Delete
foreach (explode(' ', $q) as $_v) {
[1155] Fix | Delete
$tmp[] = 'fullText contains \'' . str_replace('\'', '\\\'', $_v) . '\'';
[1156] Fix | Delete
}
[1157] Fix | Delete
$query .= ($query ? ' and ' : '') . implode(' and ', $tmp);
[1158] Fix | Delete
} else {
[1159] Fix | Delete
foreach ($mimes as $_v) {
[1160] Fix | Delete
$tmp[] = 'mimeType contains \'' . str_replace('\'', '\\\'', $_v) . '\'';
[1161] Fix | Delete
}
[1162] Fix | Delete
$query .= ($query ? ' and ' : '') . '(' . implode(' or ', $tmp) . ')';
[1163] Fix | Delete
}
[1164] Fix | Delete
[1165] Fix | Delete
$opts = [
[1166] Fix | Delete
'q' => sprintf('trashed=false and (%s)', $query),
[1167] Fix | Delete
];
[1168] Fix | Delete
[1169] Fix | Delete
$res = $this->_gd_query($opts);
[1170] Fix | Delete
[1171] Fix | Delete
$timeout = $this->options['searchTimeout'] ? $this->searchStart + $this->options['searchTimeout'] : 0;
[1172] Fix | Delete
foreach ($res as $raw) {
[1173] Fix | Delete
if ($timeout && $timeout < time()) {
[1174] Fix | Delete
$this->setError(elFinder::ERROR_SEARCH_TIMEOUT, $this->_path($path));
[1175] Fix | Delete
break;
[1176] Fix | Delete
}
[1177] Fix | Delete
if ($stat = $this->_gd_parseRaw($raw)) {
[1178] Fix | Delete
if ($parents = $raw->getParents()) {
[1179] Fix | Delete
foreach ($parents as $parent) {
[1180] Fix | Delete
$paths = $this->_gd_getMountPaths($parent);
[1181] Fix | Delete
foreach ($paths as $path) {
[1182] Fix | Delete
$path = ($path === '') ? '/' : (rtrim($path, '/') . '/');
[1183] Fix | Delete
if (!isset($this->cache[$path . $raw->id])) {
[1184] Fix | Delete
$stat = $this->updateCache($path . $raw->id, $stat);
[1185] Fix | Delete
} else {
[1186] Fix | Delete
$stat = $this->cache[$path . $raw->id];
[1187] Fix | Delete
}
[1188] Fix | Delete
if (empty($stat['hidden'])) {
[1189] Fix | Delete
$stat['path'] = $this->_path($path) . $stat['name'];
[1190] Fix | Delete
$result[] = $stat;
[1191] Fix | Delete
}
[1192] Fix | Delete
}
[1193] Fix | Delete
}
[1194] Fix | Delete
}
[1195] Fix | Delete
}
[1196] Fix | Delete
}
[1197] Fix | Delete
[1198] Fix | Delete
return $result;
[1199] Fix | Delete
}
[1200] Fix | Delete
[1201] Fix | Delete
/**
[1202] Fix | Delete
* Copy file/recursive copy dir only in current volume.
[1203] Fix | Delete
* Return new file path or false.
[1204] Fix | Delete
*
[1205] Fix | Delete
* @param string $src source path
[1206] Fix | Delete
* @param string $dst destination dir path
[1207] Fix | Delete
* @param string $name new file name (optionaly)
[1208] Fix | Delete
*
[1209] Fix | Delete
* @return string|false
[1210] Fix | Delete
* @author Dmitry (dio) Levashov
[1211] Fix | Delete
* @author Naoki Sawada
[1212] Fix | Delete
**/
[1213] Fix | Delete
protected function copy($src, $dst, $name)
[1214] Fix | Delete
{
[1215] Fix | Delete
$this->clearcache();
[1216] Fix | Delete
$res = $this->_gd_getFile($src);
[1217] Fix | Delete
if ($res['mimeType'] == self::DIRMIME) {
[1218] Fix | Delete
$newDir = $this->_mkdir($dst, $name);
[1219] Fix | Delete
if ($newDir) {
[1220] Fix | Delete
list(, $itemId) = $this->_gd_splitPath($newDir);
[1221] Fix | Delete
list(, $srcId) = $this->_gd_splitPath($src);
[1222] Fix | Delete
$path = $this->_joinPath($dst, $itemId);
[1223] Fix | Delete
$opts = [
[1224] Fix | Delete
'q' => sprintf('trashed=false and "%s" in parents', $srcId),
[1225] Fix | Delete
];
[1226] Fix | Delete
[1227] Fix | Delete
$res = $this->_gd_query($opts);
[1228] Fix | Delete
foreach ($res as $raw) {
[1229] Fix | Delete
$raw['mimeType'] == self::DIRMIME ? $this->copy($src . '/' . $raw['id'], $path, $raw['name']) : $this->_copy($src . '/' . $raw['id'], $path, $raw['name']);
[1230] Fix | Delete
}
[1231] Fix | Delete
[1232] Fix | Delete
$ret = $this->_joinPath($dst, $itemId);
[1233] Fix | Delete
$this->added[] = $this->stat($ret);
[1234] Fix | Delete
} else {
[1235] Fix | Delete
$ret = $this->setError(elFinder::ERROR_COPY, $this->_path($src));
[1236] Fix | Delete
}
[1237] Fix | Delete
} else {
[1238] Fix | Delete
if ($itemId = $this->_copy($src, $dst, $name)) {
[1239] Fix | Delete
$ret = $this->_joinPath($dst, $itemId);
[1240] Fix | Delete
$this->added[] = $this->stat($ret);
[1241] Fix | Delete
} else {
[1242] Fix | Delete
$ret = $this->setError(elFinder::ERROR_COPY, $this->_path($src));
[1243] Fix | Delete
}
[1244] Fix | Delete
}
[1245] Fix | Delete
return $ret;
[1246] Fix | Delete
}
[1247] Fix | Delete
[1248] Fix | Delete
/**
[1249] Fix | Delete
* Remove file/ recursive remove dir.
[1250] Fix | Delete
*
[1251] Fix | Delete
* @param string $path file path
[1252] Fix | Delete
* @param bool $force try to remove even if file locked
[1253] Fix | Delete
* @param bool $recursive
[1254] Fix | Delete
*
[1255] Fix | Delete
* @return bool
[1256] Fix | Delete
* @throws elFinderAbortException
[1257] Fix | Delete
* @author Dmitry (dio) Levashov
[1258] Fix | Delete
* @author Naoki Sawada
[1259] Fix | Delete
*/
[1260] Fix | Delete
protected function remove($path, $force = false, $recursive = false)
[1261] Fix | Delete
{
[1262] Fix | Delete
$stat = $this->stat($path);
[1263] Fix | Delete
$stat['realpath'] = $path;
[1264] Fix | Delete
$this->rmTmb($stat);
[1265] Fix | Delete
$this->clearcache();
[1266] Fix | Delete
[1267] Fix | Delete
if (empty($stat)) {
[1268] Fix | Delete
return $this->setError(elFinder::ERROR_RM, $this->_path($path), elFinder::ERROR_FILE_NOT_FOUND);
[1269] Fix | Delete
}
[1270] Fix | Delete
[1271] Fix | Delete
if (!$force && !empty($stat['locked'])) {
[1272] Fix | Delete
return $this->setError(elFinder::ERROR_LOCKED, $this->_path($path));
[1273] Fix | Delete
}
[1274] Fix | Delete
[1275] Fix | Delete
if ($stat['mime'] == 'directory') {
[1276] Fix | Delete
if (!$recursive && !$this->_rmdir($path)) {
[1277] Fix | Delete
return $this->setError(elFinder::ERROR_RM, $this->_path($path));
[1278] Fix | Delete
}
[1279] Fix | Delete
} else {
[1280] Fix | Delete
if (!$recursive && !$this->_unlink($path)) {
[1281] Fix | Delete
return $this->setError(elFinder::ERROR_RM, $this->_path($path));
[1282] Fix | Delete
}
[1283] Fix | Delete
}
[1284] Fix | Delete
[1285] Fix | Delete
$this->removed[] = $stat;
[1286] Fix | Delete
[1287] Fix | Delete
return true;
[1288] Fix | Delete
}
[1289] Fix | Delete
[1290] Fix | Delete
/**
[1291] Fix | Delete
* Create thumnbnail and return it's URL on success.
[1292] Fix | Delete
*
[1293] Fix | Delete
* @param string $path file path
[1294] Fix | Delete
* @param $stat
[1295] Fix | Delete
*
[1296] Fix | Delete
* @return string|false
[1297] Fix | Delete
* @throws ImagickException
[1298] Fix | Delete
* @throws elFinderAbortException
[1299] Fix | Delete
* @author Dmitry (dio) Levashov
[1300] Fix | Delete
* @author Naoki Sawada
[1301] Fix | Delete
*/
[1302] Fix | Delete
protected function createTmb($path, $stat)
[1303] Fix | Delete
{
[1304] Fix | Delete
if (!$stat || !$this->canCreateTmb($path, $stat)) {
[1305] Fix | Delete
return false;
[1306] Fix | Delete
}
[1307] Fix | Delete
[1308] Fix | Delete
$name = $this->tmbname($stat);
[1309] Fix | Delete
$tmb = $this->tmbPath . DIRECTORY_SEPARATOR . $name;
[1310] Fix | Delete
[1311] Fix | Delete
// copy image into tmbPath so some drivers does not store files on local fs
[1312] Fix | Delete
if (!$data = $this->_gd_getThumbnail($path)) {
[1313] Fix | Delete
return false;
[1314] Fix | Delete
}
[1315] Fix | Delete
if (!file_put_contents($tmb, $data)) {
[1316] Fix | Delete
return false;
[1317] Fix | Delete
}
[1318] Fix | Delete
[1319] Fix | Delete
$result = false;
[1320] Fix | Delete
[1321] Fix | Delete
$tmbSize = $this->tmbSize;
[1322] Fix | Delete
[1323] Fix | Delete
if (($s = getimagesize($tmb)) == false) {
[1324] Fix | Delete
return false;
[1325] Fix | Delete
}
[1326] Fix | Delete
[1327] Fix | Delete
/* If image smaller or equal thumbnail size - just fitting to thumbnail square */
[1328] Fix | Delete
if ($s[0] <= $tmbSize && $s[1] <= $tmbSize) {
[1329] Fix | Delete
$result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
[1330] Fix | Delete
} else {
[1331] Fix | Delete
if ($this->options['tmbCrop']) {
[1332] Fix | Delete
[1333] Fix | Delete
/* Resize and crop if image bigger than thumbnail */
[1334] Fix | Delete
if (!(($s[0] > $tmbSize && $s[1] <= $tmbSize) || ($s[0] <= $tmbSize && $s[1] > $tmbSize)) || ($s[0] > $tmbSize && $s[1] > $tmbSize)) {
[1335] Fix | Delete
$result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, false, 'png');
[1336] Fix | Delete
}
[1337] Fix | Delete
[1338] Fix | Delete
if (($s = getimagesize($tmb)) != false) {
[1339] Fix | Delete
$x = $s[0] > $tmbSize ? intval(($s[0] - $tmbSize) / 2) : 0;
[1340] Fix | Delete
$y = $s[1] > $tmbSize ? intval(($s[1] - $tmbSize) / 2) : 0;
[1341] Fix | Delete
$result = $this->imgCrop($tmb, $tmbSize, $tmbSize, $x, $y, 'png');
[1342] Fix | Delete
}
[1343] Fix | Delete
} else {
[1344] Fix | Delete
$result = $this->imgResize($tmb, $tmbSize, $tmbSize, true, true, 'png');
[1345] Fix | Delete
}
[1346] Fix | Delete
[1347] Fix | Delete
$result = $this->imgSquareFit($tmb, $tmbSize, $tmbSize, 'center', 'middle', $this->options['tmbBgColor'], 'png');
[1348] Fix | Delete
}
[1349] Fix | Delete
[1350] Fix | Delete
if (!$result) {
[1351] Fix | Delete
unlink($tmb);
[1352] Fix | Delete
[1353] Fix | Delete
return false;
[1354] Fix | Delete
}
[1355] Fix | Delete
[1356] Fix | Delete
return $name;
[1357] Fix | Delete
}
[1358] Fix | Delete
[1359] Fix | Delete
/**
[1360] Fix | Delete
* Return thumbnail file name for required file.
[1361] Fix | Delete
*
[1362] Fix | Delete
* @param array $stat file stat
[1363] Fix | Delete
*
[1364] Fix | Delete
* @return string
[1365] Fix | Delete
* @author Dmitry (dio) Levashov
[1366] Fix | Delete
**/
[1367] Fix | Delete
protected function tmbname($stat)
[1368] Fix | Delete
{
[1369] Fix | Delete
return $this->netMountKey . $stat['iid'] . $stat['ts'] . '.png';
[1370] Fix | Delete
}
[1371] Fix | Delete
[1372] Fix | Delete
/**
[1373] Fix | Delete
* Return content URL (for netmout volume driver)
[1374] Fix | Delete
* If file.url == 1 requests from JavaScript client with XHR.
[1375] Fix | Delete
*
[1376] Fix | Delete
* @param string $hash file hash
[1377] Fix | Delete
* @param array $options options array
[1378] Fix | Delete
*
[1379] Fix | Delete
* @return bool|string
[1380] Fix | Delete
* @author Naoki Sawada
[1381] Fix | Delete
*/
[1382] Fix | Delete
public function getContentUrl($hash, $options = [])
[1383] Fix | Delete
{
[1384] Fix | Delete
if (!empty($options['onetime']) && $this->options['onetimeUrl']) {
[1385] Fix | Delete
return parent::getContentUrl($hash, $options);
[1386] Fix | Delete
}
[1387] Fix | Delete
if (!empty($options['temporary'])) {
[1388] Fix | Delete
// try make temporary file
[1389] Fix | Delete
$url = parent::getContentUrl($hash, $options);
[1390] Fix | Delete
if ($url) {
[1391] Fix | Delete
return $url;
[1392] Fix | Delete
}
[1393] Fix | Delete
}
[1394] Fix | Delete
if (($file = $this->file($hash)) == false || !$file['url'] || $file['url'] == 1) {
[1395] Fix | Delete
$path = $this->decode($hash);
[1396] Fix | Delete
[1397] Fix | Delete
if ($this->_gd_publish($path)) {
[1398] Fix | Delete
if ($raw = $this->_gd_getFile($path)) {
[1399] Fix | Delete
return $this->_gd_getLink($raw);
[1400] Fix | Delete
}
[1401] Fix | Delete
}
[1402] Fix | Delete
}
[1403] Fix | Delete
[1404] Fix | Delete
return false;
[1405] Fix | Delete
}
[1406] Fix | Delete
[1407] Fix | Delete
/**
[1408] Fix | Delete
* Return debug info for client.
[1409] Fix | Delete
*
[1410] Fix | Delete
* @return array
[1411] Fix | Delete
**/
[1412] Fix | Delete
public function debug()
[1413] Fix | Delete
{
[1414] Fix | Delete
$res = parent::debug();
[1415] Fix | Delete
if (!empty($this->options['netkey']) && empty($this->options['refresh_token']) && $this->options['access_token'] && isset($this->options['access_token']['refresh_token'])) {
[1416] Fix | Delete
$res['refresh_token'] = $this->options['access_token']['refresh_token'];
[1417] Fix | Delete
}
[1418] Fix | Delete
[1419] Fix | Delete
return $res;
[1420] Fix | Delete
}
[1421] Fix | Delete
[1422] Fix | Delete
/*********************** paths/urls *************************/
[1423] Fix | Delete
[1424] Fix | Delete
/**
[1425] Fix | Delete
* Return parent directory path.
[1426] Fix | Delete
*
[1427] Fix | Delete
* @param string $path file path
[1428] Fix | Delete
*
[1429] Fix | Delete
* @return string
[1430] Fix | Delete
* @author Dmitry (dio) Levashov
[1431] Fix | Delete
**/
[1432] Fix | Delete
protected function _dirname($path)
[1433] Fix | Delete
{
[1434] Fix | Delete
list(, , $parent) = $this->_gd_splitPath($path);
[1435] Fix | Delete
[1436] Fix | Delete
return $this->_normpath($parent);
[1437] Fix | Delete
}
[1438] Fix | Delete
[1439] Fix | Delete
/**
[1440] Fix | Delete
* Return file name.
[1441] Fix | Delete
*
[1442] Fix | Delete
* @param string $path file path
[1443] Fix | Delete
*
[1444] Fix | Delete
* @return string
[1445] Fix | Delete
* @author Dmitry (dio) Levashov
[1446] Fix | Delete
**/
[1447] Fix | Delete
protected function _basename($path)
[1448] Fix | Delete
{
[1449] Fix | Delete
list(, $basename) = $this->_gd_splitPath($path);
[1450] Fix | Delete
[1451] Fix | Delete
return $basename;
[1452] Fix | Delete
}
[1453] Fix | Delete
[1454] Fix | Delete
/**
[1455] Fix | Delete
* Join dir name and file name and retur full path.
[1456] Fix | Delete
*
[1457] Fix | Delete
* @param string $dir
[1458] Fix | Delete
* @param string $name
[1459] Fix | Delete
*
[1460] Fix | Delete
* @return string
[1461] Fix | Delete
* @author Dmitry (dio) Levashov
[1462] Fix | Delete
**/
[1463] Fix | Delete
protected function _joinPath($dir, $name)
[1464] Fix | Delete
{
[1465] Fix | Delete
return $this->_normpath($dir . '/' . str_replace('/', '\\/', $name));
[1466] Fix | Delete
}
[1467] Fix | Delete
[1468] Fix | Delete
/**
[1469] Fix | Delete
* Return normalized path, this works the same as os.path.normpath() in Python.
[1470] Fix | Delete
*
[1471] Fix | Delete
* @param string $path path
[1472] Fix | Delete
*
[1473] Fix | Delete
* @return string
[1474] Fix | Delete
* @author Troex Nevelin
[1475] Fix | Delete
**/
[1476] Fix | Delete
protected function _normpath($path)
[1477] Fix | Delete
{
[1478] Fix | Delete
if (DIRECTORY_SEPARATOR !== '/') {
[1479] Fix | Delete
$path = str_replace(DIRECTORY_SEPARATOR, '/', $path);
[1480] Fix | Delete
}
[1481] Fix | Delete
$path = '/' . ltrim($path, '/');
[1482] Fix | Delete
[1483] Fix | Delete
return $path;
[1484] Fix | Delete
}
[1485] Fix | Delete
[1486] Fix | Delete
/**
[1487] Fix | Delete
* Return file path related to root dir.
[1488] Fix | Delete
*
[1489] Fix | Delete
* @param string $path file path
[1490] Fix | Delete
*
[1491] Fix | Delete
* @return string
[1492] Fix | Delete
* @author Dmitry (dio) Levashov
[1493] Fix | Delete
**/
[1494] Fix | Delete
protected function _relpath($path)
[1495] Fix | Delete
{
[1496] Fix | Delete
return $path;
[1497] Fix | Delete
}
[1498] Fix | Delete
[1499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function