Яковлев


Проверка статуса плагина в GetSimple CMS

Разрабатывая собственные плагины и темы оформления для GetSimple CMS, периодически сталкиваюсь с требованиями заказчика по согласованию их работы с плагинами других разработчиков. Для этого, как минимум, требуется проверить статус стороннего плагина - активирован или деактивирован. Как это реализовать - зависит от разработчика, большинство из которых используют проверку существования функции из стороннего плагина по имени: если функция с заданным именем существует, значит плагин активирован. Я покажу корректный способ, использующий возможности самой системы управления контентом GetSimple CMS.

Статусы установленных в системе плагинов, хранятся в глобальной переменной $live_plugins в виде ассоциативного массива, где ключ - имя файла плагина с расширением, а значение - строка “true”, если плагин активирован, или “false”. Для проверки содержания переменной $live_plugins создайте компонент со следующим PHP кодом.

<?php
  global $live_plugins;
  echo '<code><pre>';
  var_dump($live_plugins);
  echo '</code></pre>';
?>

Теперь, зная имя файла плагина, не составляет проблемы проверить его статус.

<?php
  global $live_plugins;
  $plugin_file = 'InnovationPlugin.php';
  if (isset($live_plugins[$plugin_file]) && $live_plugins[$plugin_file] == 'true') {
    echo 'Плагин активирован';
  } else {
    echo 'Плагин деактивирован';
  }
?>

Следующий код выведет сообщение, содержащее полное название плагина, если плагин активирован, или сообщения, содержащие имя файла плагина, если плагин деактивирован или не установлен.

<?php
  global $live_plugins, $plugin_info;
  $plugin_file = 'InnovationPlugin.php';
  if (isset($live_plugins[$plugin_file])) {    
    if ($live_plugins[$plugin_file] == 'true') {
      $plugin_name = $plugin_info[pathinfo($plugin_file, PATHINFO_FILENAME)]['name'];
      echo "Плагин <em>$plugin_name</em> активирован";
    } else {
      echo "Плагин <em>$plugin_file</em> деактивирован";
    }
  } else {
    echo "Плагин <em>$plugin_file</em> не установлен";
  }
?>

Использование проверки статусов плагинов предотвращает возможные ошибки в работе собственных плагинов и тем оформления, исключая или добавляя зависимые от них функциональные возможности.