Exemple #1
0
 function canDeleteItem()
 {
     $entities = Profile_User::getUserEntities($this->fields['id'], true);
     if (Session::isViewAllEntities() || Session::haveAccessToAllOfEntities($entities)) {
         return true;
     }
     return false;
 }
   static function getServicesStates($params) {
      global $DB, $CFG_GLPI;

      $where = $join = $fields = '';
      $join .= "
         INNER JOIN `glpi_plugin_monitoring_services`
            ON (`glpi_plugin_monitoring_services`.`plugin_monitoring_componentscatalogs_hosts_id` = `glpi_plugin_monitoring_componentscatalogs_hosts`.`id`)
         INNER JOIN `glpi_plugin_monitoring_hosts`
            ON `glpi_plugin_monitoring_componentscatalogs_hosts`.`items_id` = `glpi_plugin_monitoring_hosts`.`items_id` AND `glpi_plugin_monitoring_componentscatalogs_hosts`.`itemtype` = `glpi_plugin_monitoring_hosts`.`itemtype`
         INNER JOIN `glpi_plugin_monitoring_componentscatalogs`
            ON `plugin_monitoring_componentscalalog_id` = `glpi_plugin_monitoring_componentscatalogs`.`id`
         INNER JOIN `glpi_plugin_monitoring_components`
            ON (`glpi_plugin_monitoring_services`.`plugin_monitoring_components_id` = `glpi_plugin_monitoring_components`.`id`)
         LEFT JOIN `glpi_computers`
            ON `glpi_plugin_monitoring_componentscatalogs_hosts`.`items_id` = `glpi_computers`.`id` AND `glpi_plugin_monitoring_componentscatalogs_hosts`.`itemtype`='Computer'
         LEFT JOIN `glpi_printers`
            ON `glpi_plugin_monitoring_componentscatalogs_hosts`.`items_id` = `glpi_printers`.`id` AND `glpi_plugin_monitoring_componentscatalogs_hosts`.`itemtype`='Printer'
         LEFT JOIN `glpi_networkequipments`
            ON `glpi_plugin_monitoring_componentscatalogs_hosts`.`items_id` = `glpi_networkequipments`.`id` AND `glpi_plugin_monitoring_componentscatalogs_hosts`.`itemtype`='NetworkEquipment'
         ";

      // Start / limit
      $start = 0;
      $limit = $CFG_GLPI["list_limit_max"];
      if (isset($params['limit']) && is_numeric($params['limit'])) {
         $limit = $params['limit'];
      }
      if (isset($params['start']) && is_numeric($params['start'])) {
         $start = $params['start'];
      }

      // Entities
      if (isset($params['entitiesList'])) {
         if (!Session::haveAccessToAllOfEntities($params['entitiesList'])) {
            return self::Error($protocol, WEBSERVICES_ERROR_NOTALLOWED, '', 'entity');
         }
         $where = getEntitiesRestrictRequest("WHERE", "glpi_computers", '', $params['entitiesList']) .
                     $where;
      } else {
         $where = getEntitiesRestrictRequest("WHERE", "glpi_computers") .
                     $where;
      }

      // Services filter
      if (isset($params['servicesFilter']) && ! empty($params['servicesFilter'])) {
         if (is_array($params['servicesFilter'])) {
            $where .= " AND `glpi_plugin_monitoring_components`.`name` IN ('" . implode("','",$params['servicesFilter']) . "')";
         } else {
            $where .= " AND `glpi_plugin_monitoring_components`.`name` = '" . $params['servicesFilter'] . "'";
         }
      }

      // Filter
      if (isset($params['filter']) && ! empty($params['filter'])) {
         $where .= " AND " . $params['filter'];
      }
      // Order
      $order = "FIELD(`glpi_plugin_monitoring_services`.`state`, 'CRITICAL','PENDING','UNKNOWN','WARNING','OK')";
      if (isset($params['order'])) {
         $order = $params['order'];
      }

      $query = "
         SELECT
            CONCAT_WS('', `glpi_computers`.`name`, `glpi_printers`.`name`, `glpi_networkequipments`.`name`) AS host_name,
            `glpi_plugin_monitoring_components`.`name`,
            `glpi_plugin_monitoring_components`.`description`,
            `glpi_plugin_monitoring_services`.`state`,
            `glpi_plugin_monitoring_services`.`state_type`,
            `glpi_plugin_monitoring_services`.`event`,
            `glpi_plugin_monitoring_services`.`last_check`,
            `glpi_plugin_monitoring_services`.`is_acknowledged`,
            `glpi_plugin_monitoring_services`.`acknowledge_comment`
         FROM `glpi_plugin_monitoring_componentscatalogs_hosts`
         $join
         $where
         ORDER BY $order
         LIMIT $start,$limit;
      ";
      // Toolbox::logInFile("pm-ws", "getServicesStates, query : $query\n");
      $rows = array();
      $result = $DB->query($query);
      while ($data=$DB->fetch_array($result)) {
         $row = array();
         foreach ($data as $key=>$value) {
            if (is_string($key)) {
               $row[$key] = $value;
            }
         }
         $rows[] = $row;
      }

      return $rows;
   }