/**
* Show certificates associated to an item
*
* @since version 0.84
*
* @param $item CommonDBTM object for which associated certificates must be displayed
* @param $withtemplate (default '')
**/
static function showForItem(CommonDBTM $item, $withtemplate='') {
global $DB, $CFG_GLPI;
$ID = $item->getField('id');
if ($item->isNewID($ID)) {
return false;
}
if (!Session::haveRight("plugin_certificates", READ)) {
return false;
}
if (!$item->can($item->fields['id'], READ)) {
return false;
}
if (empty($withtemplate)) {
$withtemplate = 0;
}
$canedit = $item->canadditem('PluginCertificatesCertificate');
$rand = mt_rand();
$is_recursive = $item->isRecursive();
$query = "SELECT `glpi_plugin_certificates_certificates_items`.`id` AS assocID,
`glpi_entities`.`id` AS entity,
`glpi_plugin_certificates_certificates`.`name` AS assocName,
`glpi_plugin_certificates_certificates`.*
FROM `glpi_plugin_certificates_certificates_items`
LEFT JOIN `glpi_plugin_certificates_certificates`
ON (`glpi_plugin_certificates_certificates_items`.`plugin_certificates_certificates_id`=`glpi_plugin_certificates_certificates`.`id`)
LEFT JOIN `glpi_entities` ON (`glpi_plugin_certificates_certificates`.`entities_id`=`glpi_entities`.`id`)
WHERE `glpi_plugin_certificates_certificates_items`.`items_id` = '$ID'
AND `glpi_plugin_certificates_certificates_items`.`itemtype` = '".$item->getType()."' ";
$query .= getEntitiesRestrictRequest(" AND","glpi_plugin_certificates_certificates",'','',true);
$query .= " ORDER BY `assocName`";
$result = $DB->query($query);
$number = $DB->numrows($result);
$i = 0;
$certificates = array();
$certificate = new PluginCertificatesCertificate();
$used = array();
if ($numrows = $DB->numrows($result)) {
while ($data = $DB->fetch_assoc($result)) {
$certificates[$data['assocID']] = $data;
$used[$data['id']] = $data['id'];
}
}
if ($canedit && $withtemplate < 2) {
// Restrict entity for knowbase
$entities = "";
$entity = $_SESSION["glpiactive_entity"];
if ($item->isEntityAssign()) {
/// Case of personal items : entity = -1 : create on active entity (Reminder case))
if ($item->getEntityID() >=0 ) {
$entity = $item->getEntityID();
}
if ($item->isRecursive()) {
$entities = getSonsOf('glpi_entities',$entity);
} else {
$entities = $entity;
}
}
$limit = getEntitiesRestrictRequest(" AND ","glpi_plugin_certificates_certificates",'',$entities,true);
$q = "SELECT COUNT(*)
FROM `glpi_plugin_certificates_certificates`
WHERE `is_deleted` = '0'
$limit";
$result = $DB->query($q);
$nb = $DB->result($result,0,0);
echo "<div class='firstbloc'>";
if (Session::haveRight("plugin_certificates", READ)
&& ($nb > count($used))) {
echo "<form name='certificate_form$rand' id='certificate_form$rand' method='post'
action='".Toolbox::getItemTypeFormURL('PluginCertificatesCertificate')."'>";
echo "<table class='tab_cadre_fixe'>";
echo "<tr class='tab_bg_1'>";
echo "<td colspan='4' class='center'>";
echo "<input type='hidden' name='entities_id' value='$entity'>";
echo "<input type='hidden' name='is_recursive' value='$is_recursive'>";
echo "<input type='hidden' name='itemtype' value='".$item->getType()."'>";
echo "<input type='hidden' name='items_id' value='$ID'>";
if ($item->getType() == 'Ticket') {
echo "<input type='hidden' name='tickets_id' value='$ID'>";
}
PluginCertificatesCertificate::dropdown(array('entity' => $entities ,
'used' => $used));
echo "</td><td class='center' width='20%'>";
echo "<input type='submit' name='additem' value=\"".
_sx('button', 'Associate a certificate', 'certificates')."\" class='submit'>";
echo "</td>";
echo "</tr>";
echo "</table>";
Html::closeForm();
}
echo "</div>";
}
echo "<div class='spaced'>";
if ($canedit && $number && ($withtemplate < 2)) {
Html::openMassiveActionsForm('mass'.__CLASS__.$rand);
$massiveactionparams = array('num_displayed' => $number);
Html::showMassiveActions($massiveactionparams);
}
echo "<table class='tab_cadre_fixe'>";
echo "<tr>";
if ($canedit && $number && ($withtemplate < 2)) {
echo "<th width='10'>".Html::getCheckAllAsCheckbox('mass'.__CLASS__.$rand)."</th>";
}
echo "<th>".__('Name')."</th>";
if (Session::isMultiEntitiesMode()) {
echo "<th>".__('Entity')."</th>";
}
echo "<th>".__('Type')."</th>";
echo "<th>".__('DNS name', 'certificates')."</th>";
echo "<th>".__('DNS suffix', 'certificates')."</th>";
echo "<th>".__('Creation date')."</th>";
echo "<th>".__('Expiration date')."</th>";
echo "<th>".__('Status')."</th>";
echo "</tr>";
$used = array();
if ($number) {
Session::initNavigateListItems('PluginCertificatesCertificate',
//TRANS : %1$s is the itemtype name,
// %2$s is the name of the item (used for headings of a list)
sprintf(__('%1$s = %2$s'),
$item->getTypeName(1), $item->getName()));
foreach ($certificates as $data) {
$certificateID = $data["id"];
$link = NOT_AVAILABLE;
if ($certificate->getFromDB($certificateID)) {
$link = $certificate->getLink();
}
Session::addToNavigateListItems('PluginCertificatesCertificate', $certificateID);
$used[$certificateID] = $certificateID;
$assocID = $data["assocID"];
echo "<tr class='tab_bg_1".($data["is_deleted"]?"_2":"")."'>";
if ($canedit && ($withtemplate < 2)) {
echo "<td width='10'>";
Html::showMassiveActionCheckBox(__CLASS__, $data["assocID"]);
echo "</td>";
}
echo "<td class='center'>$link</td>";
if (Session::isMultiEntitiesMode()) {
echo "<td class='center'>".Dropdown::getDropdownName("glpi_entities", $data['entities_id']).
"</td>";
}
echo "<td class='center'>";
echo Dropdown::getDropdownName("glpi_plugin_certificates_certificatetypes",
$data["plugin_certificates_certificatetypes_id"]);
echo "</td>";
echo "<td class='center'>".$data["dns_name"]."</td>";
echo "<td class='center'>".$data["dns_suffix"]."</td>";
echo "<td class='center'>".Html::convdate($data["date_query"])."</td>";
if ($data["date_expiration"] <= date('Y-m-d')
&& !empty($data["date_expiration"])) {
echo "<td class='center'>";
echo "<div class='deleted'>".Html::convdate($data["date_expiration"])."</div>";
echo "</td>";
} else if (empty($data["date_expiration"])) {
echo "<td class='center'>".__('Does not expire', 'certificates')."</td>";
} else {
echo "<td class='center'>".Html::convdate($data["date_expiration"])."</td>";
}
echo "<td class='center'>";
echo Dropdown::getDropdownName("glpi_plugin_certificates_certificatestates",
$data["plugin_certificates_certificatestates_id"]);
echo "</td>";
echo "</tr>";
$i++;
}
}
echo "</table>";
if ($canedit && $number && ($withtemplate < 2)) {
$massiveactionparams['ontop'] = false;
Html::showMassiveActions($massiveactionparams);
Html::closeForm();
}
echo "</div>";
}