public static function enable() { require_once 'KokenPlugin.php'; require_once 'Contracts/KokenCache.php'; require_once 'Contracts/KokenEmail.php'; require_once 'Contracts/KokenDatabaseConfiguration.php'; require_once 'Contracts/KokenEncryptionKey.php'; require_once 'Contracts/KokenOriginalStore.php'; $root = dirname(dirname(dirname(dirname(__FILE__)))); self::scan('app/plugins', true, true); if (getenv('KOKEN_SHUTTER_AUTOLOAD')) { self::scan(getenv('KOKEN_SHUTTER_AUTOLOAD'), true, true); } $compiled = self::get_cache('plugins/compiled.cache'); if (!$compiled && strpos($_SERVER['QUERY_STRING'], 'plugins/compile') === false) { include dirname(__DIR__) . '/Utils/KokenAPI.php'; $api = new KokenAPI(); $api->get('/plugins/compile'); } $compiled = self::get_cache('plugins/compiled.cache'); Shutter::$email_provider = self::$class_map['DDI_Email']; if ($compiled) { $compiled_plugins = unserialize($compiled['data']); foreach ($compiled_plugins['plugins'] as $plugin) { self::parse($root . '/storage/plugins/' . $plugin['path'], true, false, isset($plugin['data']) ? $plugin['data'] : array()); } if (isset($compiled_plugins['info']['email_handler']) && isset(self::$class_map[$compiled_plugins['info']['email_handler']])) { self::$email_provider = self::$class_map[$compiled_plugins['info']['email_handler']]; } if (isset($compiled_plugins['info']['email_delivery_address'])) { self::$email_delivery_address = $compiled_plugins['info']['email_delivery_address']; } } }