Пример #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);
            }
        }
    }
}
Пример #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;
 }
Пример #3
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;
 }
Пример #4
0
function plugin_fields_getDropdown()
{
    $dropdowns = array();
    $field_obj = new PluginFieldsField();
    $fields = $field_obj->find("`type` = 'dropdown'");
    foreach ($fields as $field) {
        $dropdowns["PluginFields" . ucfirst($field['name']) . "Dropdown"] = $field['label'];
    }
    return $dropdowns;
}
Пример #5
0
function plugin_fields_getDropdown()
{
    $dropdowns = array();
    $field_obj = new PluginFieldsField();
    $fields = $field_obj->find("`type` = 'dropdown'");
    foreach ($fields as $field) {
        $field['itemtype'] = PluginFieldsField::getType();
        $label = PluginFieldsLabelTranslation::getLabelFor($field);
        $dropdowns["PluginFields" . ucfirst($field['name']) . "Dropdown"] = $label;
    }
    asort($dropdowns);
    return $dropdowns;
}
Пример #6
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();
 }
Пример #7
0
 /**
  * Populates fields data from item
  *
  * @param integer    $c_id Container ID
  * @param CommonDBTM $item Item instance
  *
  * @return array|false
  */
 private static function populateData($c_id, CommonDBTM $item)
 {
     //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 data to update
     $data = ['plugin_fields_containers_id' => $c_id];
     if ($item->isNewItem()) {
         //no ID yet while creating
         $data['items_id'] = $item->getID();
     }
     $has_fields = false;
     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])) {
             $has_fields = true;
             // Before is_number check, help user to have a number correct, during a massive action of a number field
             if ($field['type'] == 'number') {
                 $item->input[$input] = str_replace(",", ".", $item->input[$input]);
             }
             $data[$input] = $item->input[$input];
         }
     }
     if ($has_fields === true) {
         return $data;
     } else {
         return false;
     }
 }