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; } }