mirror of https://gitee.com/zorlan/skycaiji
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
3.3 KiB
114 lines
3.3 KiB
<?php
|
|
|
|
/**
|
|
* elFinder Plugin Abstract
|
|
*
|
|
* @package elfinder
|
|
* @author Naoki Sawada
|
|
* @license New BSD
|
|
*/
|
|
class elFinderPlugin
|
|
{
|
|
|
|
/**
|
|
* This plugin's options
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $opts = array();
|
|
|
|
/**
|
|
* Get current volume's options
|
|
*
|
|
* @param object $volume
|
|
*
|
|
* @return array options
|
|
*/
|
|
protected function getCurrentOpts($volume)
|
|
{
|
|
$name = substr(get_class($this), 14); // remove "elFinderPlugin"
|
|
$opts = $this->opts;
|
|
if (is_object($volume)) {
|
|
$volOpts = $volume->getOptionsPlugin($name);
|
|
if (is_array($volOpts)) {
|
|
$opts = array_merge($opts, $volOpts);
|
|
}
|
|
}
|
|
return $opts;
|
|
}
|
|
|
|
/**
|
|
* Is enabled with options
|
|
*
|
|
* @param array $opts
|
|
* @param elFinder $elfinder
|
|
*
|
|
* @return boolean
|
|
*/
|
|
protected function iaEnabled($opts, $elfinder = null)
|
|
{
|
|
if (!$opts['enable']) {
|
|
return false;
|
|
}
|
|
|
|
// check post var 'contentSaveId' to disable this plugin
|
|
if ($elfinder && !empty($opts['disableWithContentSaveId'])) {
|
|
$session = $elfinder->getSession();
|
|
$urlContentSaveIds = $session->get('urlContentSaveIds', array());
|
|
if (!empty(elFinder::$currentArgs['contentSaveId']) && ($contentSaveId = elFinder::$currentArgs['contentSaveId'])) {
|
|
if (!empty($urlContentSaveIds[$contentSaveId])) {
|
|
$elfinder->removeUrlContentSaveId($contentSaveId);
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (isset($opts['onDropWith']) && !is_null($opts['onDropWith'])) {
|
|
// plugin disabled by default, enabled only if given key is pressed
|
|
if (isset($_REQUEST['dropWith']) && $_REQUEST['dropWith']) {
|
|
$onDropWith = $opts['onDropWith'];
|
|
$action = (int)$_REQUEST['dropWith'];
|
|
if (!is_array($onDropWith)) {
|
|
$onDropWith = array($onDropWith);
|
|
}
|
|
foreach ($onDropWith as $key) {
|
|
$key = (int)$key;
|
|
if (($action & $key) === $key) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
if (isset($opts['offDropWith']) && !is_null($opts['offDropWith']) && isset($_REQUEST['dropWith'])) {
|
|
// plugin enabled by default, disabled only if given key is pressed
|
|
$offDropWith = $opts['offDropWith'];
|
|
$action = (int)$_REQUEST['dropWith'];
|
|
if (!is_array($offDropWith)) {
|
|
$offDropWith = array($offDropWith);
|
|
}
|
|
$res = true;
|
|
foreach ($offDropWith as $key) {
|
|
$key = (int)$key;
|
|
if ($key === 0) {
|
|
if ($action === 0) {
|
|
$res = false;
|
|
break;
|
|
}
|
|
} else {
|
|
if (($action & $key) === $key) {
|
|
$res = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (!$res) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|