. */ namespace SP\Modules\Web\Controllers; use SP\Core\Acl\Acl; use SP\Core\Acl\UnauthorizedPageException; use SP\Core\Events\Event; use SP\Core\Events\EventMessage; use SP\Core\Exceptions\SessionTimeout; use SP\Core\Exceptions\SPException; use SP\Http\JsonResponse; use SP\Modules\Web\Controllers\Traits\ConfigTrait; /** * Class ConfigWikiController * * @package SP\Modules\Web\Controllers */ final class ConfigWikiController extends SimpleControllerBase { use ConfigTrait; /** * saveAction * * @throws SPException */ public function saveAction() { $this->checkSecurityToken($this->previousSk, $this->request); $eventMessage = EventMessage::factory(); $configData = $this->config->getConfigData(); // Wiki $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'); // Valores para la conexión a la Wiki 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 ($wikiEnabled === false && $configData->isWikiEnabled()) { $configData->setWikiEnabled(false); $eventMessage->addDescription(__u('Wiki disabled')); } return $this->saveConfig($configData, $this->config, function () use ($eventMessage) { $this->eventDispatcher->notifyEvent('save.config.wiki', new Event($this, $eventMessage)); }); } /** * @return bool * @throws SessionTimeout */ protected function initialize() { try { $this->checks(); $this->checkAccess(Acl::CONFIG_WIKI); } catch (UnauthorizedPageException $e) { $this->eventDispatcher->notifyEvent('exception', new Event($e)); return $this->returnJsonResponseException($e); } return true; } }