PluginTimestampedController.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. namespace Kanboard\Plugin\UpdateNotifier\Controller;
  3. use Kanboard\Plugin\UpdateNotifier\Model\PluginTimestampedModel;
  4. use Kanboard\Core\Plugin\Directory;
  5. use Kanboard\Core\Plugin\Installer;
  6. use Kanboard\Core\Plugin\PluginInstallerException;
  7. use Kanboard\Controller\BaseController;
  8. class PluginTimestampedController extends BaseController
  9. {
  10. public function show()
  11. {
  12. $set_plugins = $this->configModel->get('plugins_are_set', 0);
  13. $availablePlugins = Directory::getInstance($this->container)->getAvailablePlugins();
  14. $installedPlugins = array();
  15. foreach ($this->pluginLoader->getPlugins() as $plugin) {
  16. $installedPlugins[$plugin->getPluginName()] = $plugin->getPluginVersion();
  17. }
  18. if ($set_plugins == 1) {
  19. foreach ($availablePlugins as $name => $value) {
  20. $this->pluginTimestampedModel->save($name);
  21. }
  22. } else {
  23. foreach ($availablePlugins as $name => $value) {
  24. $this->pluginTimestampedModel->saveWithoutTimestamp($name);
  25. }
  26. }
  27. $this->configModel->save(array('plugins_are_set' => 1));
  28. $onlyTenLatestPlugins = $this->pluginTimestampedModel->getTen();
  29. foreach ($availablePlugins as $name => $value) {
  30. if (!in_array($name, $onlyTenLatestPlugins, true)) { unset($availablePlugins[$name]); }
  31. }
  32. $this->response->html($this->helper->layout->plugin('UpdateNotifier:plugin/latest_plugins', array(
  33. 'installed_plugins' => $installedPlugins,
  34. 'available_plugins' => $availablePlugins,
  35. 'title' => t('Latest Plugins'),
  36. 'is_configured' => Installer::isConfigured(),
  37. )));
  38. }
  39. }