public function install($module, $version, $options = null)
    {
        $module = strtolower($module);
        $options = is_null($options) ? array() : $options;
        
        $modules = $this->findModules();
        $current = array();
    
        foreach($modules as $name){
            $modVersion = $this->getModuleVersion($name);
            
            if ($modVersion) {
                $current[$name] = new SoftwareVersion(
                    $this->getModuleVersion($name));
            }
        }
        
        // Resolve deps
        $deps = $this->resolveDependencies(
            $module
        );
        
        if (!$deps->offsetExists($module)) {
            $deps->offsetSet($module, $version);
        }
        
        $queue = new PriorityQueue();
        
        // Setup all dependencies
        foreach($deps as $depModule => $depVersion){
            if(!$this->hasSetupService($depModule)){
                continue;
            }
    
            $setup = $this->initSetupService($depModule);
            $queue->insert(['service' => $setup, 'module' => $depModule], $setup->getPriority());
        }
        
        foreach ($queue->getIterator() as $datum) {
            $service    = $datum['service'];
            $depModule  = $datum['module'];
            $operation  = 'setup';
            $args       = array();
        
            if ($depModule == $module) {
                $args['options'] = $options;
            }
             
            // complete existing installation
            $service->exec(
                $operation,
                $args
            );
        }
        
        return true;
    }
public function install($module, $version, $options = null)
    {
        $module = strtolower($module);
        $options = is_null($options) ? array() : $options;
        
        $modules = $this->findModules();
        $current = array();
    
        foreach($modules as $name){
            $modVersion = $this->getModuleVersion($name);
            
            if ($modVersion) {
                $current[$name] = new SoftwareVersion(
                    $this->getModuleVersion($name));
            }
        }
        
        // Resolve deps
        $deps = $this->resolveDependencies(
            $module
        );
        
        if (!$deps->offsetExists($module)) {
            $deps->offsetSet($module, $version);
        }
        
        $queue = new PriorityQueue();
        
        // Setup all dependencies
        foreach($deps as $depModule => $depVersion){
            if(!$this->hasSetupService($depModule)){
                continue;
            }
    
            $setup = $this->initSetupService($depModule);
            $queue->insert(['service' => $setup, 'module' => $depModule], $setup->getPriority());
        }
        
        foreach ($queue->getIterator() as $datum) {
            $service    = $datum['service'];
            $depModule  = $datum['module'];
            $operation  = 'setup';
            $args       = array();
        
            if ($depModule == $module) {
                $args['options'] = $options;
            }
             
            // complete existing installation
            $service->exec(
                $operation,
                $args
            );
        }
        
        return true;
    }
public function install ( $ module , $ version , $ options = null ) { $ module = strtolower ( $ module ) ; $ options = is_null ( $ options ) ? array ( ) : $ options ; $ modules = $ this -> findModules ( ) ; $ current = array ( ) ; foreach ( $ modules as $ name ) { $ modVersion = $ this -> getModuleVersion ( $ name ) ; if ( $ modVersion ) { $ current [ $ name ] = new SoftwareVersion ( $ this -> getModuleVersion ( $ name ) ) ; } } // Resolve deps $ deps = $ this -> resolveDependencies ( $ module ) ; if ( ! $ deps -> offsetExists ( $ module ) ) { $ deps -> offsetSet ( $ module , $ version ) ; } $ queue = new PriorityQueue ( ) ; // Setup all dependencies foreach ( $ deps as $ depModule => $ depVersion ) { if ( ! $ this -> hasSetupService ( $ depModule ) ) { continue ; } $ setup = $ this -> initSetupService ( $ depModule ) ; $ queue -> insert ( [ 'service' => $ setup , 'module' => $ depModule ] , $ setup -> getPriority ( ) ) ; } foreach ( $ queue -> getIterator ( ) as $ datum ) { $ service = $ datum [ 'service' ] ; $ depModule = $ datum [ 'module' ] ; $ operation = 'setup' ; $ args = array ( ) ; if ( $ depModule == $ module ) { $ args [ 'options' ] = $ options ; } // complete existing installation $ service -> exec ( $ operation , $ args ) ; } return true ; }
Install module dependencies

@return void
Install module dependencies