has_submodules = true; $parentModule->save(); } // insert module into database $module = Module::create([ 'name' => $name, 'description' => $description, 'handler' => $handler, 'manages_content' => $managesContent, 'support_categories' => $supportCategories, 'alias' => $alias, 'module_settings' => json_encode($settings), 'parent_id' => $parentModuleId ? $parentModuleId : null, 'enabled' => 1, 'is_template' => $isTemplate ]); // install something module-specific if ($handler) { call_user_func([$handler, 'install']); } return $module; } public function uninstall() { // check if user does not want to install module in runtime if (!App::runningInConsole()) { throw new \ErrorException('Modules can be uninstalled only via Artisan!'); } // delete everything in /resources/views/visitor $directories = \File::directories(resource_path('views/visitor')); foreach ($directories as $directory) { $success = \File::deleteDirectory($directory); if (!$success) { throw new \ErrorException('Cannot delete '.$directory); } } $handler = $this->handler; if ($handler) { call_user_func([$handler, 'uninstall'], $this); } $this->delete(); } }