model = $module; } public function getOne($id = null) { if (is_null($id)) { return new ModuleModel(); } if (is_numeric($id)) { return ModuleModel::findOrFail($id); } else { return ModuleModel::where('alias', $id) ->firstOrFail(); } } public function getContentModules() { return Cache::remember('enabled-content-modules', 3600, function () { return ModuleModel::where('enabled', true) ->where('manages_content', true) ->get(); }); } public function getCreateContentTitle(ModuleModel $module) { $pageHeading = trans('admin/contents.new', ['name' => trans($module->name)]); $moduleHeading = $this->call($module, 'getCreateNewTitle'); return is_null($moduleHeading) ? $pageHeading : $moduleHeading; } public function getUpdateContentTitle(ModuleModel $module, Content $content = null) { $pageHeading = trans('admin/contents.edit', ['name' => trans($module->name)]); $moduleHeading = $this->call($module, 'getEditTitle', [$content]); return is_null($moduleHeading) ? $pageHeading : $moduleHeading; } public function getOverviewTitle(ModuleModel $module) { $pageHeading = 'admin/contents.overview'; $moduleHeading = $this->call($module, 'getOverviewTitle'); return is_null($moduleHeading) ? $pageHeading : $moduleHeading; } public function all() { return Cache::rememberForever('enabled-modules-and-template', function () { return ModuleModel::where('enabled', true) ->get(); }); } public function getOnlyModules() { return Cache::rememberForever('enabled-modules', function () { return ModuleModel::where('enabled', true) ->where('is_template', false) ->get(); }); } public function getByHandler($handler) { return ModuleModel::where('handler', $handler) ->firstOrFail(); } public function call(ModuleModel $module, $method, $parameters = []) { if (!is_null($module) && is_callable([$module->handler, $method])) { return call_user_func_array([$module->handler, $method], $parameters); } return null; } public function callOnString($moduleHandler, $method, $parameters = []) { if (is_callable([$moduleHandler, $method])) { return call_user_func_array([$moduleHandler, $method], $parameters); } return null; } }