public function executeJson(AgaviRequestDataHolder $rd)
 {
     try {
         $modules = AgaviConfig::get("org.icinga.modules", array());
         $fileName = $rd->getParameter('template');
         $file = null;
         foreach ($modules as $name => $path) {
             if (file_exists($path . "/config/templates/" . $fileName . '.xml')) {
                 $file = AppKitFileUtil::getAlternateFilename($path . "/config/templates/", $fileName, '.xml');
             }
         }
         if ($file === null) {
             $file = AppKitFileUtil::getAlternateFilename(AgaviConfig::get('modules.cronks.xml.path.grid'), $rd->getParameter('template'), '.xml');
         }
         $template = new CronkGridTemplateXmlParser($file->getRealPath());
         $template->parseTemplate();
         $user = $this->getContext()->getUser()->getNsmUser();
         $data = $template->getTemplateData();
         if ($user->hasTarget('IcingaCommandRestrictions')) {
             $template->removeRestrictedCommands();
         }
         return json_encode(array('template' => $template->getTemplateData(), 'fields' => $template->getFields(), 'keys' => $template->getFieldKeys(), 'params' => $rd->getParameters(), 'connections' => IcingaDoctrineDatabase::$icingaConnections));
     } catch (AppKitFileUtilException $e) {
         $msg = 'Could not find template for ' . $rd->getParameter('template');
         AppKitAgaviUtil::log('Could not find template for ' . $rd->getParameter('template'), AgaviLogger::ERROR);
         return $msg;
     }
 }
 public function executeWrite(AgaviRequestDataHolder $request_data)
 {
     $parameters = $request_data->getParameters();
     $skeleton_name = $request_data->getParameter('skeleton');
     $target_path = $request_data->getParameter('target_path');
     $type_name = $request_data->getParameter('type');
     // in case of missing custom skeleton validation and missing CLI option, we need to use a default generator
     $skeleton_generator = $request_data->getParameter('skeleton_generator', self::DEFAULT_SKELETON_GENERATOR);
     $parameters['skeleton_generator'] = $skeleton_generator;
     $parameters['reporting_enabled'] = !$request_data->getParameter('quiet');
     try {
         $report = [];
         $report[] = 'Generating skeleton "' . $skeleton_name . '" using generator "' . $skeleton_generator . '".';
         $report[] = 'Generator parameters used are: ';
         $report[] = StringToolkit::getAsString($parameters, true);
         $report[] = '';
         $generator = new $skeleton_generator($skeleton_name, $target_path, $parameters);
         $generator->generate();
         $this->setAttribute('report', array_merge($report, $generator->getReport()));
     } catch (Exception $e) {
         $this->setAttribute('errors', $e->getMessage() . PHP_EOL);
         return 'Error';
     }
     return 'Success';
 }
 public function executeRead(AgaviRequestDataHolder $rd)
 {
     $filter = $this->getContext()->getModel("SLA.SLAFilter", "Api");
     $params = $rd->getParameters();
     foreach ($params as $name => $value) {
         switch ($name) {
             case 'starttime':
                 $filter->setStartTime($value);
                 break;
             case 'endtime':
                 $filter->setEndTime($value);
                 break;
             case 'hostsonly':
                 $filter->useOnlyHosts();
                 break;
             case 'timespan':
                 $filter->setTimespan($value);
                 break;
             case 'servicesonly':
                 $filter->useOnlyServices();
                 break;
             case 'instanceIds':
                 $filter->setInstanceIds($value);
                 break;
             case 'hostnames':
                 $filter->setHostnamePattern($value);
                 break;
             case 'servicenames':
                 $filter->setServicenamePattern($value);
                 break;
             case 'hostgroups':
                 $filter->setHostgroupnames($value);
                 break;
             case 'servicegroups':
                 $filter->setServicegroupnames($value);
                 break;
             case 'ids':
                 $filter->setObjectId($value);
                 break;
         }
     }
     $this->addPrincipalsToFilter($filter);
     $stmt = IcingaSlahistoryTable::getSummary(null, $filter);
     $this->setAttribute("result", $stmt);
     return "Success";
 }
 public function executeWrite(AgaviRequestDataHolder $rd)
 {
     $params = $rd->getParameters();
     foreach ($params as $key => $param) {
         if (!is_string($param)) {
             continue;
         }
         $json = json_decode($param, true);
         if ($json) {
             $rd->setParameter($key, $json);
         }
     }
     $model = $this->getDataStoreForTarget($params["target"], $rd);
     if (!$model) {
         return "Error";
     }
     $result = $model->execRead();
     $r = $this->getContext()->getModel("Store.DataStoreResult", "Api", array("model" => $model));
     $r->parseResult($result, $rd->getParameter("fields", array()));
     $this->setAttribute("result", $r);
     return $this->getDefaultViewName();
 }
 /**
  * Updates the 'simple' userdata
  * @param NsmUser $user
  * @param AgaviRequestDataHolder $rd
  * @return boolean
  * @author Marius Hein
  */
 public function updateUserData(NsmUser &$user, AgaviRequestDataHolder &$rd)
 {
     AppKitDoctrineUtil::updateRecordsetFromArray($user, $rd->getParameters(), self::$editableAttributes);
     if (!$user->get("user_password")) {
         $user->set("user_password", AppKitRandomUtil::initRand());
         $user->set("user_salt", AppKitRandomUtil::initRand());
     }
     // Check the principal. Because we have nothing
     // in some situations #3992
     //
     // Create one of missed here
     if (!$user->principalIsValid()) {
         $principal = new NsmPrincipal();
         $principal->principal_type = NsmPrincipal::TYPE_USER;
         $user->principal = $principal;
     }
     // Manually because we want write empty strings
     $user->set('user_description', $rd->getParameter('user_description', new Doctrine_Null()));
     $user->save();
     return true;
 }
 /**
  * Merge in parameters from another request data holder.
  *
  * @param      AgaviRequestDataHolder The other request data holder.
  *
  * @author     David Zülke <*****@*****.**>
  * @since      0.11.0
  */
 public function mergeParameters(AgaviRequestDataHolder $other)
 {
     $this->setParameters($other->getParameters());
 }
 /**
  * Updates the simple role data
  * @param NsmRole $role
  * @param AgaviRequestDataHolder $rd
  * @return boolean
  * @author Marius Hein
  */
 public function updateRoleData(NsmRole &$role, AgaviRequestDataHolder &$rd)
 {
     AppKitDoctrineUtil::updateRecordsetFromArray($role, $rd->getParameters(), self::$editableAttributes);
     // Checking the principal
     if (!$role->NsmPrincipal->principal_id) {
         $role->NsmPrincipal->principal_type = NsmPrincipal::TYPE_ROLE;
     }
     if ($role->role_id === null) {
         // insert a new role
         $role->save();
     } else {
         // update role
         $parts = array();
         $params = array();
         foreach ($role as $property => $value) {
             if ($property == "role_id" || !in_array($property, self::$editableAttributes)) {
                 continue;
             }
             if ($value === null) {
                 $parts[] = "{$property} = NULL";
             } else {
                 $parts[] = "{$property} = ? ";
                 $params[] = $value;
             }
         }
         $params[] = $role->role_id;
         $dql = "UPDATE NsmRole SET " . implode(",", $parts) . " WHERE role_id = ?";
         AppKitLogger::warn("Test: %s - %s", $dql, var_export($params, true));
         $query = new Doctrine_Query();
         $query->setConnection(AppKitDoctrineUtil::getConnection());
         $query->parseDqlQuery($dql);
         $query->execute($params);
     }
     return true;
 }