Esempio n. 1
0
 public static function install($module_slug)
 {
     if (empty($module_slug)) {
         static::$errors->add('installer', 'Module slug is invalid [' . $module_slug . ']');
         return false;
     }
     $module = Module::make($module_slug);
     if (!$module->is_valid()) {
         static::$errors = $module->errors;
         return false;
     }
     if ($module->pass_requirements()) {
         $new_bundle = new Model\Module();
         $new_bundle->name = $module->name;
         $new_bundle->slug = $module->slug;
         $new_bundle->description = isset($module->description) ? $module->description : '';
         $new_bundle->version = $module->version;
         $new_bundle->is_frontend = isset($module->is_frontend) ? $module->is_frontend : 0;
         $new_bundle->is_backend = isset($module->is_backend) ? $module->is_backend : 0;
         $new_bundle->is_core = isset($module->is_core) ? 1 : 0;
         $new_bundle->required = $module->decode('required');
         $new_bundle->recommended = $module->decode('recommended');
         $new_bundle->options = $module->decode('options');
         $new_bundle->roles = $module->decode('roles');
         $new_bundle->menu = $module->decode('menu');
         $new_bundle->enabled = 0;
         if (static::migrate($module->slug)) {
             //clean any message from migration
             ob_get_clean();
             // Remove the module from the config array
             // updates information if we are in the same
             // request eg: (ajax)
             Config::set('installed_modules.' . $module->slug, $module->slug);
             // Save DB
             $new_bundle->save();
             if (!static::schema('install', $module->slug)) {
                 //clean any message from schema
                 ob_get_clean();
                 // If it fail to install data remove
                 // Config
                 $installed_modules = Config::get('installed_modules');
                 unset($installed_modules[$module_slug]);
                 Config::set('installed_modules', $installed_modules);
                 // DB
                 $new_bundle->delete();
                 return false;
             }
             //
             // Publish module assets if any
             //
             static::publish($module->slug);
             return true;
         } else {
             Log::error('Failed to run migrations for module [' . $module_slug . '].');
             static::$errors->add('bundle', 'Failed to run migrations for module [' . $module_slug . '].');
             return false;
         }
     } else {
         static::$errors = $module->errors;
         Log::error('Failed to install module [' . $module->name . '] requeriments pending. Please fix those before proceed. Ok? If you are not ok with it, there is no much I can do about id muchacho. :(');
         static::$errors->add('installer', 'Failed to install module [' . $module->name . '] requeriments pending. Please fix those before proceed. Ok? If you are not ok with it, there is no much I can do about it muchacho. :(');
         return false;
     }
 }