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
6 files
+ 88
57
Preferences
Compare changes
Files
6
@@ -20,15 +20,16 @@
*/
class Class_DigitalResource extends Class_Entity
class Class_DigitalResource
{
use Trait_StormFileSystem;
protected $_config_provider = null;
protected static ?Storm_Collection $_plugins = null;
protected static $_instance;
protected ?array $_batches = null;
public static function getInstance()
public static function getInstance(): self
{
if ( ! static::$_instance)
static::$_instance = new static;
@@ -86,6 +87,26 @@ class Class_DigitalResource extends Class_Entity
}
public function getConfigProvider()
{
return $this->_config_provider ?? (new Class_DigitalResource_ConfigProvider);
}
public function setConfigProvider($provider): self
{
$this->_config_provider = $provider;
return $this;
}
public function getDocType($plugin)
{
return $plugin;
}
public function bootstrap(Zend_Controller_Front $front_controller): self
{
$this->getPlugins()->eachDo(fn($config) => $config->registerFrontController($front_controller));
@@ -94,10 +115,10 @@ class Class_DigitalResource extends Class_Entity
}
public function enablePluginWith(string $admin_var)
public function enablePluginWith(string $admin_var): ?Class_DigitalResource_Config
{
if ( ! $config = $this->getConfigWith($admin_var))
return $this;
return null;
return $config->enablePlugin();
}
@@ -212,19 +233,13 @@ class Class_DigitalResource extends Class_Entity
}
public function hasRightAccessPlugin($plugin, $user): bool
public function hasRightAccessPlugin(string $plugin, Class_Users $user): bool
{
if ( ! $this->isPluginDocType($plugin))
return false;
if ( ! $this->hasPermissionOn($plugin, $user))
return false;
return true;
return $this->isPluginDocType($plugin) && $this->hasPermissionOn($plugin, $user);
}
public function hasPermissionOn($plugin, $user): bool
public function hasPermissionOn(string $plugin, Class_Users $user): bool
{
if ( ! $config = $this->configFor($plugin))
return false;
@@ -422,14 +437,6 @@ class Class_DigitalResource extends Class_Entity
}
protected function getConfigProvider()
{
return $this->get('ConfigProvider')
? $this->get('ConfigProvider')
: new Class_DigitalResource_ConfigProvider;
}
public function isAdminVarOn(string $plugin, string $name): bool
{
return Class_AdminVar::isModuleEnabled($this->withNamespace($plugin, $name));
@@ -454,12 +461,6 @@ class Class_DigitalResource extends Class_Entity
}
public function getDocType($plugin)
{
return $plugin;
}
protected function getPlugins(): Storm_Collection
{
if (static::$_plugins)
@@ -473,11 +474,8 @@ class Class_DigitalResource extends Class_Entity
}
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);
@@ -503,7 +501,7 @@ class Class_DigitalResource extends Class_Entity
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;
@@ -542,16 +540,20 @@ class Class_DigitalResource extends Class_Entity
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);
}
}
@@ -559,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));