diff options
| author | Frederic Guillot <fred@kanboard.net> | 2015-09-20 13:11:41 -0400 |
|---|---|---|
| committer | Frederic Guillot <fred@kanboard.net> | 2015-09-20 13:11:41 -0400 |
| commit | a0124b45f9dab8a0f7d4879d4ea147b414b25bf2 (patch) | |
| tree | 4f1a419104374591e269e9f32838ca500245fe1a /app/Core/PluginLoader.php | |
| parent | fe57edd9e87832dbd14ea8ffd2dc2f16ac1ceb6f (diff) | |
Add sub namespace for plugins
Diffstat (limited to 'app/Core/PluginLoader.php')
| -rw-r--r-- | app/Core/PluginLoader.php | 137 |
1 files changed, 0 insertions, 137 deletions
diff --git a/app/Core/PluginLoader.php b/app/Core/PluginLoader.php deleted file mode 100644 index c7c254f7..00000000 --- a/app/Core/PluginLoader.php +++ /dev/null @@ -1,137 +0,0 @@ -<?php - -namespace Core; - -use DirectoryIterator; -use PDOException; - -/** - * Plugin Loader - * - * @package core - * @author Frederic Guillot - */ -class PluginLoader extends Base -{ - /** - * Schema version table for plugins - * - * @var string - */ - const TABLE_SCHEMA = 'plugin_schema_versions'; - - /** - * Scan plugin folder and load plugins - * - * @access public - */ - public function scan() - { - if (file_exists(__DIR__.'/../../plugins')) { - $dir = new DirectoryIterator(__DIR__.'/../../plugins'); - - foreach ($dir as $fileinfo) { - if (! $fileinfo->isDot() && $fileinfo->isDir()) { - $plugin = $fileinfo->getFilename(); - $this->loadSchema($plugin); - $this->load($plugin); - } - } - } - } - - /** - * Load plugin - * - * @access public - */ - public function load($plugin) - { - $class = '\Plugin\\'.$plugin.'\\Plugin'; - $instance = new $class($this->container); - - Tool::buildDic($this->container, $instance->getClasses()); - - $instance->initialize(); - } - - /** - * Load plugin schema - * - * @access public - * @param string $plugin - */ - public function loadSchema($plugin) - { - $filename = __DIR__.'/../../plugins/'.$plugin.'/Schema/'.ucfirst(DB_DRIVER).'.php'; - - if (file_exists($filename)) { - require($filename); - $this->migrateSchema($plugin); - } - } - - /** - * Execute plugin schema migrations - * - * @access public - * @param string $plugin - */ - public function migrateSchema($plugin) - { - $last_version = constant('\Plugin\\'.$plugin.'\Schema\VERSION'); - $current_version = $this->getSchemaVersion($plugin); - - try { - - $this->db->startTransaction(); - $this->db->getDriver()->disableForeignKeys(); - - for ($i = $current_version + 1; $i <= $last_version; $i++) { - $function_name = '\Plugin\\'.$plugin.'\Schema\version_'.$i; - - if (function_exists($function_name)) { - call_user_func($function_name, $this->db->getConnection()); - } - } - - $this->db->getDriver()->enableForeignKeys(); - $this->db->closeTransaction(); - $this->setSchemaVersion($plugin, $i - 1); - } - catch (PDOException $e) { - $this->db->cancelTransaction(); - $this->db->getDriver()->enableForeignKeys(); - die('Unable to migrate schema for the plugin: '.$plugin.' => '.$e->getMessage()); - } - } - - /** - * Get current plugin schema version - * - * @access public - * @param string $plugin - * @return integer - */ - public function getSchemaVersion($plugin) - { - return (int) $this->db->table(self::TABLE_SCHEMA)->eq('plugin', strtolower($plugin))->findOneColumn('version'); - } - - /** - * Save last plugin schema version - * - * @access public - * @param string $plugin - * @param integer $version - * @return boolean - */ - public function setSchemaVersion($plugin, $version) - { - $dictionary = array( - strtolower($plugin) => $version - ); - - return $this->db->getDriver()->upsert(self::TABLE_SCHEMA, 'plugin', 'version', $dictionary); - } -} |
