Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/croogo/croogo/Install/src/ComposerInstaller.php
<?php

namespace Croogo\Install;

use
Cake\Composer\Installer\PluginInstaller;
use
Composer\Composer;
use
Composer\Script\Event;
use
DirectoryIterator;

/**
 * Class ComposerInstaller
 */
class ComposerInstaller extends PluginInstaller
{

   
/**
     * @param Event $event
     * @return void
     */
   
public static function postAutoloadDump(Event $event)
    {
       
$composer = $event->getComposer();
       
$config = $composer->getConfig();
       
$vendorDir = realpath($config->get('vendor-dir'));
       
$croogoDir = dirname(dirname(__DIR__));
       
$packages = $composer->getRepositoryManager()->getLocalRepository()->getPackages();
       
$pluginsDir = dirname($vendorDir) . DIRECTORY_SEPARATOR . 'plugins';
       
$plugins = static::determinePlugins($packages, $pluginsDir, $vendorDir);
       
$corePlugins = [
           
'Acl', 'Blocks', 'Comments', 'Contacts', 'Core', 'Dashboards',
           
'Example', 'Extensions', 'FileManager', 'Install', 'Menus',
           
'Meta', 'Nodes', 'Settings', 'Taxonomy', 'Translate', 'Users',
           
'Wysiwyg',
        ];
        foreach (
$corePlugins as $plugin) {
           
$plugins['Croogo\\' . $plugin] = $croogoDir . DIRECTORY_SEPARATOR . $plugin;
        }
       
$configFile = static::_configFile($vendorDir);
        static::
writeConfigFile($configFile, $plugins);
    }

   
/**
     * Find all plugins available
     *
     * Add all composer packages of type cakephp-plugin, and all plugins located
     * in the plugins directory to a plugin-name indexed array of paths
     *
     * @param array $packages an array of \Composer\Package\PackageInterface objects
     * @param string $pluginsDir the path to the plugins dir
     * @param string $vendorDir the path to the vendor dir
     * @return array plugin-name indexed paths to plugins
     */
   
public static function determinePlugins($packages, $pluginsDir = 'plugins', $vendorDir = 'vendor')
    {
       
$plugins = [];

        foreach (
$packages as $package) {
            if (!
in_array($package->getType(), ['cakephp-plugin', 'croogo-plugin', 'croogo-theme'])) {
                continue;
            }

           
$ns = static::primaryNamespace($package);
           
$path = $vendorDir . DIRECTORY_SEPARATOR . $package->getPrettyName();
           
$plugins[$ns] = $path;
        }

        if (
is_dir($pluginsDir)) {
           
$dir = new DirectoryIterator($pluginsDir);
            foreach (
$dir as $info) {
                if (!
$info->isDir() || $info->isDot()) {
                    continue;
                }

               
$name = $info->getFilename();
               
$plugins[$name] = $pluginsDir . DIRECTORY_SEPARATOR . $name;
            }
        }

       
ksort($plugins);

        return
$plugins;
    }
}