示例#1
0
 /**
  * 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);
 }
示例#3
0
 /**
  * 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;
 }
示例#4
0
 /**
  * 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.'));
         }
     }
 }
示例#5
0
 /**
  * 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;
 }
示例#6
0
 /**
  * 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();
 }
示例#7
0
 /**
  * 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>';
 }
示例#8
0
 /**
  * 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;
 }
示例#9
0
 /**
  * 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;
 }
示例#10
0
 /**
  * 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;
 }
示例#11
0
 /**
  * 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;
 }
示例#12
0
 /**
  * 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>';
 }
示例#13
0
 /**
  * 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;
 }
示例#14
0
 /**
  * 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();
 }
示例#15
0
 /**
  * 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']);
             }
         }
     }
 }