|
@@ -78,6 +78,13 @@ class Pico
|
|
|
*/
|
|
|
protected $themesDir;
|
|
|
|
|
|
+ /**
|
|
|
+ * Boolean indicating whether Picos processing started yet
|
|
|
+ *
|
|
|
+ * @var boolean
|
|
|
+ */
|
|
|
+ protected $locked = false;
|
|
|
+
|
|
|
/**
|
|
|
* List of loaded plugins
|
|
|
*
|
|
@@ -246,8 +253,8 @@ class Pico
|
|
|
*/
|
|
|
public function run()
|
|
|
{
|
|
|
- // lock config
|
|
|
- $this->config = is_array($this->config) ? $this->config : array();
|
|
|
+ // lock Pico
|
|
|
+ $this->locked = true;
|
|
|
|
|
|
// load plugins
|
|
|
$this->loadPlugins();
|
|
@@ -421,6 +428,8 @@ class Pico
|
|
|
|
|
|
$configFile = $this->getConfigDir() . 'config.php';
|
|
|
$config = file_exists($configFile) ? require($configFile) : null;
|
|
|
+
|
|
|
+ $this->config = is_array($this->config) ? $this->config : array();
|
|
|
$this->config += is_array($config) ? $config + $defaultConfig : $defaultConfig;
|
|
|
|
|
|
if (empty($this->config['base_url'])) {
|
|
@@ -456,7 +465,7 @@ class Pico
|
|
|
*/
|
|
|
public function setConfig(array $config)
|
|
|
{
|
|
|
- if ($this->config !== null) {
|
|
|
+ if ($this->locked) {
|
|
|
throw new RuntimeException('You cannot modify Picos config after processing has started');
|
|
|
}
|
|
|
|