. */ namespace SP\Modules\Web\Controllers; use DI\DependencyException; use DI\NotFoundException; 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\Http\JsonResponse; use SP\Modules\Web\Controllers\Traits\ConfigTrait; /** * Class ConfigDokuWikiController * * @package SP\Modules\Web\Controllers */ final class ConfigDokuWikiController extends SimpleControllerBase { use ConfigTrait; /** * @return bool * @throws DependencyException * @throws NotFoundException */ public function saveAction(): bool { $eventMessage = EventMessage::factory(); $configData = $this->config->getConfigData(); // DokuWiki $dokuWikiEnabled = $this->request->analyzeBool('dokuwiki_enabled', false); $dokuWikiUrl = $this->request->analyzeString('dokuwiki_url'); $dokuWikiUrlBase = $this->request->analyzeString('dokuwiki_urlbase'); $dokuWikiUser = $this->request->analyzeString('dokuwiki_user'); $dokuWikiPass = $this->request->analyzeEncrypted('dokuwiki_pass'); $dokuWikiNamespace = $this->request->analyzeString('dokuwiki_namespace'); // Valores para la conexión a la API de DokuWiki if ($dokuWikiEnabled && (!$dokuWikiUrl || !$dokuWikiUrlBase)) { return $this->returnJsonResponse(JsonResponse::JSON_ERROR, __u('Missing DokuWiki parameters')); } if ($dokuWikiEnabled) { $configData->setDokuwikiEnabled(true); $configData->setDokuwikiUrl($dokuWikiUrl); $configData->setDokuwikiUrlBase(trim($dokuWikiUrlBase, '/')); $configData->setDokuwikiUser($dokuWikiUser); $configData->setDokuwikiPass($dokuWikiPass); $configData->setDokuwikiNamespace($dokuWikiNamespace); if ($configData->isDokuwikiEnabled() === false) { $eventMessage->addDescription(__u('DokuWiki enabled')); } } elseif ($dokuWikiEnabled === false && $configData->isDokuwikiEnabled()) { $configData->setDokuwikiEnabled(false); $eventMessage->addDescription(__u('DokuWiki disabled')); } return $this->saveConfig($configData, $this->config, function () use ($eventMessage) { $this->eventDispatcher->notifyEvent('save.config.dokuwiki', new Event($this, $eventMessage)); }); } /** * @return bool * @throws SessionTimeout * @throws DependencyException * @throws NotFoundException */ 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; } }