function view($id, $config = 0)
 {
     global $DB, $CFG_GLPI;
     $pmDisplayview = new PluginMonitoringDisplayview();
     $pmDisplayview_rule = new PluginMonitoringDisplayview_rule();
     $pmDisplayview->getFromDB($id);
     echo "<script type='text/javascript'>\n            function fittext(itemid) {\n               document.getElementById(itemid).style.fontSize = '50px';\n               var fontsize = 50;\n               while(document.getElementById(itemid).offsetWidth > 120) {\n                  fontsize--;\n                  if (fontsize > 20) {\n                     fontsize--;\n                  }\n                  document.getElementById(itemid).style.fontSize = fontsize + 'px';\n               }\n               while(document.getElementById(itemid).offsetHeight > 67) {\n                  fontsize--;\n                  document.getElementById(itemid).style.fontSize = fontsize + 'px';\n               }\n               if (fontsize > 30) {\n                  document.getElementById(itemid).style.fontSize = '30px';\n               }\n               if (fontsize < 7) {\n                  document.getElementById(itemid).style.fontSize = '7px';\n               }\n            }\n         </script>";
     PluginMonitoringServicegraph::loadLib();
     if ($config == '1') {
         $this->addItem($id);
         $pmDisplayview_rule->showReplayRulesForm($id);
         echo "<div id='updatecoordonates'></div>";
     } else {
         if (!is_null($pmDisplayview->fields['counter'])) {
             $pmDisplay = new PluginMonitoringDisplay();
             $pmDisplay->showCounters($pmDisplayview->fields['counter']);
         }
     }
     echo "<table class='tab_cadre_fixe' id='test' style='width:" . $pmDisplayview->fields['width'] . "px'>";
     echo "<tr class='tab_bg_1'>";
     echo "<th>";
     echo $pmDisplayview->fields['name'];
     echo "</th>";
     echo "</tr>";
     echo "<tr class='tab_bg_1'>";
     echo "<th>";
     echo "<a onClick='Ext.get(\"date_text\").toggle();Ext.get(\"date_select\").toggle();" . "Ext.get(\"time_text\").toggle();Ext.get(\"time_select\").toggle();'>\n      <img src='" . $CFG_GLPI["root_doc"] . "/pics/deplier_down.png' />&nbsp;\n         " . __('Date and time select', 'monitoring') . "\n      &nbsp;<img src='" . $CFG_GLPI["root_doc"] . "/pics/deplier_down.png' /></a>";
     echo "</th>";
     echo "</tr>";
     echo "<tr class='tab_bg_1' id='date_text' style='display: none;'>";
     echo "<th>";
     echo __('Select date', 'monitoring');
     echo "</th>";
     echo "</tr>";
     echo "<tr class='tab_bg_1' id='date_select' style='display: none;'>";
     echo "<td>";
     $query = "SELECT * FROM `glpi_plugin_monitoring_displayviews_items`\n         WHERE `plugin_monitoring_displayviews_id`='" . $id . "'\n            AND `itemtype`='PluginMonitoringService'";
     $result = $DB->query($query);
     $a_items = array();
     $end = time();
     $start = time();
     $pmComponent = new PluginMonitoringComponent();
     while ($data = $DB->fetch_array($result)) {
         $itemtype = $data['itemtype'];
         $item = new $itemtype();
         $item->getFromDB($data['items_id']);
         if (isset($item->fields['plugin_monitoring_components_id'])) {
             $oldvalue = current(getAllDatasFromTable('glpi_plugin_monitoring_serviceevents', "`plugin_monitoring_services_id`='" . $data['items_id'] . "'", false, 'date ASC LIMIT 1'));
             $date = new DateTime($oldvalue['date']);
             if ($date->getTimestamp() < $start) {
                 $start = $date->getTimestamp();
             }
             $pmComponent->getFromDB($item->fields['plugin_monitoring_components_id']);
             $a_items["item" . $data['id']] = array('rrdtool_template' => $pmComponent->fields['graph_template'], 'itemtype' => $data['itemtype'], 'items_id' => $data['items_id'], 'timezone' => 0, 'time' => $data['extra_infos'], 'pmComponents_id' => $pmComponent->fields['id']);
         }
     }
     echo "\n<script type=\"text/javascript\">\n\nExt.onReady(function(){\n\n    var tip = new Ext.slider.Tip({\n        getText: function(thumb){\n            return String.format('<b> ' + new Date(thumb.value * 1000).format('Y-m-d') + '</b>');\n        }\n    });\n\n    new Ext.Slider({\n        renderTo: 'custom-tip-slider',\n        width: 940,\n        increment: 86400,\n        minValue: " . $start . ",\n        maxValue: " . $end . ",\n        value: " . $end . ",\n        plugins: tip,\n        listeners: {\n            dragend: function(slider, thumb, value){\n               document.getElementById('custom_date').textContent = slider.getValue();\n                  ";
     $pmServicegraph = new PluginMonitoringServicegraph();
     foreach ($a_items as $js_id => $js_data) {
         echo "mgr" . $js_data['items_id'] . $js_data['time'] . ".stopAutoRefresh();\n";
         $pmServicegraph->startAutoRefresh($js_data['rrdtool_template'], $js_data['itemtype'], $js_data['items_id'], $js_data['timezone'], $js_data['time'], $js_data['pmComponents_id']);
     }
     echo "\n            }\n        }\n    });\n\n});\n</script>";
     echo '<center><div id="custom-tip-slider"></div></center>';
     echo "</td>";
     echo "</tr>";
     echo "<tr class='tab_bg_1' id='time_text' style='display: none;'>";
     echo "<th>";
     echo __('Select time', 'monitoring');
     echo "</th>";
     echo "</tr>";
     echo "<tr class='tab_bg_1' id='time_select' style='display: none;'>";
     echo "<td>";
     $start = 0 + 86400 - 3600;
     $end = 86400 + 86400 - 3600 - 300;
     $current = mktime(date('H'), date('i'), 0, 1, 2, 1970);
     echo "\n<script type=\"text/javascript\">\n\nExt.onReady(function(){\n\n   var tiptime = new Ext.slider.Tip({\n        getText: function(thumb){\n            return String.format('<b> ' + new Date(thumb.value * 1000).format('H:i:s') + '</b>');\n        }\n    });\n\n    new Ext.Slider({\n        renderTo: 'custom-tip-slider-time',\n        width: 940,\n        increment: 300,\n        minValue: " . $start . ",\n        maxValue: " . $end . ",\n        value: " . $current . ",\n        plugins: tiptime,\n        listeners: {\n            dragend: function(slider, thumb, value){\n               document.getElementById('custom_time').textContent = slider.getValue();\n                  ";
     $pmServicegraph = new PluginMonitoringServicegraph();
     foreach ($a_items as $js_id => $js_data) {
         echo "mgr" . $js_data['items_id'] . $js_data['time'] . ".stopAutoRefresh();\n";
         $pmServicegraph->startAutoRefresh($js_data['rrdtool_template'], $js_data['itemtype'], $js_data['items_id'], $js_data['timezone'], $js_data['time'], $js_data['pmComponents_id']);
     }
     echo "\n            }\n        }\n    });\n\n});\n</script>";
     echo '<center><div id="custom-tip-slider-time"></div></center>';
     echo "</td>";
     echo "</tr>";
     echo "<tr class='tab_bg_1'>";
     echo "<th>";
     echo __('View', 'monitoring');
     echo "</th>";
     echo "</tr>";
     echo "<tr class='tab_bg_1'>";
     echo "<td>";
     echo "<input type='hidden' name='updateviewid' id='updateviewid' value='" . $id . "' />";
     if ($config == 0) {
         echo "<div id='filariane'>&nbsp;</div>";
         echo "<input type='hidden' name='updatefil' id='updatefil' value='" . $id . "!' />";
         echo "<script type=\"text/javascript\">\n            function reloadfil() {\n               Ext.get('filariane').load({\n                   url: '" . $CFG_GLPI["root_doc"] . "/plugins/monitoring/ajax/updateFilariane.php',\n                   scripts: true,\n                      params:'updatefil=' + Ext.get('updatefil').getValue() + '&id=" . $_GET['id'] . "&currentview=' + Ext.get('updateviewid').getValue()\n               });\n            }\n            reloadfil();\n         </script>";
     }
     echo "</td>";
     echo "</tr>";
     echo "<tr class='tab_bg_1'>";
     echo "<td height='1200' id='panel'>";
     echo '<div id="custom_date" style="display:none"></div>';
     echo '<div id="custom_time" style="display:none"></div>';
     echo "<div id='viewform'>";
     echo "<script type='text/javascript'>\n        \n        //Simple 'border layout' panel to house both grids\n        var displayPanel = new Ext.Panel({\n          id       : 'viewpanel',\n          width    : " . $pmDisplayview->fields['width'] . ",\n          height   : 1200,\n          layout: 'absolute',\n          renderTo : 'panel',\n          items    : []\n        });\n\n      </script>";
     echo "</div>";
     echo "<script type=\"text/javascript\">\n         function reloadview() {\n            Ext.get('viewform').load({\n                url: '" . $CFG_GLPI["root_doc"] . "/plugins/monitoring/ajax/loadView.php',\n                scripts: true,\n                   params:'id=' + Ext.get('updateviewid').getValue() + '&config=" . $config . "'\n            });\n         }\n         reloadview();\n      </script>";
     echo "</td>";
     echo "</tr>";
     echo "</table>";
     echo "<br/>";
 }
 static function displayTabContentForItem(CommonGLPI $item, $tabnum = 1, $withtemplate = 0)
 {
     if ($item->getType() == 'PluginMonitoringDisplayview') {
         switch ($tabnum) {
             case 1:
                 $pmDisplayview_item = new PluginMonitoringDisplayview_item();
                 $pmDisplayview_item->view($item->getID(), 1);
                 break;
             case 2:
                 $item->showVisibility();
                 break;
         }
         if ($tabnum >= 20) {
             $pmDisplayview_rule = new PluginMonitoringDisplayview_rule();
             $pmDisplayview_rule->ShowRulesTabs($item->getID(), $tabnum);
         }
     } else {
         if ($item->getType() == 'Central') {
             if (Session::haveRight("plugin_monitoring_displayview", PluginMonitoringDisplayview::HOMEPAGE)) {
                 $pmDisplayview_item = new PluginMonitoringDisplayview_item();
                 $pmDisplayview = new PluginMonitoringDisplayview();
                 $a_views = $pmDisplayview->getViews(1);
                 foreach ($a_views as $views_id => $name) {
                     $pmDisplayview->getFromDB($views_id);
                     if ($pmDisplayview->haveVisibilityAccess()) {
                         $pmDisplayview_item->view($views_id);
                     }
                 }
             }
         }
     }
     return true;
 }
                              'condition' => "`is_frontview`='0'",
                              'used'      => array($_POST['displayviews_id'])));
      }
      break;

   case 'service':
   case 'host':

      $elements = array(
          'Computer'          => __('Computer'),
          'NetworkEquipment'  => __('NetworkEquipment'),
          'Peripheral'        => __('Peripheral'),
          'Phone'             => __('Phone'),
          'Printer'           => __('Printer')
      );
      $pmDisplayview_rule = new PluginMonitoringDisplayview_rule();
      $a_items = $pmDisplayview_rule->find("`plugin_monitoring_displayviews_id`='".$_POST['displayviews_id']."'"
              . " AND `type`='host'");
      foreach ($a_items as $data) {
         if (isset($elements[$data['itemtype']])) {
            unset($elements[$data['itemtype']]);
         }
      }
      Dropdown::showFromArray('type', $elements);
      echo "<br/>".__('Display minemap', 'monitoring')." : ";
      Dropdown::showYesNo('is_minemap');
      break;

   case 'PluginMonitoringCustomitem_Gauge':
      Dropdown::show('PluginMonitoringCustomitem_Gauge', array('name'=>'items_id'));
      break;
Example #4
0
function plugin_monitoring_MassiveActionsProcess($data)
{
    switch ($data['action']) {
        case "plugin_monitoring_activatehosts":
            if ($data['itemtype'] == "Computer") {
                $pmHost = new PluginMonitoringHost();
                foreach ($data['item'] as $key => $val) {
                    if ($val == '1') {
                        $pmHost->massiveactionAddHost($data['itemtype'], $key, $data['template_id']);
                    }
                }
            }
            break;
        case 'plugin_monitoring_playrule_componentscatalog':
            $pmComponentscatalog_rule = new PluginMonitoringComponentscatalog_rule();
            foreach ($data['item'] as $key => $val) {
                $a_rules = $pmComponentscatalog_rule->find("`plugin_monitoring_componentscalalog_id`='" . $key . "'");
                foreach ($a_rules as $data) {
                    $pmComponentscatalog_rule->getFromDB($data['id']);
                    PluginMonitoringComponentscatalog_rule::getItemsDynamicly($pmComponentscatalog_rule);
                }
            }
            break;
        case 'plugin_monitoring_playrule_displayview':
            $pmDisplayview_rule = new PluginMonitoringDisplayview_rule();
            foreach ($data['item'] as $key => $val) {
                $a_rules = $pmDisplayview_rule->find("`plugin_monitoring_displayviews_id`='" . $key . "'");
                foreach ($a_rules as $data) {
                    $pmDisplayview_rule->getFromDB($data['id']);
                    PluginMonitoringDisplayview_rule::getItemsDynamicly($pmDisplayview_rule);
                }
            }
            break;
    }
}
 static function getItemsDynamicly($parm)
 {
     global $DB;
     $pmDisplayview_rule = new PluginMonitoringDisplayview_rule();
     $pmDisplayview_item = new PluginMonitoringDisplayview_item();
     $pmDisplayview = new PluginMonitoringDisplayview();
     $pmSearch = new PluginMonitoringSearch();
     $pmService = new PluginMonitoringService();
     $devices_present = array();
     if ($pmDisplayview_rule->getFromDB($parm->fields['id'])) {
         if ($pmDisplayview->getFromDB($pmDisplayview_rule->fields['plugin_monitoring_displayviews_id'])) {
             // Load right entity
             $default_entity = 0;
             if (isset($_SESSION['glpiactive_entity'])) {
                 $default_entity = $_SESSION['glpiactive_entity'];
             }
             $entities_isrecursive = 0;
             if (isset($_SESSION['glpiactiveentities']) and count($_SESSION['glpiactiveentities']) > 1) {
                 $entities_isrecursive = 1;
             }
             Session::changeActiveEntities($pmDisplayview->fields['entities_id'], $pmDisplayview->fields['is_recursive']);
             $get_tmp = '';
             $itemtype = $pmDisplayview_rule->fields['itemtype'];
             if (isset($_GET)) {
                 $get_tmp = $_GET;
             }
             if (isset($_SESSION["glpisearchcount"][$pmDisplayview_rule->fields['itemtype']])) {
                 unset($_SESSION["glpisearchcount"][$pmDisplayview_rule->fields['itemtype']]);
             }
             if (isset($_SESSION["glpisearchcount2"][$pmDisplayview_rule->fields['itemtype']])) {
                 unset($_SESSION["glpisearchcount2"][$pmDisplayview_rule->fields['itemtype']]);
             }
             $_GET = importArrayFromDB($pmDisplayview_rule->fields['condition']);
             $_GET["glpisearchcount"] = count($_GET['field']);
             if (isset($_GET['field2'])) {
                 $_GET["glpisearchcount2"] = count($_GET['field2']);
             }
             $params = Search::manageParams($pmDisplayview_rule->fields['itemtype'], $_GET);
             //            Search::manageGetValues($pmDisplayview_rule->fields['itemtype']);
             $queryd = "SELECT * FROM `glpi_plugin_monitoring_displayviews_items`\n               WHERE `plugin_monitoring_displayviews_id`='" . $pmDisplayview_rule->fields["plugin_monitoring_displayviews_id"] . "'\n                  AND `itemtype`='" . $pmDisplayview_rule->fields['type'] . "'\n                  AND `extra_infos`='" . $pmDisplayview_rule->fields['itemtype'] . "'";
             $result = $DB->query($queryd);
             while ($data = $DB->fetch_array($result)) {
                 $devices_present[$data['items_id']] = $data['id'];
             }
             $glpilist_limit = $_SESSION['glpilist_limit'];
             $_SESSION['glpilist_limit'] = 500000;
             $result = $pmSearch->constructSQL($itemtype, $_GET);
             $_SESSION['glpilist_limit'] = $glpilist_limit;
             while ($data = $DB->fetch_array($result)) {
                 if (!isset($devices_present[$data['id']])) {
                     // Verify this device has one or more resources
                     $query_h = "SELECT * FROM `glpi_plugin_monitoring_componentscatalogs_hosts`" . " LEFT JOIN `glpi_plugin_monitoring_services`" . "    ON `plugin_monitoring_componentscatalogs_hosts_id`=" . " `glpi_plugin_monitoring_componentscatalogs_hosts`.`id`" . " WHERE `items_id`='" . $data['id'] . "'" . "    AND `itemtype`='" . $pmDisplayview_rule->fields['itemtype'] . "'" . "    AND `glpi_plugin_monitoring_services`.`id` IS NOT NULL";
                     $result_h = $DB->query($query_h);
                     if ($DB->numrows($result_h) > 0) {
                         $input = array();
                         $input['plugin_monitoring_displayviews_id'] = $pmDisplayview_rule->fields["plugin_monitoring_displayviews_id"];
                         $input['x'] = '1';
                         $input['y'] = '1';
                         $input['items_id'] = $data['id'];
                         $input['itemtype'] = $pmDisplayview_rule->fields['type'];
                         $input['extra_infos'] = $pmDisplayview_rule->fields['itemtype'];
                         $pmDisplayview_item->add($input);
                     }
                 } else {
                     // Verify this device has one or more resources
                     $query_h = "SELECT * FROM `glpi_plugin_monitoring_componentscatalogs_hosts`" . " LEFT JOIN `glpi_plugin_monitoring_services`" . "    ON `plugin_monitoring_componentscatalogs_hosts_id`=" . " `glpi_plugin_monitoring_componentscatalogs_hosts`.`id`" . " WHERE `items_id`='" . $data['id'] . "'" . "    AND `itemtype`='" . $pmDisplayview_rule->fields['itemtype'] . "'" . "    AND `glpi_plugin_monitoring_services`.`id` IS NOT NULL";
                     $result_h = $DB->query($query_h);
                     if ($DB->numrows($result_h) > 0) {
                         unset($devices_present[$data['id']]);
                     }
                 }
             }
             // Reload current entity
             Session::changeActiveEntities($default_entity, $entities_isrecursive);
         } else {
             $pmDisplayview->delete(array('id' => $pmDisplayview_rule->fields['plugin_monitoring_displayviews_id']));
         }
     }
     foreach ($devices_present as $id) {
         $pmDisplayview_item->delete(array('id' => $id));
     }
     return true;
 }
  @since     2011

  ------------------------------------------------------------------------
*/
include "../../../inc/includes.php";
Session::checkRight("plugin_monitoring_displayview", READ);
Html::header(__('Monitoring', 'monitoring'), $_SERVER["PHP_SELF"], "plugins", "monitoring", "displayview_item");
$pmDisplayview_item = new PluginMonitoringDisplayview_item();
if (isset($_POST['plugin_monitoring_services_id']) and $_POST['plugin_monitoring_services_id'] > 0) {
    $_POST['items_id'] = $_POST['plugin_monitoring_services_id'];
    $_POST['itemtype'] = "PluginMonitoringService";
}
if (isset($_POST["add"])) {
    if ($_POST['itemtype'] == 'host' || $_POST['itemtype'] == 'service') {
        $input = $_POST;
        $input['itemtype'] = $_POST['type'];
        $input['type'] = $_POST['itemtype'];
        $input['condition'] = exportArrayToDB(array('name' => '', 'itemtype' => $input['itemtype'], 'field' => array(1), 'searchtype' => array('contains')));
        $pmDisplayview_rule = new PluginMonitoringDisplayview_rule();
        $pmDisplayview_rule->add($input);
    } else {
        $pmDisplayview_item->add($_POST);
    }
    Html::back();
} else {
    if (isset($_POST["delete"])) {
        $pmDisplayview_item->delete($_POST);
        Html::back();
    }
}
Html::footer();
 function view($id, $config = 0)
 {
     global $DB, $CFG_GLPI;
     $pmDisplayview = new PluginMonitoringDisplayview();
     $pmDisplayview_rule = new PluginMonitoringDisplayview_rule();
     $pmDisplayview->getFromDB($id);
     echo "<script type='text/javascript'>\n            function fittext(itemid) {\n               document.getElementById(itemid).style.fontSize = '50px';\n               var fontsize = 50;\n               while(document.getElementById(itemid).offsetWidth > 120) {\n                  fontsize--;\n                  if (fontsize > 20) {\n                     fontsize--;\n                  }\n                  document.getElementById(itemid).style.fontSize = fontsize + 'px';\n               }\n               while(document.getElementById(itemid).offsetHeight > 67) {\n                  fontsize--;\n                  document.getElementById(itemid).style.fontSize = fontsize + 'px';\n               }\n               if (fontsize > 30) {\n                  document.getElementById(itemid).style.fontSize = '30px';\n               }\n               if (fontsize < 7) {\n                  document.getElementById(itemid).style.fontSize = '7px';\n               }\n            }\n         </script>";
     PluginMonitoringToolbox::loadLib();
     $style = '';
     if ($config == '1') {
         $this->addItem($id);
         $pmDisplayview_rule->showReplayRulesForm($id);
         echo "<div id='updatecoordonates'></div>";
         if ($pmDisplayview->fields['width'] > 950) {
             $style = ";position:relative;left:-" . ($pmDisplayview->fields['width'] - 950) / 2 . "px";
         }
     } else {
         if (!is_null($pmDisplayview->fields['counter'])) {
             $pmDisplay = new PluginMonitoringDisplay();
             $pmDisplay->showCounters($pmDisplayview->fields['counter']);
         }
     }
     echo "<table class='tab_cadre_fixe' id='test' style='width:" . $pmDisplayview->fields['width'] . "px" . $style . "'>";
     echo "<tr class='tab_bg_1'>";
     echo "<th>";
     echo $pmDisplayview->fields['name'];
     echo "</th>";
     echo "</tr>";
     echo "<tr class='tab_bg_1' id='date_text'>";
     echo "<th>";
     echo __('Select date', 'monitoring') . " - " . __('Select time', 'monitoring');
     echo "</th>";
     echo "</tr>";
     echo "<tr class='tab_bg_1'>";
     echo "<td>";
     $query = "SELECT * FROM `glpi_plugin_monitoring_displayviews_items`\n         WHERE `plugin_monitoring_displayviews_id`='" . $id . "'\n            AND `itemtype`='PluginMonitoringService'";
     $result = $DB->query($query);
     $a_items = array();
     $end = time();
     $start = time();
     $pmComponent = new PluginMonitoringComponent();
     while ($data = $DB->fetch_array($result)) {
         $itemtype = $data['itemtype'];
         $item = new $itemtype();
         $item->getFromDB($data['items_id']);
         if (isset($item->fields['plugin_monitoring_components_id'])) {
             $oldvalue = current(getAllDatasFromTable('glpi_plugin_monitoring_serviceevents', "`plugin_monitoring_services_id`='" . $data['items_id'] . "'", false, 'date ASC LIMIT 1'));
             $date = new DateTime($oldvalue['date']);
             if ($date->getTimestamp() < $start) {
                 $start = $date->getTimestamp();
             }
             $pmComponent->getFromDB($item->fields['plugin_monitoring_components_id']);
             $a_items["item" . $data['id']] = array('rrdtool_template' => $pmComponent->fields['graph_template'], 'itemtype' => $data['itemtype'], 'items_id' => $data['items_id'], 'timezone' => 0, 'time' => $data['extra_infos'], 'pmComponents_id' => $pmComponent->fields['id']);
         }
     }
     $nbdays = round((date('U') - $start) / 86400);
     echo "<script type=\"text/javascript\">\n      \$(function() {\n          \$( \"#custom_date\" ).datepicker({ minDate: -" . $nbdays . ", maxDate: \"+0D\", dateFormat:'mm/dd/yy' });\n          \$( \"#custom_time\" ).timepicker();\n\n      });\n      </script>";
     echo '<center><input type="text" id="custom_date" value="' . date('m/d/Y') . '"> ' . ' <input type="text" id="custom_time" value="' . date('H:i') . '"></center>';
     echo "</td>";
     echo "</tr>";
     echo "<tr class='tab_bg_1' id='time_text' style='display: none;'>";
     echo "<th>";
     echo __('Select time', 'monitoring');
     echo "</th>";
     echo "</tr>";
     echo "<tr class='tab_bg_1'>";
     echo "<th>";
     echo __('View', 'monitoring');
     echo "</th>";
     echo "</tr>";
     echo "<tr class='tab_bg_1'>";
     echo "<td>";
     echo "<input type='hidden' name='updateviewid' id='updateviewid' value='" . $id . "' />";
     if ($config == 0) {
         echo "<div id='filariane'>&nbsp;</div>";
         echo "<input type='hidden' name='updatefil' id='updatefil' value='" . $id . "!' />";
         echo "<script type=\"text/javascript\">\n            function reloadfil() {\n              \$.get('" . $CFG_GLPI["root_doc"] . "/plugins/monitoring/ajax/updateFilariane.php?updatefil=' + \$('#updatefil').val() + '&id=" . $id . "&currentview=' + \$('#updateviewid').val(), function(data) {\n                \$('#filariane').html(data);\n               });\n            }\n            reloadfil();\n         </script>";
     }
     echo "</td>";
     echo "</tr>";
     echo "<tr class='tab_bg_1'>";
     echo "<td height='1200' id='panel'>";
     echo "<script type=\"text/javascript\">\n           \$.get('" . $CFG_GLPI["root_doc"] . "/plugins/monitoring/ajax/showPanel.php?id=" . $id . "&config=" . $config . "', function(data) {\n             \$('#panel').html(data);\n            });\n      </script>";
     echo "</td>";
     echo "</tr>";
     echo "</table>";
     echo "<br/>";
 }
  @package   Plugin Monitoring for GLPI
  @author    David Durieux
  @co-author 
  @comment   
  @copyright Copyright (c) 2011-2013 Plugin Monitoring for GLPI team
  @license   AGPL License 3.0 or (at your option) any later version
             http://www.gnu.org/licenses/agpl-3.0-standalone.html
  @link      https://forge.indepnet.net/projects/monitoring/
  @since     2013

  ------------------------------------------------------------------------
*/
include "../../../inc/includes.php";
PluginMonitoringProfile::checkRight("view", "w");
Html::header(__('Monitoring', 'monitoring'), $_SERVER["PHP_SELF"], "plugins", "monitoring", "views");
$pmDisplayview_rule = new PluginMonitoringDisplayview_rule();
$pmDisplayview = new PluginMonitoringDisplayview();
if (isset($_GET['updaterule'])) {
    if (!isset($_GET['contains']) and !isset($_GET['reset'])) {
        //      $_SESSION['plugin_monitoring_rules'] = $_POST;
    } else {
        $_POST = $_GET;
        $input = array();
        $pmDisplayview->getFromDB($_POST['plugin_monitoring_displayviews_id']);
        $input['id'] = $_POST['id'];
        $input['entities_id'] = $pmDisplayview->fields['entities_id'];
        $input['is_recursive'] = $pmDisplayview->fields['is_recursive'];
        $input['name'] = $_POST['name'];
        $input['itemtype'] = $_POST['itemtype'];
        $input['plugin_monitoring_displayviews_id'] = $_POST['plugin_monitoring_displayviews_id'];
        unset($_POST['entities_id']);
   function view($id, $config=0) {
      global $DB, $CFG_GLPI;

      $pmDisplayview       = new PluginMonitoringDisplayview();
      $pmDisplayview_rule  = new PluginMonitoringDisplayview_rule();

      $pmDisplayview->getFromDB($id);

         echo "<script type='text/javascript'>
            function fittext(itemid) {
               document.getElementById(itemid).style.fontSize = '50px';
               var fontsize = 50;
               while(document.getElementById(itemid).offsetWidth > 120) {
                  fontsize--;
                  if (fontsize > 20) {
                     fontsize--;
                  }
                  document.getElementById(itemid).style.fontSize = fontsize + 'px';
               }
               while(document.getElementById(itemid).offsetHeight > 67) {
                  fontsize--;
                  document.getElementById(itemid).style.fontSize = fontsize + 'px';
               }
               if (fontsize > 30) {
                  document.getElementById(itemid).style.fontSize = '30px';
               }
               if (fontsize < 7) {
                  document.getElementById(itemid).style.fontSize = '7px';
               }
            }
         </script>";

      PluginMonitoringToolbox::loadLib();

      $style = '';
      if ($config == '1') {
         $this->addItem($id);
         $pmDisplayview_rule->showReplayRulesForm($id);
         echo "<div id='updatecoordonates'></div>";
         if ($pmDisplayview->fields['width'] > 950) {
            $style = ";position:relative;left:-".(($pmDisplayview->fields['width'] - 950) / 2)."px";
         }
      } else {
         if (!is_null($pmDisplayview->fields['counter'])) {
            $pmDisplay = new PluginMonitoringDisplay();
            $pmDisplay->showCounters($pmDisplayview->fields['counter']);
         }
      }

      echo "<table class='tab_cadre_fixe' id='test' style='width:".$pmDisplayview->fields['width']."px".$style."'>";

      echo "<tr class='tab_bg_1'>";
      echo "<th>";

      echo $pmDisplayview->fields['name'];
      echo "</th>";
      echo "</tr>";

      echo "<tr class='tab_bg_1' id='date_text'>";
      echo "<th>";
      echo __('Select date', 'monitoring')." - ".__('Select time', 'monitoring');
      echo "</th>";
      echo "</tr>";

      echo "<tr class='tab_bg_1'>";
      echo "<td>";

      $query = "SELECT * FROM `glpi_plugin_monitoring_displayviews_items`
         WHERE `plugin_monitoring_displayviews_id`='".$id."'
            AND `itemtype`='PluginMonitoringService'";
      $result = $DB->query($query);
      $a_items = array();
      $end = time();
      $start = time();

      $pmComponent = new PluginMonitoringComponent();
      while ($data=$DB->fetch_array($result)) {
         $itemtype = $data['itemtype'];
         $item = new $itemtype();
         $item->getFromDB($data['items_id']);
         if (isset($item->fields['plugin_monitoring_components_id'])) {
            $oldvalue = current(getAllDatasFromTable(
                    'glpi_plugin_monitoring_serviceevents',
                    "`plugin_monitoring_services_id`='".$data['items_id']."'",
                    false,
                    'date ASC LIMIT 1'));
            $date = new DateTime($oldvalue['date']);
            if ($date->getTimestamp() < $start) {
               $start = $date->getTimestamp();
            }
            $pmComponent->getFromDB($item->fields['plugin_monitoring_components_id']);

            $a_items["item".$data['id']] = array(
                'rrdtool_template'  => $pmComponent->fields['graph_template'],
                'itemtype'          => $data['itemtype'],
                'items_id'          => $data['items_id'],
                'timezone'          => 0,
                'time'              => $data['extra_infos'],
                'pmComponents_id'   => $pmComponent->fields['id']
            );
         }
      }
      $nbdays = round((date('U') - $start) / 86400);

      echo "<script type=\"text/javascript\">
      $(function() {
          $( \"#custom_date\" ).datepicker({ minDate: -".$nbdays.", maxDate: \"+0D\", dateFormat:'mm/dd/yy' });
          $( \"#custom_time\" ).timepicker();

      });
      </script>";

      echo '<center><input type="text" id="custom_date" value="'.date('m/d/Y').'"> '
              . ' <input type="text" id="custom_time" value="'.date('H:i').'"></center>';
      echo "</td>";
      echo "</tr>";

     echo "<tr class='tab_bg_1' id='time_text' style='display: none;'>";
      echo "<th>";
      echo __('Select time', 'monitoring');
      echo "</th>";
      echo "</tr>";

      echo "<tr class='tab_bg_1'>";
      echo "<th>";
      echo __('View', 'monitoring');
      echo "</th>";
      echo "</tr>";

      echo "<tr class='tab_bg_1'>";
      echo "<td>";
      echo "<input type='hidden' name='updateviewid' id='updateviewid' value='".$id."' />";
      if ($config == 0) {
         echo "<div id='filariane'>&nbsp;</div>";
         echo "<input type='hidden' name='updatefil' id='updatefil' value='".$id."!' />";

/*
         echo "<script type=\"text/javascript\">
            function reloadfil() {
               Ext.get('filariane').load({
                   url: '".$CFG_GLPI["root_doc"]."/plugins/monitoring/ajax/updateFilariane.php',
                   scripts: true,
                      params:'updatefil=' + Ext.get('updatefil').getValue() + '&id=".$id.
                 "&currentview=' + Ext.get('updateviewid').getValue()
               });
            }
            reloadfil();
         </script>";
 */
      }
      echo "</td>";
      echo "</tr>";


      echo "<tr class='tab_bg_1'>";
      echo "<td height='1200' id='panel'>";

      $queryitems = "SELECT * FROM `glpi_plugin_monitoring_displayviews_items`
         WHERE `plugin_monitoring_displayviews_id`='".$id."'";
      $resultitems = $DB->query($queryitems);
      $a_items = array();
      while ($dataitems=$DB->fetch_array($resultitems)) {
//         if ($this->displayItem($dataitems, $config)) {
            $a_items[] = $dataitems;
//         }
//         }
      }

echo "
<script type=\"text/javascript\">
$(function() {
";


foreach ($a_items as $item) {
   if ($config == '1') {
      $event = ", stop: function() {
           pos = $('#draggable".$item['id']."').position();
           $.get('".$CFG_GLPI["root_doc"]."/plugins/monitoring/ajax/displayview_itemcoordinates.php"
                          ."?id=".$item['id']
                          ."&x=' + pos.left + '&y=' + pos.top);
         }";
   } else {
      $event = '';
   }
   $size = $this->getSizeOfWidget($item['itemtype']);
   echo "$( \"#draggable".$item['id']."\" ).draggable({ cursor: 'move', cursorAt: { "
           . "top: ".($size['height']/2).", left: ".($size['width']/2).", "
           . " }, grid: [ 10, 10 ]".$event." } );";
}
echo "
});
</script>";

      echo "<div id='viewform' style='width: ".$pmDisplayview->fields['width']."px;height:1200px;position: relative;'>";

foreach ($a_items as $item) {
   $size = $this->getSizeOfWidget($item['itemtype']);
   echo '<div id="draggable'.$item['id'].'" ';
   if ($item['itemtype'] != 'PluginMonitoringServicescatalog'
           && $item['itemtype'] != 'PluginMonitoringComponentscatalog') {
      echo 'class="ui-widget-content" ';
   }
   echo  'style="width: '.$size['width'].'px; height: '.$size['height'].'px; '
           . 'position: absolute; left: '.$item['x'].'px; top: '.$item['y'].'px;">';

   if ($item['itemtype'] == 'PluginMonitoringService') {
      $pmComponent = new PluginMonitoringComponent();
      $pmService = new PluginMonitoringService();

      $pmService->getFromDB($item['items_id']);
      $pmComponent->getFromDB($pmService->fields['plugin_monitoring_components_id']);
      $pmServicegraph = new PluginMonitoringServicegraph();
      $pmServicegraph->displayGraph($pmComponent->fields['graph_template'],
                                    "PluginMonitoringService",
                                    $item['items_id'],
                                    "0",
                                    $item['extra_infos'],
                                    "",
                                    ($size['width'] - 15));
   } else if ($item['itemtype'] == 'PluginMonitoringWeathermap') {

   } else {
      echo "<div id=\"update".$item['itemtype'].$item['items_id']."\"></div>";

            echo "<script type=\"text/javascript\">";
            echo "
               (function worker() {
                 $.get('".$CFG_GLPI["root_doc"]."/plugins/monitoring/ajax/updateWidgetComponentscatalog.php"
                       ."?id=".$item['items_id']."&is_minemap=".$item['is_minemap'].
                             "', function(data) {
                   $('#update".$item['itemtype'].$item['items_id']."').html(data);
                   setTimeout(worker, 30000);
                 });
               })();";
            echo "</script>";

   }

   echo '</div>';
}

//      echo "<script type='text/javascript'>
//
//        //Simple 'border layout' panel to house both grids
//        var displayPanel = new Ext.Panel({
//          id       : 'viewpanel',
//          width    : ".$pmDisplayview->fields['width'].",
//          height   : 1200,
//          layout: 'absolute',
//          renderTo : 'panel',
//          items    : []
//        });
//
//      </script>";




      echo "</div>";
//      echo "<script type=\"text/javascript\">
//         function reloadview() {
//            Ext.get('viewform').load({
//                url: '".$CFG_GLPI["root_doc"]."/plugins/monitoring/ajax/loadView.php',
//                scripts: true,
//                   params:'id=' + Ext.get('updateviewid').getValue() + '&config=".$config."'
//            });
//         }
//         reloadview();
//      </script>";

      echo "</td>";
      echo "</tr>";
      echo "</table>";
      echo "<br/>";

   }
Example #10
0
 static function displayTabContentForItem(CommonGLPI $item, $tabnum = 1, $withtemplate = 0)
 {
     if ($item->getType() == 'PluginMonitoringDisplayview') {
         switch ($tabnum) {
             case 1:
                 $pmDisplayview_item = new PluginMonitoringDisplayview_item();
                 $pmDisplayview_item->view($item->getID(), 1);
                 break;
             case 2:
                 $item->showVisibility();
                 break;
         }
         if ($tabnum >= 20) {
             $pmDisplayview_rule = new PluginMonitoringDisplayview_rule();
             $pmDisplayview_rule->ShowRulesTabs($item->getID(), $tabnum);
         }
     }
     return true;
 }