/**
  * Show config menu
  */
 function showMenu()
 {
     global $CFG_GLPI;
     if (!$this->canView()) {
         return false;
     }
     echo "<div align='center'>";
     echo "<table class='tab_cadre' cellpadding='5' height='150'>";
     echo "<tr>";
     echo "<th colspan='5'>" . PluginShellcommandsShellcommand::getTypeName(2) . "</th>";
     echo "</tr>";
     echo "<tr class='tab_bg_1' style='background-color:white;'>";
     // Add shell command
     echo "<td class='center shellcommands_menu_item'>";
     echo "<a  class='shellcommands_menu_a' href=\"./shellcommand.php\">";
     echo "<img class='shellcommands_menu_img' src='" . $CFG_GLPI["root_doc"] . "/plugins/shellcommands/pics/shellcommand.png' alt=\"" . PluginShellcommandsShellcommand::getTypeName(2) . "\">";
     echo "<br>" . PluginShellcommandsShellcommand::getTypeName(2) . "</a>";
     echo "</td>";
     // Command group
     echo "<td class='center shellcommands_menu_item'>";
     echo "<a  class='shellcommands_menu_a' href=\"./commandgroup.php\">";
     echo "<img class='shellcommands_menu_img' src='" . $CFG_GLPI["root_doc"] . "/plugins/shellcommands/pics/commandgroup.png' alt=\"" . PluginShellcommandsCommandGroup::getTypeName(2) . "\">";
     echo "<br>" . PluginShellcommandsCommandGroup::getTypeName(2) . "</a>";
     echo "</td>";
     // Advanced execution
     echo "<td class='center shellcommands_menu_item'>";
     echo "<a  class='shellcommands_menu_a' href=\"./advanced_execution.php\">";
     echo "<img class='shellcommands_menu_img' src='" . $CFG_GLPI["root_doc"] . "/plugins/shellcommands/pics/advanced_execution.png' alt=\"" . PluginShellcommandsAdvanced_Execution::getTypeName(2) . "\">";
     echo "<br>" . PluginShellcommandsAdvanced_Execution::getTypeName(2) . "</a>";
     echo "</td>";
     echo "</table></div>";
 }
 /**
  * Show form
  * 
  * @global type $CFG_GLPI
  * @param type $ID
  * @param type $options
  */
 function showForm($ID = 0, $options = array())
 {
     global $CFG_GLPI;
     echo "<div class='center first-bloc'>";
     echo "<form name='field_form' method='post' action='" . Toolbox::getItemTypeFormURL(__CLASS__) . "'>";
     echo "<table class='tab_cadre_fixe'>";
     echo "<tr class='tab_bg_1'>";
     echo "<th>" . self::getTypeName() . "</th>";
     echo "</tr>";
     echo "<tr class='tab_bg_1'>";
     echo "<td class='tab_bg_2 center'>";
     echo PluginShellcommandsCommandGroup::getTypeName(1) . " ";
     Dropdown::show('PluginShellcommandsCommandGroup', array('entity' => $_SESSION['glpiactive_entity'], 'width' => 200));
     echo "</td>";
     echo "</tr>";
     echo "<tr class='tab_bg_1'>";
     echo "<td class='tab_bg_2 center'>";
     $this->getEditValue();
     echo "</td>";
     echo "</tr>";
     echo "<tr>";
     echo "<td class='tab_bg_2 center'>";
     echo "<input type='button' class='submit' onclick='shellcommand_advanced_execution(\"" . $CFG_GLPI['root_doc'] . "\",\"field_form\", \"advanced_execution_result\");' name='advanced_execution' value='" . __('Execute') . "'/>";
     echo "</td>";
     echo "</tr>";
     echo "</table>";
     Html::closeForm();
     echo "</div>";
     echo "<div class='spaced' id='advanced_execution_result'></div>";
 }
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.

 Shellcommands is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with Shellcommands. If not, see <http://www.gnu.org/licenses/>.
 --------------------------------------------------------------------------  */
include '../../../inc/includes.php';
if (empty($_GET["id"])) {
    $_GET["id"] = "";
}
$commandgroup = new PluginShellcommandsCommandGroup();
if (isset($_POST["add"])) {
    // Check add rights for fields
    $commandgroup->check(-1, UPDATE, $_POST);
    $commandgroup->add($_POST);
    Html::back();
} elseif (isset($_POST["update"])) {
    // Check update rights for fields
    $commandgroup->check($_POST['id'], UPDATE, $_POST);
    $commandgroup->update($_POST);
    Html::back();
} elseif (isset($_POST["delete"])) {
    // Check delete rights for fields
    $commandgroup->check($_POST['id'], UPDATE, $_POST);
    $commandgroup->delete($_POST, 1);
    $commandgroup->redirectToList();
 https://forge.indepnet.net/projects/shellcommands
 -------------------------------------------------------------------------

 LICENSE

 This file is part of Shellcommands.

 Shellcommands is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.

 Shellcommands is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with shellcommands. If not, see <http://www.gnu.org/licenses/>.
 --------------------------------------------------------------------------
*/
include '../../../inc/includes.php';
Html::header(PluginShellcommandsCommandGroup::getTypeName(2), '', "tools", "pluginshellcommandsshellcommand", "commandgroup");
$command = new PluginShellcommandsCommandGroup();
if ($command->canView() || Session::haveRight("config", UPDATE)) {
    Search::show("PluginShellcommandsCommandGroup");
} else {
    Html::displayRightError();
}
Html::footer();
 /**
  * Custom fonction to process shellcommand massive action
  **/
 function doMassiveAction(MassiveAction $ma, array $ids)
 {
     if (!empty($ids)) {
         $input = $ma->getInput();
         $itemtype = $ma->getItemType(false);
         $commands_id = $input['commandgroup'];
         switch ($ma->getAction()) {
             case 'generate':
                 echo "<div class='center'>";
                 echo "<table class='tab_cadre_fixe center'>";
                 echo "<tr class='tab_bg_1'>";
                 echo "<th colspan='4'>" . PluginShellcommandsCommandGroup::getTypeName(2) . "</th>";
                 echo "</tr>";
                 foreach ($ids as $key => $items_id) {
                     PluginShellcommandsCommandGroup_Item::lauchCommand(array('itemID' => $items_id, 'itemtype' => $itemtype, 'id' => $commands_id, 'value' => null));
                 }
                 echo "</table>";
                 echo "</div>";
                 break;
         }
     }
 }
 /**
  * Launch a command
  * 
  * @param array $values
  * 
  * @return void
  */
 static function lauchCommand($values)
 {
     global $CFG_GLPI;
     if (!empty($values['itemtype']) && !empty($values['itemID'])) {
         $item = getItemForItemtype($values['itemtype']);
         $item->getFromDB($values['itemID']);
         $shellcommands_item = new PluginShellcommandsShellcommand_Item();
         $shellcommands = new PluginShellcommandsShellcommand();
         $commandgroups = new PluginShellcommandsCommandGroup();
         $commandgroups_item = new PluginShellcommandsCommandGroup_Item();
         $commandgroups_items = $commandgroups_item->find("`plugin_shellcommands_commandgroups_id`=" . $values['id'], "`rank`");
         echo "<div class='center'>";
         echo "<table class='tab_cadre_fixe shellcommands_result_line'>";
         echo "<tr class='tab_bg_1'>";
         echo "<th colspan='4'>" . __('Result details') . "</th>";
         echo "</tr>";
         // First : test ping
         $error = 1;
         $commandgroups->getFromDB($values['id']);
         if (!empty($commandgroups->fields['check_commands_id'])) {
             $targetParam = PluginShellcommandsShellcommand_Item::resolveLinkOfCommand($commandgroups->fields['check_commands_id'], $item);
             // Exec command on each targets : stop on first success
             if ($targetParam !== false) {
                 foreach ($targetParam as $target) {
                     list($error, $execPing) = PluginShellcommandsShellcommand_Item::execCommand($commandgroups->fields['check_commands_id'], $target);
                     if (!$error) {
                         break;
                     }
                 }
             }
         }
         // If Ping ok execute group commands
         if (!$error) {
             echo "<tr class='tab_bg_1 shellcommands_result_line'>";
             echo "<td class='center' colspan='2'>" . __($item->getType()) . ' : ' . $item->getLink() . "</td>";
             echo "<td class='center'><div class='shellcommands_result_ok'>UP</div></td>";
             echo "<td>";
             echo __('Host UP', 'shellcommands');
             echo "</td>";
             echo "</tr>";
             if (!empty($commandgroups_items)) {
                 foreach ($commandgroups_items as $val) {
                     if (!$shellcommands_item->getFromDBbyShellCommandsAndItem($val['plugin_shellcommands_shellcommands_id'], $values['itemtype'])) {
                         continue;
                     }
                     $shellcommands->getFromDB($val['plugin_shellcommands_shellcommands_id']);
                     $targetParam = PluginShellcommandsShellcommand_Item::resolveLinkOfCommand($val['plugin_shellcommands_shellcommands_id'], $item);
                     // Exec command on each targets : stop on first success
                     if ($targetParam !== false) {
                         foreach ($targetParam as $target) {
                             list($error, $message) = PluginShellcommandsShellcommand_Item::execCommand($shellcommands->getID(), $target);
                             if (!$error) {
                                 break;
                             }
                         }
                     }
                     PluginShellcommandsShellcommand::displayCommandResult($shellcommands, $target, $message, $error);
                 }
             }
         } else {
             echo "<tr class='tab_bg_1 shellcommands_result_line'>";
             echo "<td class='center' colspan='2'>" . __($item->getType()) . ' : ' . $item->getLink() . "</td>";
             echo "<td class='center'><div class='shellcommands_result_ko'>DOWN</div></td>";
             echo "<td>";
             echo __('Host DOWN', 'shellcommands');
             echo "</td>";
             echo "</tr>";
         }
         echo "</table>";
         echo "</div>";
     }
 }