Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

86 lines
1.8KB

  1. <?php
  2. /**
  3. * @copyright Copyright (c) 2013-2015 2amigOS! Consulting Group LLC
  4. * @link http://2amigos.us
  5. * @license http://www.opensource.org/licenses/bsd-license.php New BSD License
  6. */
  7. namespace dosamigos\leaflet;
  8. use yii\base\Component;
  9. use yii\helpers\ArrayHelper;
  10. class PluginManager extends Component
  11. {
  12. private $_plugins = [];
  13. /**
  14. * Check whether we have a plugin installed with that name previous firing up the call
  15. *
  16. * @param string $name
  17. *
  18. * @return mixed|void
  19. */
  20. public function __get($name)
  21. {
  22. if (ArrayHelper::keyExists($name, $this->getInstalledPlugins())) {
  23. return $this->getPlugin($name);
  24. }
  25. return parent::__get($name);
  26. }
  27. /**
  28. * Installs a plugin
  29. *
  30. * @param Plugin $plugin
  31. *
  32. * @return void
  33. */
  34. public function install(Plugin $plugin)
  35. {
  36. $this->_plugins[$plugin->name] = $plugin;
  37. }
  38. /**
  39. * Removes a plugin
  40. *
  41. * @param Plugin $plugin
  42. *
  43. * @return mixed|null the value of the element if found, default value otherwise
  44. */
  45. public function remove(Plugin $plugin)
  46. {
  47. return ArrayHelper::remove($this->_plugins, $plugin->name);
  48. }
  49. /**
  50. * @param \yii\web\View $view
  51. * Registers plugin bundles
  52. */
  53. public function registerAssetBundles($view)
  54. {
  55. foreach ($this->_plugins as $plugin) {
  56. $plugin->registerAssetBundle($view);
  57. }
  58. }
  59. /**
  60. * @return array of installed plugins
  61. */
  62. public function getInstalledPlugins()
  63. {
  64. return $this->_plugins;
  65. }
  66. /**
  67. * Returns an installed plugin by name
  68. *
  69. * @param string $name
  70. *
  71. * @return Plugin|null
  72. */
  73. public function getPlugin($name)
  74. {
  75. return isset($this->_plugins[$name]) ? $this->_plugins[$name] : null;
  76. }
  77. }