Я использую elfinder и у меня проблема. Я хочу получить текущий каталог в elfinder, но не могу.
Редакция:
это мой разъем. состоят из функции my_function, которая вызывается после команд загрузки, переименования или mkdir, и я хочу получить путь к загруженным файлам в указанном месте:
<?php
error_reporting(0); // Set E_ALL for debuging
include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'elFinderConnector.class.php';
include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'elFinder.class.php';
include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'elFinderVolumeDriver.class.php';
include_once dirname(__FILE__).DIRECTORY_SEPARATOR.'elFinderVolumeLocalFileSystem.class.php';
function access($attr, $path, $data, $volume) {
return strpos(basename($path), '.') === 0 // if file/folder begins with '.' (dot)
? !($attr == 'read' || $attr == 'write') // set read+write to false, other (locked+hidden) set to true
: null; // else elFinder decide it itself
}function my_function($cmd, $result, $args, $elfinder)
{
// how to get current path here?
}
$opts = array(
'bind' => array('upload rename mkdir' => 'my_function'),
// 'debug' => true,
'roots' => array(
array(
'driver' => 'LocalFileSystem', // driver for accessing file system (REQUIRED)
'path' => '../files/', // path to files (REQUIRED)
'URL' => dirname($_SERVER['PHP_SELF']) . '/../files/', // URL to files (REQUIRED)
'accessControl' => 'access' // disable and hide dot starting files (OPTIONAL)
),
)
);
// run elFinder
$connector = new elFinderConnector(new elFinder($opts));
$connector->run();
Вы можете получить элементы URL.
function my_function($cmd, $result, $args, $elfinder)
{
// how to get current path here?
foreach ($result['added'] as $file) {
if (!empty($file['url']) && $file['url'] != 1) {
$url = $file['url'];
}
}
}
или сделать присущий класс elFinderVolumeMyLocalFileSystem
class elFinderVolumeMyLocalFileSystem extends elFinderVolumeLocalFileSystem
{
public function decode($hash) {
return parent::decode($hash);
}
}
function my_function($cmd, $result, $args, $elfinder)
{
// how to get current path here?
foreach ($result['added'] as $file) {
if ($volume = $elfinder->getVolume($file['hash'])) {
$dir = $volume->decode($file['phash']);
}
}
}
$opts = array(
'bind' => array('upload rename mkdir' => 'my_function'),
// 'debug' => true,
'roots' => array(
array(
'driver' => 'MyLocalFileSystem', // driver for accessing file system (REQUIRED)
'path' => '../files/', // path to files (REQUIRED)
'URL' => dirname($_SERVER['PHP_SELF']) . '/../files/', // URL to files (REQUIRED)
'accessControl' => 'access' // disable and hide dot starting files (OPTIONAL)
),
)
);
Других решений пока нет …