<?php declare(strict_types = 0);
class CControllerMaintenanceEdit extends CController {
private $maintenance;
protected function init() {
$this->disableCsrfValidation();
}
protected function checkInput(): bool {
$fields = [
'maintenanceid' => 'db maintenances.maintenanceid'
];
$ret = $this->validateInput($fields);
if (!$ret) {
$this->setResponse(
(new CControllerResponseData(['main_block' => json_encode([
'error' => [
'messages' => array_column(get_and_clear_messages(), 'message')
]
])]))->disableView()
);
}
return $ret;
}
protected function checkPermissions(): bool {
if (!$this->checkAccess(CRoleHelper::UI_CONFIGURATION_MAINTENANCE)
|| (!$this->checkAccess(CRoleHelper::ACTIONS_EDIT_MAINTENANCE)) && !$this->hasInput('maintenanceid')) {
return false;
}
if ($this->hasInput('maintenanceid')) {
$this->maintenance = API::Maintenance()->get([
'output' => ['maintenanceid', 'name', 'maintenance_type', 'description', 'active_since', 'active_till',
'tags_evaltype'
],
'selectTags' => ['tag', 'value', 'operator'],
'selectTimeperiods' => ['timeperiod_type', 'every', 'month', 'dayofweek', 'day', 'start_time', 'period',
'start_date'
],
'editable' => true,
'maintenanceids' => $this->getInput('maintenanceid')
]);
if (!$this->maintenance) {
return false;
}
$this->maintenance = $this->maintenance[0];
}
return true;
}
protected function doAction(): void {
if ($this->maintenance !== null) {
CArrayHelper::sort($this->maintenance['tags'], ['tag', 'value', 'operator']);
$this->maintenance['tags'] = array_values($this->maintenance['tags']);
CArrayHelper::sort($this->maintenance['timeperiods'], ['timeperiod_type', 'start_date']);
$this->maintenance['timeperiods'] = array_values($this->maintenance['timeperiods']);
foreach ($this->maintenance['timeperiods'] as &$timeperiod) {
$timeperiod += [