. */ namespace SP\Modules\Web\Controllers\ConfigWiki; use SP\Core\Acl\AclActionsInterface; use SP\Core\Acl\UnauthorizedPageException; use SP\Core\Events\Event; use SP\Core\Events\EventMessage; use SP\Http\JsonResponse; use SP\Modules\Web\Controllers\SimpleControllerBase; use SP\Modules\Web\Controllers\Traits\ConfigTrait; /** * Class SaveController * * @package SP\Modules\Web\Controllers */ final class SaveController extends SimpleControllerBase { use ConfigTrait; /** * @return bool * @throws \JsonException */ public function saveAction(): bool { $eventMessage = EventMessage::factory(); $configData = $this->config->getConfigData(); $wikiEnabled = $this->request->analyzeBool('wiki_enabled', false); $wikiSearchUrl = $this->request->analyzeString('wiki_searchurl'); $wikiPageUrl = $this->request->analyzeString('wiki_pageurl'); $wikiFilter = $this->request->analyzeString('wiki_filter'); if ($wikiEnabled && (!$wikiSearchUrl || !$wikiPageUrl || !$wikiFilter)) { return $this->returnJsonResponse(JsonResponse::JSON_ERROR, __u('Missing Wiki parameters')); } if ($wikiEnabled) { $configData->setWikiEnabled(true); $configData->setWikiSearchurl($wikiSearchUrl); $configData->setWikiPageurl($wikiPageUrl); $configData->setWikiFilter(explode(',', $wikiFilter)); if ($configData->isWikiEnabled() === false) { $eventMessage->addDescription(__u('Wiki enabled')); } } elseif ($configData->isWikiEnabled()) { $configData->setWikiEnabled(false); $eventMessage->addDescription(__u('Wiki disabled')); } else { return $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('No changes')); } return $this->saveConfig( $configData, $this->config, function () use ($eventMessage) { $this->eventDispatcher->notify('save.config.wiki', new Event($this, $eventMessage)); } ); } /** * @return void * @throws \JsonException * @throws \SP\Core\Exceptions\SessionTimeout */ protected function initialize(): void { try { $this->checks(); $this->checkAccess(AclActionsInterface::CONFIG_WIKI); } catch (UnauthorizedPageException $e) { $this->eventDispatcher->notify('exception', new Event($e)); $this->returnJsonResponseException($e); } } }