Exemplo n.º 1
0
function plugin_fields_checkFiles()
{
    $plugin = new Plugin();
    if (isset($_SESSION['glpiactiveentities']) && $plugin->isInstalled('fields') && $plugin->isActivated('fields')) {
        Plugin::registerClass('PluginFieldsContainer');
        Plugin::registerClass('PluginFieldsDropdown');
        Plugin::registerClass('PluginFieldsField');
        if (TableExists("glpi_plugin_fields_containers")) {
            $container_obj = new PluginFieldsContainer();
            $containers = $container_obj->find();
            foreach ($containers as $container) {
                $classname = "PluginFields" . ucfirst($container['itemtype'] . preg_replace('/s$/', '', $container['name']));
                if (!class_exists($classname)) {
                    PluginFieldsContainer::generateTemplate($container);
                }
            }
        }
        if (TableExists("glpi_plugin_fields_fields")) {
            $fields_obj = new PluginFieldsField();
            $fields = $fields_obj->find("`type` = 'dropdown'");
            foreach ($fields as $field) {
                PluginFieldsDropdown::create($field);
            }
        }
    }
}
Exemplo n.º 2
0
 static function uninstall()
 {
     global $DB;
     //remove dropdown tables and files
     if (TableExists("glpi_plugin_fields_fields")) {
         require_once "field.class.php";
         $field = new PluginFieldsField();
         $dropdowns = $field->find("`type` = 'dropdown'");
         foreach ($dropdowns as $dropdown) {
             self::destroy($dropdown['name']);
         }
     }
     return true;
 }
Exemplo n.º 3
0
<?php

include "../../../inc/includes.php";
if (empty($_GET["id"])) {
    $_GET["id"] = "";
}
Session::checkRight('entity', READ);
$field = new PluginFieldsField();
if (isset($_POST["add"])) {
    $field->check(-1, CREATE, $_POST);
    $field->add($_POST);
    Html::back();
} else {
    if (isset($_POST["delete"])) {
        $field->check($_POST['id'], DELETE);
        $field->delete($_POST);
        Html::back();
    } else {
        if (isset($_REQUEST["purge"])) {
            $field->check($_REQUEST['id'], PURGE);
            $field->delete($_REQUEST, 1);
            Html::back();
        } else {
            if (isset($_POST["update"])) {
                $field->check($_POST['id'], UPDATE);
                $field->update($_POST);
                Html::back();
            } else {
                if (isset($_GET["id"])) {
                    $field->check($_GET['id'], READ);
                    Html::header(PluginFieldsField::getTypeName(1), $_SERVER['PHP_SELF']);
Exemplo n.º 4
0
 static function showForTabContainer($c_id, $items_id)
 {
     global $CFG_GLPI;
     $field_obj = new PluginFieldsField();
     //profile restriction (for reading profile)
     $canedit = false;
     $profile = new PluginFieldsProfile();
     $found = $profile->find("`profiles_id` = '" . $_SESSION['glpiactiveprofile']['id'] . "'\n                                 AND `plugin_fields_containers_id` = '{$c_id}'");
     $first_found = array_shift($found);
     if ($first_found['right'] == CREATE) {
         $canedit = true;
     }
     //get fields for this container
     $fields = $field_obj->find("plugin_fields_containers_id = {$c_id} AND is_active = 1", "ranking");
     echo "<form method='POST' action='" . $CFG_GLPI["root_doc"] . "/plugins/fields/front/container.form.php'>";
     echo "<input type='hidden' name='plugin_fields_containers_id' value='{$c_id}'>";
     echo "<input type='hidden' name='items_id' value='{$items_id}'>";
     echo "<table class='tab_cadre_fixe'>";
     echo self::prepareHtmlFields($fields, $items_id, $canedit);
     if ($canedit) {
         echo "<tr><td class='tab_bg_2 center' colspan='4'>";
         echo "<input type='submit' name='update_fields_values' value=\"" . _sx("button", "Save") . "\" class='submit'>";
         echo "</td></tr>";
     }
     echo "</table>";
     Html::closeForm();
     return true;
 }
Exemplo n.º 5
0
function plugin_fields_MassiveActionsFieldsDisplay($options = array())
{
    $itemtypes = PluginFieldsContainer::getEntries('all');
    if (in_array($options['itemtype'], $itemtypes)) {
        PluginFieldsField::showSingle($options['itemtype'], $options['options'], true);
        return true;
    }
    // Need to return false on non display item
    return false;
}
Exemplo n.º 6
0
<?php

include "../../inc/includes.php";
//change mimetype
header("Content-type: application/javascript");
if ($plugin->isInstalled("fields") && $plugin->isActivated("fields")) {
    PluginFieldsField::showForDomContainer();
    PluginFieldsField::showForDomtabContainer();
}
Exemplo n.º 7
0
<?php

include "../../../inc/includes.php";
if (isset($_REQUEST['itemtype']) && isset($_REQUEST['items_id'])) {
    PluginFieldsField::AjaxForDomContainer($_REQUEST['itemtype'], $_REQUEST['items_id'], isset($_REQUEST['type']) ? $_REQUEST['type'] : "dom", isset($_REQUEST['subtype']) ? $_REQUEST['subtype'] : "");
}
Exemplo n.º 8
0
<?php

include "../../../inc/includes.php";
if (empty($_GET["id"])) {
    $_GET["id"] = "";
}
Session::checkRight('entity', READ);
$field = new PluginFieldsField();
if (isset($_POST["add"])) {
    $field->check(-1, CREATE, $_POST);
    $field->add($_POST);
} elseif (isset($_POST["delete"])) {
    $field->check($_POST['id'], DELETE);
    $field->delete($_POST);
} elseif (isset($_REQUEST["purge"])) {
    $field->check($_REQUEST['id'], PURGE);
    $field->delete($_REQUEST, 1);
} elseif (isset($_POST["update"])) {
    $field->check($_POST['id'], UPDATE);
    $field->update($_POST);
}
Html::back();
Exemplo n.º 9
0
 static function preItemUpdate(CommonDBTM $item)
 {
     //find container (if not exist, do nothing)
     if (isset($_REQUEST['c_id'])) {
         $c_id = $_REQUEST['c_id'];
     } else {
         $c_id = self::findContainer(get_Class($item), $item->fields['id'], "dom");
         if ($c_id === false) {
             return false;
         }
     }
     //find fields associated to found container
     $field_obj = new PluginFieldsField();
     $fields = $field_obj->find("plugin_fields_containers_id = {$c_id} AND type != 'header'", "ranking");
     //prepare datas to update
     $datas = array('plugin_fields_containers_id' => $c_id, 'items_id' => $item->fields['id']);
     foreach ($fields as $field) {
         if (isset($item->input[$field['name']])) {
             //standard field
             $input = $field['name'];
         } else {
             //dropdown field
             $input = "plugin_fields_" . $field['name'] . "dropdowns_id";
         }
         if (isset($item->input[$input])) {
             $datas[$input] = $item->input[$input];
         }
     }
     //update datas
     $container = new self();
     if ($container->updateFieldsValues($datas)) {
         return true;
     }
     return $item->input = array();
 }
Exemplo n.º 10
0
 static function getAddSearchOptions($itemtype, $containers_id = false)
 {
     global $DB;
     $opt = array();
     $i = 76665;
     $query = "SELECT fields.name, fields.label, fields.type, fields.is_readonly,\n            containers.name as container_name, containers.label as container_label,\n            containers.itemtypes, containers.id as container_id, fields.id as field_id\n         FROM glpi_plugin_fields_containers containers\n         INNER JOIN glpi_plugin_fields_fields fields\n            ON containers.id = fields.plugin_fields_containers_id\n            AND containers.is_active = 1\n         WHERE containers.itemtypes LIKE '%{$itemtype}%'\n            AND fields.type != 'header'\n            ORDER BY fields.id ASC";
     $res = $DB->query($query);
     while ($data = $DB->fetch_assoc($res)) {
         if ($containers_id !== false) {
             // Filter by container (don't filter by SQL for have $i value with few containers for a itemtype)
             if ($data['container_id'] != $containers_id) {
                 $i++;
                 continue;
             }
         }
         $tablename = "glpi_plugin_fields_" . strtolower($itemtype . getPlural(preg_replace('/s$/', '', $data['container_name'])));
         //get translations
         $container = ['itemtype' => PluginFieldsContainer::getType(), 'id' => $data['container_id'], 'label' => $data['container_label']];
         $data['container_label'] = PluginFieldsLabelTranslation::getLabelFor($container);
         $field = ['itemtype' => PluginFieldsField::getType(), 'id' => $data['field_id'], 'label' => $data['label']];
         $data['label'] = PluginFieldsLabelTranslation::getLabelFor($field);
         $opt[$i]['table'] = $tablename;
         $opt[$i]['field'] = $data['name'];
         $opt[$i]['name'] = $data['container_label'] . " - " . $data['label'];
         $opt[$i]['linkfield'] = $data['name'];
         $opt[$i]['joinparams']['jointype'] = "itemtype_item";
         $opt[$i]['pfields_type'] = $data['type'];
         if ($data['is_readonly']) {
             $opt[$i]['massiveaction'] = false;
         }
         if ($data['type'] === "dropdown") {
             $opt[$i]['table'] = 'glpi_plugin_fields_' . $data['name'] . 'dropdowns';
             $opt[$i]['field'] = 'completename';
             $opt[$i]['linkfield'] = "plugin_fields_" . $data['name'] . "dropdowns_id";
             $opt[$i]['forcegroupby'] = true;
             $opt[$i]['joinparams']['jointype'] = "";
             $opt[$i]['joinparams']['beforejoin']['table'] = $tablename;
             $opt[$i]['joinparams']['beforejoin']['joinparams']['jointype'] = "itemtype_item";
         }
         if ($data['type'] === "dropdownuser") {
             $opt[$i]['table'] = 'glpi_users';
             $opt[$i]['field'] = 'name';
             $opt[$i]['linkfield'] = $data['name'];
             $opt[$i]['right'] = 'all';
             $opt[$i]['forcegroupby'] = true;
             $opt[$i]['joinparams']['jointype'] = "";
             $opt[$i]['joinparams']['beforejoin']['table'] = $tablename;
             $opt[$i]['joinparams']['beforejoin']['joinparams']['jointype'] = "itemtype_item";
         }
         switch ($data['type']) {
             case 'dropdown':
             case 'dropdownuser':
                 $opt[$i]['datatype'] = "dropdown";
                 break;
             case 'yesno':
                 $opt[$i]['datatype'] = "bool";
                 break;
             case 'textarea':
                 $opt[$i]['datatype'] = "text";
                 break;
             case 'number':
                 $opt[$i]['datatype'] = "number";
                 break;
             case 'date':
             case 'datetime':
                 $opt[$i]['datatype'] = $data['type'];
                 break;
             default:
                 $opt[$i]['datatype'] = "string";
         }
         $i++;
     }
     return $opt;
 }