Ejemplo n.º 1
0
 /**
  * Удаляет плагины с сервера
  *
  * @param array $aPlugins	Список плагинов для удаления
  */
 public function Delete($aPlugins)
 {
     if (!is_array($aPlugins)) {
         $aPlugins = array($aPlugins);
     }
     $aActivePlugins = $this->GetActivePlugins();
     foreach ($aPlugins as $sPluginCode) {
         if (!is_string($sPluginCode)) {
             continue;
         }
         /**
          * Если плагин активен, деактивируем его
          */
         if (in_array($sPluginCode, $aActivePlugins)) {
             $this->Toggle($sPluginCode, 'deactivate');
         }
         /**
          * Удаляем директорию с плагином
          */
         func_rmdir($this->sPluginsDir . $sPluginCode);
     }
 }
Ejemplo n.º 2
0
/**
 * Рекурсивное удаление директории (со всем содержимым)
 *
 * @param  string $sPath
 * @return bool
 */
function func_rmdir($sPath)
{
    if (!is_dir($sPath)) {
        return true;
    }
    $sPath = rtrim($sPath, '/') . '/';
    if ($aFiles = glob($sPath . '*', GLOB_MARK)) {
        foreach ($aFiles as $sFile) {
            if (is_dir($sFile)) {
                func_rmdir($sFile);
            } else {
                @unlink($sFile);
            }
        }
    }
    if (is_dir($sPath)) {
        @rmdir($sPath);
    }
}
Ejemplo n.º 3
0
/**
 * Рекурсивное удаление директории (со всем содержимым)
 *
 * @param  string $sPath
 * @return bool
 */
function func_rmdir($sPath)
{
    if (!is_dir($sPath)) {
        return true;
    }
    $sPath = rtrim($sPath, '/');
    $aFiles = array_diff(scandir($sPath), array('.', '..'));
    foreach ($aFiles as $sFile) {
        is_dir("{$sPath}/{$sFile}") ? func_rmdir("{$sPath}/{$sFile}") : @unlink("{$sPath}/{$sFile}");
    }
    return @rmdir($sPath);
}
 /**
  * Удаляет физически плагин с сервера
  *
  * @param $sPlugin
  *
  * @return bool
  */
 public function RemovePlugin($sPlugin)
 {
     $sPlugin = strtolower($sPlugin);
     $aPluginItemsActive = $this->GetPluginsActive();
     /**
      * Если плагин активен, деактивируем его
      */
     if (in_array($sPlugin, $aPluginItemsActive)) {
         if (!$this->DeactivatePlugin($sPlugin)) {
             return false;
         }
     }
     $sClassPlugin = 'Plugin' . func_camelize($sPlugin);
     $oPlugin = new $sClassPlugin();
     /**
      * Сначала очищаем данные БД от плагина, а затем выполняем кастомный метод удаления плагина
      */
     if ($oPlugin->Remove()) {
         /**
          * Делаем откат изменений БД, которые делал плагин (откат миграций)
          */
         $this->PurgePluginUpdate($sPlugin);
         /**
          * Удаляем директорию с плагином
          */
         func_rmdir($this->sPluginsDir . $sPlugin);
         return true;
     }
     return false;
 }
 /**
  * Удаляет плагины с сервера
  *
  * @param array $aPlugins	Список плагинов для удаления
  */
 public function Delete($aPlugins)
 {
     if (!is_array($aPlugins)) {
         $aPlugins = array($aPlugins);
     }
     $aActivePlugins = $this->GetActivePlugins();
     foreach ($aPlugins as $sPluginCode) {
         if (!is_string($sPluginCode)) {
             continue;
         }
         /**
          * Если плагин активен, деактивируем его
          */
         if (in_array($sPluginCode, $aActivePlugins)) {
             $this->Toggle($sPluginCode, 'deactivate');
         }
         /**
          * Выполняем кастомный метод удаление плагина
          */
         $sPluginName = func_camelize($sPluginCode);
         $sFile = "{$this->sPluginsDir}{$sPluginCode}/Plugin{$sPluginName}.class.php";
         if (is_file($sFile)) {
             require_once $sFile;
             $sClassName = "Plugin{$sPluginName}";
             $oPlugin = new $sClassName();
             if ($oPlugin->Delete()) {
                 /**
                  * Удаляем директорию с плагином
                  */
                 func_rmdir($this->sPluginsDir . $sPluginCode);
             }
         }
     }
 }