Remove elfinder config files

pull/3890/head
Julio Montoya 5 years ago
parent bf3a2885a2
commit 0542f29451
  1. 42
      public/main/inc/lib/elfinder/connectorAction.php
  2. 358
      src/CoreBundle/Component/Editor/Connector.php
  3. 105
      src/CoreBundle/Component/Editor/Driver/Driver.php
  4. 47
      src/CoreBundle/Component/Editor/Driver/DriverInterface.php

@ -1,42 +0,0 @@
<?php
/* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Component\Editor\Connector;
use Chamilo\CoreBundle\Component\Editor\Finder;
require_once __DIR__.'/../../global.inc.php';
error_reporting(-1);
/** @var Connector $connector */
$connector = new Connector();
// Check driver list in configuration
$driverList = api_get_configuration_value('editor_driver_list');
if (empty($driverList)) {
$driverList = [
'PersonalDriver',
'CourseDriver',
//'CourseUserDriver',
//'HomeDriver'
];
$block = api_get_configuration_value('block_editor_file_manager_for_students');
$newDriverList = [];
if ($block && !api_is_allowed_to_edit()) {
foreach ($driverList as $driver) {
if ('CourseDriver' === $driver) {
continue;
}
$newDriverList[] = $driver;
}
$driverList = $newDriverList;
}
}
$connector->setDriverList($driverList);
$operations = $connector->getOperations();
// Run elFinder
$finder = new Finder($operations);
$elFinderConnector = new \elFinderConnector($finder);
$elFinderConnector->run();

@ -1,358 +0,0 @@
<?php
declare(strict_types=1);
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Component\Editor;
use Chamilo\CoreBundle\Component\Editor\Driver\Driver;
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\Session;
use Chamilo\CoreBundle\Entity\User;
use Doctrine\ORM\EntityManager;
use Symfony\Component\Routing\Router;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Translation\Translator;
use Symfony\Contracts\Translation\TranslatorInterface;
//use Symfony\Component\Security\Core\SecurityContext;
/**
* Class elFinder Connector - editor + Chamilo repository.
*/
class Connector
{
public Course $course;
public User $user;
public Session $session;
public Translator $translator;
public Router $urlGenerator;
//public $security;
public array $paths;
public EntityManager $entityManager;
public array $drivers = [];
public array $driverList = [];
public function __construct(
EntityManager $entityManager,
array $paths,
RouterInterface $urlGenerator,
TranslatorInterface $translator,
$user,
$course,
$session
) {
$this->paths = [
//'root_sys' => api_get_path(SYS_PATH),
//'sys_root' => api_get_path(SYS_PATH), // just an alias
//'sys_course_path' => api_get_path(SYS_COURSE_PATH),
// 'sys_config_path' => $app['path.config'],
'path.temp' => api_get_path(SYS_ARCHIVE_PATH),
//'sys_log_path' => $app['path.logs']
];
$this->entityManager = $entityManager;
//$this->paths = $paths;
$this->urlGenerator = $urlGenerator;
$this->translator = $translator;
//$this->security = $security;
$this->user = $user;
$this->course = $course;
$this->session = $session;
$this->driverList = $this->getDefaultDriverList();
}
public function getDriverList(): array
{
return $this->driverList;
}
/**
* Available driver list.
*
* @param array $list
*/
public function setDriverList($list): void
{
$this->driverList = $list;
}
/**
* @param Driver $driver
*/
public function addDriver($driver): void
{
if (!empty($driver)) {
$this->drivers[$driver->getName()] = $driver;
}
}
public function getDrivers(): array
{
return $this->drivers;
}
/**
* @param string $driverName
*
* @return Driver
*/
public function getDriver($driverName)
{
if (isset($this->drivers[$driverName])) {
return $this->drivers[$driverName];
}
return null;
}
/**
* @param bool $processDefaultValues
*
* @return array
*/
public function getRoots($processDefaultValues = true)
{
$roots = [];
$drivers = $this->getDrivers();
/** @var Driver $driver */
foreach ($drivers as $driver) {
if ($processDefaultValues) {
$plugin = [
'chamilo' => [
'driverName' => $driver->getName(),
'connector' => $this,
],
];
$configuration = $driver->getConfiguration();
$driver->setup();
$configuration['plugin'] = $plugin;
$root = $this->updateWithDefaultValues($configuration);
}
$roots[] = $root;
}
return $roots;
}
/**
* Merges the default driver settings.
*
* @param array $driver
*
* @return array
*/
public function updateWithDefaultValues($driver)
{
if (empty($driver) || !isset($driver['driver'])) {
return [];
}
$defaultDriver = $this->getDefaultDriverSettings();
if (isset($driver['attributes'])) {
$attributes = array_merge($defaultDriver['attributes'], $driver['attributes']);
} else {
$attributes = $defaultDriver['attributes'];
}
$driverUpdated = array_merge($defaultDriver, $driver);
$driverUpdated['driver'] = 'Chamilo\CoreBundle\Component\Editor\Driver\\'.$driver['driver'];
$driverUpdated['attributes'] = $attributes;
return $driverUpdated;
}
/**
* Get default driver settings.
*/
public function getDefaultDriverSettings(): array
{
// for more options: https://github.com/Studio-42/elFinder/wiki/Connector-configuration-options
return [
'uploadOverwrite' => false,
// Replace files on upload or give them new name if the same file was uploaded
//'acceptedName' =>
'uploadAllow' => [
'image',
'audio',
'video',
'text/html',
'text/csv',
'application/pdf',
'application/postscript',
'application/vnd.ms-word',
'application/vnd.ms-excel',
'application/vnd.ms-powerpoint',
'application/pdf',
'application/xml',
'application/vnd.oasis.opendocument.text',
'application/x-shockwave-flash',
'application/vnd.adobe.flash.movie',
],
// allow files
//'uploadDeny' => array('text/x-php'),
'uploadOrder' => ['allow'],
// only executes allow
'disabled' => [
'duplicate',
'rename',
'mkdir',
'mkfile',
'copy',
'cut',
'paste',
'edit',
'extract',
'archive',
'help',
'resize',
],
'attributes' => [
// Hiding dangerous files
[
'pattern' => '/\.(php|py|pl|sh|xml)$/i',
'read' => false,
'write' => false,
'hidden' => true,
'locked' => false,
],
// Hiding _DELETED_ files
[
'pattern' => '/_DELETED_/',
'read' => false,
'write' => false,
'hidden' => true,
'locked' => false,
],
// Hiding thumbnails
[
'pattern' => '/.tmb/',
'read' => false,
'write' => false,
'hidden' => true,
'locked' => false,
],
[
'pattern' => '/.thumbs/',
'read' => false,
'write' => false,
'hidden' => true,
'locked' => false,
],
[
'pattern' => '/.quarantine/',
'read' => false,
'write' => false,
'hidden' => true,
'locked' => false,
],
],
];
}
public function getOperations(): array
{
//https://github.com/Studio-42/elFinder/wiki/Connector-configuration-options-2.1
$opts = [
//'debug' => true,
'bind' => [
'upload rm mkdir' => [$this, 'manageCommands'],
],
'sessionCloseEarlier' => false,
];
$this->setDrivers();
$opts['roots'] = $this->getRoots();
return $opts;
}
/**
* Set drivers from list.
*/
public function setDrivers(): void
{
foreach ($this->getDriverList() as $driverName) {
$this->setDriver($driverName);
}
}
/**
* Sets a driver.
*
* @param string $driverName
*/
public function setDriver($driverName): void
{
$driverClass = $this->getDriverClass($driverName);
/** @var Driver $driver */
$driver = new $driverClass();
$driver->setName($driverName);
$driver->setConnector($this);
$this->addDriver($driver);
}
/**
* Simple function to demonstrate how to control file access using "accessControl" callback.
* This method will disable accessing files/folders starting from '.' (dot).
*
* @param string $attr attribute name (read|write|locked|hidden)
* @param string $path file path relative to volume root directory started with directory separator
* @param string $data
* @param string $volume
*
* @return null|bool
*/
public function access($attr, $path, $data, $volume)
{
return 0 === strpos(basename($path), '.') // if file/folder begins with '.' (dot)
? !('read' === $attr || 'write' === $attr) // set read+write to false, other (locked+hidden) set to true
: null; // else elFinder decide it itself
}
/**
* @param string $cmd
* @param array $result
* @param array $args
* @param Finder $elFinder
*/
public function manageCommands($cmd, $result, $args, $elFinder): void
{
}
/**
* Available driver list.
*
* @return array
*/
private function getDefaultDriverList()
{
return [
'CourseDriver',
'CourseUserDriver',
'DropBoxDriver',
'HomeDriver',
'PersonalDriver',
];
}
/**
* @param string $driver
*
* @return string
*/
private function getDriverClass($driver)
{
return 'Chamilo\CoreBundle\Component\Editor\Driver\\'.$driver;
}
}

@ -1,105 +0,0 @@
<?php
declare(strict_types=1);
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Component\Editor\Driver;
use Chamilo\CoreBundle\Component\Editor\Connector;
use elFinder;
use elFinderVolumeLocalFileSystem;
class Driver extends elFinderVolumeLocalFileSystem
{
public string $name;
public Connector $connector;
/**
* Gets driver name.
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Gets driver name.
*
* @param string $name
*/
public function setName($name): void
{
$this->name = $name;
}
public function setConnector(Connector $connector): void
{
$this->connector = $connector;
}
/**
* @return array
*/
public function getAppPluginOptions()
{
return $this->getOptionsPlugin('chamilo');
}
/**
* @return Connector
*/
public function setConnectorFromPlugin()
{
$options = $this->getAppPluginOptions();
$this->setConnector($options['connector']);
}
/**
* This is a copy of rename function only to be used when uploading a file
* {@inheritdoc}
*/
public function customRename($hash, $name)
{
if (!$this->nameAccepted($name)) {
return $this->setError(elFinder::ERROR_INVALID_NAME, $name);
}
if (!($file = $this->file($hash))) {
return $this->setError(elFinder::ERROR_FILE_NOT_FOUND);
}
if ($name === $file['name']) {
return $file;
}
if (!empty($file['locked'])) {
return $this->setError(elFinder::ERROR_LOCKED, $file['name']);
}
$path = $this->decode($hash);
$dir = $this->dirnameCE($path);
$stat = $this->stat($this->joinPathCE($dir, $name));
if ($stat) {
return $this->setError(elFinder::ERROR_EXISTS, $name);
}
if (!$this->allowCreate($dir, $name, ('directory' === $file['mime']))) {
return $this->setError(elFinder::ERROR_PERM_DENIED);
}
$this->rmTmb($file); // remove old name tmbs, we cannot do this after dir move
if ($path = $this->convEncOut($this->_move($this->convEncIn($path), $this->convEncIn($dir), $this->convEncIn($name)))) {
$this->clearcache();
return $this->stat($path);
}
return false;
}
}

@ -1,47 +0,0 @@
<?php
declare(strict_types=1);
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Component\Editor\Driver;
use Chamilo\CoreBundle\Component\Editor\Connector;
interface DriverInterface
{
public function setup();
/**
* Gets driver name.
*
* @return string
*/
public function getName();
/**
* Gets driver name.
*
* @param string $name
*/
public function setName($name);
public function setConnector(Connector $connector);
/**
* @return array
*/
public function getAppPluginOptions();
/**
* @return Connector
*/
public function setConnectorFromPlugin();
/**
* @return bool
*/
public function allow();
public function getConfiguration();
}
Loading…
Cancel
Save