/** * Display a management console in order to see the difference between the typology linkked * and data from each computer * * @param $ID : id item * * @return Nothing (displays) **/ static function showManagementConsole($ID, $typo_ID, $display = true) { $notOK = array(); //image type $options['seeResult'] = 1; $options['seeItemtype'] = 1; $restrict = "`glpi_plugin_typology_typologycriterias`.`plugin_typology_typologies_id` = '{$typo_ID}'\n AND `glpi_plugin_typology_typologycriterias`.`is_active` = 1\n ORDER BY `glpi_plugin_typology_typologycriterias`.`itemtype`"; $criterias = getAllDatasFromTable('glpi_plugin_typology_typologycriterias', $restrict); //typology criteria exist -> managmentconsole will be not empty if (!empty($criterias)) { if ($display) { echo "<div class='center'><table class='tab_cadre_fixe'>"; //title echo "<tr><th colspan='7'>"; _e('Management console', 'typology'); echo "</th></tr>"; //column name echo "<tr>"; echo "<th rowspan='2'>" . __('Item') . "</th>"; echo "<th colspan='2' rowspan='2'>" . _n('Field', 'Fields', 2) . "</th>"; echo "<th rowspan='2'>" . __('Comparison', 'typology') . "</th>"; echo "<th colspan='2'>" . __('Detail of the assigned typology', 'typology') . "</th>"; echo "<th>" . __('Detail of the encountered configuration', 'typology') . "</th>"; echo "</tr>"; //sub-column name echo "<tr>"; echo "<th class='center b'>" . __('Logical operator') . "</th>"; echo "<th class='center b'>" . __('Waiting value', 'typology') . "</th>"; echo "<th class='center b'>" . __('Real value', 'typology') . "</th>"; echo "</tr>"; } foreach ($criterias as $criteria) { $tabCrit[$criteria['itemtype']][] = $criteria['id']; } foreach ($tabCrit as $itemtype => $tabCritID) { $datas = PluginTypologyTypologyCriteriaDefinition::getConsoleData($tabCritID, $ID, $itemtype, $display); if (!$display) { foreach ($datas[$itemtype] as $k => $critId) { if ($critId['result'] == 'not_ok') { $notOK[] = $k; } } } else { foreach ($datas as $itemtype => $allCrit) { if (!empty($allCrit)) { foreach ($allCrit as $key1 => $allDef) { if (!empty($allDef)) { foreach ($allDef as $key2 => $def) { if (!empty($def)) { echo "<tr class='tab_bg_1'>"; $def['itemtype'] = $itemtype; PluginTypologyTypologyCriteriaDefinition::showMinimalDefinitionForm($def, $options); echo "</tr>"; } } } echo "<tr>"; echo "<th colspan='7' class='center b'></th>"; echo "</tr>"; } } } } } if ($display) { echo "</table></div>"; } return $notOK; } }
/** * Display the typologycriteria form, typology side * * @param PluginTypologyTypology $typo * @param bool $showAdd */ public static function showForTypology(PluginTypologyTypology $typo, $showAdd = true) { $ID = $typo->getField('id'); $crit = new PluginTypologyTypologyCriteria(); $canedit = $typo->can($ID, 'w'); $rand = mt_rand(); if ($canedit) { if ($showAdd) { echo "<div class='center first-bloc'>"; echo "<form name='typocrit_form{$rand}' id='typocrit_form{$rand}' method='post' action='"; echo Toolbox::getItemTypeFormURL(__CLASS__) . "'>"; echo "<table class='tab_cadre_fixe'>"; echo "<tr class='tab_bg_1'><th colspan='7'>" . __('Add a criterion', 'typology') . "</tr>"; echo "<tr class='tab_bg_2'><td class='center'>" . __('Name') . "</td>"; echo "<input type='hidden' name='plugin_typology_typologies_id' value='{$ID}'>"; echo "<input type='hidden' name='entities_id' value='" . $typo->getEntityID() . "'>"; echo "<input type='hidden' name='is_recursive' value='" . $typo->isRecursive() . "'>"; echo "</td><td class='center'>"; Html::autocompletionTextField($crit, "name"); echo "</td><td class='center'>" . __('Item') . "</td><td class='center'>"; PluginTypologyTypologyCriteria::dropdownItemtype(); echo "</td><td>" . __('Logical operator') . "</td><td>"; Dropdown::showFromArray('link', array(0 => __('and'), 1 => __('or'))); echo "</td><td>"; echo "<input type='hidden' name='is_active' value='1'>"; echo "<input type='submit' name='add' value=\"" . _sx('button', 'Add') . "\" class='submit'>"; echo "</td></tr>"; echo "</table>"; Html::closeForm(); echo "</div>"; } // echo "<form name='massiveaction_form$rand' id='massiveaction_form$rand' method='post' // action=\"../ajax/massiveaction.php\">"; $restrict = "`plugin_typology_typologies_id` = '{$ID}'\n ORDER BY `itemtype`"; $criterias = getAllDatasFromTable('glpi_plugin_typology_typologycriterias', $restrict); Session::initNavigateListItems("PluginTypologyTypologyCriteria", PluginTypologyTypology::getTypeName(1) . " = " . $typo->getName()); if (!empty($criterias)) { echo "<div class='spaced'>"; if ($canedit) { Html::openMassiveActionsForm('mass' . __CLASS__ . $rand); $massiveactionparams = array(); Html::showMassiveActions(__CLASS__, $massiveactionparams); } echo "<table class='tab_cadre_fixe'>"; if ($canedit) { echo "<tr>"; echo "<th width='10'>" . Html::getCheckAllAsCheckbox('mass' . __CLASS__ . $rand) . "</th>"; echo "<th colspan=5>" . __('Criteria\'s list', 'typology') . "</th>"; echo "</tr>"; } foreach ($criterias as $criteria) { Session::addToNavigateListItems("PluginTypologyTypologyCriteria", $criteria["id"]); if ($showAdd) { $colspan = 6; } else { $colspan = 5; } if ($showAdd) { $type = 'tab_cadre_fixehov'; } else { $type = 'tab_cadre'; } echo "<div class='center'><table class={$type}>"; if ($showAdd) { echo "<tr><th colspan={$colspan}>" . PluginTypologyTypologyCriteria::getTypeName(1) . "</th>"; } else { echo "<tr><th colspan={$colspan}>" . __('Detail of the assigned typology', 'typology') . "</th>"; } echo "</tr>"; echo "<tr class='tab_bg_2'>"; if ($showAdd) { echo "<th colspan='2'>" . __('Name') . "</th>"; } echo "<th class='center b'>" . __('Active') . "</th>"; echo "<th class='center b'>" . __('Item') . "</th>"; echo "<th class='center b'>" . __('Logical operator') . "</th>"; echo "<th class='center b'>" . PluginTypologyTypologyCriteriaDefinition::getTypeName(2) . "</th>"; echo "</tr>"; echo "<tr class='tab_bg_2'>"; if ($canedit && $showAdd) { echo "<td width='10'>"; // echo "<input type='checkbox' name='item[".$criteria["id"]."]' value='1'>"; Html::showMassiveActionCheckBox(__CLASS__, $criteria["id"]); echo "</td>"; } echo "<td width='10%'>"; if ($canedit) { echo "<a href='" . Toolbox::getItemTypeFormURL('PluginTypologyTypologyCriteria') . "?id=" . $criteria["id"] . "'>"; } echo $criteria["name"]; if (empty($criteria["name"])) { echo "(" . $criteria['id'] . ")"; } if ($canedit) { echo "</a>"; } echo "</td>"; echo "<td width='10%' align='center'>"; echo Dropdown::getYesNo($criteria['is_active']); echo "</td>"; $item = new $criteria['itemtype'](); echo "<td width='10%'>" . $item::getTypeName(0) . "</td>"; echo "<td width='10%' align='center'>"; if ($criteria['link'] == 0) { echo __('and'); } else { if ($criteria['link'] == 1) { echo __('or'); } } echo "</td><td>"; $condition = "`glpi_plugin_typology_typologycriteriadefinitions`.`plugin_typology_typologycriterias_id` " . " = '" . $criteria['id'] . "' ORDER BY `glpi_plugin_typology_typologycriteriadefinitions`.`id`"; $definitions = getAllDatasFromTable('glpi_plugin_typology_typologycriteriadefinitions', $condition); if (!empty($definitions)) { echo "<table class='tab_cadre' width='100%'>"; echo "<tr>"; echo "<th class='center b' width='33%'>" . _n('Field', 'Fields', 2) . "</th>"; echo "<th class='center b' width='33%'>" . __('Logical operator') . "</th>"; echo "<th class='center b'>" . __('Value') . "</th>"; echo "</tr>"; foreach ($definitions as $definition) { echo "<tr>"; $definition['itemtype'] = $criteria['itemtype']; PluginTypologyTypologyCriteriaDefinition::showMinimalDefinitionForm($definition); echo "</tr>"; } echo "</table>"; } echo "</td></tr>"; } echo "</table>"; if ($canedit) { $paramsma['ontop'] = false; Html::showMassiveActions(__CLASS__, $paramsma); Html::closeForm(); } echo "</div>"; // if ($showAdd){ // Html::openArrowMassives("massiveaction_form$rand",true); // self::dropdownMassiveAction($rand); // Html::closeArrowMassives(array()); // } } } // Html::closeForm(); }