Ejemplo n.º 1
0
function plugin_init_certificates()
{
    global $PLUGIN_HOOKS;
    $PLUGIN_HOOKS['csrf_compliant']['certificates'] = true;
    $PLUGIN_HOOKS['change_profile']['certificates'] = array('PluginCertificatesProfile', 'changeProfile');
    $PLUGIN_HOOKS['assign_to_ticket']['certificates'] = true;
    if (Session::getLoginUserID()) {
        // Params : plugin name - string type - number - attributes
        Plugin::registerClass('PluginCertificatesCertificate', array('linkgroup_tech_types' => true, 'linkuser_tech_types' => true, 'document_types' => true, 'helpdesk_visible_types' => true, 'ticket_types' => true, 'contract_types' => true, 'notificationtemplates_types' => true));
        Plugin::registerClass('PluginCertificatesConfig', array('addtabon' => 'CronTask'));
        Plugin::registerClass('PluginCertificatesProfile', array('addtabon' => 'Profile'));
        if (class_exists('PluginAccountsAccount')) {
            PluginAccountsAccount::registerType('PluginCertificatesCertificate');
        }
        if (isset($_SESSION["glpi_plugin_environment_installed"]) && $_SESSION["glpi_plugin_environment_installed"] == 1) {
            $_SESSION["glpi_plugin_environment_certificates"] = 1;
            // Display a menu entry ?
            if (plugin_certificates_haveRight("certificates", "r")) {
                $PLUGIN_HOOKS['submenu_entry']['environment']['options']['certificates']['title'] = PluginCertificatesCertificate::getTypeName(2);
                $PLUGIN_HOOKS['submenu_entry']['environment']['options']['certificates']['page'] = '/plugins/certificates/front/certificate.php';
                $PLUGIN_HOOKS['submenu_entry']['environment']['options']['certificates']['links']['search'] = '/plugins/certificates/front/certificate.php';
            }
            if (plugin_certificates_haveRight("certificates", "w")) {
                $PLUGIN_HOOKS['submenu_entry']['environment']['options']['certificates']['links']['add'] = '/plugins/certificates/front/certificate.form.php';
                $PLUGIN_HOOKS['use_massive_action']['certificates'] = 1;
            }
        } else {
            // Display a menu entry ?
            if (plugin_certificates_haveRight("certificates", "r")) {
                $PLUGIN_HOOKS['menu_entry']['certificates'] = 'front/certificate.php';
                $PLUGIN_HOOKS['submenu_entry']['certificates']['search'] = 'front/certificate.php';
            }
            if (plugin_certificates_haveRight("certificates", "w")) {
                $PLUGIN_HOOKS['submenu_entry']['certificates']['add'] = 'front/certificate.form.php?new=1';
                $PLUGIN_HOOKS['use_massive_action']['certificates'] = 1;
            }
        }
        if (class_exists('PluginCertificatesCertificate_Item')) {
            // only if plugin activated
            $PLUGIN_HOOKS['pre_item_purge']['certificates'] = array('Profile' => array('PluginCertificatesProfile', 'purgeProfiles'));
        }
        // End init, when all types are registered
        $PLUGIN_HOOKS['post_init']['certificates'] = 'plugin_certificates_postinit';
    }
}
Ejemplo n.º 2
0
 /**
  * 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 (!plugin_certificates_haveRight('certificates', 'r')) {
         return false;
     }
     if (!$item->can($item->fields['id'], 'r')) {
         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,\n                       `glpi_entities`.`id` AS entity,\n                       `glpi_plugin_certificates_certificates`.`name` AS assocName,\n                       `glpi_plugin_certificates_certificates`.*\n                FROM `glpi_plugin_certificates_certificates_items`\n                LEFT JOIN `glpi_plugin_certificates_certificates`\n                 ON (`glpi_plugin_certificates_certificates_items`.`plugin_certificates_certificates_id`=`glpi_plugin_certificates_certificates`.`id`)\n                LEFT JOIN `glpi_entities` ON (`glpi_plugin_certificates_certificates`.`entities_id`=`glpi_entities`.`id`)\n                WHERE `glpi_plugin_certificates_certificates_items`.`items_id` = '{$ID}'\n                      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(*)\n               FROM `glpi_plugin_certificates_certificates`\n               WHERE `is_deleted` = '0'\n               {$limit}";
         $result = $DB->query($q);
         $nb = $DB->result($result, 0, 0);
         echo "<div class='firstbloc'>";
         if (plugin_certificates_haveRight('certificates', 'r') && $nb > count($used)) {
             echo "<form name='certificate_form{$rand}' id='certificate_form{$rand}' method='post'\n                   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}'>";
             }
             $certificate->dropdownCertificates("plugin_certificates_certificates_id", $entities, $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(__CLASS__, $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', 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(__CLASS__, $massiveactionparams);
         Html::closeForm();
     }
     echo "</div>";
 }
Ejemplo n.º 3
0
 static function canView()
 {
     return plugin_certificates_haveRight('certificates', 'r');
 }
Ejemplo n.º 4
0
function plugin_certificates_getAddSearchOptions($itemtype)
{
    $sopt = array();
    if (in_array($itemtype, PluginCertificatesCertificate::getTypes(true))) {
        if (plugin_certificates_haveRight("certificates", "r")) {
            $sopt[1710]['table'] = 'glpi_plugin_certificates_certificates';
            $sopt[1710]['field'] = 'name';
            $sopt[1710]['name'] = PluginCertificatesCertificate::getTypeName(2) . " - " . __('Name');
            $sopt[1710]['forcegroupby'] = '1';
            $sopt[1710]['datatype'] = 'itemlink';
            $sopt[1710]['massiveaction'] = false;
            $sopt[1710]['itemlink_type'] = 'PluginCertificatesCertificate';
            $sopt[1710]['joinparams'] = array('beforejoin' => array('table' => 'glpi_plugin_certificates_certificates_items', 'joinparams' => array('jointype' => 'itemtype_item')));
            $sopt[1711]['table'] = 'glpi_plugin_certificates_certificatetypes';
            $sopt[1711]['field'] = 'name';
            $sopt[1711]['name'] = PluginCertificatesCertificate::getTypeName(2) . " - " . __('Type');
            $sopt[1711]['forcegroupby'] = true;
            $sopt[1711]['joinparams'] = array('beforejoin' => array(array('table' => 'glpi_plugin_certificates_certificates', 'joinparams' => $sopt[1710]['joinparams'])));
            $sopt[1711]['datatype'] = 'dropdown';
            $sopt[1711]['massiveaction'] = false;
        }
    }
    return $sopt;
}