/** * Cleanup the cookie support check */ public function cleanupCheck() { if ($this->request->getUrl()->hasParam('_checkCookie') && isset($_COOKIE[self::CHECK_COOKIE])) { $requestUri = $this->request->getUrl()->without('_checkCookie'); $this->request->getResponse()->redirectAndExit($requestUri); } }
public function scheduleDowntime(ScheduleServiceDowntimeCommand $downtime, Request $request) { $downtime->setComment($this->getElement('comment')->getValue())->setAuthor($request->getUser()->getUsername())->setStart($this->getElement('start')->getValue()->getTimestamp())->setEnd($this->getElement('end')->getValue()->getTimestamp()); if ($this->getElement('type')->getValue() === self::FLEXIBLE) { $downtime->setFixed(false); $downtime->setDuration((double) $this->getElement('hours')->getValue() * 3600 + (double) $this->getElement('minutes')->getValue() * 60); } $this->getTransport($request)->send($downtime); }
/** * Get the transport used to send commands * * @param Request $request * * @return \Icinga\Module\Monitoring\Command\Transport\CommandTransportInterface */ public function getTransport(Request $request) { $instance = $request->getParam('instance'); if ($instance !== null) { $transport = CommandTransport::create($instance); } else { $transport = CommandTransport::first(); } return $transport; }
/** * Setup the given page that is either going to be displayed or validated * * @param Form $page The page to setup * @param Request $request The current request */ public function setupPage(Form $page, Request $request) { if ($page->getName() === 'setup_requirements') { $page->setRequirements($this->getRequirements()); } elseif ($page->getName() === 'setup_monitoring_summary') { $page->setSummary($this->getSetup()->getSummary()); $page->setSubjectTitle(mt('monitoring', 'the monitoring module', 'setup.summary.subject')); } elseif ($this->getDirection() === static::FORWARD && ($page->getName() === 'setup_monitoring_ido' || $page->getName() === 'setup_monitoring_livestatus')) { if (($authDbResourceData = $this->getPageData('setup_auth_db_resource')) !== null && $authDbResourceData['name'] === $request->getPost('name') || ($configDbResourceData = $this->getPageData('setup_config_db_resource')) !== null && $configDbResourceData['name'] === $request->getPost('name') || ($ldapResourceData = $this->getPageData('setup_ldap_resource')) !== null && $ldapResourceData['name'] === $request->getPost('name')) { $page->error(mt('monitoring', 'The given resource name is already in use.')); } } }
/** * Get the transport used to send commands * * @param Request $request * * @return CommandTransportInterface * * @throws ConfigurationError */ public function getTransport(Request $request) { if (($transportName = $request->getParam('transport')) !== null) { $config = CommandTransport::getConfig(); if ($config->hasSection($transportName)) { $transport = CommandTransport::createTransport($config->getSection($transportName)); } else { throw new ConfigurationError(sprintf(mt('monitoring', 'Command transport "%s" not found.'), $transportName)); } } else { $transport = new CommandTransport(); } return $transport; }
/** * Return the request data based on this form's request method * * @return array */ protected function getRequestData() { if (strtolower($this->request->getMethod()) === $this->getMethod()) { return $this->request->{'get' . ($this->request->isPost() ? 'Post' : 'Query')}(); } return array(); }
/** * Render this SortBox as HTML * * @return string */ public function render() { $columnForm = new Form(); $columnForm->setTokenDisabled(); $columnForm->setName($this->name . '-column'); $columnForm->setAttrib('class', 'inline'); $columnForm->addElement('select', 'sort', array('autosubmit' => true, 'label' => $this->view()->translate('Sort by'), 'multiOptions' => $this->sortFields, 'decorators' => array(array('ViewHelper'), array('Label')))); $orderForm = new Form(); $orderForm->setTokenDisabled(); $orderForm->setName($this->name . '-order'); $orderForm->setAttrib('class', 'inline'); $orderForm->addElement('select', 'dir', array('autosubmit' => true, 'label' => $this->view()->translate('Direction', 'sort direction'), 'multiOptions' => array('asc' => $this->view()->translate('Ascending', 'sort direction'), 'desc' => $this->view()->translate('Descending', 'sort direction')), 'decorators' => array(array('ViewHelper'), array('Label', array('class' => 'no-js'))))); $column = null; if ($this->request) { $url = $this->request->getUrl(); if ($url->hasParam('sort')) { $column = $url->getParam('sort'); if ($url->hasParam('dir')) { $direction = $url->getParam('dir'); } else { list($_, $direction) = $this->getSortDefaults($column); } } elseif ($url->hasParam('dir')) { $direction = $url->getParam('dir'); list($column, $_) = $this->getSortDefaults(); } } if ($column === null) { list($column, $direction) = $this->getSortDefaults(); } $columnForm->populate(array('sort' => $column)); $orderForm->populate(array('dir' => $direction)); return '<div class="sort-control">' . $columnForm . $orderForm . '</div>'; }
/** * Inject dependencies into request * * @return self */ private function setupRequest() { $this->request = new Request(); if ($this->user instanceof User) { $this->request->setUser($this->user); } return $this; }
/** * Renders this widget and returns the HTML as a string * * @return string */ public function render() { $form = new Form(); $form->setAttrib('class', 'inline'); $form->setMethod('GET'); $form->setUidDisabled(); $form->setTokenDisabled(); $form->setName($this->name); $form->addElement('select', $this->parameter, array('label' => $this->label, 'multiOptions' => $this->values, 'autosubmit' => true)); if ($this->request) { $form->populate($this->request->getParams()); } return $form; }
/** * Render this SortBox as HTML * * @return string */ public function render() { $form = new Form(); $form->setTokenDisabled(); $form->setName($this->name); $form->setAttrib('class', 'sort-control inline'); $form->addElement('select', 'sort', array('autosubmit' => true, 'label' => $this->view()->translate('Sort by'), 'multiOptions' => $this->sortFields)); $form->getElement('sort')->setDecorators(array(array('ViewHelper'), array('Label'))); $form->addElement('select', 'dir', array('autosubmit' => true, 'multiOptions' => array('asc' => 'Asc', 'desc' => 'Desc'), 'decorators' => array(array('ViewHelper')))); if ($this->request) { $form->populate($this->request->getParams()); } return $form; }
/** * Renders this widget via the given view and returns the * HTML as a string * * @return string */ public function render() { $form = new Form(); $form->setAttrib('class', 'inline'); $form->setMethod('GET'); $form->setTokenDisabled(); $form->setName($this->name); $form->addElement('select', 'sort', array('label' => 'Sort By', 'multiOptions' => $this->sortFields, 'class' => 'autosubmit')); $form->addElement('select', 'dir', array('multiOptions' => array('desc' => 'Desc', 'asc' => 'Asc'), 'class' => 'autosubmit')); $sort = $form->getElement('sort')->setDecorators(array('ViewHelper')); $dir = $form->getElement('dir')->setDecorators(array('ViewHelper')); // $form->enableAutoSubmit(array('sort', 'dir')); // $form->addElement($this->createFallbackSubmitButton()); if ($this->request) { $form->setAction($this->request->getRequestUri()); $form->populate($this->request->getParams()); } return $form; }
/** * Render this SortBox as HTML * * @return string */ public function render() { $columnForm = new Form(); $columnForm->setTokenDisabled(); $columnForm->setName($this->name . '-column'); $columnForm->setAttrib('class', 'inline'); $columnForm->addElement('select', 'sort', array('autosubmit' => true, 'label' => $this->view()->translate('Sort by'), 'multiOptions' => $this->sortFields, 'decorators' => array(array('ViewHelper'), array('Label')))); $column = null; if ($this->request) { $url = $this->request->getUrl(); if ($url->hasParam('sort')) { $column = $url->getParam('sort'); if ($url->hasParam('dir')) { $direction = $url->getParam('dir'); } else { list($_, $direction) = $this->getSortDefaults($column); } } elseif ($url->hasParam('dir')) { $direction = $url->getParam('dir'); list($column, $_) = $this->getSortDefaults(); } } if ($column === null) { list($column, $direction) = $this->getSortDefaults(); } // TODO(el): ToggleButton :) $toggle = array('asc' => 'sort-name-down', 'desc' => 'sort-name-up'); unset($toggle[$direction]); $newDirection = key($toggle); $icon = current($toggle); $orderForm = new Form(); $orderForm->setTokenDisabled(); $orderForm->setName($this->name . '-order'); $orderForm->setAttrib('class', 'inline sort-direction-control'); $orderForm->addElement('hidden', 'dir'); $orderForm->addElement('button', 'btn_submit', array('ignore' => true, 'type' => 'submit', 'label' => $this->view()->icon($icon), 'decorators' => array('ViewHelper'), 'escape' => false, 'class' => 'link-button spinner', 'value' => 'submit', 'title' => t('Change sort direction'))); $columnForm->populate(array('sort' => $column)); $orderForm->populate(array('dir' => $newDirection)); return '<div class="sort-control">' . $columnForm . $orderForm . '</div>'; }
/** * Create view from request * * @param Request $request * @param array $columns * * @return static * @deprecated Use $backend->select()->from($viewName) instead */ public static function fromRequest($request, array $columns = null) { $view = new static(MonitoringBackend::instance($request->getParam('backend')), $columns); $view->applyUrlFilter($request); return $view; }
/** * Return the request data based on given form's request method * * @param Form $page The page to fetch the data for * @param Request $request The request to fetch the data from * * @return array */ protected function getRequestData(Form $page, Request $request) { if (strtolower($request->getMethod()) === $page->getMethod()) { return $request->{'get' . ($request->isPost() ? 'Post' : 'Query')}(); } return array(); }
/** * Setup the given page that is either going to be displayed or validated * * @param Form $page The page to setup * @param Request $request The current request */ public function setupPage(Form $page, Request $request) { if ($page->getName() === 'setup_requirements') { $page->setWizard($this); } elseif ($page->getName() === 'setup_authentication_backend') { $authData = $this->getPageData('setup_authentication_type'); if ($authData['type'] === 'db') { $page->setResourceConfig($this->getPageData('setup_auth_db_resource')); } elseif ($authData['type'] === 'ldap') { $page->setResourceConfig($this->getPageData('setup_ldap_resource')); $suggestions = $this->getPageData('setup_ldap_discovery'); if (isset($suggestions['backend'])) { $page->populate($suggestions['backend']); } } /*} elseif ($page->getName() === 'setup_ldap_discovery_confirm') { $page->setResourceConfig($this->getPageData('setup_ldap_discovery'));*/ } elseif ($page->getName() === 'setup_admin_account') { $page->setBackendConfig($this->getPageData('setup_authentication_backend')); $authData = $this->getPageData('setup_authentication_type'); if ($authData['type'] === 'db') { $page->setResourceConfig($this->getPageData('setup_auth_db_resource')); } elseif ($authData['type'] === 'ldap') { $page->setResourceConfig($this->getPageData('setup_ldap_resource')); } } elseif ($page->getName() === 'setup_auth_db_creation' || $page->getName() === 'setup_config_db_creation') { $page->setDatabaseSetupPrivileges(array_unique(array_merge($this->databaseCreationPrivileges, $this->databaseSetupPrivileges))); $page->setDatabaseUsagePrivileges($this->databaseUsagePrivileges); $page->setResourceConfig($this->getPageData('setup_auth_db_resource') ?: $this->getPageData('setup_config_db_resource')); } elseif ($page->getName() === 'setup_summary') { $page->setSubjectTitle('Icinga Web 2'); $page->setSummary($this->getSetup()->getSummary()); } elseif ($page->getName() === 'setup_config_db_resource') { $ldapData = $this->getPageData('setup_ldap_resource'); if ($ldapData !== null && $request->getPost('name') === $ldapData['name']) { $page->error(mt('setup', 'The given resource name must be unique and is already in use by the LDAP resource')); } } elseif ($page->getName() === 'setup_ldap_resource') { $suggestion = $this->getPageData('setup_ldap_discovery'); if (isset($suggestion['resource'])) { $page->populate($suggestion['resource']); } } elseif ($page->getName() === 'setup_general_config') { $authData = $this->getPageData('setup_authentication_type'); if ($authData['type'] === 'db') { $page->create()->getElement('global_config_backend')->setValue('db'); $page->info(mt('setup', 'Note that choosing "Database" as preference storage causes' . ' Icinga Web 2 to use the same database as for authentication.'), false); } } elseif ($page->getName() === 'setup_authentication_type' && $this->getDirection() === static::FORWARD) { $authData = $this->getPageData($page->getName()); if ($authData !== null && $request->getPost('type') !== $authData['type']) { // Drop any existing page data in case the authentication type has changed, // otherwise it will conflict with other forms that depend on this one $pageData =& $this->getPageData(); unset($pageData['setup_admin_account']); unset($pageData['setup_authentication_backend']); if ($authData['type'] === 'db') { unset($pageData['setup_auth_db_resource']); unset($pageData['setup_auth_db_creation']); } elseif ($request->getPost('type') === 'db') { unset($pageData['setup_config_db_resource']); unset($pageData['setup_config_db_creation']); } } } }