Add endpoint for retrieving helpdesk settings

remotes/upstream/api-rewrite
Mike Koch 7 years ago
parent 7494efb8ca
commit ee4ba00fe9

@ -13,6 +13,7 @@ use BusinessLogic\Security\BanRetriever;
use BusinessLogic\Security\UserContextBuilder;
use BusinessLogic\Security\UserToTicketChecker;
use BusinessLogic\Settings\ApiChecker;
use BusinessLogic\Settings\SettingsRetriever;
use BusinessLogic\Statuses\StatusRetriever;
use BusinessLogic\Tickets\Autoassigner;
use BusinessLogic\Tickets\TicketDeleter;
@ -124,5 +125,8 @@ class ApplicationContext {
// Statuses
$this->get[StatusRetriever::class] = new StatusRetriever($this->get[StatusGateway::class]);
// Settings
$this->get[SettingsRetriever::class] = new SettingsRetriever($this->get[ModsForHeskSettingsGateway::class]);
}
}

@ -3,20 +3,84 @@
namespace BusinessLogic\Settings;
// TODO Test!
use DataAccess\Settings\ModsForHeskSettingsGateway;
class SettingsRetriever {
/* @var $modsForHeskSettingsGateway ModsForHeskSettingsGateway */
private $modsForHeskSettingsGateway;
function __construct($modsForHeskSettingsGateway) {
$this->modsForHeskSettingsGateway = $modsForHeskSettingsGateway;
}
private static $settingsToNotReturn = array(
'webmaster_email',
'noreply_email',
'noreply_name',
'db_.*',
'admin_dir',
'attach_dir',
'cache_dir',
'autoclose',
'autologin',
'autoassign',
'secimg_.*',
'recaptcha_.*',
'question_.*',
'attempt_.*',
'reset_pass',
'x_frame_opt',
'force_ssl',
'imap.*',
'smtp.*',
'email_piping',
'pop3.*',
'loop.*',
'email_providers',
'notify_.*',
'alink',
'submit_notice',
'online',
'online_min',
'modsForHeskVersion',
'use_mailgun',
'mailgun.*',
'kb_attach_dir',
'public_api',
'custom_fields',
'hesk_version',
'hesk_license',
);
/**
* @param $heskSettings array
* @param $modsForHeskSettings array
* @return array
*/
function getAllSettings($heskSettings, $modsForHeskSettings) {
function getAllSettings($heskSettings) {
$modsForHeskSettings = $this->modsForHeskSettingsGateway->getAllSettings($heskSettings);
$settingsToReturn = array();
foreach ($heskSettings as $key => $value) {
if ($this->isPermittedKey($key)) {
$settingsToReturn[$key] = $value;
}
}
foreach ($modsForHeskSettings as $key => $value) {
if ($this->isPermittedKey($key)) {
$settingsToReturn[$key] = $value;
}
}
return $settingsToReturn;
}
private function isPermittedKey($key) {
foreach (self::$settingsToNotReturn as $setting) {
if (preg_match("/{$setting}/", $key)) {
return false;
}
}
return true;
}
}

@ -0,0 +1,17 @@
<?php
namespace Controllers\Settings;
use BusinessLogic\Settings\SettingsRetriever;
class SettingsController {
function get() {
global $applicationContext, $hesk_settings, $modsForHesk_settings;
/* @var $settingsRetriever SettingsRetriever */
$settingsRetriever = $applicationContext->get[SettingsRetriever::class];
output($settingsRetriever->getAllSettings($hesk_settings, $modsForHesk_settings));
}
}

@ -159,6 +159,8 @@ Link::all(array(
'/v1/staff/tickets/{i}/attachments/{i}' => \Controllers\Attachments\StaffTicketAttachmentsController::class,
// Statuses
'/v1/statuses' => \Controllers\Statuses\StatusController::class,
// Settings
'/v1/settings' => \Controllers\Settings\SettingsController::class,
// Any URL that doesn't match goes to the 404 handler
'404' => 'handle404'

Loading…
Cancel
Save