Prv8 Shell
Server : Apache
System : Linux vps.urbanovitalino.adv.br 3.10.0-1062.12.1.el7.x86_64 #1 SMP Tue Feb 4 23:02:59 UTC 2020 x86_64
User : urbanovitalinoad ( 1001)
PHP Version : 7.3.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/urbanovitalinoad/public_html/servicedesk/marketplace/datainjection/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/urbanovitalinoad/public_html/servicedesk/marketplace/datainjection/hook.php
<?php
/*
 * @version $Id: HEADER 14684 2011-06-11 06:32:40Z remi $
 LICENSE

 This file is part of the datainjection plugin.

 Datainjection plugin is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.

 Datainjection plugin is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with datainjection. If not, see <http://www.gnu.org/licenses/>.
 --------------------------------------------------------------------------
 @package   datainjection
 @author    the datainjection plugin team
 @copyright Copyright (c) 2010-2017 Datainjection plugin team
 @license   GPLv2+
            http://www.gnu.org/licenses/gpl.txt
 @link      https://github.com/pluginsGLPI/datainjection
 @link      http://www.glpi-project.org/
 @since     2009
 ---------------------------------------------------------------------- */

function plugin_datainjection_registerMethods() {

   global $WEBSERVICES_METHOD;

   $methods = ['getModel'      => 'methodGetModel',
               'listModels'    => 'methodListModels',
               'inject'        => 'methodInject',
               'listItemtypes' => 'methodListItemtypes'];

   foreach ($methods as $code => $method) {
      $WEBSERVICES_METHOD['datainjection.'.$code] = ['PluginDatainjectionWebservice', $method];
   }
}


function plugin_datainjection_install() {
   global $DB;

   include_once Plugin::getPhpDir('datainjection')."/inc/profile.class.php";

   $migration = new Migration(null);

   switch (plugin_datainjection_needUpdateOrInstall()) {
      case -1 :
         // Migrations from version 2.2.0+
         plugin_datainjection_update220_230();
         plugin_datainjection_upgrade23_240($migration);
         plugin_datainjection_migration_24_250($migration);
         plugin_datainjection_migration_251_252($migration);
         plugin_datainjection_migration_264_270($migration);
         break;

      case 0 :
         // Plugin installation
          $query = "CREATE TABLE IF NOT EXISTS `glpi_plugin_datainjection_models` (
                     `id` int(11) NOT NULL auto_increment,
                     `name` varchar(255) NOT NULL,
                     `comment` text NULL,
                     `date_mod` timestamp NULL DEFAULT NULL,
                     `date_creation` timestamp NULL DEFAULT NULL,
                     `filetype` varchar(255) NOT NULL default 'csv',
                     `itemtype` varchar(255) NOT NULL default '',
                     `entities_id` int(11) NOT NULL default '0',
                     `behavior_add` tinyint(1) NOT NULL default '1',
                     `behavior_update` tinyint(1) NOT NULL default '0',
                     `can_add_dropdown` tinyint(1) NOT NULL default '0',
                     `can_overwrite_if_not_empty` int(1) NOT NULL default '1',
                     `is_private` tinyint(1) NOT NULL default '1',
                     `is_recursive` tinyint(1) NOT NULL default '0',
                     `perform_network_connection` tinyint(1) NOT NULL default '0',
                     `users_id` int(11) NOT NULL,
                     `date_format` varchar(11) NOT NULL default 'yyyy-mm-dd',
                     `float_format` tinyint( 1 ) NOT NULL DEFAULT '0',
                     `port_unicity` tinyint( 1 ) NOT NULL DEFAULT '0',
                     `step` int( 11 ) NOT NULL DEFAULT '0',
                     PRIMARY KEY  (`id`)
                   ) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_unicode_ci";
          $DB->queryOrDie($query, $DB->error());

          $query = "CREATE TABLE IF NOT EXISTS `glpi_plugin_datainjection_modelcsvs` (
                     `id` int(11) NOT NULL auto_increment,
                     `models_id` int(11) NOT NULL,
                     `itemtype` varchar(255) NOT NULL default '',
                     `delimiter` varchar(1) NOT NULL default ';',
                     `is_header_present` tinyint(1) NOT NULL default '1',
                     PRIMARY KEY  (`ID`)
                   ) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_unicode_ci;";
          $DB->queryOrDie($query, $DB->error());

          $query = "CREATE TABLE IF NOT EXISTS `glpi_plugin_datainjection_mappings` (
                     `id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
                     `models_id` INT( 11 ) NOT NULL ,
                     `itemtype` varchar(255) NOT NULL default '',
                     `rank` INT( 11 ) NOT NULL ,
                     `name` VARCHAR( 255 ) NOT NULL ,
                     `value` VARCHAR( 255 ) NOT NULL ,
                     `is_mandatory` TINYINT( 1 ) NOT NULL DEFAULT '0'
                   ) ENGINE = InnoDB CHARSET=utf8 COLLATE=utf8_unicode_ci ;";
          $DB->queryOrDie($query, $DB->error());

          $query = "CREATE TABLE IF NOT EXISTS `glpi_plugin_datainjection_infos` (
                     `id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
                     `models_id` INT( 11 ) NOT NULL ,
                     `itemtype` varchar(255) NOT NULL default '',
                     `value` VARCHAR( 255 ) NOT NULL ,
                     `is_mandatory` TINYINT( 1 ) NOT NULL DEFAULT '0'
                   ) ENGINE = InnoDB CHARSET=utf8 COLLATE=utf8_unicode_ci ;";
          $DB->queryOrDie($query, $DB->error());

         if (!is_dir(PLUGIN_DATAINJECTION_UPLOAD_DIR)) {
            @ mkdir(PLUGIN_DATAINJECTION_UPLOAD_DIR)
             or die(
                 sprintf(
                     __('%1$s %2$s'), __("Can't create folder", 'datainjection'),
                     PLUGIN_DATAINJECTION_UPLOAD_DIR
                 )
             );

            PluginDatainjectionProfile::createFirstAccess($_SESSION["glpiactiveprofile"]["id"]);
         }
        break;

      case 1 :
         // Migrations from version prior to 2.2.0

         //When updating, check if the upload folder is already present
         if (!is_dir(PLUGIN_DATAINJECTION_UPLOAD_DIR)) {
            @ mkdir(PLUGIN_DATAINJECTION_UPLOAD_DIR)
             or die(
                 sprintf(
                     __('%1$s %2$s'), __("Can't create folder", 'datainjection'),
                     PLUGIN_DATAINJECTION_UPLOAD_DIR
                 )
             );
         }

          //Old temporary directory, needs to be removed !
         if (is_dir(GLPI_PLUGIN_DOC_DIR."/data_injection/")) {
            Toolbox::deleteDir(GLPI_PLUGIN_DOC_DIR."/data_injection/");
         }

         if ($DB->tableExists("glpi_plugin_data_injection_models")
            && !$DB->fieldExists("glpi_plugin_data_injection_models", "recursive")
          ) {
            // Update
            plugin_datainjection_update131_14();
         }

         if ($DB->tableExists("glpi_plugin_data_injection_models")
            && !$DB->fieldExists("glpi_plugin_data_injection_models", "port_unicity")
          ) {

            $migration->addField('glpi_plugin_data_injection_models', 'port_unicity', 'bool');
            $migration->executeMigration();
         }

         if (!$DB->tableExists("glpi_plugin_datainjection_models")) {
            plugin_datainjection_update15_170();
         }

         if (!$DB->tableExists("glpi_plugin_datainjection_modelcsvs")) {
            plugin_datainjection_update170_20();
         }

         plugin_datainjection_update210_220();

         plugin_datainjection_update220_230();

         plugin_datainjection_upgrade23_240($migration);

         plugin_datainjection_migration_24_250($migration);

         plugin_datainjection_migration_251_252($migration);

         plugin_datainjection_migration_264_270($migration);
         break;

      default :
         break;
   }

   return true;
}


function plugin_datainjection_uninstall() {
   global $DB;

   $tables = ["glpi_plugin_datainjection_models",
              "glpi_plugin_datainjection_modelcsvs",
              "glpi_plugin_datainjection_mappings",
              "glpi_plugin_datainjection_infos",
              "glpi_plugin_datainjection_filetype",
              "glpi_plugin_datainjection_profiles"];

   foreach ($tables as $table) {
      if ($DB->tableExists($table)) {
         $DB->queryOrDie("DROP TABLE IF EXISTS `".$table."`", $DB->error());
      }
   }

   if (is_dir(PLUGIN_DATAINJECTION_UPLOAD_DIR)) {
      Toolbox::deleteDir(PLUGIN_DATAINJECTION_UPLOAD_DIR);
   }

   plugin_init_datainjection();
   return true;
}

function plugin_datainjection_migration_264_270(Migration $migration) {

   global $DB;

   $migration->setVersion('2.7.0');

   $migration->addPostQuery(
      $DB->buildUpdate(
         'glpi_plugin_datainjection_mappings',
         [
            'value' => 'licenseid',
         ],
         [
            'itemtype' => 'Item_OperatingSystem',
            'value'    => 'license_id',
         ]
      ),
      'Changing "license_id" field of "Item_OperatingSystem" to "licenseid".'
   );

   $migration->executeMigration();
}

function plugin_datainjection_migration_251_252(Migration $migration) {
   global $DB;

   $migration->setVersion('2.5.2');

   if ($DB->tableExists('glpi_plugin_datainjection_models')
       && $DB->fieldExists('glpi_plugin_datainjection_models', 'date_mod')) {
      $migration->changeField(
         'glpi_plugin_datainjection_models',
         'date_mod',
         'date_mod',
         'timestamp NULL DEFAULT NULL'
      );
      $migration->migrationOneTable('glpi_plugin_datainjection_models');
   }

   $migration->executeMigration();
}

function plugin_datainjection_migration_24_250(Migration $migration) {
   global $DB;

   $migration->setVersion('2.5.0');

   if ($DB->tableExists('glpi_plugin_datainjection_models')
       && !$DB->fieldExists('glpi_plugin_datainjection_models', 'date_creation')) {
      $migration->addField('glpi_plugin_datainjection_models', 'date_creation', 'timestamp');
      $migration->addKey('glpi_plugin_datainjection_models', 'date_creation');
      $migration->migrationOneTable('glpi_plugin_datainjection_models');
   }

   //Migrate OSes infos
   //TODO use DB->update in 9.3
   $query = "UPDATE `glpi_plugin_datainjection_mappings`
             SET `itemtype`='Item_OperatingSystem'
             WHERE `itemtype`='Computer'
                AND `value` IN (
                   'license_id', 'license_number', 'operatingsystemservicepacks_id',
                   'operatingsystems_id', 'operatingsystemversions_id',
                   'operatingsystemarchitectures_id', 'operatingsystemkernels_id',
                   'operatingsystemkernelversions_id', 'operatingsystemeditions_id'
                )";
   $DB->query($query);

   $migration->executeMigration();
}

function plugin_datainjection_upgrade23_240(Migration $migration) {
   global $DB;

   $migration->setVersion('2.4.0');

   if ($DB->tableExists('glpi_plugin_datainjection_profiles')) {
      if ($DB->fieldExists('glpi_plugin_datainjection_profiles', 'ID')) {
         $migration->changeField('glpi_plugin_datainjection_profiles', 'ID', 'id', 'autoincrement');
         $migration->migrationOneTable('glpi_plugin_datainjection_profiles');
      }

       PluginDatainjectionProfile::migrateProfiles();

      //Drop profile table : no use anymore !
      $migration->dropTable('glpi_plugin_datainjection_profiles');
   }

   $migration->executeMigration();
}

function plugin_datainjection_update131_14() {

   global $DB;

   $migration = new Migration('1.4');

   $migration->addField(
      'glpi_plugin_data_injection_models', 'float_format',
      'bool'
   );

   //Template recursivity : need standardize names in order to use privatePublicSwitch
   $migration->changeField(
      'glpi_plugin_data_injection_models', 'user_id',
      'FK_users', 'integer'
   );
   $migration->changeField(
      'glpi_plugin_data_injection_models', 'public',
      'private', 'bool'
   );

   $migration->migrationOneTable('glpi_plugin_data_injection_models');

   $sql = "UPDATE `glpi_plugin_data_injection_models`
           SET `FK_entities` = '-1',
               `private` = '1'
           WHERE `private` = '0'";
   $DB->query($sql);

   $sql = "UPDATE `glpi_plugin_data_injection_models`
           SET `private` = '0'
           WHERE `private` = '1'
                AND `FK_entities` > '0'";
   $DB->query($sql);

   $migration->addField(
      'glpi_plugin_data_injection_models', 'recursive',
      'bool'
   );

   $sql = "UPDATE `glpi_plugin_data_injection_profiles`
           SET `create_model` = `use_model`
           WHERE `create_model` IS NULL";
   $DB->query($sql);

   $migration->dropField('glpi_plugin_data_injection_profiles', 'use_model');
   $migration->changeField(
      'glpi_plugin_data_injection_profiles',
      'create_model', 'model', 'char'
   );

   $migration->executeMigration();
}


function plugin_datainjection_update15_170() {

   global $DB;

   $tables = ["glpi_plugin_data_injection_models"     => "glpi_plugin_datainjection_models",
              "glpi_plugin_data_injection_models_csv" => "glpi_plugin_datainjection_models_csv",
              "glpi_plugin_data_injection_models_csv" => "glpi_plugin_datainjection_models_csv",
              "glpi_plugin_data_injection_mappings"   => "glpi_plugin_datainjection_mappings",
              "glpi_plugin_data_injection_infos"      => "glpi_plugin_datainjection_infos",
              "glpi_plugin_data_injection_filetype"   => "glpi_plugin_datainjection_filetype",
              "glpi_plugin_data_injection_profiles"   => "glpi_plugin_datainjection_profiles"];

   foreach ($tables as $oldname => $newname) {
      $query = "RENAME TABLE IF EXISTS `".$oldname."` TO `".$newname."`";
      $DB->query($query);
   }
}


function plugin_datainjection_update170_20() {
   global $DB;
   $migration = new Migration('2.0');

   $migration->changeField('glpi_plugin_datainjection_models', 'ID', 'id',
                           'autoincrement');
   $migration->changeField('glpi_plugin_datainjection_models', 'type',
                           'filetype', 'string', ['value' => 'csv']);
   $migration->addField('glpi_plugin_datainjection_models', 'step', 'integer');
   $migration->changeField('glpi_plugin_datainjection_models', 'comments',
                           'comment', 'text');
   $migration->changeField('glpi_plugin_datainjection_models', 'device_type',
                           'itemtype', 'string', ['value' => '']);
   $migration->changeField('glpi_plugin_datainjection_models', 'FK_entities',
                           'entities_id', 'integer');
   $migration->changeField('glpi_plugin_datainjection_models', 'private',
                           'is_private', 'bool');
   $migration->changeField('glpi_plugin_datainjection_models', 'FK_users',
                            'users_id', 'integer');
   $migration->changeField('glpi_plugin_datainjection_models', 'recursive',
                            'is_recursive', 'bool');

   $migration->migrationOneTable('glpi_plugin_datainjection_models');
   $query = "UPDATE `glpi_plugin_datainjection_models`
              SET `step` = '5'";
   $DB->query($query);

   $query = "UPDATE `glpi_plugin_datainjection_models`
              SET `filetype` = 'csv'";
   $DB->queryOrDie($query, "update filetype of glpi_plugin_datainjection_models");

   $migration->dropTable('glpi_plugin_datainjection_filetype');

   $migration->renameTable('glpi_plugin_datainjection_models_csv',
                            'glpi_plugin_datainjection_modelcsvs');

   $migration->changeField('glpi_plugin_datainjection_modelcsvs', 'model_id',
                            'models_id', 'integer');
   $migration->changeField('glpi_plugin_datainjection_modelcsvs', 'device_type',
                            'itemtype', 'string', ['value' => '']);
   $migration->changeField('glpi_plugin_datainjection_modelcsvs', 'header_present',
                            'is_header_present', 'bool', ['value' => 1]);

   $migration->changeField('glpi_plugin_datainjection_mappings', 'mandatory',
                            'is_mandatory', 'bool');
   $migration->changeField('glpi_plugin_datainjection_mappings', 'type',
                            'itemtype', 'string', ['value' => '']);
   $migration->changeField('glpi_plugin_datainjection_mappings', 'model_id',
                            'models_id', 'integer');

   $migration->changeField('glpi_plugin_datainjection_infos', 'type',
                            'itemtype', 'string', ['value' => '']);
   $migration->changeField('glpi_plugin_datainjection_infos', 'model_id',
                            'models_id', 'integer');
   $migration->changeField('glpi_plugin_datainjection_infos', 'mandatory',
                            'is_mandatory', 'bool');

   $glpitables = ['glpi_plugin_datainjection_models',
                  'glpi_plugin_datainjection_mappings',
                  'glpi_plugin_datainjection_modelcsvs',
                  'glpi_plugin_datainjection_infos',
                  'glpi_plugin_datainjection_profiles'];

   foreach ($glpitables as $table) {
      $migration->changeField($table, 'ID', 'id', 'autoincrement');
   }

   $migration->migrationOneTable('glpi_plugin_datainjection_mappings');
   $migration->migrationOneTable('glpi_plugin_datainjection_infos');
   $migration->migrationOneTable('glpi_plugin_datainjection_modelcsvs');

   $glpitables = ['glpi_plugin_datainjection_models',
                  'glpi_plugin_datainjection_mappings',
                  'glpi_plugin_datainjection_infos',
                  'glpi_plugin_datainjection_modelcsvs'];
   Plugin::migrateItemType([], [], $glpitables);

   $query = "UPDATE `glpi_plugin_datainjection_mappings`
             SET `itemtype` = 'none' ,
                 `value`='none'
             WHERE `itemtype` = '-1'";
   $DB->queryOrDie($query, "Datainjection mappings tables : error updating not mapped fields");

   $migration->migrationOneTable('glpi_plugin_datainjection_infos');
   $query = "UPDATE `glpi_plugin_datainjection_infos`
             SET `itemtype` = 'none', `value` = 'none'
             WHERE `itemtype` = '-1'";
   $DB->queryOrDie($query, "Datainjection infos table : error updating not mapped fields");

   $foreignkeys = [
      'assign' => [
         [
            'to' => 'users_id_assign',
            'tables' => [
               'glpi_tickets'
            ]
         ]
      ],
      'assign_group' => [
         [
            'to' => 'groups_id_assign',
            'tables' => [
               'glpi_tickets'
            ]
         ]
      ],
      'assign_ent' => [
         [
            'to' => 'suppliers_id_assign',
            'tables' => [
               'glpi_tickets'
            ]
         ]
      ],
      'auth_method' => [
         [
            'to' => 'authtype',
            'noindex' => [
               'glpi_users'
            ],
            'tables' => [
               'glpi_users'
            ]
         ]
      ],
      'author' => [
         [
            'to' => 'users_id',
            'tables' => [
               'glpi_itilfollowups',
               'glpi_knowbaseitems',
               'glpi_tickets'
            ]
         ]
      ],
      'auto_update' => [
         [
            'to' => 'autoupdatesystems_id',
            'tables' => [
               'glpi_computers'
            ]
         ]
      ],
      'budget' => [
         [
            'to' => 'budgets_id',
            'tables' => [
               'glpi_infocoms'
            ]
         ]
      ],
      'buy_version' => [
         [
            'to' => 'softwareversions_id_buy',
            'tables' => [
               'glpi_softwarelicenses'
            ]
         ]
      ],
      'category' => [
         [
            'to' => 'ticketcategories_id',
            'tables' => [
               'glpi_tickets'
            ]
         ],
         [
            'to' => 'softwarecategories_id',
            'tables' => [
               'glpi_softwares'
            ]
         ]
      ],
      'categoryID' => [
         [
            'to' => 'knowbaseitemcategories_id',
            'tables' => [
               'glpi_knowbaseitems'
            ]
         ]
      ],
      'cID' => [
         [
            'to' => 'computers_id',
            'tables' => [
               'glpi_computers_softwareversions'
            ]
         ]
      ],
      'computer' => [
         [
            'to' => 'items_id',
            'tables' => [
               'glpi_tickets'
            ]
         ]
      ],
      'computer_id' => [
         [
            'to' => 'computers_id',
            'tables' => [
               'glpi_registrykeys'
            ]
         ]
      ],
      'contract_type' => [
         [
            'to' => 'contracttypes_id',
            'tables' => [
               'glpi_contracts'
            ]
         ]
      ],
      'default_rubdoc_tracking' => [
         [
            'to' => 'documentcategories_id_forticket',
            'tables' => [
               'glpi_configs'
            ],
            'comments' => [
               'glpi_configs' => 'default category for documents added with a ticket'
            ]
         ]
      ],
      'device_type' => [
         [
            'to' => 'itemtype',
            'tables' => [
               'glpi_alerts',
               'glpi_contracts_items',
               'glpi_documents_items',
               'glpi_infocoms',
               'glpi_bookmarks',
               'glpi_bookmarks_users',
               'glpi_links_itemtypes',
               'glpi_networkports',
               'glpi_reservationitems',
               'glpi_tickets'
            ]
         ]
      ],
      'domain' => [
         [
            'to' => 'domains_id',
            'tables' => [
               'glpi_computers',
               'glpi_networkequipments',
               'glpi_printers'
            ]
         ]
      ],
      'end1' => [
         [
            'to' => 'items_id',
            'tables' => [
               'glpi_computers_items'
            ],
            'comments' => [
               'glpi_computers_items' => 'RELATION to various table, according to itemtype (ID]'
            ]
         ],
         [
            'to' => 'networkports_id_1',
            'tables' => [
               'glpi_networkports_networkports'
            ]
         ]
      ],
      'end2' => [
         [
            'to' => 'computers_id',
            'tables' => [
               'glpi_computers_items'
            ]
         ],
         [
            'to' => 'networkports_id_2',
            'tables' => [
               'glpi_networkports_networkports'
            ]
         ]
      ],
      'firmware' => [
         [
            'to' => 'networkequipmentfirmwares_id',
            'tables' => [
               'glpi_networkequipments'
            ]
         ]
      ],
      'FK_bookmark' => [
         [
            'to' => 'bookmarks_id',
            'tables' => [
               'glpi_bookmarks_users'
            ]
         ]
      ],
      'FK_computers' => [
         [
            'to' => 'computers_id',
            'tables' => [
               'glpi_computerdisks',
               'glpi_softwarelicenses'
            ]
         ]
      ],
      'FK_contact' => [
         [
            'to' => 'contacts_id',
            'tables' => [
               'glpi_contacts_suppliers'
            ]
         ]
      ],
      'FK_contract' => [
         [
            'to' => 'contracts_id',
            'tables' => [
               'glpi_contracts_suppliers',
               'glpi_contracts_items'
            ]
         ]
      ],
      'FK_device' => [
         [
            'to' => 'items_id',
            'tables' => [
               'glpi_alerts',
               'glpi_contracts_items',
               'glpi_documents_items',
               'glpi_infocoms'
            ]
         ]
      ],
      'FK_doc' => [
         [
            'to' => 'documents_id',
            'tables' => [
               'glpi_documents_items'
            ]
         ]
      ],
      'manufacturer' => [
         [
            'to' => 'suppliers_id',
            'tables' => [
               'glpi_contacts_suppliers',
               'glpi_contracts_suppliers',
               'glpi_infocoms'
            ]
         ],
         [
            'to' => 'manufacturers_id',
            'tables' => [
               'glpi_cartridgeitems',
               'glpi_computers',
               'glpi_consumableitems',
               'glpi_devicecases',
               'glpi_devicecontrols',
               'glpi_devicedrives',
               'glpi_devicegraphiccards',
               'glpi_deviceharddrives',
               'glpi_devicenetworkcards',
               'glpi_devicemotherboards',
               'glpi_devicepcis',
               'glpi_devicepowersupplies',
               'glpi_deviceprocessors',
               'glpi_devicememories',
               'glpi_devicesoundcards',
               'glpi_monitors',
               'glpi_networkequipments',
               'glpi_peripherals',
               'glpi_phones',
               'glpi_printers',
               'glpi_softwares'
            ]
         ]
      ],
      'FK_entities' => [
         [
            'to' => 'entities_id',
            'tables' => [
               'glpi_bookmarks',
               'glpi_cartridgeitems',
               'glpi_computers',
               'glpi_consumableitems',
               'glpi_contacts',
               'glpi_contracts',
               'glpi_documents',
               'glpi_locations',
               'glpi_netpoints',
               'glpi_suppliers',
               'glpi_entitydatas',
               'glpi_groups',
               'glpi_knowbaseitems',
               'glpi_links',
               'glpi_mailcollectors',
               'glpi_monitors',
               'glpi_networkequipments',
               'glpi_peripherals',
               'glpi_phones',
               'glpi_printers',
               'glpi_reminders',
               'glpi_rules',
               'glpi_softwares',
               'glpi_softwarelicenses',
               'glpi_softwareversions',
               'glpi_tickets',
               'glpi_users',
               'glpi_profiles_users'
            ],
            'default' => [
               'glpi_bookmarks' => "-1"
            ]
         ]
      ],
      'FK_filesystems' => [
         [
            'to' => 'filesystems_id',
            'tables' => [
               'glpi_computerdisks'
            ]
         ]
      ],
      'FK_glpi_cartridges_type' => [
         [
            'to' => 'cartridgeitems_id',
            'tables' => [
               'glpi_cartridges',
               'glpi_cartridges_printermodels'
            ]
         ]
      ],
      'FK_glpi_consumables_type' => [
         [
            'to' => 'consumableitems_id',
            'tables' => [
               'glpi_consumables'
            ]
         ]
      ],
      'FK_glpi_dropdown_model_printers' => [
         [
            'to' => 'printermodels_id',
            'tables' => [
               'glpi_cartridges_printermodels'
            ]
         ]
      ],
      'FK_glpi_printers' => [
         [
            'to' => 'printers_id',
            'tables' => [
               'glpi_cartridges'
            ]
         ]
      ],
      'FK_group' => [
         [
            'to' => 'groups_id',
            'tables' => [
               'glpi_tickets'
            ]
         ]
      ],
      'FK_groups' => [
         [
            'to' => 'groups_id',
            'tables' => [
               'glpi_computers',
               'glpi_monitors',
               'glpi_networkequipments',
               'glpi_peripherals',
               'glpi_phones',
               'glpi_printers',
               'glpi_softwares',
               'glpi_groups_users'
            ]
         ]
      ],
      'FK_interface' => [
         [
            'to' => 'interfacetypes_id',
            'tables' => [
               'glpi_devicegraphiccards'
            ]
         ]
      ],
      'FK_item' => [
         [
            'to' => 'items_id',
            'tables' => [
               'glpi_mailingsettings'
            ]
         ]
      ],
      'FK_links' => [
         [
            'to' => 'links_id',
            'tables' => [
               'glpi_links_itemtypes'
            ]
         ]
      ],
      'FK_port' => [
         [
            'to' => 'networkports_id',
            'tables' => [
               'glpi_networkports_vlans'
            ]
         ]
      ],
      'FK_profiles' => [
         [
            'to' => 'profiles_id',
            'tables' => [
               'glpi_profiles_users',
               'glpi_users'
            ]
         ]
      ],
      'FK_users' => [
         [
            'to' => 'users_id',
            'tables' => [
               'glpi_bookmarks',
               'glpi_displaypreferences',
               'glpi_documents',
               'glpi_groups',
               'glpi_reminders',
               'glpi_bookmarks_users',
               'glpi_groups_users',
               'glpi_profiles_users',
               'glpi_computers',
               'glpi_monitors',
               'glpi_networkequipments',
               'glpi_peripherals',
               'glpi_phones',
               'glpi_printers',
               'glpi_softwares'
            ]
         ]
      ],
      'FK_vlan' => [
         [
            'to' => 'vlans_id',
            'tables' => [
               'glpi_networkports_vlans'
            ]
         ]
      ],
      'glpi_id' => [
         [
            'to' => 'computers_id',
            'tables' => [
               'glpi_ocslinks'
            ]
         ]
      ],
      'id_assign' => [
         [
            'to' => 'users_id',
            'tables' => [
               'glpi_ticketplannings'
            ]
         ]
      ],
      'id_auth' => [
         [
            'to' => 'auths_id',
            'tables' => [
               'glpi_users'
            ]
         ]
      ],
      'id_device' => [
         [
            'to' => 'items_id',
            'tables' => [
               'glpi_reservationitems'
            ]
         ]
      ],
      'id_item' => [
         [
            'to' => 'reservationitems_id',
            'tables' => [
               'glpi_reservations'
            ]
         ]
      ],
      'id_user' => [
         [
            'to' => 'users_id',
            'tables' => [
               'glpi_consumables',
               'glpi_reservations'
            ]
         ]
      ],
      'iface' => [
         [
            'to' => 'networkinterfaces_id',
            'tables' => [
               'glpi_networkports'
            ]
         ]
      ],
      'interface' => [
         [
            'to' => 'interfacetypes_id',
            'tables' => [
               'glpi_devicecontrols',
               'glpi_deviceharddrives',
               'glpi_devicedrives'
            ]
         ]
      ],
      'location' => [
         [
            'to' => 'locations_id',
            'tables' => [
               'glpi_cartridgeitems',
               'glpi_computers',
               'glpi_consumableitems',
               'glpi_netpoints',
               'glpi_monitors',
               'glpi_networkequipments',
               'glpi_peripherals',
               'glpi_phones',
               'glpi_printers',
               'glpi_users',
               'glpi_softwares'
            ]
         ]
      ],
      'model' => [
         [
            'to' => 'computermodels_id',
            'tables' => [
               'glpi_computers'
            ]
         ],
         [
            'to' => 'monitormodels_id',
            'tables' => [
               'glpi_monitors'
            ]
         ],
         [
            'to' => 'networkequipmentmodels_id',
            'tables' => [
               'glpi_networkequipments'
            ]
         ],
         [
            'to' => 'peripheralmodels_id',
            'tables' => [
               'glpi_peripherals'
            ]
         ],
         [
            'to' => 'phonemodels_id',
            'tables' => [
               'glpi_phones'
            ]
         ],
         [
            'to' => 'printermodels_id',
            'tables' => [
               'glpi_printers'
            ]
         ]
      ],
      'netpoint' => [
         [
            'to' => 'netpoints_id',
            'tables' => [
               'glpi_networkports'
            ]
         ]
      ],
      'network' => [
         [
            'to' => 'networks_id',
            'tables' => [
               'glpi_computers',
               'glpi_networkequipments',
               'glpi_printers'
            ]
         ]
      ],
      'on_device' => [
         [
            'to' => 'items_id',
            'tables' => [
               'glpi_networkports'
            ]
         ]
      ],
      'os' => [
         [
            'to' => 'operatingsystems_id',
            'tables' => [
               'glpi_computers'
            ]
         ]
      ],
      'os_license_id' => [
         [
            'to' => 'os_licenseid',
            'tables' => [
               'glpi_computers'
            ]
         ]
      ],
      'os_version' => [
         [
            'to' => 'operatingsystemversions_id',
            'tables' => [
               'glpi_computers'
            ]
         ]
      ],
      'parentID' => [
         [
            'to' => 'knowbaseitemcategories_id',
            'tables' => [
               'glpi_knowbaseitemcategories'
            ]
         ],
         [
            'to' => 'locations_id',
            'tables' => [
               'glpi_locations'
            ]
         ],
         [
            'to' => 'ticketcategories_id',
            'tables' => [
               'glpi_ticketcategories'
            ]
         ],
         [
            'to' => 'entities_id',
            'tables' => [
               'glpi_entities'
            ]
         ]
      ],
      'platform' => [
         [
            'to' => 'operatingsystems_id',
            'tables' => [
               'glpi_softwares'
            ]
         ]
      ],
      'power' => [
         [
            'to' => 'phonepowersupplies_id',
            'tables' => [
               'glpi_phones'
            ]
         ]
      ],
      'recipient' => [
         [
            'to' => 'users_id_recipient',
            'tables' => [
               'glpi_tickets'
            ]
         ]
      ],
      'rubrique' => [
         [
            'to' => 'documentcategories_id',
            'tables' => [
               'glpi_documents'
            ]
         ]
      ],
      'sID' => [
         [
            'to' => 'softwares_id',
            'tables' => [
               'glpi_softwarelicenses',
               'glpi_softwareversions'
            ]
         ]
      ],
      'state' => [
         [
            'to' => 'states_id',
            'tables' => [
               'glpi_computers',
               'glpi_monitors',
               'glpi_networkequipments',
               'glpi_peripherals',
               'glpi_phones',
               'glpi_printers',
               'glpi_softwareversions'
            ]
         ]
      ],
      'tech_num' => [
         [
            'to' => 'users_id_tech',
            'tables' => [
               'glpi_cartridgeitems',
               'glpi_computers',
               'glpi_consumableitems',
               'glpi_monitors',
               'glpi_networkequipments',
               'glpi_peripherals',
               'glpi_phones',
               'glpi_printers',
               'glpi_softwares'
            ]
         ]
      ],
      'title' => [
         [
            'to' => 'usertitles_id',
            'tables' => [
               'glpi_users'
            ]
         ]
      ],
      'type' => [
         [
            'to' => 'cartridgeitemtypes_id',
            'tables' => [
               'glpi_cartridgeitems'
            ]
         ],
         [
            'to' => 'computertypes_id',
            'tables' => [
               'glpi_computers'
            ]
         ],
         [
            'to' => 'consumableitemtypes_id',
            'tables' => [
               'glpi_consumableitems'
            ]
         ],
         [
            'to' => 'contacttypes_id',
            'tables' => [
               'glpi_contacts'
            ]
         ],
         [
            'to' => 'devicecasetypes_id',
            'tables' => [
               'glpi_devicecases'
            ]
         ],
         [
            'to' => 'devicememorytypes_id',
            'tables' => [
               'glpi_devicememories'
            ]
         ],
         [
            'to' => 'suppliertypes_id',
            'tables' => [
               'glpi_suppliers'
            ]
         ],
         [
            'to' => 'monitortypes_id',
            'tables' => [
               'glpi_monitors'
            ]
         ],
         [
            'to' => 'networkequipmenttypes_id',
            'tables' => [
               'glpi_networkequipments'
            ]
         ],
         [
            'to' => 'peripheraltypes_id',
            'tables' => [
               'glpi_peripherals'
            ]
         ],
         [
            'to' => 'phonetypes_id',
            'tables' => [
               'glpi_phones'
            ]
         ],
         [
            'to' => 'printertypes_id',
            'tables' => [
               'glpi_printers'
            ]
         ],
         [
            'to' => 'softwarelicensetypes_id',
            'tables' => [
               'glpi_softwarelicenses'
            ]
         ],
         [
            'to' => 'usercategories_id',
            'tables' => [
               'glpi_users'
            ]
         ],
         [
            'to' => 'itemtype',
            'tables' => [
               'glpi_computers_items',
               'glpi_displaypreferences'
            ]
         ]
      ],
      'update_software' => [
         [
            'to' => 'softwares_id',
            'tables' => [
               'glpi_softwares'
            ]
         ]
      ],
      'use_version' => [
         [
            'to' => 'softwareversions_id_use',
            'tables' => [
               'glpi_softwarelicenses'
            ]
         ]
      ],
      'vID' => [
         [
            'to' => 'softwareversions_id',
            'tables' => [
               'glpi_computers_softwareversions'
            ]
         ]
      ],
      'conpta_num' => [
         [
            'to' => 'accounting_number',
            'tables' => [
               'glpi_contracts'
            ]
         ]
      ],
      'num_commande' => [
         [
            'to' => 'order_number',
            'tables' => [
               'glpi_infocoms'
            ]
         ]
      ],
      'bon_livraison' => [
         [
            'to' => 'delivery_number',
            'tables' => [
               'glpi_infocoms'
            ]
         ]
      ],
      'num_immo' => [
         [
            'to' => 'immo_number',
            'tables' => [
               'glpi_infocoms'
            ]
         ]
      ],
      'facture' => [
         [
            'to' => 'bill',
            'tables' => [
               'glpi_infocoms'
            ]
         ]
      ],
      'amort_time' => [
         [
            'to' => 'sink_time',
            'tables' => [
               'glpi_infocoms'
            ]
         ]
      ],
      'amort_type' => [
         [
            'to' => 'sink_type',
            'tables' => [
               'glpi_infocoms'
            ]
         ]
      ],
      'ifmac' => [
         [
            'to' => 'mac',
            'tables' => [
               'glpi_networkequipments'
            ]
         ]
      ],
      'ifaddr' => [
         [
            'to' => 'ip',
            'tables' => [
               'glpi_networkequipments',
               'glpi_networkports'
            ]
         ]
      ],
      'ramSize' => [
         [
            'to' => 'memory_size',
            'tables' => [
               'glpi_printers'
            ]
         ]
      ],
      'facturation' => [
         [
            'to' => 'billing',
            'tables' => [
               'glpi_contracts'
            ]
         ]
      ],
      'monday' => [
         [
            'to' => 'use_monday',
            'tables' => [
               'glpi_contracts'
            ]
         ]
      ],
      'saturday' => [
         [
            'to' => 'use_saturday',
            'tables' => [
               'glpi_contracts'
            ]
         ]
      ],
      'recursive' => [
         [
            'to' => 'is_recursive',
            'tables' => [
               'glpi_networkequipments',
               'glpi_groups',
               'glpi_contracts',
               'glpi_contacts',
               'glpi_suppliers',
               'glpi_printers',
               'glpi_softwares',
               'glpi_softwareversions',
               'glpi_softwarelicences'
            ]
         ]
      ],
      'faq' => [
         [
            'to' => 'is_faq',
            'tables' => [
               'glpi_knowbaseitems'
            ]
         ]
      ],
      'flags_micro' => [
         [
            'to' => 'have_micro',
            'tables' => [
               'glpi_monitors'
            ]
         ]
      ],
      'flags_speaker' => [
         [
            'to' => 'have_speaker',
            'tables' => [
               'glpi_monitors'
            ]
         ]
      ],
      'flags_subd' => [
         [
            'to' => 'have_subd',
            'tables' => [
               'glpi_monitors'
            ]
         ]
      ],
      'flags_bnc' => [
         [
            'to' => 'have_bnc',
            'tables' => [
               'glpi_monitors'
            ]
         ]
      ],
      'flags_dvi' => [
         [
            'to' => 'have_dvi',
            'tables' => [
               'glpi_monitors'
            ]
         ]
      ],
      'flags_pivot' => [
         [
            'to' => 'have_pivot',
            'tables' => [
               'glpi_monitors'
            ]
         ]
      ],
      'flags_hp' => [
         [
            'to' => 'have_hp',
            'tables' => [
               'glpi_phones'
            ]
         ]
      ],
      'flags_casque' => [
         [
            'to' => 'have_headset',
            'tables' => [
               'glpi_phones'
            ]
         ]
      ],
      'flags_usb' => [
         [
            'to' => 'have_usb',
            'tables' => [
               'glpi_printers'
            ]
         ]
      ],
      'flags_par' => [
         [
            'to' => 'have_parallel',
            'tables' => [
               'glpi_printers'
            ]
         ]
      ],
      'flags_serial' => [
         [
            'to' => 'have_serial',
            'tables' => [
               'glpi_printers'
            ]
         ]
      ],
      'initial_pages' => [
         [
            'to' => 'init_pages_counter',
            'tables' => [
               'glpi_printers'
            ]
         ]
      ],
      'global' => [
         [
            'to' => 'is_global',
            'tables' => [
               'glpi_monitors',
               'glpi_networkequipments',
               'glpi_peripherals',
               'glpi_phones',
               'glpi_printers',
               'glpi_softwares'
            ]
         ]
      ],
      'template' => [
         [
            'to' => 'template_name',
            'tables' => [
               'glpi_cartridgeitems',
               'glpi_computers',
               'glpi_consumableitems',
               'glpi_devicecases',
               'glpi_devicecontrols',
               'glpi_devicedrives',
               'glpi_devicegraphiccards',
               'glpi_deviceharddrives',
               'glpi_devicenetworkcards',
               'glpi_devicemotherboards',
               'glpi_devicepcis',
               'glpi_devicepowersupplies',
               'glpi_deviceprocessors',
               'glpi_devicememories',
               'glpi_devicesoundcards',
               'glpi_monitors',
               'glpi_networkequipments',
               'glpi_peripherals',
               'glpi_phones',
               'glpi_printers',
               'glpi_softwares'
            ]
         ]
      ],
      'comments' => [
         [
            'to' => 'comment',
            'tables' => [
               'glpi_cartridgeitems',
               'glpi_computers',
               'glpi_consumableitems',
               'glpi_contacts',
               'glpi_contracts',
               'glpi_documents',
               'glpi_autoupdatesystems',
               'glpi_budgets',
               'glpi_cartridgeitemtypes',
               'glpi_devicecasetypes',
               'glpi_consumableitemtypes',
               'glpi_contacttypes',
               'glpi_contracttypes',
               'glpi_domains',
               'glpi_suppliertypes',
               'glpi_filesystems',
               'glpi_networkequipmentfirmwares',
               'glpi_networkinterfaces',
               'glpi_interfacetypes',
               'glpi_knowbaseitemcategories',
               'glpi_softwarelicensetypes',
               'glpi_locations',
               'glpi_manufacturers',
               'glpi_computermodels',
               'glpi_monitormodels',
               'glpi_networkequipmentmodels',
               'glpi_peripheralmodels',
               'glpi_phonemodels',
               'glpi_printermodels',
               'glpi_netpoints',
               'glpi_networks',
               'glpi_operatingsystems',
               'glpi_operatingsystemservicepacks',
               'glpi_operatingsystemversions',
               'glpi_phonepowersupplies',
               'glpi_devicememorytypes',
               'glpi_documentcategories',
               'glpi_softwarecategories',
               'glpi_states',
               'glpi_ticketcategories',
               'glpi_usertitles',
               'glpi_usercategories',
               'glpi_vlans',
               'glpi_suppliers',
               'glpi_entities',
               'glpi_groups',
               'glpi_infocoms',
               'glpi_monitors',
               'glpi_phones',
               'glpi_printers',
               'glpi_peripherals',
               'glpi_networkequipments',
               'glpi_reservationitems',
               'glpi_rules',
               'glpi_softwares',
               'glpi_softwarelicenses',
               'glpi_softwareversions',
               'glpi_computertypes',
               'glpi_monitortypes',
               'glpi_networkequipmenttypes',
               'glpi_peripheraltypes',
               'glpi_phonetypes',
               'glpi_printertypes',
               'glpi_users'
            ]
         ]
      ],
      'notes' => [
         [
            'to' => 'notepad',
            'tables' => [
               'glpi_cartridgeitems',
               'glpi_computers',
               'glpi_consumableitems',
               'glpi_contacts',
               'glpi_contracts',
               'glpi_documents',
               'glpi_suppliers',
               'glpi_entitydatas',
               'glpi_printers',
               'glpi_monitors',
               'glpi_phones',
               'glpi_peripherals',
               'glpi_networkequipments',
               'glpi_softwares'
            ]
         ]
      ]
   ];

   $foreignkeys = Plugin::doHookFunction("plugin_datainjection_migratefields", $foreignkeys);
   $query = "SELECT `itemtype`, `value`
            FROM `glpi_plugin_datainjection_mappings`
            WHERE `itemtype` NOT IN ('none')
            GROUP BY `itemtype`,`value`";

   foreach ($DB->request($query) as $data) {
      if (isset($foreignkeys[$data['value']])) {
         foreach ($foreignkeys[$data['value']] as $field_info) {
            $table = getTableForItemType($data['itemtype']);
            if (in_array($table, $field_info['tables'])) {
               $query = "UPDATE `glpi_plugin_datainjection_mappings`
                         SET `value` = '".$field_info['to']."'
                         WHERE `itemtype` = '".$data['itemtype']."'
                           AND `value` = '".$data['value']."'";
               $DB->queryOrDie($query, "Datainjection : error converting mapping fields");
               $query = "UPDATE `glpi_plugin_datainjection_infos`
                         SET `value` = '".$field_info['to']."'
                         WHERE `itemtype` = '".$data['itemtype']."'
                          AND `value` = '".$data['value']."'";
               $DB->queryOrDie($query, "Datainjection : error converting infos fields");
            }
         }
      }
   }
}

function plugin_datainjection_update210_220() {
   global $DB;

   foreach (['glpi_plugin_datainjection_mappings',
            'glpi_plugin_datainjection_infos'] as $table) {

      $move = ['TicketCategory'     => 'ITILCategory',
               'TicketSolutionType' => 'SolutionType'];
      foreach ($move as $old => $new) {
         $query = "UPDATE `".$table."`
                   SET `itemtype` = '".$new."'
                   WHERE `itemtype` = '".$old."'";
         $DB->query($query);
      }

      //emails are now dropdowns
      $query = "UPDATE `".$table."`
                SET `value` = 'useremails_id'
                WHERE `itemtype` = 'User'
                      AND `value` = 'email'";
      $DB->query($query);
   }

}
function plugin_datainjection_update220_230() {
   global $DB;

   if (countElementsInTable("glpi_plugin_datainjection_models", ['entities_id' => -1])) {
      $query = "UPDATE `glpi_plugin_datainjection_models`
                SET `is_private` = '1',
                    `entities_id` = '0',
                    `is_recursive` = '1'
               WHERE `entities_id` = '-1'";
      $DB->query($query);
   }
}


/**
 * @param $hook_name
 * @param $params       array
**/
function plugin_datainjection_loadHook($hook_name, $params = []) {

   global $PLUGIN_HOOKS;

   if (!empty($params)) {
      $type = $params["type"];
      //If a plugin type is defined
      Plugin::doOneHook(
         $PLUGIN_HOOKS['plugin_types'][$type],
         'datainjection_' . $hook_name
      );

   } else {
      if (isset($PLUGIN_HOOKS['plugin_types'])) {
         //Browse all plugins
         foreach ($PLUGIN_HOOKS['plugin_types'] as $type => $name) {
            Plugin::doOneHook($name, 'datainjection_' . $hook_name);
         }
      }
   }
}


function plugin_datainjection_needUpdateOrInstall() {
   global $DB;

    //Install plugin
   if (!$DB->tableExists('glpi_plugin_datainjection_models')) {
      return 0;
   }

   if ($DB->tableExists("glpi_plugin_datainjection_modelcsvs")) {
      return -1;
   }

    return 1;
}


/**
 * Used for filter list of models
 *
 * @param $itemtype
**/
function plugin_datainjection_addDefaultWhere($itemtype) {

   switch ($itemtype) {
      case 'PluginDatainjectionModel' :
         $models = PluginDatainjectionModel::getModels(
            Session::getLoginUserID(), 'name',
            $_SESSION['glpiactive_entity'], true
         );
         if (count($models) > 0) {
            $tab = [];
            foreach ($models as $model) {
               $tab[] = $model['id'];
            }
            if (count($tab) > 0) {
               $where = "`glpi_plugin_datainjection_models`.`id` IN ('".implode("','", $tab)."')";
            }
            return $where;
         }
         return false;
      default:
         break;
   }
}

haha - 2025