Skip to content
Snippets Groups Projects

[RTKO] default volatile on setupOpac

Merged Sebastien ANDRE requested to merge fix_default_volatile_on_setup into master
Compare and Show latest version
2 files
+ 29
31
Preferences
Compare changes
Files
2
@@ -24,7 +24,7 @@ class Class_DigitalResource
{
use Trait_StormFileSystem;
protected ?Class_DigitalResource_ConfigProvider $_config_provider = null;
protected $_config_provider = null;
protected static ?Storm_Collection $_plugins = null;
protected static $_instance;
protected ?array $_batches = null;
@@ -87,13 +87,13 @@ class Class_DigitalResource
}
public function getConfigProvider(): Class_DigitalResource_ConfigProvider
public function getConfigProvider()
{
return $this->_config_provider ?? (new Class_DigitalResource_ConfigProvider);
}
public function setConfigProvider(?Class_DigitalResource_ConfigProvider $provider): self
public function setConfigProvider($provider): self
{
$this->_config_provider = $provider;
@@ -101,6 +101,12 @@ class Class_DigitalResource
}
public function getDocType($plugin)
{
return $plugin;
}
public function bootstrap(Zend_Controller_Front $front_controller): self
{
$this->getPlugins()->eachDo(fn($config) => $config->registerFrontController($front_controller));
@@ -455,12 +461,6 @@ class Class_DigitalResource
}
public function getDocType($plugin)
{
return $plugin;
}
protected function getPlugins(): Storm_Collection
{
if (static::$_plugins)
@@ -474,11 +474,8 @@ class Class_DigitalResource
}
public function build($class_name, $config)
public function build(string $class_name, $config)
{
if ($builder = $this->get('Builder'))
return $builder->newInstance($class_name, $config);
if (class_exists($class_name))
return new $class_name($config);
@@ -504,7 +501,7 @@ class Class_DigitalResource
if ($batch = $config->getBatch())
$batches[$this->getBatchName($config->getName())] = $this->build($batch, $config);
foreach($config->getOtherBatches() as $name => $instance)
foreach ($config->getOtherBatches() as $name => $instance)
$batches[$name] = $instance;
return $batches;
@@ -543,16 +540,20 @@ class Class_DigitalResource
class Class_DigitalResource_Wrapper {
class Class_DigitalResource_Wrapper
{
public function __construct($digital_resource, $plugin) {
public function __construct(Class_DigitalResource $digital_resource, string $plugin)
{
$this->_digital_resource = $digital_resource;
$this->_plugin = $plugin;
}
public function __call($name, $args) {
public function __call($name, $args)
{
array_unshift($args, $this->_plugin);
return call_user_func_array([$this->_digital_resource, $name], $args);
}
}
@@ -560,15 +561,19 @@ class Class_DigitalResource_Wrapper {
class Class_DigitalResource_ConfigProvider {
class Class_DigitalResource_ConfigProvider
{
protected static $_known_classes = [];
protected static array $_known_classes = [];
public function getConfig($digital_resource, $class_name, $plugin) {
if (!isset(static::$_known_classes[$class_name]))
public function getConfig(Class_DigitalResource $digital_resource,
string $class_name,
string $plugin)
{
if ( ! isset(static::$_known_classes[$class_name]))
static::$_known_classes[$class_name] = @class_exists($class_name);
if (!static::$_known_classes[$class_name])
if ( ! static::$_known_classes[$class_name])
return null;
return new $class_name(new Class_DigitalResource_Wrapper($digital_resource, $plugin));