Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 17 |
ArchiverManager | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
42 | |
0.00% |
0 / 17 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
createInstance | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
getInstance | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 9 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Core\Archiver\ArchiverManager. | |
*/ | |
namespace Drupal\Core\Archiver; | |
use Drupal\Component\Plugin\Factory\DefaultFactory; | |
use Drupal\Core\Cache\CacheBackendInterface; | |
use Drupal\Core\Extension\ModuleHandlerInterface; | |
use Drupal\Core\Plugin\DefaultPluginManager; | |
/** | |
* Provides an Archiver plugin manager. | |
* | |
* @see \Drupal\Core\Archiver\Annotation\Archiver | |
* @see \Drupal\Core\Archiver\ArchiverInterface | |
* @see plugin_api | |
*/ | |
class ArchiverManager extends DefaultPluginManager { | |
/** | |
* Constructs a ArchiverManager object. | |
* | |
* @param \Traversable $namespaces | |
* An object that implements \Traversable which contains the root paths | |
* keyed by the corresponding namespace to look for plugin implementations. | |
* @param \Drupal\Core\Cache\CacheBackendInterface $cache_backend | |
* Cache backend instance to use. | |
* @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler | |
* The module handler to invoke the alter hook with. | |
*/ | |
public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler) { | |
parent::__construct('Plugin/Archiver', $namespaces, $module_handler, 'Drupal\Core\Archiver\ArchiverInterface', 'Drupal\Core\Archiver\Annotation\Archiver'); | |
$this->alterInfo('archiver_info'); | |
$this->setCacheBackend($cache_backend, 'archiver_info_plugins'); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function createInstance($plugin_id, array $configuration = array()) { | |
$plugin_definition = $this->getDefinition($plugin_id); | |
$plugin_class = DefaultFactory::getPluginClass($plugin_id, $plugin_definition, 'Drupal\Core\Archiver\ArchiverInterface'); | |
return new $plugin_class($configuration['filepath']); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getInstance(array $options) { | |
$filepath = $options['filepath']; | |
foreach ($this->getDefinitions() as $plugin_id => $definition) { | |
foreach ($definition['extensions'] as $extension) { | |
// Because extensions may be multi-part, such as .tar.gz, | |
// we cannot use simpler approaches like substr() or pathinfo(). | |
// This method isn't quite as clean but gets the job done. | |
// Also note that the file may not yet exist, so we cannot rely | |
// on fileinfo() or other disk-level utilities. | |
if (strrpos($filepath, '.' . $extension) === strlen($filepath) - strlen('.' . $extension)) { | |
return $this->createInstance($plugin_id, $options); | |
} | |
} | |
} | |
} | |
} |