Ejemplo n.º 1
0
 /**
  * Install's a module with all it's dependencies
  * 
  * @param string $moduleId
  * @return \GO\Base\Model\Module
  * @throws \GO\Base\Exception\Save
  */
 public static function install($moduleId, $ignoreDependentModule = false)
 {
     GO::debug("install({$moduleId},{$ignoreDependentModule})");
     if (!($module = Module::model()->findByPk($moduleId, false, true))) {
         $module = new Module();
         $module->id = $moduleId;
         $dependencies = $module->moduleManager->getDependencies();
         foreach ($dependencies as $dependency) {
             if ($ignoreDependentModule !== $dependency) {
                 self::install($dependency, $moduleId);
             }
         }
         if (!$module->save()) {
             throw new \GO\Base\Exception\Save();
         }
     } else {
         if (!$module->enabled) {
             $module->enabled = true;
             $dependencies = $module->moduleManager->getDependencies();
             GO::debug($dependencies);
             foreach ($dependencies as $dependency) {
                 if ($ignoreDependentModule !== $dependency) {
                     self::install($dependency, $moduleId);
                 }
             }
             $module->save();
         }
     }
     return $module;
 }