addField() public method

Add a new GLPI normalized field
public addField ( $table, $field, $type, $options = [] )
$table string
$field string to add
$type string (see fieldFormat)
$options array - update : if not empty = value of $field (must be protected) - condition : if needed - value : default_value new field's default value, if a specific default value needs to be used - nodefault : do not define default value (default false) - comment : comment to be added during field creation - after : where adding the new field
示例#1
0
 static function install(Migration $migration)
 {
     global $DB;
     $obj = new self();
     $table = $obj->getTable();
     if (!TableExists($table)) {
         $migration->displayMessage("Installing {$table}");
         $query = "CREATE TABLE IF NOT EXISTS `{$table}` (\n                  `id`                                INT(11)        NOT NULL auto_increment,\n                  `name`                              VARCHAR(255)   DEFAULT NULL,\n                  `label`                             VARCHAR(255)   DEFAULT NULL,\n                  `type`                              VARCHAR(25)    DEFAULT NULL,\n                  `plugin_fields_containers_id`       INT(11)        NOT NULL DEFAULT '0',\n                  `ranking`                           INT(11)        NOT NULL DEFAULT '0',\n                  `default_value`                     VARCHAR(255)   DEFAULT NULL,\n                  `is_active`                         TINYINT(1)     NOT NULL DEFAULT '1',\n                  `is_readonly`                       TINYINT(1)     NOT NULL DEFAULT '1',\n                  `mandatory`                         TINYINT(1)     NOT NULL DEFAULT '0',\n                  PRIMARY KEY                         (`id`),\n                  KEY `plugin_fields_containers_id`   (`plugin_fields_containers_id`),\n                  KEY `is_active`                     (`is_active`),\n                  KEY `is_readonly`                   (`is_readonly`)\n               ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
         $DB->query($query) or die($DB->error());
     }
     $migration->displayMessage("Updating {$table}");
     if (!FieldExists($table, 'is_active')) {
         $migration->addField($table, 'is_active', 'bool', array('value' => 1));
         $migration->addKey($table, 'is_active', 'is_active');
     }
     if (!FieldExists($table, 'is_readonly')) {
         $migration->addField($table, 'is_readonly', 'bool', array('default' => false));
         $migration->addKey($table, 'is_readonly', 'is_readonly');
     }
     if (!FieldExists($table, 'mandatory')) {
         $migration->addField($table, 'mandatory', 'bool', array('value' => 0));
     }
     $migration->executeMigration();
     return true;
 }
示例#2
0
 static function install(Migration $mig)
 {
     global $DB;
     $table = 'glpi_plugin_behaviors_configs';
     if (!TableExists($table)) {
         //not installed
         $query = "CREATE TABLE `" . $table . "`(\n                     `id` int(11) NOT NULL,\n                     `use_requester_item_group` tinyint(1) NOT NULL default '0',\n                     `use_requester_user_group` tinyint(1) NOT NULL default '0',\n                     `is_ticketsolutiontype_mandatory` tinyint(1) NOT NULL default '0',\n                     `is_ticketrealtime_mandatory` tinyint(1) NOT NULL default '0',\n                     `is_requester_mandatory` tinyint(1) NOT NULL default '0',\n                     `is_ticketdate_locked` tinyint(1) NOT NULL default '0',\n                     `use_assign_user_group` tinyint(1) NOT NULL default '0',\n                     `tickets_id_format` VARCHAR(15) NULL,\n                     `remove_from_ocs` tinyint(1) NOT NULL default '0',\n                     `add_notif` tinyint(1) NOT NULL default '0',\n                     `use_lock` tinyint(1) NOT NULL default '0',\n                     `single_tech_mode` int(11) NOT NULL default '0',\n                     `date_mod` datetime default NULL,\n                     `comment` text,\n                     PRIMARY KEY  (`id`)\n                   ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
         $DB->queryOrDie($query, __('Error in creating glpi_plugin_behaviors_configs', 'behaviors') . "<br>" . $DB->error());
         $query = "INSERT INTO " . `{$table}` . "\n                         (id, date_mod)\n                   VALUES (1, NOW())";
         $DB->queryOrDie($query, __('Error during update glpi_plugin_behaviors_configs', 'behaviors') . "<br>" . $DB->error());
     } else {
         // Upgrade
         $mig->addField($table, 'tickets_id_format', 'string');
         $mig->addField($table, 'remove_from_ocs', 'bool');
         $mig->addField($table, 'is_requester_mandatory', 'bool');
         // version 0.78.0 - feature #2801 Forbid change of ticket's creation date
         $mig->addField($table, 'is_ticketdate_locked', 'bool');
         // Version 0.80.0 - set_use_date_on_state now handle in GLPI
         $mig->dropField($table, 'set_use_date_on_state');
         // Version 0.80.4 - feature #3171 additional notifications
         $mig->addField($table, 'add_notif', 'bool');
         // Version 0.83.0 - groups now have is_requester and is_assign attribute
         $mig->dropField($table, 'sql_user_group_filter');
         $mig->dropField($table, 'sql_tech_group_filter');
         // Version 0.83.1 - prevent update on ticket updated by another user
         $mig->addField($table, 'use_lock', 'bool');
         // Version 0.83.4 - single tech/group #3857
         $mig->addField($table, 'single_tech_mode', 'integer');
     }
     return true;
 }
示例#3
0
 public static function install(Migration $migration)
 {
     global $DB;
     $table = getTableForItemType(__CLASS__);
     if (!TableExists($table)) {
         $query = "CREATE TABLE IF NOT EXISTS `{$table}` (\n                     `id` int(11) NOT NULL auto_increment,\n                     `entities_id` int(11) NOT NULL DEFAULT '0',\n                     `is_recursive` tinyint(1) NOT NULL DEFAULT '1',\n                     `name` varchar(255) NOT NULL DEFAULT '',\n                     `comment` text collate utf8_unicode_ci,\n                     `color` varchar(50) NOT NULL DEFAULT '' COLLATE 'utf8_unicode_ci',\n                     PRIMARY KEY (`id`),\n                     KEY `name` (`name`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
         $GLOBALS['DB']->query($query) or die($GLOBALS['DB']->error());
     }
     if (!FieldExists($table, 'type_menu')) {
         $migration->addField($table, 'type_menu', "varchar(50) NOT NULL DEFAULT ''");
         $migration->addKey($table, 'type_menu');
         $migration->migrationOneTable($table);
     }
     // Version 0.90-1.1
     $result = $DB->query("SHOW FIELDS FROM `{$table}` where Field ='type_menu'");
     if ($result && $DB->numrows($result)) {
         while ($data = $DB->fetch_assoc($result)) {
             if (stristr($data["Type"], 'varchar') !== FALSE) {
                 $DB->query("ALTER TABLE `{$table}` DROP INDEX `type_menu`;");
                 $DB->query("ALTER TABLE `{$table}` MODIFY `type_menu` text COLLATE utf8_unicode_ci;");
                 $datas = getAllDatasFromTable($table, "`type_menu` IS NOT NULL");
                 if (!empty($datas)) {
                     foreach ($datas as $data) {
                         $itemtypes = PluginTagTagItem::getItemtypes($data['type_menu']);
                         $DB->query("UPDATE `{$table}` SET `type_menu` = '" . json_encode($itemtypes) . "' WHERE `id` = '" . $data['id'] . "'");
                     }
                 }
                 break;
             }
         }
     }
     return true;
 }
示例#4
0
function plugin_mreporting_install()
{
    global $DB;
    //get version
    $plugin = new Plugin();
    $found = $plugin->find("name = 'mreporting'");
    $plugin_mreporting = array_shift($found);
    //init migration
    $migration = new Migration($plugin_mreporting['version']);
    //create profiles table
    $queries = array();
    $queries[] = "CREATE TABLE IF NOT EXISTS `glpi_plugin_mreporting_profiles` (\n      `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\n      `profiles_id` VARCHAR(45) NOT NULL,\n      `reports` CHAR(1),\n      `config` CHAR(1),\n   PRIMARY KEY (`id`)\n   )\n   ENGINE = MyISAM;";
    //create configuration table
    $queries[] = "CREATE TABLE IF NOT EXISTS `glpi_plugin_mreporting_configs` (\n   `id` int(11) NOT NULL auto_increment,\n   `name` varchar(255) collate utf8_unicode_ci default NULL,\n   `classname` varchar(255) collate utf8_unicode_ci default NULL,\n   `is_active` tinyint(1) NOT NULL default '0',\n   `is_notified` tinyint(1) NOT NULL default '1',\n   `show_graph` tinyint(1) NOT NULL default '0',\n   `show_area` tinyint(1) NOT NULL default '0',\n   `spline` tinyint(1) NOT NULL default '0',\n   `show_label` VARCHAR(10) default NULL,\n   `flip_data` tinyint(1) NOT NULL default '0',\n   `unit` VARCHAR(10) default NULL,\n   `default_delay` VARCHAR(10) default NULL,\n   `condition` VARCHAR(255) default NULL,\n   `graphtype` VARCHAR(255) default 'GLPI',\n   PRIMARY KEY  (`id`),\n   KEY `is_active` (`is_active`)\n   ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
    $queries[] = "CREATE TABLE  IF NOT EXISTS `glpi_plugin_mreporting_preferences` (\n   `id` int(11) NOT NULL auto_increment,\n   `users_id` int(11) NOT NULL default 0,\n   `template` varchar(255) collate utf8_unicode_ci default NULL,\n   PRIMARY KEY  (`id`),\n   KEY `users_id` (`users_id`)\n   ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
    // add display preferences
    $query_display_pref = "SELECT id \n      FROM glpi_displaypreferences\n      WHERE itemtype = 'PluginMreportingConfig'";
    $res_display_pref = $DB->query($query_display_pref);
    if ($DB->numrows($res_display_pref) == 0) {
        $queries[] = "INSERT INTO `glpi_displaypreferences` \n         VALUES (NULL,'PluginMreportingConfig','2','2','0');";
        $queries[] = "INSERT INTO `glpi_displaypreferences` \n         VALUES (NULL,'PluginMreportingConfig','3','3','0');";
        $queries[] = "INSERT INTO `glpi_displaypreferences` \n         VALUES (NULL,'PluginMreportingConfig','4','4','0');";
        $queries[] = "INSERT INTO `glpi_displaypreferences` \n         VALUES (NULL,'PluginMreportingConfig','5','5','0');";
        $queries[] = "INSERT INTO `glpi_displaypreferences` \n         VALUES (NULL,'PluginMreportingConfig','6','6','0');";
        $queries[] = "INSERT INTO `glpi_displaypreferences` \n         VALUES (NULL,'PluginMreportingConfig','8','8','0');";
    }
    $queries[] = "CREATE TABLE IF NOT EXISTS `glpi_plugin_mreporting_notifications` (\n      `id` int(11) NOT NULL auto_increment,\n      `entities_id` int(11) NOT NULL default '0',\n      `is_recursive` tinyint(1) NOT NULL default '0',\n      `name` varchar(255) collate utf8_unicode_ci default NULL,\n      `notepad` longtext collate utf8_unicode_ci,\n      `date_envoie` DATE DEFAULT NULL,\n      `notice`INT(11) NOT NULL DEFAULT 0,\n      `alert` INT(11) NOT NULL DEFAULT 0,\n      `comment` text collate utf8_unicode_ci,\n      `date_mod` datetime default NULL,\n      `is_deleted` tinyint(1) NOT NULL default '0',\n      PRIMARY KEY  (`id`)\n      ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
    foreach ($queries as $query) {
        $DB->query($query);
    }
    // == Update to 2.1 ==
    if (!FieldExists('glpi_plugin_mreporting_configs', 'is_notified')) {
        $migration->addField('glpi_plugin_mreporting_configs', 'is_notified', 'tinyint(1) NOT NULL default "1"', array('after' => 'is_active'));
        $migration->migrationOneTable('glpi_plugin_mreporting_configs');
    }
    require_once "inc/profile.class.php";
    PluginMreportingProfile::createFirstAccess($_SESSION['glpiactiveprofile']['id']);
    $rep_files_mreporting = GLPI_PLUGIN_DOC_DIR . "/mreporting";
    if (!is_dir($rep_files_mreporting)) {
        mkdir($rep_files_mreporting);
    }
    $notifications_folder = GLPI_PLUGIN_DOC_DIR . "/mreporting/notifications";
    if (!is_dir($notifications_folder)) {
        mkdir($notifications_folder);
    }
    require_once "inc/notification.class.php";
    PluginMreportingNotification::install();
    CronTask::Register('PluginMreportingNotification', 'SendNotifications', MONTH_TIMESTAMP);
    require_once "inc/baseclass.class.php";
    require_once "inc/common.class.php";
    require_once "inc/config.class.php";
    $config = new PluginMreportingConfig();
    $config->createFirstConfig();
    return true;
}
 static function install(Migration $migration)
 {
     global $DB;
     if (!$DB->query("CREATE TABLE IF NOT EXISTS `glpi_plugin_talk_userprefs` (\n            `id`                INT(11) NOT NULL auto_increment,\n            `users_id`          INT(11) NOT NULL default '0',\n            `talk_tab`   TINYINT(1) NOT NULL default '1',\n            `old_tabs`   TINYINT(1) NOT NULL default '1',\n            `split_view` TINYINT(1) NOT NULL default '0',\n            PRIMARY KEY  (`id`),\n            UNIQUE KEY (`users_id`),\n            KEY `talk_tab` (`talk_tab`),\n            KEY `split_view` (`split_view`)\n      ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci")) {
         return false;
     }
     if (!FieldExists('glpi_plugin_talk_userprefs', 'old_tabs')) {
         $migration->addField('glpi_plugin_talk_userprefs', 'old_tabs', 'bool');
         $migration->migrationOneTable('glpi_plugin_talk_userprefs');
     }
 }
示例#6
0
 /**
  * Install or update containers
  *
  * @param Migration $migration Migration instance
  * @param string    $version   Plugin current version
  *
  * @return boolean
  */
 static function install(Migration $migration, $version)
 {
     global $DB;
     $obj = new self();
     $table = $obj->getTable();
     if (!TableExists($table)) {
         $migration->displayMessage(sprintf(__("Installing %s"), $table));
         $query = "CREATE TABLE IF NOT EXISTS `{$table}` (\n                  `id`           INT(11)        NOT NULL auto_increment,\n                  `name`         VARCHAR(255)   DEFAULT NULL,\n                  `label`        VARCHAR(255)   DEFAULT NULL,\n                  `itemtypes`     LONGTEXT   DEFAULT NULL,\n                  `type`         VARCHAR(255)   DEFAULT NULL,\n                  `subtype`      VARCHAR(255) DEFAULT NULL,\n                  `entities_id`  INT(11)        NOT NULL DEFAULT '0',\n                  `is_recursive` TINYINT(1)     NOT NULL DEFAULT '0',\n                  `is_active`    TINYINT(1)     NOT NULL DEFAULT '0',\n                  PRIMARY KEY    (`id`),\n                  KEY            `entities_id`  (`entities_id`)\n               ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
         $DB->query($query) or die($DB->error());
     }
     // multiple itemtype for one container
     if (!FieldExists($table, "itemtypes")) {
         $migration->changeField($table, 'itemtype', 'itemtypes', 'longtext');
         $migration->migrationOneTable($table);
         $query = "UPDATE `{$table}` SET `itemtypes` = CONCAT('[\"', `itemtypes`, '\"]')";
         $DB->query($query) or die($DB->error());
     }
     //add display preferences for this class
     $d_pref = new DisplayPreference();
     $found = $d_pref->find("itemtype = '" . __CLASS__ . "'");
     if (count($found) == 0) {
         for ($i = 2; $i <= 5; $i++) {
             $DB->query("REPLACE INTO glpi_displaypreferences VALUES\n               (NULL, '" . __CLASS__ . "', {$i}, " . ($i - 1) . ", 0)");
         }
     }
     if (!FieldExists($table, "subtype")) {
         $migration->addField($table, 'subtype', 'VARCHAR(255) DEFAULT NULL', array('after' => 'type'));
         $migration->migrationOneTable($table);
     }
     $migration->displayMessage(__("Updating generated containers files", "fields"));
     // -> 0.90-1.3: generated class moved
     // OLD path: GLPI_ROOT."/plugins/fields/inc/$class_filename"
     // NEW path: PLUGINFIELDS_CLASS_PATH . "/$class_filename"
     $obj = new self();
     $containers = $obj->find();
     foreach ($containers as $container) {
         //First, drop old fields from plugin directories
         $itemtypes = count($container['itemtypes']) > 0 ? json_decode($container['itemtypes'], true) : array();
         foreach ($itemtypes as $itemtype) {
             $class_filename = strtolower($itemtype . preg_replace('/s$/', '', $container['name']) . ".class.php");
             if (file_exists(GLPI_ROOT . "/plugins/fields/inc/{$class_filename}")) {
                 unlink(GLPI_ROOT . "/plugins/fields/inc/{$class_filename}");
             }
             $injclass_filename = strtolower($itemtype . preg_replace('/s$/', '', $container['name']) . "injection.class.php");
             if (file_exists(GLPI_ROOT . "/plugins/fields/inc/{$injclass_filename}")) {
                 unlink(GLPI_ROOT . "/plugins/fields/inc/{$injclass_filename}");
             }
         }
         //Second, create new files
         self::generateTemplate($container);
     }
     return true;
 }
示例#7
0
function plugin_escalation_install()
{
    global $DB;
    if (!TableExists("glpi_plugin_escalation_groups_groups")) {
        $empty_sql = "plugin_escalation-empty.sql";
        $DB_file = GLPI_ROOT . "/plugins/escalation/install/mysql/{$empty_sql}";
        $DBf_handle = fopen($DB_file, "rt");
        $sql_query = fread($DBf_handle, filesize($DB_file));
        fclose($DBf_handle);
        foreach (explode(";\n", "{$sql_query}") as $sql_line) {
            if (Toolbox::get_magic_quotes_runtime()) {
                $sql_line = Toolbox::stripslashes_deep($sql_line);
            }
            if (!empty($sql_line)) {
                $DB->query($sql_line);
            }
        }
    } else {
        if (!TableExists("glpi_plugin_escalation_configs")) {
            $DB->query("CREATE TABLE `glpi_plugin_escalation_configs` (\n            `id` int(11) NOT NULL AUTO_INCREMENT,\n            `entities_id` int(11) NOT NULL DEFAULT '0',\n            `unique_assigned` varchar(255) DEFAULT NULL,\n            `workflow`  varchar(255) DEFAULT NULL,\n            `limitgroup`  varchar(255) DEFAULT NULL,\n            PRIMARY KEY (`id`)\n         ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;");
            $DB->query("INSERT INTO `glpi_plugin_escalation_configs`\n            (`id` ,`entities_id` ,`unique_assigned` ,`workflow`, `limitgroup`)\n         VALUES (NULL , '0', '0', '0', '0');");
        }
        if (!TableExists("glpi_plugin_escalation_profiles")) {
            $DB->query("CREATE TABLE `glpi_plugin_escalation_profiles` (\n           `profiles_id` int(11) NOT NULL DEFAULT '0',\n           `bypassworkflow` char(1) COLLATE utf8_unicode_ci DEFAULT NULL,\n           `copyticket` char(1) COLLATE utf8_unicode_ci DEFAULT NULL,\n           `copyticketonworkflow` char(1) COLLATE utf8_unicode_ci DEFAULT NULL\n         ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;");
        }
        if (!FieldExists('glpi_plugin_escalation_profiles', 'copyticket')) {
            $DB->query("ALTER TABLE `glpi_plugin_escalation_profiles` \n            ADD `copyticket` CHAR( 1 ) NULL ");
            $DB->query("ALTER TABLE `glpi_plugin_escalation_profiles` \n            ADD `copyticketonworkflow` CHAR( 1 ) NULL ");
        }
        if (!FieldExists("glpi_plugin_escalation_configs", "limitgroup")) {
            $migration = new Migration(PLUGIN_ESCALATION_VERSION);
            $migration->addField('glpi_plugin_escalation_configs', "limitgroup", "varchar(255) DEFAULT NULL");
            $migration->migrationOneTable('glpi_plugin_escalation_configs');
            $DB->query("UPDATE `glpi_plugin_escalation_configs` \n            SET `limitgroup` = '0' WHERE `entities_id` =1");
        }
    }
    return true;
}
示例#8
0
 static function install(Migration $migration)
 {
     global $DB;
     $obj = new self();
     $table = $obj->getTable();
     if (!TableExists($table)) {
         $migration->displayMessage("Installing {$table}");
         $query = "CREATE TABLE IF NOT EXISTS `{$table}` (\n                  `id`           INT(11)        NOT NULL auto_increment,\n                  `name`         VARCHAR(255)   DEFAULT NULL,\n                  `label`        VARCHAR(255)   DEFAULT NULL,\n                  `itemtype`     VARCHAR(255)   DEFAULT NULL,\n                  `type`         VARCHAR(255)   DEFAULT NULL,\n                  `subtype`      VARCHAR(255) DEFAULT NULL,\n                  `entities_id`  INT(11)        NOT NULL DEFAULT '0',\n                  `is_recursive` TINYINT(1)     NOT NULL DEFAULT '0',\n                  `is_active`    TINYINT(1)     NOT NULL DEFAULT '0',\n                  PRIMARY KEY    (`id`),\n                  KEY            `entities_id`  (`entities_id`)\n               ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
         $DB->query($query) or die($DB->error());
     }
     //add display preferences for this class
     $d_pref = new DisplayPreference();
     $found = $d_pref->find("itemtype = '" . __CLASS__ . "'");
     if (count($found) == 0) {
         for ($i = 2; $i <= 5; $i++) {
             $DB->query("INSERT INTO glpi_displaypreferences VALUES\n               (NULL, '" . __CLASS__ . "', {$i}, " . ($i - 1) . ", 0)");
         }
     }
     if (!FieldExists($table, "subtype")) {
         $migration->addField($table, 'subtype', 'VARCHAR(255) DEFAULT NULL', array('after' => 'type'));
         $migration->migrationOneTable($table);
     }
     return true;
 }
 static function install(Migration $migration)
 {
     global $DB;
     $table = 'glpi_plugin_webservices_clients';
     $migration->renameTable('glpi_plugin_webservices', $table);
     if (TableExists('glpi_plugin_webservices_clients')) {
         $migration->changeField($table, 'ID', 'id', 'autoincrement');
         $migration->changeField($table, 'FK_entities', 'entities_id', 'integer');
         $migration->changeField($table, 'recursive', 'is_recursive', 'bool');
         $migration->changeField($table, 'active', 'is_active', 'bool');
         $migration->changeField($table, 'comments', 'comment', 'text');
         $migration->changeField($table, 'FK_entities', 'entities_id', 'integer');
         $migration->addField($table, 'deflate', 'bool', array('after' => 'is_active'));
         $migration->addField($table, 'debug', 'bool', array('after' => 'do_log'));
         $migration->addKey($table, 'entities_id');
         // Version 1.3.0
         $opt = array('after' => 'ip_end', 'update' => "'::1'", 'condition' => "WHERE `ip_start`=INET_ATON('127.0.0.1')");
         $migration->addField($table, 'ipv6', 'string', $opt);
     } else {
         $sql = "CREATE TABLE `glpi_plugin_webservices_clients` (\n                  `id` INT NOT NULL AUTO_INCREMENT,\n                  `entities_id` INT NOT NULL DEFAULT '0',\n                  `is_recursive` TINYINT( 1 ) NOT NULL DEFAULT '0',\n                  `name` VARCHAR( 255 ) NOT NULL ,\n                  `pattern` VARCHAR( 255 ) NOT NULL ,\n                  `ip_start` BIGINT NULL ,\n                  `ip_end` BIGINT NULL ,\n                  `ipv6`  VARCHAR( 255 ) NULL,\n                  `username` VARCHAR( 255 ) NULL ,\n                  `password` VARCHAR( 255 ) NULL ,\n                  `do_log` TINYINT NOT NULL DEFAULT '0',\n                  `debug` TINYINT NOT NULL DEFAULT '0',\n                  `is_active` TINYINT NOT NULL DEFAULT '0',\n                  `deflate` TINYINT NOT NULL DEFAULT '0',\n                  `comment` TEXT NULL ,\n                  PRIMARY KEY (`id`),\n                  KEY `entities_id` (`entities_id`)\n                ) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci ";
         $DB->queryOrDie($sql, "SQL Error");
         $sql = "INSERT INTO\n                 `glpi_plugin_webservices_clients` (`id`, `entities_id`, `is_recursive`, `name`,\n                                                    `pattern`, `ip_start`, `ip_end` , `ipv6`,\n                                                    `do_log`, `is_active`, `comment`)\n                 VALUES (NULL, 0, 1, '" . __('Local', 'webservices') . "',\n                         '.*', INET_ATON('127.0.0.1'), INET_ATON('127.0.0.1'), '::1',\n                         1, 1, '" . __('Allow all from local', 'webservices') . "')";
         $DB->query($sql);
     }
 }
示例#10
0
 public static function install(Migration $migration)
 {
     global $DB;
     $table = getTableForItemType(__CLASS__);
     if (!TableExists($table)) {
         $migration->displayMessage("Installing {$table}");
         //Install
         $query = "CREATE TABLE IF NOT EXISTS `glpi_plugin_order_references` (\n               `id` int(11) NOT NULL auto_increment,\n               `entities_id` int(11) NOT NULL default '0',\n               `is_recursive` tinyint(1) NOT NULL default '0',\n               `name` varchar(255) collate utf8_unicode_ci default NULL,\n               `manufacturers_id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_manufacturers (id)',\n               `manufacturers_reference` varchar(255) collate utf8_unicode_ci NOT NULL DEFAULT '',\n               `types_id` int(11) NOT NULL default '0' COMMENT 'RELATION to various tables, according to itemtypes tables (id)',\n               `models_id` int(11) NOT NULL default '0' COMMENT 'RELATION to various tables, according to itemmodels tables (id)',\n               `itemtype` varchar(100) collate utf8_unicode_ci NOT NULL COMMENT 'see .class.php file',\n               `templates_id` int(11) NOT NULL default '0' COMMENT 'RELATION to various tables, according to itemtype (id)',\n               `comment` text collate utf8_unicode_ci,\n               `is_deleted` tinyint(1) NOT NULL default '0',\n               `is_active` tinyint(1) NOT NULL default '1',\n               `notepad` longtext collate utf8_unicode_ci,\n               `date_mod` datetime default NULL,\n               PRIMARY KEY  (`id`),\n               KEY `name` (`name`),\n               KEY `entities_id` (`entities_id`),\n               KEY `manufacturers_id` (`manufacturers_id`),\n               KEY `types_id` (`types_id`),\n               KEY `models_id` (`models_id`),\n               KEY `templates_id` (`templates_id`),\n               KEY `is_active` (`is_active`),\n               KEY `is_deleted` (`is_deleted`),\n               KEY date_mod (date_mod)\n            ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
         $DB->query($query) or die($DB->error());
     } else {
         //Upgrade
         $migration->displayMessage("Upgrading {$table}");
         //1.1.0
         $migration->changeField($table, "FK_manufacturer", "FK_glpi_enterprise", "int(11) NOT NULL DEFAULT '0'");
         ///1.2.0
         $migration->changeField($table, "ID", "id", "int(11) NOT NULL auto_increment");
         $migration->changeField($table, "FK_entities", "entities_id", "int(11) NOT NULL default '0'");
         $migration->changeField($table, "recursive", "is_recursive", "tinyint(1) NOT NULL default '0'");
         $migration->changeField($table, "name", "name", "varchar(255) collate utf8_unicode_ci default NULL");
         $migration->changeField($table, "FK_glpi_enterprise", "manufacturers_id", "int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_manufacturers (id)'");
         $migration->changeField($table, "FK_type", "types_id", "int(11) NOT NULL default '0' COMMENT 'RELATION to various tables, according to itemtypes tables (id)'");
         $migration->changeField($table, "FK_model", "models_id", "int(11) NOT NULL default '0' COMMENT 'RELATION to various tables, according to itemmodels tables (id)'");
         $migration->changeField($table, "type", "itemtype", "varchar(100) collate utf8_unicode_ci NOT NULL COMMENT 'see .class.php file'");
         $migration->changeField($table, "template", "templates_id", "int(11) NOT NULL default '0' COMMENT 'RELATION to various tables, according to itemtype (id)'");
         $migration->changeField($table, "comments", "comment", "text collate utf8_unicode_ci");
         $migration->changeField($table, "deleted", "is_deleted", "tinyint(1) NOT NULL default '0'");
         $migration->addField($table, "notepad", "longtext collate utf8_unicode_ci");
         $migration->addField($table, "is_active", "TINYINT(1) NOT NULL DEFAULT '1'");
         $migration->addField($table, "date_mod", "datetime");
         $migration->addKey($table, "name");
         $migration->addKey($table, "entities_id");
         $migration->addKey($table, "manufacturers_id");
         $migration->addKey($table, "types_id");
         $migration->addKey($table, "models_id");
         $migration->addKey($table, "templates_id");
         $migration->addKey($table, "is_deleted");
         $migration->addKey($table, "is_active");
         $migration->addKey($table, "date_mod");
         $migration->migrationOneTable($table);
         Plugin::migrateItemType(array(3151 => 'PluginOrderReference'), array("glpi_bookmarks", "glpi_bookmarks_users", "glpi_displaypreferences", "glpi_documents_items", "glpi_infocoms", "glpi_logs"));
         if (FieldExists('glpi_tickets', 'itemtype')) {
             Plugin::migrateItemType(array(3151 => 'PluginOrderReference'), array("glpi_tickets"));
         }
         Plugin::migrateItemType(array(), array(), array($table));
         //1.3.0
         $DB->query("UPDATE `glpi_plugin_order_references` SET\n                        `itemtype`='ConsumableItem'\n                     WHERE `itemtype` ='Consumable'") or die($DB->error());
         $DB->query("UPDATE `glpi_plugin_order_references` SET\n                        `itemtype`='CartridgeItem'\n                     WHERE `itemtype` ='Cartridge'") or die($DB->error());
         //1.7.0
         $migration->addField($table, "date_mod", "DATETIME NULL");
         $migration->addKey($table, "date_mod");
         //Displayprefs
         $prefs = array(1 => 1, 2 => 4, 4 => 5, 5 => 9, 6 => 6, 7 => 7);
         foreach ($prefs as $num => $rank) {
             if (!countElementsInTable("glpi_displaypreferences", "`itemtype`='PluginOrderReference' AND `num`='{$num}'\n                                          AND `users_id`='0'")) {
                 $DB->query("INSERT INTO glpi_displaypreferences\n                           VALUES (NULL,'PluginOrderReference','{$num}','{$rank}','0');");
             }
         }
         //Fix error naming field
         if (FieldExists($table, 'manufacturer_reference')) {
             $migration->changeField($table, "manufacturer_reference", "manufacturers_reference", "varchar(255) collate utf8_unicode_ci NOT NULL DEFAULT ''");
             $migration->migrationOneTable($table);
         }
         //2.0.1
         if (!FieldExists($table, 'manufacturers_reference')) {
             $migration->addField($table, "manufacturers_reference", "varchar(255) collate utf8_unicode_ci NOT NULL DEFAULT ''");
             $migration->migrationOneTable($table);
         }
     }
 }
示例#11
0
function plugin_archires_updateTo180()
{
    $migration = new Migration(180);
    $migration->renameTable("glpi_plugin_archires_query_location", "glpi_plugin_archires_locationqueries");
    $migration->renameTable("glpi_plugin_archires_query_switch", "glpi_plugin_archires_networkequipmentqueries");
    $migration->renameTable("glpi_plugin_archires_query_applicatifs", "glpi_plugin_archires_appliancequeries");
    $migration->renameTable("glpi_plugin_archires_image_device", "glpi_plugin_archires_imageitems");
    $migration->renameTable("glpi_plugin_archires_query_type", "glpi_plugin_archires_querytypes");
    $migration->renameTable("glpi_plugin_archires_color_iface", "glpi_plugin_archires_networkinterfacecolors");
    $migration->renameTable("glpi_plugin_archires_color_state", "glpi_plugin_archires_statecolors");
    $migration->renameTable("glpi_plugin_archires_color_vlan", "glpi_plugin_archires_vlancolors");
    $migration->renameTable("glpi_plugin_archires_config", "glpi_plugin_archires_views");
    $migration->dropKey("glpi_plugin_archires_locationqueries", "deleted");
    $migration->changeField("glpi_plugin_archires_locationqueries", "ID", "id", 'autoincrement');
    $migration->changeField("glpi_plugin_archires_locationqueries", "name", "name", 'string');
    $migration->changeField("glpi_plugin_archires_locationqueries", "FK_entities", "entities_id", 'integer');
    $migration->changeField("glpi_plugin_archires_locationqueries", "location", "locations_id", 'integer', array('comment' => 'RELATION to glpi_locations (id)'));
    $migration->changeField("glpi_plugin_archires_locationqueries", "network", "networks_id", 'integer', array('comment' => 'RELATION to glpi_networks (id)'));
    $migration->changeField("glpi_plugin_archires_locationqueries", "state", "states_id", 'integer', array('comment' => 'RELATION to glpi_states (id)'));
    $migration->changeField("glpi_plugin_archires_locationqueries", "FK_group", "groups_id", 'integer', array('comment' => 'RELATION to glpi_groups (id)'));
    $migration->changeField("glpi_plugin_archires_locationqueries", "FK_config", "plugin_archires_views_id", 'integer', array('comment' => 'RELATION to glpi_plugin_archires_views (id)'));
    $migration->changeField("glpi_plugin_archires_locationqueries", "FK_vlan", "vlans_id", 'integer', array('comment' => 'RELATION to glpi_vlans (id)'));
    $migration->changeField("glpi_plugin_archires_locationqueries", "deleted", "is_deleted", 'bool');
    $migration->changeField("glpi_plugin_archires_locationqueries", "notes", "notepad", 'longtext');
    $migration->dropField("glpi_plugin_archires_locationqueries", "link");
    $migration->addKey("glpi_plugin_archires_locationqueries", "name");
    $migration->addKey("glpi_plugin_archires_locationqueries", "entities_id");
    $migration->addKey("glpi_plugin_archires_locationqueries", "locations_id");
    $migration->addKey("glpi_plugin_archires_locationqueries", "networks_id");
    $migration->addKey("glpi_plugin_archires_locationqueries", "groups_id");
    $migration->addKey("glpi_plugin_archires_locationqueries", "plugin_archires_views_id");
    $migration->addKey("glpi_plugin_archires_locationqueries", "states_id");
    $migration->addKey("glpi_plugin_archires_locationqueries", "vlans_id");
    $migration->addKey("glpi_plugin_archires_locationqueries", "is_deleted");
    $migration->dropKey("glpi_plugin_archires_networkequipmentqueries", "deleted");
    $migration->changeField("glpi_plugin_archires_networkequipmentqueries", "ID", "id", 'autoincrement');
    $migration->changeField("glpi_plugin_archires_networkequipmentqueries", "name", "name", 'string');
    $migration->changeField("glpi_plugin_archires_networkequipmentqueries", "FK_entities", "entities_id", 'integer');
    $migration->changeField("glpi_plugin_archires_networkequipmentqueries", "switch", "networkequipments_id", 'integer', array('comment' => 'RELATION to glpi_networkequipments (id)'));
    $migration->changeField("glpi_plugin_archires_networkequipmentqueries", "network", "networks_id", 'integer', array('comment' => 'RELATION to glpi_networks (id)'));
    $migration->changeField("glpi_plugin_archires_networkequipmentqueries", "state", "states_id", 'integer', array('comment' => 'RELATION to glpi_states (id)'));
    $migration->changeField("glpi_plugin_archires_networkequipmentqueries", "FK_group", "groups_id", 'integer', array('comment' => 'RELATION to glpi_groups (id)'));
    $migration->changeField("glpi_plugin_archires_networkequipmentqueries", "FK_config", "plugin_archires_views_id", 'integer', array('comment' => 'RELATION to glpi_plugin_archires_views (id)'));
    $migration->changeField("glpi_plugin_archires_networkequipmentqueries", "FK_vlan", "vlans_id", 'integer', array('comment' => 'RELATION to glpi_vlans (id)'));
    $migration->changeField("glpi_plugin_archires_networkequipmentqueries", "deleted", "is_deleted", 'bool');
    $migration->changeField("glpi_plugin_archires_networkequipmentqueries", "notes", "notepad", 'longtext');
    $migration->dropField("glpi_plugin_archires_networkequipmentqueries", "link");
    $migration->addKey("glpi_plugin_archires_networkequipmentqueries", "name");
    $migration->addKey("glpi_plugin_archires_networkequipmentqueries", "entities_id");
    $migration->addKey("glpi_plugin_archires_networkequipmentqueries", "networkequipments_id");
    $migration->addKey("glpi_plugin_archires_networkequipmentqueries", "networks_id");
    $migration->addKey("glpi_plugin_archires_networkequipmentqueries", "groups_id");
    $migration->addKey("glpi_plugin_archires_networkequipmentqueries", "plugin_archires_views_id");
    $migration->addKey("glpi_plugin_archires_networkequipmentqueries", "states_id");
    $migration->addKey("glpi_plugin_archires_networkequipmentqueries", "vlans_id");
    $migration->addKey("glpi_plugin_archires_networkequipmentqueries", "is_deleted");
    $migration->dropKey("glpi_plugin_archires_appliancequeries", "deleted");
    $migration->changeField("glpi_plugin_archires_appliancequeries", "ID", "id", 'autoincrement');
    $migration->changeField("glpi_plugin_archires_appliancequeries", "name", "name", 'string');
    $migration->changeField("glpi_plugin_archires_appliancequeries", "FK_entities", "entities_id", 'integer');
    $migration->changeField("glpi_plugin_archires_appliancequeries", "applicatifs", "appliances_id", 'integer', array('comment' => 'RELATION to glpi_plugin_appliances (id)'));
    $migration->changeField("glpi_plugin_archires_appliancequeries", "network", "networks_id", 'integer', array('comment' => 'RELATION to glpi_networks (id)'));
    $migration->changeField("glpi_plugin_archires_appliancequeries", "state", "states_id", 'integer', array('comment' => 'RELATION to glpi_states (id)'));
    $migration->changeField("glpi_plugin_archires_appliancequeries", "FK_group", "groups_id", 'integer', array('comment' => 'RELATION to glpi_groups (id)'));
    $migration->changeField("glpi_plugin_archires_appliancequeries", "FK_config", "plugin_archires_views_id", 'integer', array('comment' => 'RELATION to glpi_plugin_archires_views (id)'));
    $migration->changeField("glpi_plugin_archires_appliancequeries", "FK_vlan", "vlans_id", 'integer', array('comment' => 'RELATION to glpi_vlans (id)'));
    $migration->changeField("glpi_plugin_archires_appliancequeries", "deleted", "is_deleted", 'bool');
    $migration->changeField("glpi_plugin_archires_appliancequeries", "notes", "notepad", 'longtext');
    $migration->dropField("glpi_plugin_archires_appliancequeries", "link");
    $migration->addKey("glpi_plugin_archires_appliancequeries", "name");
    $migration->addKey("glpi_plugin_archires_appliancequeries", "entities_id");
    $migration->addKey("glpi_plugin_archires_appliancequeries", "appliances_id");
    $migration->addKey("glpi_plugin_archires_appliancequeries", "networks_id");
    $migration->addKey("glpi_plugin_archires_appliancequeries", "groups_id");
    $migration->addKey("glpi_plugin_archires_appliancequeries", "plugin_archires_views_id");
    $migration->addKey("glpi_plugin_archires_appliancequeries", "states_id");
    $migration->addKey("glpi_plugin_archires_appliancequeries", "vlans_id");
    $migration->addKey("glpi_plugin_archires_appliancequeries", "is_deleted");
    $migration->dropKey("glpi_plugin_archires_imageitems", "device_type");
    $migration->changeField("glpi_plugin_archires_imageitems", "ID", "id", 'autoincrement');
    $migration->changeField("glpi_plugin_archires_imageitems", "type", "type", 'integer');
    $migration->changeField("glpi_plugin_archires_imageitems", "device_type", "itemtype", "varchar(100) collate utf8_unicode_ci NOT NULL", array('comment' => 'see .class.php file'));
    $migration->dropKey("glpi_plugin_archires_querytypes", "FK_query");
    $migration->dropKey("glpi_plugin_archires_querytypes", "type");
    $migration->dropKey("glpi_plugin_archires_querytypes", "type_query");
    $migration->dropKey("glpi_plugin_archires_querytypes", "device_type");
    $migration->changeField("glpi_plugin_archires_querytypes", "ID", "id", 'autoincrement');
    $migration->changeField("glpi_plugin_archires_querytypes", "type_query", "querytype", "varchar(100) collate utf8_unicode_ci NOT NULL", array('comment' => 'RELATION to the 3 type of archires (type)'));
    $migration->changeField("glpi_plugin_archires_querytypes", "type", "type", 'integer');
    $migration->changeField("glpi_plugin_archires_querytypes", "device_type", "itemtype", "varchar(100) collate utf8_unicode_ci NOT NULL", array('comment' => 'see .class.php file'));
    $migration->changeField("glpi_plugin_archires_querytypes", "FK_query", "plugin_archires_queries_id", 'integer', array('comment' => 'RELATION to the 3 queries tables (id)'));
    $migration->addKey("glpi_plugin_archires_querytypes", "querytype");
    $migration->addKey("glpi_plugin_archires_querytypes", "type");
    $migration->addKey("glpi_plugin_archires_querytypes", "itemtype");
    $migration->addKey("glpi_plugin_archires_querytypes", "plugin_archires_queries_id");
    $migration->migrationOneTable("glpi_plugin_archires_querytypes");
    $query = "UPDATE `glpi_plugin_archires_querytypes`\n             SET `querytype` = 'PluginArchiresLocationQuery'\n             WHERE `querytype` = 0";
    $DB->queryOrDie($query, __('1.8.0 update glpi_plugin_archires_querytypes (querytype) ', 'archires') . $DB->error());
    $query = "UPDATE `glpi_plugin_archires_querytypes`\n             SET `querytype` = 'PluginArchiresNetworkEquipmentQuery'\n             WHERE `querytype` = 1";
    $DB->queryOrDie($query, __('1.8.0 update glpi_plugin_archires_querytypes (querytype) ', 'archires') . $DB->error());
    $query = "UPDATE `glpi_plugin_archires_querytypes`\n             SET `querytype` = 'PluginArchiresApplianceQuery'\n             WHERE `querytype` = 2";
    $DB->queryOrDie($query, __('1.8.0 update glpi_plugin_archires_querytypes (querytype) ', 'archires') . $DB->error());
    $migration->dropKey("glpi_plugin_archires_networkinterfacecolors", "iface");
    $migration->changeField("glpi_plugin_archires_networkinterfacecolors", "ID", "id", 'autoincrement');
    $migration->changeField("glpi_plugin_archires_networkinterfacecolors", "iface", "networkinterfaces_id", 'integer', array('comment' => 'RELATION to glpi_networkinterfaces (id)'));
    $migration->addKey("glpi_plugin_archires_networkinterfacecolors", "networkinterfaces_id");
    $migration->changeField("glpi_plugin_archires_statecolors", "ID", "id", 'autoincrement');
    $migration->changeField("glpi_plugin_archires_statecolors", "state", "states_id", 'integer', array('comment' => 'RELATION to glpi_states (id)'));
    $migration->addKey("glpi_plugin_archires_statecolors", "states_id");
    $migration->changeField("glpi_plugin_archires_vlancolors", "ID", "id", 'autoincrement');
    $migration->changeField("glpi_plugin_archires_vlancolors", "vlan", "vlans_id", 'integer', array('comment' => 'RELATION to glpi_vlans (id)'));
    $migration->addKey("glpi_plugin_archires_vlancolors", "vlans_id");
    $migration->dropKey("glpi_plugin_archires_views", "deleted");
    $migration->dropKey("glpi_plugin_archires_views", "FK_entities");
    $migration->changeField("glpi_plugin_archires_views", "ID", "id", 'autoincrement');
    $migration->changeField("glpi_plugin_archires_views", "name", "name", 'string');
    $migration->changeField("glpi_plugin_archires_views", "FK_entities", "entities_id", 'integer');
    $migration->changeField("glpi_plugin_archires_views", "deleted", "is_deleted", 'bool');
    $migration->addKey("glpi_plugin_archires_views", "entities_id");
    $migration->addKey("glpi_plugin_archires_views", "is_deleted");
    $migration->changeField("glpi_plugin_archires_profiles", "ID", "id", 'autoincrement');
    $migration->addField("glpi_plugin_archires_profiles", "profiles_id", 'integer', array('comment' => 'RELATION to glpi_profiles (id)'));
    $migration->changeField("glpi_plugin_archires_profiles", "archires", "archires", 'char');
    $migration->addKey("glpi_plugin_archires_profiles", "profiles_id");
    $query = "DELETE\n             FROM `glpi_displaypreferences`\n             WHERE `itemtype` = 3000 AND `num` = 9";
    $DB->queryOrDie($query, __('1.8.0 delete glpi_displaypreferences (itemtype) ', 'archires') . $DB->error());
    $query = "DELETE\n             FROM `glpi_displaypreferences`\n             WHERE `itemtype` = 3001 AND `num` = 8";
    $DB->queryOrDie($query, __('1.8.0 delete glpi_displaypreferences (itemtype) ', 'archires') . $DB->error());
    $query = "DELETE\n             FROM `glpi_displaypreferences`\n             WHERE `itemtype` = 3002 AND `num` = 8";
    $DB->queryOrDie($query, __('1.8.0 delete glpi_displaypreferences (itemtype) ', 'archires') . $DB->error());
    $migration->executeMigration();
}
示例#12
0
 public static function install(Migration $migration)
 {
     global $DB;
     //Only avaiable since 1.3.0
     $table = getTableForItemType(__CLASS__);
     if (!TableExists("glpi_plugin_order_surveysuppliers")) {
         $migration->displayMessage("Installing {$table}");
         //Installation
         $query = "CREATE TABLE IF NOT EXISTS `glpi_plugin_order_surveysuppliers` (\n                  `id` int(11) NOT NULL auto_increment,\n                  `entities_id` int(11) NOT NULL default '0',\n                  `is_recursive` tinyint(1) NOT NULL default '0',\n                  `plugin_order_orders_id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_orders (id)',\n                  `suppliers_id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_suppliers (id)',\n                  `answer1` int(11) NOT NULL default 0,\n                  `answer2` int(11) NOT NULL default 0,\n                  `answer3` int(11) NOT NULL default 0,\n                  `answer4` int(11) NOT NULL default 0,\n                  `answer5` int(11) NOT NULL default 0,\n                  `comment` text collate utf8_unicode_ci,\n                  PRIMARY KEY  (`id`),\n                  KEY `plugin_order_orders_id` (`plugin_order_orders_id`),\n                  KEY `entities_id` (`entities_id`),\n                  KEY `suppliers_id` (`suppliers_id`)\n               ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
         $DB->query($query) or die($DB->error());
     } else {
         //upgrade
         $migration->displayMessage("Upgrading {$table}");
         //1.2.0
         $migration->changeField($table, "ID", "id", "int(11) NOT NULL auto_increment");
         $migration->changeField($table, "FK_order", "plugin_order_orders_id", "int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_orders (id)'");
         $migration->changeField($table, "FK_enterprise", "suppliers_id", "int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_suppliers (id)'");
         $migration->changeField($table, "comment", "comment", "text collate utf8_unicode_ci");
         $migration->addField($table, "entities_id", "int(11) NOT NULL default '0'");
         $migration->addField($table, "is_recursive", "tinyint(1) NOT NULL default '0'");
         $migration->addKey($table, "plugin_order_orders_id");
         $migration->addKey($table, "suppliers_id");
         $migration->migrationOneTable($table);
         $query = "SELECT `suppliers_id`, `entities_id`,`is_recursive`,`id`\n                   FROM `glpi_plugin_order_orders` ";
         foreach ($DB->request($query) as $data) {
             $query = "UPDATE `glpi_plugin_order_surveysuppliers` SET\n                        `entities_id` = '{$data["entities_id"]}',\n                        `is_recursive` = '{$data["is_recursive"]}'\n                      WHERE `plugin_order_orders_id` = '{$data["id"]}' ";
             $DB->query($query) or die($DB->error());
         }
     }
 }
示例#13
0
 public static function install(Migration $migration)
 {
     global $DB;
     $table = getTableForItemType(__CLASS__);
     //Installation
     if (!TableExists($table) && !TableExists("glpi_plugin_order")) {
         $migration->displayMessage("Installing {$table}");
         $query = "CREATE TABLE IF NOT EXISTS `glpi_plugin_order_orders` (\n               `id` int(11) NOT NULL auto_increment,\n               `entities_id` int(11) NOT NULL default '0',\n               `is_template` tinyint(1) NOT NULL default '0',\n               `template_name` varchar(255) collate utf8_unicode_ci default NULL,\n               `is_recursive` tinyint(1) NOT NULL default '0',\n               `name` varchar(255) collate utf8_unicode_ci default NULL,\n               `num_order` varchar(255) collate utf8_unicode_ci default NULL,\n               `budgets_id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_budgets (id)',\n               `plugin_order_ordertaxes_id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_ordertaxes (id)',\n               `plugin_order_orderpayments_id` int (11)  NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_orderpayments (id)',\n               `order_date` date default NULL,\n               `duedate` date default NULL,\n               `deliverydate` date default NULL,\n               `is_late` tinyint(1) NOT NULL default '0',\n               `suppliers_id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_suppliers (id)',\n               `contacts_id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_contacts (id)',\n               `locations_id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_locations (id)',\n               `plugin_order_orderstates_id` int(11) NOT NULL default 1,\n               `plugin_order_billstates_id` int(11) NOT NULL default 1,\n               `port_price` float NOT NULL default 0,\n               `comment` text collate utf8_unicode_ci,\n               `notepad` longtext collate utf8_unicode_ci,\n               `is_deleted` tinyint(1) NOT NULL default '0',\n               `users_id` int(11) NOT NULL default '0',\n               `groups_id` int(11) NOT NULL default '0',\n               `users_id_delivery` int(11) NOT NULL default '0',\n               `groups_id_delivery` int(11) NOT NULL default '0',\n               `plugin_order_ordertypes_id` int (11) NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_ordertypes (id)',\n               `date_mod` datetime default NULL,\n               `is_helpdesk_visible` tinyint(1) NOT NULL default '1',\n               PRIMARY KEY  (`id`),\n               KEY `name` (`name`),\n               KEY `entities_id` (`entities_id`),\n               KEY `plugin_order_ordertaxes_id` (`plugin_order_ordertaxes_id`),\n               KEY `plugin_order_orderpayments_id` (`plugin_order_orderpayments_id`),\n               KEY `states_id` (`plugin_order_orderstates_id`),\n               KEY `suppliers_id` (`suppliers_id`),\n               KEY `contacts_id` (`contacts_id`),\n               KEY `locations_id` (`locations_id`),\n               KEY `is_late` (`locations_id`),\n               KEY `is_template` (`is_template`),\n               KEY `is_deleted` (`is_deleted`),\n               KEY date_mod (date_mod)\n            ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
         $DB->query($query) or die($DB->error());
         Crontask::Register(__CLASS__, 'computeLateOrders', HOUR_TIMESTAMP, array('param' => 24, 'mode' => CronTask::MODE_EXTERNAL));
     } else {
         //Upgrade
         $migration->displayMessage("Upgrading {$table}");
         if (TableExists('glpi_plugin_order')) {
             //Update to 1.1.0
             $migration->addField('glpi_plugin_order', "port_price", "FLOAT NOT NULL default '0'");
             $migration->addField('glpi_plugin_order', "taxes", "FLOAT NOT NULL default '0'");
             if (FieldExists("glpi_plugin_order", "numordersupplier")) {
                 foreach ($DB->request("glpi_plugin_order") as $data) {
                     $query = "INSERT INTO  `glpi_plugin_order_suppliers`\n                             (`ID`, `FK_order`, `numorder`, `numbill`) VALUES\n                            (NULL, '" . $data["ID"] . "', '" . $data["numordersupplier"] . "', '" . $data["numbill"] . "') ";
                     $DB->query($query) or die($DB->error());
                 }
             }
             $migration->dropField('glpi_plugin_order', 'numordersupplier');
             $migration->dropField('glpi_plugin_order', 'numbill');
             $migration->migrationOneTable('glpi_plugin_order');
         }
         //1.2.0
         $domigration_itemtypes = false;
         if ($migration->renameTable("glpi_plugin_order", $table)) {
             $domigration_itemtypes = true;
         }
         $migration->changeField($table, "ID", "id", "int(11) NOT NULL AUTO_INCREMENT");
         $migration->changeField($table, "FK_entities", "entities_id", "int(11) NOT NULL default 0");
         $migration->changeField($table, "recursive", "is_recursive", "tinyint(1) NOT NULL default 0");
         $migration->changeField($table, "name", "name", "varchar(255) collate utf8_unicode_ci default NULL");
         $migration->changeField($table, "budget", "budgets_id", "int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_budgets (id)'");
         $migration->changeField($table, "numorder", "num_order", "varchar(255) collate utf8_unicode_ci default NULL");
         $migration->changeField($table, "taxes", "plugin_order_ordertaxes_id", "int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_ordertaxes (id)'");
         $migration->changeField($table, "payment", "plugin_order_orderpayments_id", "int (11)  NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_orderpayments (id)'");
         $migration->changeField($table, "date", "order_date", "date default NULL");
         $migration->changeField($table, "FK_enterprise", "suppliers_id", "int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_suppliers (id)'");
         $migration->changeField($table, "FK_contact", "contacts_id", "int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_contacts (id)'");
         $migration->changeField($table, "location", "locations_id", "int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_locations (id)'");
         $migration->changeField($table, "status", "states_id", "int(11) NOT NULL default '0'");
         $migration->changeField($table, "comment", "comment", "text collate utf8_unicode_ci");
         $migration->changeField($table, "notes", "notepad", "longtext collate utf8_unicode_ci");
         $migration->changeField($table, "deleted", "is_deleted", "tinyint(1) NOT NULL default '0'");
         $migration->addKey($table, "name");
         $migration->addKey($table, "entities_id");
         $migration->addKey($table, "plugin_order_ordertaxes_id");
         $migration->addKey($table, "plugin_order_orderpayments_id");
         $migration->addKey($table, "states_id");
         $migration->addKey($table, "suppliers_id");
         $migration->addKey($table, "contacts_id");
         $migration->addKey($table, "locations_id");
         $migration->addKey($table, "is_deleted");
         $migration->migrationOneTable($table);
         //Only migrate itemtypes when it's only necessary, otherwise it breaks upgrade procedure !
         if ($domigration_itemtypes) {
             Plugin::migrateItemType(array(3150 => 'PluginOrderOrder'), array("glpi_bookmarks", "glpi_bookmarks_users", "glpi_displaypreferences", "glpi_documents_items", "glpi_infocoms", "glpi_logs", "glpi_tickets"), array());
         }
         if (TableExists("glpi_plugin_order_budgets")) {
             //Manage budgets (here because class has been remove since 1.4.0)
             $migration->changeField("glpi_plugin_order_budgets", "ID", "id", " int(11) NOT NULL auto_increment");
             $migration->changeField("glpi_plugin_order_budgets", "FK_entities", "entities_id", "int(11) NOT NULL default '0'");
             $migration->changeField("glpi_plugin_order_budgets", "FK_budget", "budgets_id", "int(11) NOT NULL default '0'");
             $migration->changeField("glpi_plugin_order_budgets", "comments", "comment", "text collate utf8_unicode_ci");
             $migration->changeField("glpi_plugin_order_budgets", "deleted", "is_deleted", "tinyint(1) NOT NULL default '0'");
             $migration->changeField("glpi_plugin_order_budgets", "startdate", "start_date", "date default NULL");
             $migration->changeField("glpi_plugin_order_budgets", "enddate", "end_date", "date default NULL");
             $migration->changeField("glpi_plugin_order_budgets", "value", "value", "float NOT NULL DEFAULT '0'");
             $migration->addKey("glpi_plugin_order_budgets", "entities_id");
             $migration->addKey("glpi_plugin_order_budgets", "is_deleted");
             $migration->migrationOneTable("glpi_plugin_order_budgets");
             Plugin::migrateItemType(array(3153 => 'PluginOrderBudget'), array("glpi_bookmarks", "glpi_bookmarks_users", "glpi_displaypreferences", "glpi_documents_items", "glpi_infocoms", "glpi_logs", "glpi_tickets"), array());
             //Manage budgets migration before dropping the table
             $budget = new Budget();
             $matchings = array('budgets_id' => 'id', 'name' => 'name', 'start_date' => 'begin_date', 'end_date' => 'end_date', 'value' => 'value', 'comment' => 'comment', 'entities_id' => 'entities_id', 'is_deleted' => 'is_deleted');
             foreach (getAllDatasFromTable("glpi_plugin_order_budgets") as $data) {
                 $tmp = array();
                 $id = false;
                 foreach ($matchings as $old => $new) {
                     if (!is_null($data[$old])) {
                         $tmp[$new] = $data[$old];
                     }
                 }
                 $tmp['comment'] = Toolbox::addslashes_deep($tmp['comment']);
                 //Budget already exists in the core: update it
                 if ($budget->getFromDB($data['budgets_id'])) {
                     $budget->update($tmp);
                     $id = $tmp['id'];
                 } else {
                     //Budget doesn't exists in the core: create it
                     unset($tmp['id']);
                     $id = $budget->add($tmp);
                 }
             }
             $DB->query("DROP TABLE `glpi_plugin_order_budgets`");
             foreach (array('glpi_displaypreferences', 'glpi_documents_items', 'glpi_bookmarks', 'glpi_logs') as $t) {
                 $DB->query("DELETE FROM `{$t}` WHERE `itemtype` = 'PluginOrderBudget'");
             }
         }
         //1.3.0
         $migration->addField($table, "plugin_order_ordertypes_id", "int (11) NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_ordertypes (id)'");
         $migration->migrationOneTable($table);
         //1.4.0
         if ($migration->changeField("glpi_plugin_order_orders", "states_id", "plugin_order_orderstates_id", "int(11) NOT NULL default 1")) {
             $migration->migrationOneTable($table);
             $query = "UPDATE `glpi_plugin_order_orders` SET `plugin_order_orderstates_id`=`plugin_order_orderstates_id`+1";
             $DB->query($query) or die($DB->error());
         }
         $migration->addField($table, "duedate", "DATETIME NULL");
         $migration->migrationOneTable($table);
         //1.5.0
         if (TableExists("glpi_dropdown_plugin_order_status")) {
             $DB->query("DROP TABLE `glpi_dropdown_plugin_order_status`") or die($DB->error());
         }
         if (TableExists("glpi_plugin_order_mailing")) {
             $DB->query("DROP TABLE IF EXISTS `glpi_plugin_order_mailing`;") or die($DB->error());
         }
         $migration->addField($table, 'plugin_order_billstates_id', "int(11) NOT NULL default 0");
         //1.5.2
         $migration->addField($table, 'deliverydate', "DATETIME NULL");
         $migration->addField($table, "is_late", "TINYINT(1) NOT NULL DEFAULT '0'");
         $migration->addKey($table, "is_late");
         if (!countElementsInTable('glpi_crontasks', "`name`='computeLateOrders'")) {
             Crontask::Register(__CLASS__, 'computeLateOrders', HOUR_TIMESTAMP, array('param' => 24, 'mode' => CronTask::MODE_EXTERNAL));
         }
         $migration->migrationOneTable($table);
         if ($migration->addField($table, "is_template", "tinyint(1) NOT NULL DEFAULT 0")) {
             $migration->addField($table, "template_name", "VARCHAR(255) collate utf8_unicode_ci default NULL");
             $migration->migrationOneTable($table);
         }
         $migration->addField($table, "users_id", "INT(11) NOT NULL DEFAULT '0'");
         $migration->addField($table, "groups_id", "INT(11) NOT NULL DEFAULT '0'");
         $migration->addField($table, "users_id_delivery", "INT(11) NOT NULL DEFAULT '0'");
         $migration->addField($table, "groups_id_delivery", "INT(11) NOT NULL DEFAULT '0'");
         //1.7.0
         $migration->addField($table, "date_mod", "datetime");
         $migration->addKey($table, "date_mod");
         //1.7.2
         $migration->addField($table, "is_helpdesk_visible", "bool", array('value' => 1));
         $migration->migrationOneTable($table);
         //Displayprefs
         $prefs = array(1 => 1, 2 => 2, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 10 => 10);
         foreach ($prefs as $num => $rank) {
             if (!countElementsInTable("glpi_displaypreferences", "`itemtype`='PluginOrderOrder' AND `num`='{$num}'\n                                           AND `users_id`='0'")) {
                 $DB->query("INSERT INTO glpi_displaypreferences\n                           VALUES (NULL,'PluginOrderOrder','{$num}','{$rank}','0');");
             }
         }
         //Remove unused notifications
         $notification = new Notification();
         $notification->deleteByCriteria("`itemtype`='PluginOrderOrder_Item'");
     }
 }
示例#14
0
 static function updateSchema(Migration $migration)
 {
     $migration->displayTitle(sprintf(__('%1$s: %2$s'), __('Update'), self::getTypeName(9)));
     $table = getTableForItemType(__CLASS__);
     // Version 1.6.1
     $migration->changeField($table, 'notes', 'notepad', 'text');
     // Version 1.8.0
     $migration->addKey($table, 'users_id');
     $migration->addKey($table, 'groups_id');
     $migration->addKey($table, 'plugin_appliances_appliancetypes_id');
     $migration->addKey($table, 'plugin_appliances_environments_id');
     $migration->addField($table, 'states_id', 'integer', array('after' => 'date_mod'));
     $migration->addKey($table, 'states_id');
     $migration->addField($table, 'users_id_tech', 'integer', array('after' => 'users_id'));
     $migration->addKey($table, 'users_id_tech');
     $migration->addField($table, 'groups_id_tech', 'integer', array('after' => 'groups_id'));
     $migration->addKey($table, 'groups_id_tech');
 }
示例#15
0
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', array('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', array('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`\n             SET `step` = '5'";
    $DB->query($query);
    $query = "UPDATE `glpi_plugin_datainjection_models`\n             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', array('value' => ''));
    $migration->changeField('glpi_plugin_datainjection_modelcsvs', 'header_present', 'is_header_present', 'bool', array('value' => 1));
    $migration->changeField('glpi_plugin_datainjection_mappings', 'mandatory', 'is_mandatory', 'bool');
    $migration->changeField('glpi_plugin_datainjection_mappings', 'type', 'itemtype', 'string', array('value' => ''));
    $migration->changeField('glpi_plugin_datainjection_mappings', 'model_id', 'models_id', 'integer');
    $migration->changeField('glpi_plugin_datainjection_infos', 'type', 'itemtype', 'string', array('value' => ''));
    $migration->changeField('glpi_plugin_datainjection_infos', 'model_id', 'models_id', 'integer');
    $migration->changeField('glpi_plugin_datainjection_infos', 'mandatory', 'is_mandatory', 'bool');
    $glpitables = array('glpi_plugin_datainjection_models', 'glpi_plugin_datainjection_mappings', 'glpi_plugin_datainjection_infos', 'glpi_plugin_datainjection_modelcsvs', '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 = array('glpi_plugin_datainjection_models', 'glpi_plugin_datainjection_mappings', 'glpi_plugin_datainjection_infos', 'glpi_plugin_datainjection_modelcsvs');
    Plugin::migrateItemType(array(), array(), $glpitables);
    $query = "UPDATE `glpi_plugin_datainjection_mappings`\n             SET `itemtype` = 'none' ,\n                 `value`='none'\n             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`\n             SET `itemtype` = 'none', `value` = 'none'\n             WHERE `itemtype` = '-1'";
    $DB->queryOrDie($query, "Datainjection infos table : error updating not mapped fields");
    $foreignkeys = array('assign' => array(array('to' => 'users_id_assign', 'tables' => array('glpi_tickets'))), 'assign_group' => array(array('to' => 'groups_id_assign', 'tables' => array('glpi_tickets'))), 'assign_ent' => array(array('to' => 'suppliers_id_assign', 'tables' => array('glpi_tickets'))), 'auth_method' => array(array('to' => 'authtype', 'noindex' => array('glpi_users'), 'tables' => array('glpi_users'))), 'author' => array(array('to' => 'users_id', 'tables' => array('glpi_ticketfollowups', 'glpi_knowbaseitems', 'glpi_tickets'))), 'auto_update' => array(array('to' => 'autoupdatesystems_id', 'tables' => array('glpi_computers'))), 'budget' => array(array('to' => 'budgets_id', 'tables' => array('glpi_infocoms'))), 'buy_version' => array(array('to' => 'softwareversions_id_buy', 'tables' => array('glpi_softwarelicenses'))), 'category' => array(array('to' => 'ticketcategories_id', 'tables' => array('glpi_tickets')), array('to' => 'softwarecategories_id', 'tables' => array('glpi_softwares'))), 'categoryID' => array(array('to' => 'knowbaseitemcategories_id', 'tables' => array('glpi_knowbaseitems'))), 'cID' => array(array('to' => 'computers_id', 'tables' => array('glpi_computers_softwareversions'))), 'computer' => array(array('to' => 'items_id', 'tables' => array('glpi_tickets'))), 'computer_id' => array(array('to' => 'computers_id', 'tables' => array('glpi_registrykeys'))), 'contract_type' => array(array('to' => 'contracttypes_id', 'tables' => array('glpi_contracts'))), 'default_rubdoc_tracking' => array(array('to' => 'documentcategories_id_forticket', 'tables' => array('glpi_configs'), 'comments' => array('glpi_configs' => 'default category for documents added with a ticket'))), 'device_type' => array(array('to' => 'itemtype', 'tables' => array('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' => array(array('to' => 'domains_id', 'tables' => array('glpi_computers', 'glpi_networkequipments', 'glpi_printers'))), 'end1' => array(array('to' => 'items_id', 'tables' => array('glpi_computers_items'), 'comments' => array('glpi_computers_items' => 'RELATION to various table, according to itemtype (ID)')), array('to' => 'networkports_id_1', 'tables' => array('glpi_networkports_networkports'))), 'end2' => array(array('to' => 'computers_id', 'tables' => array('glpi_computers_items')), array('to' => 'networkports_id_2', 'tables' => array('glpi_networkports_networkports'))), 'firmware' => array(array('to' => 'networkequipmentfirmwares_id', 'tables' => array('glpi_networkequipments'))), 'FK_bookmark' => array(array('to' => 'bookmarks_id', 'tables' => array('glpi_bookmarks_users'))), 'FK_computers' => array(array('to' => 'computers_id', 'tables' => array('glpi_computerdisks', 'glpi_softwarelicenses'))), 'FK_contact' => array(array('to' => 'contacts_id', 'tables' => array('glpi_contacts_suppliers'))), 'FK_contract' => array(array('to' => 'contracts_id', 'tables' => array('glpi_contracts_suppliers', 'glpi_contracts_items'))), 'FK_device' => array(array('to' => 'items_id', 'tables' => array('glpi_alerts', 'glpi_contracts_items', 'glpi_documents_items', 'glpi_infocoms'))), 'FK_doc' => array(array('to' => 'documents_id', 'tables' => array('glpi_documents_items'))), 'manufacturer' => array(array('to' => 'suppliers_id', 'tables' => array('glpi_contacts_suppliers', 'glpi_contracts_suppliers', 'glpi_infocoms')), array('to' => 'manufacturers_id', 'tables' => array('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' => array(array('to' => 'entities_id', 'tables' => array('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' => array('glpi_bookmarks' => "-1"))), 'FK_filesystems' => array(array('to' => 'filesystems_id', 'tables' => array('glpi_computerdisks'))), 'FK_glpi_cartridges_type' => array(array('to' => 'cartridgeitems_id', 'tables' => array('glpi_cartridges', 'glpi_cartridges_printermodels'))), 'FK_glpi_consumables_type' => array(array('to' => 'consumableitems_id', 'tables' => array('glpi_consumables'))), 'FK_glpi_dropdown_model_printers' => array(array('to' => 'printermodels_id', 'tables' => array('glpi_cartridges_printermodels'))), 'FK_glpi_printers' => array(array('to' => 'printers_id', 'tables' => array('glpi_cartridges'))), 'FK_group' => array(array('to' => 'groups_id', 'tables' => array('glpi_tickets'))), 'FK_groups' => array(array('to' => 'groups_id', 'tables' => array('glpi_computers', 'glpi_monitors', 'glpi_networkequipments', 'glpi_peripherals', 'glpi_phones', 'glpi_printers', 'glpi_softwares', 'glpi_groups_users'))), 'FK_interface' => array(array('to' => 'interfacetypes_id', 'tables' => array('glpi_devicegraphiccards'))), 'FK_item' => array(array('to' => 'items_id', 'tables' => array('glpi_mailingsettings'))), 'FK_links' => array(array('to' => 'links_id', 'tables' => array('glpi_links_itemtypes'))), 'FK_port' => array(array('to' => 'networkports_id', 'tables' => array('glpi_networkports_vlans'))), 'FK_profiles' => array(array('to' => 'profiles_id', 'tables' => array('glpi_profiles_users', 'glpi_users'))), 'FK_users' => array(array('to' => 'users_id', 'tables' => array('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' => array(array('to' => 'vlans_id', 'tables' => array('glpi_networkports_vlans'))), 'glpi_id' => array(array('to' => 'computers_id', 'tables' => array('glpi_ocslinks'))), 'id_assign' => array(array('to' => 'users_id', 'tables' => array('glpi_ticketplannings'))), 'id_auth' => array(array('to' => 'auths_id', 'tables' => array('glpi_users'))), 'id_device' => array(array('to' => 'items_id', 'tables' => array('glpi_reservationitems'))), 'id_item' => array(array('to' => 'reservationitems_id', 'tables' => array('glpi_reservations'))), 'id_user' => array(array('to' => 'users_id', 'tables' => array('glpi_consumables', 'glpi_reservations'))), 'iface' => array(array('to' => 'networkinterfaces_id', 'tables' => array('glpi_networkports'))), 'interface' => array(array('to' => 'interfacetypes_id', 'tables' => array('glpi_devicecontrols', 'glpi_deviceharddrives', 'glpi_devicedrives'))), 'location' => array(array('to' => 'locations_id', 'tables' => array('glpi_cartridgeitems', 'glpi_computers', 'glpi_consumableitems', 'glpi_netpoints', 'glpi_monitors', 'glpi_networkequipments', 'glpi_peripherals', 'glpi_phones', 'glpi_printers', 'glpi_users', 'glpi_softwares'))), 'model' => array(array('to' => 'computermodels_id', 'tables' => array('glpi_computers')), array('to' => 'monitormodels_id', 'tables' => array('glpi_monitors')), array('to' => 'networkequipmentmodels_id', 'tables' => array('glpi_networkequipments')), array('to' => 'peripheralmodels_id', 'tables' => array('glpi_peripherals')), array('to' => 'phonemodels_id', 'tables' => array('glpi_phones')), array('to' => 'printermodels_id', 'tables' => array('glpi_printers'))), 'netpoint' => array(array('to' => 'netpoints_id', 'tables' => array('glpi_networkports'))), 'network' => array(array('to' => 'networks_id', 'tables' => array('glpi_computers', 'glpi_networkequipments', 'glpi_printers'))), 'on_device' => array(array('to' => 'items_id', 'tables' => array('glpi_networkports'))), 'os' => array(array('to' => 'operatingsystems_id', 'tables' => array('glpi_computers'))), 'os_license_id' => array(array('to' => 'os_licenseid', 'tables' => array('glpi_computers'))), 'os_version' => array(array('to' => 'operatingsystemversions_id', 'tables' => array('glpi_computers'))), 'parentID' => array(array('to' => 'knowbaseitemcategories_id', 'tables' => array('glpi_knowbaseitemcategories')), array('to' => 'locations_id', 'tables' => array('glpi_locations')), array('to' => 'ticketcategories_id', 'tables' => array('glpi_ticketcategories')), array('to' => 'entities_id', 'tables' => array('glpi_entities'))), 'platform' => array(array('to' => 'operatingsystems_id', 'tables' => array('glpi_softwares'))), 'power' => array(array('to' => 'phonepowersupplies_id', 'tables' => array('glpi_phones'))), 'recipient' => array(array('to' => 'users_id_recipient', 'tables' => array('glpi_tickets'))), 'rubrique' => array(array('to' => 'documentcategories_id', 'tables' => array('glpi_documents'))), 'sID' => array(array('to' => 'softwares_id', 'tables' => array('glpi_softwarelicenses', 'glpi_softwareversions'))), 'state' => array(array('to' => 'states_id', 'tables' => array('glpi_computers', 'glpi_monitors', 'glpi_networkequipments', 'glpi_peripherals', 'glpi_phones', 'glpi_printers', 'glpi_softwareversions'))), 'tech_num' => array(array('to' => 'users_id_tech', 'tables' => array('glpi_cartridgeitems', 'glpi_computers', 'glpi_consumableitems', 'glpi_monitors', 'glpi_networkequipments', 'glpi_peripherals', 'glpi_phones', 'glpi_printers', 'glpi_softwares'))), 'title' => array(array('to' => 'usertitles_id', 'tables' => array('glpi_users'))), 'type' => array(array('to' => 'cartridgeitemtypes_id', 'tables' => array('glpi_cartridgeitems')), array('to' => 'computertypes_id', 'tables' => array('glpi_computers')), array('to' => 'consumableitemtypes_id', 'tables' => array('glpi_consumableitems')), array('to' => 'contacttypes_id', 'tables' => array('glpi_contacts')), array('to' => 'devicecasetypes_id', 'tables' => array('glpi_devicecases')), array('to' => 'devicememorytypes_id', 'tables' => array('glpi_devicememories')), array('to' => 'suppliertypes_id', 'tables' => array('glpi_suppliers')), array('to' => 'monitortypes_id', 'tables' => array('glpi_monitors')), array('to' => 'networkequipmenttypes_id', 'tables' => array('glpi_networkequipments')), array('to' => 'peripheraltypes_id', 'tables' => array('glpi_peripherals')), array('to' => 'phonetypes_id', 'tables' => array('glpi_phones')), array('to' => 'printertypes_id', 'tables' => array('glpi_printers')), array('to' => 'softwarelicensetypes_id', 'tables' => array('glpi_softwarelicenses')), array('to' => 'usercategories_id', 'tables' => array('glpi_users')), array('to' => 'itemtype', 'tables' => array('glpi_computers_items', 'glpi_displaypreferences'))), 'update_software' => array(array('to' => 'softwares_id', 'tables' => array('glpi_softwares'))), 'use_version' => array(array('to' => 'softwareversions_id_use', 'tables' => array('glpi_softwarelicenses'))), 'vID' => array(array('to' => 'softwareversions_id', 'tables' => array('glpi_computers_softwareversions'))), 'conpta_num' => array(array('to' => 'accounting_number', 'tables' => array('glpi_contracts'))), 'num_commande' => array(array('to' => 'order_number', 'tables' => array('glpi_infocoms'))), 'bon_livraison' => array(array('to' => 'delivery_number', 'tables' => array('glpi_infocoms'))), 'num_immo' => array(array('to' => 'immo_number', 'tables' => array('glpi_infocoms'))), 'facture' => array(array('to' => 'bill', 'tables' => array('glpi_infocoms'))), 'amort_time' => array(array('to' => 'sink_time', 'tables' => array('glpi_infocoms'))), 'amort_type' => array(array('to' => 'sink_type', 'tables' => array('glpi_infocoms'))), 'ifmac' => array(array('to' => 'mac', 'tables' => array('glpi_networkequipments'))), 'ifaddr' => array(array('to' => 'ip', 'tables' => array('glpi_networkequipments', 'glpi_networkports'))), 'ramSize' => array(array('to' => 'memory_size', 'tables' => array('glpi_printers'))), 'ramSize' => array(array('to' => 'memory_size', 'tables' => array('glpi_printers'))), 'facturation' => array(array('to' => 'billing', 'tables' => array('glpi_contracts'))), 'monday' => array(array('to' => 'use_monday', 'tables' => array('glpi_contracts'))), 'saturday' => array(array('to' => 'use_saturday', 'tables' => array('glpi_contracts'))), 'recursive' => array(array('to' => 'is_recursive', 'tables' => array('glpi_networkequipments', 'glpi_groups', 'glpi_contracts', 'glpi_contacts', 'glpi_suppliers', 'glpi_printers', 'glpi_softwares', 'glpi_softwareversions', 'glpi_softwarelicences'))), 'faq' => array(array('to' => 'is_faq', 'tables' => array('glpi_knowbaseitems'))), 'flags_micro' => array(array('to' => 'have_micro', 'tables' => array('glpi_monitors'))), 'flags_speaker' => array(array('to' => 'have_speaker', 'tables' => array('glpi_monitors'))), 'flags_subd' => array(array('to' => 'have_subd', 'tables' => array('glpi_monitors'))), 'flags_bnc' => array(array('to' => 'have_bnc', 'tables' => array('glpi_monitors'))), 'flags_dvi' => array(array('to' => 'have_dvi', 'tables' => array('glpi_monitors'))), 'flags_pivot' => array(array('to' => 'have_pivot', 'tables' => array('glpi_monitors'))), 'flags_hp' => array(array('to' => 'have_hp', 'tables' => array('glpi_phones'))), 'flags_casque' => array(array('to' => 'have_headset', 'tables' => array('glpi_phones'))), 'flags_usb' => array(array('to' => 'have_usb', 'tables' => array('glpi_printers'))), 'flags_par' => array(array('to' => 'have_parallel', 'tables' => array('glpi_printers'))), 'flags_serial' => array(array('to' => 'have_serial', 'tables' => array('glpi_printers'))), 'initial_pages' => array(array('to' => 'init_pages_counter', 'tables' => array('glpi_printers'))), 'global' => array(array('to' => 'is_global', 'tables' => array('glpi_monitors', 'glpi_networkequipments', 'glpi_peripherals', 'glpi_phones', 'glpi_printers', 'glpi_softwares'))), 'template' => array(array('to' => 'template_name', 'tables' => array('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' => array(array('to' => 'comment', 'tables' => array('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' => array(array('to' => 'notepad', 'tables' => array('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`\n              FROM `glpi_plugin_datainjection_mappings`\n              WHERE `itemtype` NOT IN ('none')\n              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`\n                          SET `value` = '" . $field_info['to'] . "'\n                          WHERE `itemtype` = '" . $data['itemtype'] . "'\n                                AND `value` = '" . $data['value'] . "'";
                    $DB->queryOrDie($query, "Datainjection : error converting mapping fields");
                    $query = "UPDATE `glpi_plugin_datainjection_infos`\n                          SET `value` = '" . $field_info['to'] . "'\n                          WHERE `itemtype` = '" . $data['itemtype'] . "'\n                                AND `value` = '" . $data['value'] . "'";
                    $DB->queryOrDie($query, "Datainjection : error converting infos fields");
                }
            }
        }
    }
}
示例#16
0
function plugin_ocsinventoryng_upgrademassocsimport14to15()
{
    global $DB;
    $migration = new Migration(15);
    $migration->addField("glpi_plugin_massocsimport_threads", "not_unique_machines_number", 'integer');
    $migration->addField("glpi_plugin_massocsimport_threads", "link_refused_machines_number", 'integer');
    $migration->addField("glpi_plugin_massocsimport_threads", "entities_id", 'integer');
    $migration->addField("glpi_plugin_massocsimport_threads", "rules_id", 'text');
    $migration->addField("glpi_plugin_massocsimport_configs", "allow_ocs_update", 'bool');
    $migration->addField("glpi_plugin_massocsimport_notimported", "reason", 'integer');
    if (!countElementsInTable('glpi_displaypreferences', "`itemtype`='PluginMassocsimportNotimported'\n                               AND `num`='10' AND `users_id`='0'")) {
        $query = "INSERT INTO `glpi_displaypreferences`\n                (`itemtype`, `num`, `rank`, `users_id`)\n                VALUES ('PluginMassocsimportNotimported', 10, 9, 0)";
        $DB->queryOrDie($query, "1.5 insert into glpi_displaypreferences " . $DB->error());
    }
    $migration->addField("glpi_plugin_massocsimport_notimported", "serial", 'string', array('value' => ''));
    $migration->addField("glpi_plugin_massocsimport_notimported", "comment", "TEXT NOT NULL");
    $migration->addField("glpi_plugin_massocsimport_notimported", "rules_id", 'text');
    $migration->addField("glpi_plugin_massocsimport_notimported", "entities_id", 'integer');
    $migration->addField("glpi_plugin_massocsimport_details", "entities_id", 'integer');
    $migration->addField("glpi_plugin_massocsimport_details", "rules_id", 'text');
    $query = "SELECT id " . "FROM `glpi_notificationtemplates` " . "WHERE `itemtype`='PluginMassocsimportNotimported'";
    $result = $DB->query($query);
    if (!$DB->numrows($result)) {
        //Add template
        $query = "INSERT INTO `glpi_notificationtemplates` " . "VALUES (NULL, 'Computers not imported', 'PluginMassocsimportNotimported',\n                        NOW(), '', '');";
        $DB->queryOrDie($query, $DB->error());
        $templates_id = $DB->insert_id();
        $query = "INSERT INTO `glpi_notificationtemplatetranslations` " . "VALUES(NULL, {$templates_id}, '', '##lang.notimported.action## : ##notimported.entity##'," . " '\r\n\n##lang.notimported.action## :&#160;##notimported.entity##\n\n" . "##FOREACHnotimported##&#160;\n##lang.notimported.reason## : ##notimported.reason##\n" . "##lang.notimported.name## : ##notimported.name##\n" . "##lang.notimported.deviceid## : ##notimported.deviceid##\n" . "##lang.notimported.tag## : ##notimported.tag##\n##lang.notimported.serial## : ##notimported.serial## \r\n\n" . " ##notimported.url## \n##ENDFOREACHnotimported## \r\n', '&lt;p&gt;##lang.notimported.action## :&#160;##notimported.entity##&lt;br /&gt;&lt;br /&gt;" . "##FOREACHnotimported##&#160;&lt;br /&gt;##lang.notimported.reason## : ##notimported.reason##&lt;br /&gt;" . "##lang.notimported.name## : ##notimported.name##&lt;br /&gt;" . "##lang.notimported.deviceid## : ##notimported.deviceid##&lt;br /&gt;" . "##lang.notimported.tag## : ##notimported.tag##&lt;br /&gt;" . "##lang.notimported.serial## : ##notimported.serial##&lt;/p&gt;\r\n&lt;p&gt;&lt;a href=\"##infocom.url##\"&gt;" . "##notimported.url##&lt;/a&gt;&lt;br /&gt;##ENDFOREACHnotimported##&lt;/p&gt;');";
        $DB->queryOrDie($query, $DB->error());
        $query = "INSERT INTO `glpi_notifications`\n                VALUES (NULL, 'Computers not imported', 0, 'PluginMassocsimportNotimported',\n                        'not_imported', 'mail'," . $templates_id . ", '', 1, 1, NOW());";
        $DB->queryOrDie($query, $DB->error());
    }
    $migration->executeMigration();
}
function plugin_custom_install()
{
    global $DB;
    $version = plugin_version_custom();
    $migration = new Migration($version['version']);
    // VERSION 1.0
    if (!TableExists('glpi_plugin_custom_tabs')) {
        $query = "CREATE TABLE `glpi_plugin_custom_tabs` (\n         `id` INT(11) NOT NULL AUTO_INCREMENT,\n         `name` VARCHAR(255)  collate utf8_unicode_ci NOT NULL,\n         `itemtype` VARCHAR(255) NOT NULL DEFAULT 0,\n         `tab` VARCHAR(255) NOT NULL DEFAULT 0,\n         `color` VARCHAR(255) NOT NULL DEFAULT 0,\n         PRIMARY KEY (`id`)\n      ) ENGINE = MYISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
        $DB->query($query);
    }
    if (!TableExists('glpi_plugin_custom_defaulttabs')) {
        $query = "CREATE TABLE `glpi_plugin_custom_defaulttabs` (\n         `id` INT(11) NOT NULL AUTO_INCREMENT,\n         `name` VARCHAR(255)  collate utf8_unicode_ci NOT NULL,\n         `itemtype` VARCHAR(255) NOT NULL DEFAULT 0,\n         `tab` VARCHAR(255) NOT NULL DEFAULT 0,\n         PRIMARY KEY (`id`)\n      ) ENGINE = MYISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
        $DB->query($query);
    }
    if (!TableExists('glpi_plugin_custom_styles')) {
        $query = "CREATE TABLE `glpi_plugin_custom_styles` (\n         `id` INT(11) NOT NULL AUTO_INCREMENT,\n         `body` VARCHAR(7) NOT NULL DEFAULT '#dfdfdf',\n         `button_bg_color` VARCHAR(7) NOT NULL DEFAULT '#e1cc7b',\n         `button_border` VARCHAR(7) NOT NULL DEFAULT '#8B8468',\n         `button_color` VARCHAR(7) NOT NULL DEFAULT '#000000',\n         `button_bg_color_hover` VARCHAR(7) NOT NULL DEFAULT '#ffffff',\n         `button_border_hover` VARCHAR(7) NOT NULL DEFAULT '#8B8468',\n         `button_color_hover` VARCHAR(7) NOT NULL DEFAULT '#000000',\n         `text_color` VARCHAR(7) NOT NULL DEFAULT '#000000',\n         `link_color` VARCHAR(7) NOT NULL DEFAULT '#659900',\n         `link_hover_color` VARCHAR(7) NOT NULL DEFAULT '#000000',\n         `menu_link` VARCHAR(7) NOT NULL DEFAULT '#000000',\n         `ssmenu1_link` VARCHAR(7) NOT NULL DEFAULT '#666666',\n         `ssmenu2_link` VARCHAR(7) NOT NULL DEFAULT '#000000',\n         `link_topright` VARCHAR(7) NOT NULL DEFAULT '#000000',\n         `menu_border` VARCHAR(7) NOT NULL DEFAULT '#9BA563',\n         `menu_item_bg` VARCHAR(7) NOT NULL DEFAULT '#f1e7c2',\n         `menu_item_link` VARCHAR(7) NOT NULL DEFAULT '#000000',\n         `menu_item_border` VARCHAR(7) NOT NULL DEFAULT '#CC9900',\n         `menu_item_bg_hover` VARCHAR(7) NOT NULL DEFAULT '#d0d99d',\n         `table_bg_color` VARCHAR(7) NOT NULL DEFAULT '#F2F2F2',\n         `th` VARCHAR(7) NOT NULL DEFAULT '#e1cc7b',\n         `th_text_color` VARCHAR(7) NOT NULL DEFAULT '#000000',\n         `tab_bg_1` VARCHAR(7) NOT NULL DEFAULT '#f2f2f2',\n         `tab_bg_1_2` VARCHAR(7) NOT NULL DEFAULT '#cf9b9b',\n         `tab_bg_2` VARCHAR(7) NOT NULL DEFAULT '#f2f2f2',\n         `tab_bg_2_2` VARCHAR(7) NOT NULL DEFAULT '#cf9b9b',\n         `tab_bg_3` VARCHAR(7) NOT NULL DEFAULT '#e7e7e2',\n         `tab_bg_4` VARCHAR(7) NOT NULL DEFAULT '#e4e4e2',\n         `tab_bg_5` VARCHAR(7) NOT NULL DEFAULT '#f2f2f2',\n         `header_bg1` VARCHAR(7) NOT NULL DEFAULT '#FFFFFF',\n         `header_bg2` VARCHAR(7) NOT NULL DEFAULT '#f5efd6',\n         `header_bg3` VARCHAR(7) NOT NULL DEFAULT '#d6bc53',\n         `header_bg4` VARCHAR(7) NOT NULL DEFAULT '#c0cc7b',\n         `header_bg5` VARCHAR(7) NOT NULL DEFAULT '#d0d99d',\n         `header_bg6` VARCHAR(7) NOT NULL DEFAULT '#f1f4e3',\n         `header_shadow_color` VARCHAR(7) NOT NULL DEFAULT '#011E3A',\n         `page_shadow_color` VARCHAR(7) NOT NULL DEFAULT '#011E3A',\n         `footer_shadow_color` VARCHAR(7) NOT NULL DEFAULT '#011E3A',\n         `footer_bg1` VARCHAR(7) NOT NULL DEFAULT '#FFFFFF',\n         `footer_bg2` VARCHAR(7) NOT NULL DEFAULT '#e2cf83',\n         `cadre_central_bg1` VARCHAR(7) NOT NULL DEFAULT '#e8dab0',\n         `cadre_central_bg2` VARCHAR(7) NOT NULL DEFAULT '#FFFFFF',\n         `tabs_bg1` VARCHAR(7) NOT NULL DEFAULT '#fcfcfa',\n         `tabs_bg2` VARCHAR(7) NOT NULL DEFAULT '#ddddc8',\n         `tabs_bg3` VARCHAR(7) NOT NULL DEFAULT '#cfcfb2',\n         `tabs_border` VARCHAR(7) NOT NULL DEFAULT '#909058',\n         `tabs_title_color` VARCHAR(7) NOT NULL DEFAULT '#659900',\n         PRIMARY KEY (`id`)\n      ) ENGINE = MYISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
        $DB->query($query);
    }
    if (!TableExists('glpi_plugin_custom_profiles')) {
        $query = "CREATE TABLE `glpi_plugin_custom_profiles` (\n         `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,\n         `profiles_id` VARCHAR(45) NOT NULL,\n         `add_tabs` CHAR(1),\n         `add_defaulttabs` CHAR(1),\n         `edit_style` CHAR(1),\n         PRIMARY KEY (`id`)\n      )\n      ENGINE = MYISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
        $DB->query($query);
    }
    if (!FieldExists('glpi_plugin_custom_styles', 'text_color')) {
        $query = "ALTER TABLE `glpi_plugin_custom_styles` ADD COLUMN `text_color` VARCHAR(7) NOT NULL DEFAULT '#000000'";
        $DB->query($query);
    }
    if (!FieldExists('glpi_plugin_custom_styles', 'th_text_color')) {
        $query = "ALTER TABLE `glpi_plugin_custom_styles` ADD COLUMN `th_text_color` VARCHAR(7) NOT NULL DEFAULT '#000000'";
        $DB->query($query);
        $query = "ALTER TABLE `glpi_plugin_custom_styles` ADD COLUMN `table_bg_color` VARCHAR(7) NOT NULL DEFAULT '#F2F2F2'";
        $DB->query($query);
    }
    if (!FieldExists('glpi_plugin_custom_styles', 'link_topright')) {
        $query = "ALTER TABLE `glpi_plugin_custom_styles` ADD COLUMN `link_topright` VARCHAR(7) NOT NULL DEFAULT '#000000'";
        $DB->query($query);
    }
    if (!FieldExists('glpi_plugin_custom_styles', 'button_bg_color')) {
        $query = "ALTER TABLE `glpi_plugin_custom_styles` ADD COLUMN `button_bg_color` VARCHAR(7) NOT NULL DEFAULT '#e1cc7b'";
        $DB->query($query);
        $query = "ALTER TABLE `glpi_plugin_custom_styles` ADD COLUMN `button_border` VARCHAR(7) NOT NULL DEFAULT '#8B8468'";
        $DB->query($query);
        $query = "ALTER TABLE `glpi_plugin_custom_styles` ADD COLUMN `button_color` VARCHAR(7) NOT NULL DEFAULT '#000000'";
        $DB->query($query);
        $query = "ALTER TABLE `glpi_plugin_custom_styles` ADD COLUMN `button_bg_color_hover` VARCHAR(7) NOT NULL DEFAULT '#FFFFFF'";
        $DB->query($query);
        $query = "ALTER TABLE `glpi_plugin_custom_styles` ADD COLUMN `button_border_hover` VARCHAR(7) NOT NULL DEFAULT '#8B8468'";
        $DB->query($query);
        $query = "ALTER TABLE `glpi_plugin_custom_styles` ADD COLUMN `button_color_hover` VARCHAR(7) NOT NULL DEFAULT '#000000'";
        $DB->query($query);
    }
    //create plugin file dir
    if (!is_dir(CUSTOM_FILES_DIR)) {
        mkdir(CUSTOM_FILES_DIR);
    }
    touch(CUSTOM_FILES_DIR . "glpi_style.css");
    //create config style
    require_once "style.class.php";
    $style = new PluginCustomStyle();
    $found = $style->find();
    if (empty($found)) {
        $style->add(array('id' => 0));
    }
    //Version 1.1
    if (!TableExists('glpi_plugin_custom_tabprofiles')) {
        $query = "CREATE TABLE     `glpi_plugin_custom_tabprofiles` (\n         `id`                    INT(11) NOT NULL AUTO_INCREMENT,\n         `plugin_custom_tabs_id` INT(11),\n         `profiles_id`           INT(11),\n         PRIMARY KEY             (`id`),\n         KEY                     (`plugin_custom_tabs_id`),\n         KEY                     (`profiles_id`)\n      ) ENGINE = MYISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
        $DB->query($query);
    }
    if (!FieldExists('glpi_plugin_custom_styles', 'text_color')) {
        $migration->addField('glpi_plugin_custom_styles', 'text_color', "VARCHAR(7) NOT NULL DEFAULT '#000000'", array('after' => 'body'));
        $migration->migrationOneTable('glpi_plugin_custom_styles');
    }
    return true;
}
示例#18
0
文件: hook.php 项目: sx3052/racks
function plugin_racks_install()
{
    global $DB;
    include_once GLPI_ROOT . "/plugins/racks/inc/profile.class.php";
    $migration = new Migration("1.6.1");
    $update = false;
    if (!TableExists("glpi_plugin_racks_racks") && !TableExists("glpi_plugin_racks_configs")) {
        $DB->runFile(GLPI_ROOT . "/plugins/racks/sql/empty-1.5.2.sql");
    } elseif (TableExists("glpi_plugin_rack_content") && !FieldExists("glpi_plugin_rack_content", "first_powersupply")) {
        $update = true;
        $DB->runFile(GLPI_ROOT . "/plugins/racks/sql/update-1.0.2.sql");
        $DB->runFile(GLPI_ROOT . "/plugins/racks/sql/update-1.1.0.sql");
    } elseif (!TableExists("glpi_plugin_rack") && TableExists("glpi_plugin_racks_profiles")) {
        $update = true;
        $DB->runFile(GLPI_ROOT . "/plugins/racks/sql/update-1.1.0.sql");
    }
    //from 1.1 version
    if (TableExists("glpi_plugin_racks_racks") && !FieldExists("glpi_plugin_racks_racks", "otherserial")) {
        $DB->runFile(GLPI_ROOT . "/plugins/racks/sql/update-1.2.1.sql");
    }
    if (TableExists("glpi_plugin_racks_racks") && !FieldExists("glpi_plugin_racks_racks", "users_id_tech")) {
        $DB->runFile(GLPI_ROOT . "/plugins/racks/sql/update-1.3.0.sql");
    }
    if (!TableExists("glpi_plugin_racks_racktypes")) {
        $DB->runFile(GLPI_ROOT . "/plugins/racks/sql/update-1.3.2.sql");
    }
    if (TableExists("glpi_plugin_racks_racktypes") && !FieldExists("glpi_plugin_racks_racktypes", "is_recursive")) {
        $DB->runFile(GLPI_ROOT . "/plugins/racks/sql/update-1.4.1.sql");
    }
    if (TableExists("glpi_plugin_racks_profiles") && !FieldExists("glpi_plugin_racks_profiles", "open_ticket")) {
        $DB->runFile(GLPI_ROOT . "/plugins/racks/sql/update-1.4.2.sql");
    }
    $migration->addField('glpi_plugin_racks_configs', 'add_location_on_new_item', 'bool');
    $migration->addField('glpi_plugin_racks_configs', 'forward_location_on_change', 'bool');
    $migration->migrationOneTable('glpi_plugin_racks_configs');
    if ($update) {
        foreach ($DB->request('glpi_plugin_racks_profiles') as $data) {
            $query = "UPDATE `glpi_plugin_racks_profiles`\r\n                    SET `profiles_id` = '" . $data["id"] . "'\r\n                    WHERE `id` = '" . $data["id"] . "';";
            $result = $DB->query($query);
        }
        $migration->dropField('glpi_plugin_racks_profiles', 'name');
        Plugin::migrateItemType(array(4450 => 'PluginRacksRack', 4451 => 'PluginRacksOther'), array("glpi_bookmarks", "glpi_bookmarks_users", "glpi_displaypreferences", "glpi_documents_items", "glpi_infocoms", "glpi_logs", "glpi_items_tickets"), array("glpi_plugin_racks_racks_items", "glpi_plugin_racks_itemspecifications"));
    }
    $notepad_tables = array('glpi_plugin_racks_racks');
    foreach ($notepad_tables as $t) {
        // Migrate data
        if (FieldExists($t, 'notepad')) {
            $query = "SELECT id, notepad\r\n                      FROM `{$t}`\r\n                      WHERE notepad IS NOT NULL\r\n                            AND notepad <>'';";
            foreach ($DB->request($query) as $data) {
                $iq = "INSERT INTO `glpi_notepads`\r\n                             (`itemtype`, `items_id`, `content`, `date`, `date_mod`)\r\n                      VALUES ('" . getItemTypeForTable($t) . "', '" . $data['id'] . "',\r\n                              '" . addslashes($data['notepad']) . "', NOW(), NOW())";
                $DB->queryOrDie($iq, "0.85 migrate notepad data");
            }
            $query = "ALTER TABLE `glpi_plugin_racks_racks` DROP COLUMN `notepad`;";
            $DB->query($query);
        }
    }
    //Migrate profiles to the system introduced in 0.85
    PluginRacksProfile::initProfile();
    PluginRacksProfile::createFirstAccess($_SESSION['glpiactiveprofile']['id']);
    //Drop old profile table : not used anymore
    $migration->dropTable('glpi_plugin_racks_profiles');
    return true;
}
示例#19
0
 public static function install(Migration $migration)
 {
     global $DB;
     $table = getTableForItemType(__CLASS__);
     if (!TableExists($table) && !TableExists("glpi_plugin_order_references_manufacturers")) {
         $migration->displayMessage("Installing {$table}");
         $query = "CREATE TABLE IF NOT EXISTS `glpi_plugin_order_references_suppliers` (\n                     `id` int(11) NOT NULL auto_increment,\n                     `entities_id` int(11) NOT NULL default '0',\n                     `is_recursive` tinyint(1) NOT NULL default '0',\n                     `plugin_order_references_id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_references (id)',\n                     `suppliers_id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_suppliers (id)',\n                     `price_taxfree` decimal(20,4) NOT NULL DEFAULT '0.0000',\n                     `reference_code` varchar(255) collate utf8_unicode_ci default NULL,\n                     PRIMARY KEY  (`id`),\n                     KEY `entities_id` (`entities_id`),\n                     KEY `plugin_order_references_id` (`plugin_order_references_id`),\n                     KEY `suppliers_id` (`suppliers_id`)\n                  ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
         $DB->query($query) or die($DB->error());
     } else {
         $migration->displayMessage("Upgrading {$table}");
         //1.1.0
         if (TableExists("glpi_plugin_order_references_manufacturers")) {
             $migration->addField("glpi_plugin_order_references_manufacturers", "reference_code", "varchar(255) NOT NULL collate utf8_unicode_ci default ''");
             $migration->migrationOneTable("glpi_plugin_order_references_manufacturers");
         }
         //1.2.0
         $migration->renameTable("glpi_plugin_order_references_manufacturers", $table);
         $migration->addField($table, "is_recursive", "int(11) NOT NULL default '0'");
         $migration->addKey($table, "suppliers_id");
         $migration->addKey($table, "plugin_order_references_id");
         $migration->changeField($table, "ID", "id", "int(11) NOT NULL auto_increment");
         $migration->changeField($table, "FK_entities", "entities_id", "int(11) NOT NULL default '0'");
         $migration->changeField($table, "FK_reference", "plugin_order_references_id", "int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_references (id)'");
         $migration->changeField($table, "FK_enterprise", "suppliers_id", "int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_suppliers (id)'");
         $migration->changeField($table, "reference_code", "reference_code", "varchar(255) collate utf8_unicode_ci default NULL");
         $migration->changeField($table, "price_taxfree", "price_taxfree", "decimal(20,4) NOT NULL DEFAULT '0.0000'");
         $migration->migrationOneTable($table);
         Plugin::migrateItemType(array(3152 => 'PluginOrderReference_Supplier'), array("glpi_bookmarks", "glpi_bookmarks_users", "glpi_displaypreferences", "glpi_documents_items", "glpi_infocoms", "glpi_logs"), array());
         if (FieldExists('glpi_tickets', 'itemtype')) {
             Plugin::migrateItemType(array(3152 => 'PluginOrderReference_Supplier'), array("glpi_tickets"), array());
         }
         //1.5.0
         $query = "SELECT `entities_id`,`is_recursive`,`id` FROM `glpi_plugin_order_references` ";
         foreach ($DB->request($query) as $data) {
             $query = "UPDATE `glpi_plugin_order_references_suppliers`\n                      SET `entities_id` = '" . $data["entities_id"] . "',`is_recursive` = '" . $data["is_recursive"] . "'\n                      WHERE `plugin_order_references_id` = '" . $data["id"] . "' ";
             $DB->query($query) or die($DB->error());
         }
     }
 }
示例#20
0
 static function install(Migration $migration)
 {
     global $DB;
     // From 0.2 to 1.0.0
     $table = 'glpi_plugin_uninstallcomputer_preference';
     if (TableExists($table)) {
         $migration->changeField($table, 'user_id', 'FK_users', "integer");
         $migration->addField($table, 'FK_template', 'integer');
         $migration->renameTable($table, getTableForItemType(__CLASS__));
     }
     $table = getTableForItemType(__CLASS__);
     // plugin already installed
     if (TableExists($table)) {
         // from 1.0.0 to 1.3.0
         if (FieldExists($table, 'ID')) {
             $migration->changeField($table, 'ID', 'id', 'autoincrement');
             $migration->changeField($table, 'FK_users', 'users_id', 'integer');
             $migration->changeField($table, 'FK_entities', 'entities_id', 'integer');
             $migration->changeField($table, 'FK_template', 'templates_id', 'integer');
             $migration->changeField($table, 'location', 'locations_id', "integer");
         }
         // plugin nevers installed
     } else {
         $query = "CREATE TABLE `" . $table . "` (\n                     `id` int(11) NOT NULL AUTO_INCREMENT,\n                     `users_id` int(11) NOT NULL,\n                     `entities_id` int(11) DEFAULT '0',\n                     `templates_id` int(11) DEFAULT '0',\n                     `locations_id` int(11) DEFAULT '0',\n                     PRIMARY KEY (`id`)\n                     ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
         $DB->queryOrDie($query, $DB->error());
     }
     return true;
 }
示例#21
0
 static function install(Migration $migration)
 {
     global $DB;
     $table = getTableForItemType(__CLASS__);
     if (!TableExists($table)) {
         $migration->displayMessage("Installing {$table}");
         $query = "CREATE TABLE `glpi_plugin_order_profiles` (\n               `id` int(11) NOT NULL auto_increment,\n               `profiles_id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_profiles (id)',\n               `order` char(1) collate utf8_unicode_ci default NULL,\n               `reference` char(1) collate utf8_unicode_ci default NULL,\n               `validation` char(1) collate utf8_unicode_ci default NULL,\n               `cancel` char(1) collate utf8_unicode_ci default NULL,\n               `undo_validation` char(1) collate utf8_unicode_ci default NULL,\n               `bill` char(1) collate utf8_unicode_ci default NULL,\n               `delivery` char(1) collate utf8_unicode_ci default NULL,\n               `generate_order_odt` char(1) collate utf8_unicode_ci default NULL,\n               `open_ticket` char(1) default NULL,\n               PRIMARY KEY  (`id`),\n               KEY `profiles_id` (`profiles_id`)\n            ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
         $DB->query($query) or die($DB->error());
         PluginOrderProfile::createFirstAccess($_SESSION['glpiactiveprofile']['id']);
     } else {
         $migration->displayMessage("Upgrading {$table}");
         //1.2.0
         $migration->changeField($table, "ID", "id", "int(11) NOT NULL auto_increment");
         foreach (array('order', 'reference', 'budget', 'validation', 'cancel', 'undo_validation') as $right) {
             $migration->changeField($table, $right, $right, "char(1) collate utf8_unicode_ci default NULL");
         }
         $migration->migrationOneTable($table);
         if ($migration->addField($table, "profiles_id", "int(11) NOT NULL default '0'")) {
             $migration->addKey($table, "profiles_id");
             $migration->migrationOneTable($table);
             //Migration profiles
             $DB->query("UPDATE `{$table}` SET `profiles_id`=`id`");
         }
         //1.4.0
         $migration->dropField($table, "budget");
         $migration->dropField($table, "name");
         $migration->migrationOneTable($table);
         //1.5.0
         $migration->addField($table, "bill", "char");
         $migration->migrationOneTable($table);
         self::addRightToProfile($_SESSION['glpiactiveprofile']['id'], "bill", "w");
         //1.5.3
         //Add delivery right
         if ($migration->addField($table, "delivery", "char")) {
             $migration->migrationOneTable($table);
             //Update profiles : copy order right not to change current behavior
             $update = "UPDATE `{$table}` SET `delivery`=`order`";
             $DB->query($update);
             self::addRightToProfile($_SESSION['glpiactiveprofile']['id'], "delivery", "w");
         }
         if ($migration->addField($table, "generate_order_odt", "char")) {
             $migration->migrationOneTable($table);
             //Update profiles : copy order right not to change current behavior
             $update = "UPDATE `{$table}` SET `generate_order_odt`=`order`";
             $DB->query($update);
             self::addRightToProfile($_SESSION['glpiactiveprofile']['id'], "generate_order_odt", "w");
         }
     }
     //1.7.2
     $migration->addField($table, "open_ticket", "char");
     $migration->migrationOneTable($table);
     self::addRightToProfile($_SESSION['glpiactiveprofile']['id'], "open_ticket", "w");
     self::changeProfile();
 }
示例#22
0
 public static function install(Migration $migration)
 {
     global $DB;
     $table = getTableForItemType(__CLASS__);
     if (!TableExists($table)) {
         if (!TableExists("glpi_plugin_order_suppliers")) {
             $migration->displayMessage("Installing {$table}");
             //install
             $query = "CREATE TABLE IF NOT EXISTS `glpi_plugin_order_orders_suppliers` (\n                     `id` int(11) NOT NULL auto_increment,\n                     `entities_id` int(11) NOT NULL default '0',\n                     `is_recursive` tinyint(1) NOT NULL default '0',\n                     `plugin_order_orders_id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_orders (id)',\n                     `suppliers_id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_suppliers (id)',\n                     `num_quote` varchar(255) collate utf8_unicode_ci default NULL,\n                     `num_order` varchar(255) collate utf8_unicode_ci default NULL,\n                     `num_bill` varchar(255) collate utf8_unicode_ci default NULL,\n                     PRIMARY KEY  (`id`),\n                     KEY `plugin_order_orders_id` (`plugin_order_orders_id`),\n                     KEY `entities_id` (`entities_id`),\n                     KEY `suppliers_id` (`suppliers_id`)\n                  ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
             $DB->query($query) or die($DB->error());
         } else {
             //Upgrade
             $migration->displayMessage("Upgrading {$table}");
             //1.2.0
             $migration->renameTable("glpi_plugin_order_suppliers", $table);
             $migration->addField($table, "entities_id", "int(11) NOT NULL default '0'");
             $migration->addField($table, "is_recursive", "tinyint(1) NOT NULL default '0'");
             $migration->addField($table, "suppliers_id", "int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_suppliers (id)'");
             $migration->changeField($table, "ID", "id", "int(11) NOT NULL auto_increment");
             $migration->changeField($table, "FK_order", "plugin_order_orders_id", "int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_orders (id)'");
             $migration->changeField($table, "numquote", "num_quote", "varchar(255) collate utf8_unicode_ci default NULL");
             $migration->changeField($table, "numbill", "num_bill", "varchar(255) collate utf8_unicode_ci default NULL");
             $migration->changeField($table, "numorder", "num_order", "varchar(255) collate utf8_unicode_ci default NULL");
             $migration->addKey($table, "plugin_order_orders_id");
             $migration->addKey($table, "suppliers_id");
             $migration->migrationOneTable($table);
             Plugin::migrateItemType(array(3154 => 'PluginOrderOrder_Supplier'), array("glpi_bookmarks", "glpi_bookmarks_users", "glpi_displaypreferences", "glpi_documents_items", "glpi_infocoms", "glpi_logs", "glpi_items_tickets"), array());
             //1.5.0
             $query = "SELECT `suppliers_id`, `entities_id`,`is_recursive`,`id`\n                      FROM `glpi_plugin_order_orders` ";
             foreach ($DB->request($query) as $data) {
                 $query = "UPDATE `glpi_plugin_order_orders_suppliers` SET\n                           `suppliers_id` = '{$data["suppliers_id"]}'\n                         WHERE `plugin_order_orders_id` = '{$data["id"]}' ";
                 $DB->query($query) or die($DB->error());
                 $query = "UPDATE `glpi_plugin_order_orders_suppliers` SET\n                           `entities_id` = '{$data["entities_id"]}',\n                           `is_recursive` = '{$data["is_recursive"]}'\n                         WHERE `plugin_order_orders_id` = '{$data["id"]}' ";
                 $DB->query($query) or die($DB->error());
             }
         }
     }
 }
示例#23
0
 public static function install(Migration $migration)
 {
     global $DB;
     $table = getTableForItemType(__CLASS__);
     $config = new self();
     //This class is available since version 1.3.0
     if (!TableExists($table) && !TableExists("glpi_plugin_order_config")) {
         $migration->displayMessage("Installing {$table}");
         //Install
         $query = "CREATE TABLE `{$table}` (\n                        `id` int(11) NOT NULL auto_increment,\n                        `use_validation` tinyint(1) NOT NULL default '0',\n                        `use_supplier_satisfaction` tinyint(1) NOT NULL default '0',\n                        `use_supplier_informations` tinyint(1) NOT NULL default '0',\n                        `use_supplier_infos` tinyint(1) NOT NULL default '1',\n                        `generate_order_pdf` tinyint(1) NOT NULL default '0',\n                        `copy_documents` tinyint(1) NOT NULL default '0',\n                        `default_taxes` int(11) NOT NULL default '0',\n                        `generate_assets` int(11) NOT NULL default '0',\n                        `generated_name` varchar(255) collate utf8_unicode_ci default NULL,\n                        `generated_serial` varchar(255) collate utf8_unicode_ci default NULL,\n                        `generated_otherserial` varchar(255) collate utf8_unicode_ci default NULL,\n                        `default_asset_states_id` int(11) NOT NULL default '0',\n                        `tickettemplates_id_delivery` int(11) NOT NULL default '0',\n                        `order_status_draft` int(11) NOT NULL default '0',\n                        `order_status_waiting_approval` int(11) NOT NULL default '0',\n                        `order_status_approved` int(11) NOT NULL default '0',\n                        `order_status_partially_delivred` int(11) NOT NULL default '0',\n                        `order_status_completly_delivered` int(11) NOT NULL default '0',\n                        `order_status_canceled` int(11) NOT NULL default '0',\n                        `order_status_paid` int(11) NOT NULL default '0',\n                        `shoudbedelivered_color` char(20) collate utf8_unicode_ci default '#ff5555',\n                        `documentcategories_id` int(11) NOT NULL default '0',\n                        `groups_id_author` int(11) NOT NULL default '0',\n                        `groups_id_recipient` int(11) NOT NULL default '0',\n                        `users_id_recipient` int(11) NOT NULL default '0',\n                        `add_location` tinyint(1) NOT NULL default '0',\n                        `add_bill_details` tinyint(1) NOT NULL default '0',\n                        `hide_inactive_budgets` tinyint(1) NOT NULL default '0',\n                        `rename_documents` tinyint(1) NOT NULL default '0',\n                        `transmit_budget_change` tinyint(1) NOT NULL default '0',\n                        PRIMARY KEY  (`id`)\n                     ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
         $DB->query($query) or die($DB->error());
         $tobefilled = "TOBEFILLED";
         $tmp = array('id' => 1, 'use_validation' => 0, 'default_taxes' => 0, 'generate_assets' => 0, 'generated_name' => $tobefilled, 'generated_serial' => $tobefilled, 'generated_otherserial' => $tobefilled, 'default_asset_states_id' => 0, 'generated_title' => $tobefilled, 'generated_content' => $tobefilled, 'default_ticketcategories_id' => 0, 'shoudbedelivered_color' => '#ff5555');
         $config->add($tmp);
     } else {
         //Upgrade
         $migration->displayMessage("Upgrading {$table}");
         //1.2.0
         $migration->renameTable("glpi_plugin_order_config", $table);
         if (!countElementsInTable("glpi_plugin_order_configs")) {
             $query = "INSERT INTO `glpi_plugin_order_configs`(`id`,`use_validation`,`default_taxes`) VALUES (1,0,0);";
             $DB->query($query) or die($DB->error());
         }
         $migration->changeField($table, "ID", "id", "int(11) NOT NULL auto_increment");
         //1.3.0
         $migration->addField($table, "generate_assets", "tinyint(1) NOT NULL default '0'");
         $migration->addField($table, "generated_name", "varchar(255) collate utf8_unicode_ci default NULL");
         $migration->addField($table, "generated_serial", "varchar(255) collate utf8_unicode_ci default NULL");
         $migration->addField($table, "generated_otherserial", "varchar(255) collate utf8_unicode_ci default NULL");
         $migration->addField($table, "default_asset_entities_id", "int(11) NOT NULL default '0'");
         $migration->addField($table, "default_asset_states_id", "int(11) NOT NULL default '0'");
         $migration->addField($table, "generated_title", "varchar(255) collate utf8_unicode_ci default NULL");
         $migration->addField($table, "generated_content", "text collate utf8_unicode_ci");
         $migration->addField($table, "default_ticketcategories_id", "int(11) NOT NULL default '0'");
         $migration->addField($table, "use_supplier_satisfaction", "tinyint(1) NOT NULL default '0'");
         $migration->addField($table, "generate_order_pdf", "tinyint(1) NOT NULL default '0'");
         $migration->addField($table, "use_supplier_informations", "tinyint(1) NOT NULL default '1'");
         $migration->addField($table, "shoudbedelivered_color", "char(20) collate utf8_unicode_ci default '#ff5555'");
         $migration->addField($table, "copy_documents", "tinyint(1) NOT NULL DEFAULT '0'");
         $migration->addField($table, "documentcategories_id", "integer");
         $migration->addField($table, "groups_id_author", "integer");
         $migration->addField($table, "groups_id_recipient", "integer");
         $migration->addField($table, "users_id_recipient", "integer");
         $migration->changeField($table, "default_ticketcategories_id", "default_itilcategories_id", "integer");
         //1.9.0
         $migration->addField($table, "add_location", "TINYINT(1) NOT NULL DEFAULT '0'");
         $migration->addField($table, "add_bill_details", "TINYINT(1) NOT NULL DEFAULT '0'");
         $config = new self();
         $config->getFromDB(1);
         $templateID = false;
         $migration->addField($table, "tickettemplates_id_delivery", 'integer');
         $migration->migrationOneTable($table);
         $migration->dropField($table, "generated_title");
         $migration->dropField($table, "generated_content");
         $migration->dropField($table, "default_itilcategories_id");
         $migration->addField($table, "hide_inactive_budgets", "bool");
         $migration->addField($table, "rename_documents", "bool");
         //0.85+1.2
         $migration->addField($table, "transmit_budget_change", "bool");
         $migration->migrationOneTable($table);
         if ($templateID) {
             $config->update(array('id' => 1, 'tickettemplates_id_delivery' => $templateID));
         }
     }
     $migration->displayMessage("Add default order state workflow");
     $new_states = array('order_status_draft' => 1, 'order_status_waiting_approval' => 2, 'order_status_approved' => 3, 'order_status_partially_delivred' => 4, 'order_status_completly_delivered' => 5, 'order_status_canceled' => 6, 'order_status_paid' => 7);
     foreach ($new_states as $field => $value) {
         $migration->addField($table, $field, "int(11) NOT NULL default '0'");
     }
     $migration->migrationOneTable($table);
     $new_states['id'] = 1;
     $config->update($new_states);
 }
 static function install(Migration $migration)
 {
     global $DB;
     $table = getTableForItemType(__CLASS__);
     $config = new self();
     // Install
     if (!TableExists($table)) {
         $migration->displayMessage("Installing {$table}");
         //Install
         $query = "CREATE TABLE `{$table}` (\n                     `id` int(11) NOT NULL auto_increment,\n                     `purge_computer_software_install` int(11) NOT NULL default '0',\n                     `purge_software_version_install` int(11) NOT NULL default '0',\n                     `purge_infocom_creation` int(11) NOT NULL default '0',\n                     `purge_profile_user` int(11) NOT NULL default '0',\n                     `purge_group_user` int(11) NOT NULL default '0',\n                     `purge_webservices_logs` int(11) NOT NULL default '0',\n                     `purge_ocsid_changes` int(11) NOT NULL default '0',\n                     `purge_ocsimport` int(11) NOT NULL default '0',\n                     `purge_ocslink` int(11) NOT NULL default '0',\n                     `purge_ocsdelete` int(11) NOT NULL default '0',\n                     `purge_adddevice` tinyint(1) NOT NULL default '0',\n                     `purge_updatedevice` tinyint(1) NOT NULL default '0',\n                     `purge_deletedevice` tinyint(1) NOT NULL default '0',\n                     `purge_connectdevice` tinyint(1) NOT NULL default '0',\n                     `purge_disconnectdevice` tinyint(1) NOT NULL default '0',\n                     `purge_userdeletedfromldap` tinyint(1) NOT NULL default '0',\n                     `purge_addrelation` tinyint(1) NOT NULL default '0',\n                     `purge_deleterelation` tinyint(1) NOT NULL default '0',\n                     `purge_createitem` tinyint(1) NOT NULL default '0',\n                     `purge_deleteitem` tinyint(1) NOT NULL default '0',\n                     `purge_restoreitem` tinyint(1) NOT NULL default '0',\n                     `purge_updateitem` tinyint(1) NOT NULL default '0',\n                     `purge_comments` tinyint(1) NOT NULL default '0',\n                     `purge_datemod` tinyint(1) NOT NULL default '0',\n                     `purge_genericobject_unusedtypes` tinyint(1) NOT NULL default '0',\n                     `purge_all` tinyint(1) NOT NULL default '0',\n                     `purge_user_auth_changes` tinyint(1) NOT NULL default '0',\n                     PRIMARY KEY  (`id`)\n                  ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
         $DB->query($query) or die($DB->error());
         //Add config
         $config->add(array('id' => 1));
     }
     // Update
     if (TableExists($table)) {
         // for 0.84
         if (!FieldExists($table, "purge_genericobject_unusedtypes")) {
             $migration->displayMessage("Updating {$table} adding field purge_genericobject_unusedtypes");
             $migration->addField($table, "purge_genericobject_unusedtypes", "tinyint(1) NOT NULL default '0'", array('after' => "purge_datemod", 'update' => "0"));
         }
         // for 0.84.1
         if (!FieldExists($table, "purge_all")) {
             $migration->displayMessage("Updating {$table} adding fiel purge_all");
             $migration->addField($table, "purge_all", "tinyint(1) NOT NULL default '0'", array('after' => "purge_genericobject_unusedtypes", 'update' => "0"));
         }
         $migration->addfield($table, 'purge_user_auth_changes', 'bool');
     }
     $migration->executeMigration();
     return true;
 }
 static function install(Migration $migration)
 {
     global $DB;
     $table = getTableForItemType(__CLASS__);
     if (TableExists("glpi_plugin_itilcategorygroups_categories_groups") && FieldExists("glpi_plugin_itilcategorygroups_categories_groups", 'is_active')) {
         $migration->renameTable("glpi_plugin_itilcategorygroups_categories_groups", $table);
     }
     if (!TableExists($table)) {
         $query = "CREATE TABLE IF NOT EXISTS `{$table}` (\n         `id` INT(11) NOT NULL AUTO_INCREMENT,\n         `is_active` TINYINT(1) NOT NULL DEFAULT '0',\n         `name` VARCHAR(255) COLLATE utf8_unicode_ci DEFAULT '',\n         `comment` TEXT COLLATE utf8_unicode_ci,\n         `date_mod` DATE default NULL,\n         `itilcategories_id` INT(11) NOT NULL DEFAULT '0',\n         `view_all_lvl1` TINYINT(1) NOT NULL DEFAULT '0',\n         `view_all_lvl2` TINYINT(1) NOT NULL DEFAULT '0',\n         `view_all_lvl3` TINYINT(1) NOT NULL DEFAULT '0',\n         `view_all_lvl4` TINYINT(1) NOT NULL DEFAULT '0',\n         `entities_id` INT(11) NOT NULL DEFAULT '0',\n         `is_recursive` TINYINT(1) NOT NULL DEFAULT '1',\n         `is_incident` TINYINT(1) NOT NULL DEFAULT '1',\n         `is_request` TINYINT(1) NOT NULL DEFAULT '1',\n         PRIMARY KEY (`id`),\n         KEY `entities_id` (`entities_id`),\n         KEY `itilcategories_id` (`itilcategories_id`),\n         KEY `is_incident` (`is_incident`),\n         KEY `is_request` (`is_request`),\n         KEY `is_recursive` (`is_recursive`),\n         KEY date_mod (date_mod)\n         ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;";
         $DB->query($query);
     }
     if (!FieldExists($table, 'view_all_lvl1')) {
         $migration->addField($table, 'view_all_lvl1', "TINYINT(1) NOT NULL DEFAULT '0'", array('after' => 'itilcategories_id'));
         $migration->addField($table, 'view_all_lvl2', "TINYINT(1) NOT NULL DEFAULT '0'", array('after' => 'itilcategories_id'));
         $migration->addField($table, 'view_all_lvl3', "TINYINT(1) NOT NULL DEFAULT '0'", array('after' => 'itilcategories_id'));
         $migration->addField($table, 'view_all_lvl4', "TINYINT(1) NOT NULL DEFAULT '0'", array('after' => 'itilcategories_id'));
         $migration->migrationOneTable($table);
     }
     return true;
 }
示例#26
0
 static function install(Migration $migration)
 {
     global $DB;
     $table = getTableForItemType(__CLASS__);
     if (!TableExists($table)) {
         $query = "CREATE TABLE `{$table}` (\n                           `id` INT( 11 ) NOT NULL AUTO_INCREMENT,\n                           `entities_id` INT( 11 ) NOT NULL DEFAULT 0,\n                           `itemtype` varchar(255) collate utf8_unicode_ci default NULL,\n                           `is_active` tinyint(1) NOT NULL default '0',\n                           `name` varchar(255) collate utf8_unicode_ci default NULL,\n                           `comment` text NULL,\n                           `date_mod` datetime DEFAULT NULL,\n                           `date_creation` datetime DEFAULT NULL,\n                           `use_global_search` tinyint(1) NOT NULL default '0',\n                           `use_unicity` tinyint(1) NOT NULL default '0',\n                           `use_history` tinyint(1) NOT NULL default '0',\n                           `use_infocoms` tinyint(1) NOT NULL default '0',\n                           `use_contracts` tinyint(1) NOT NULL default '0',\n                           `use_documents` tinyint(1) NOT NULL default '0',\n                           `use_tickets` tinyint(1) NOT NULL default '0',\n                           `use_links` tinyint(1) NOT NULL default '0',\n                           `use_loans` tinyint(1) NOT NULL default '0',\n                           `use_network_ports` tinyint(1) NOT NULL default '0',\n                           `use_direct_connections` tinyint(1) NOT NULL default '0',\n                           `use_plugin_datainjection` tinyint(1) NOT NULL default '0',\n                           `use_plugin_pdf` tinyint(1) NOT NULL default '0',\n                           `use_plugin_order` tinyint(1) NOT NULL default '0',\n                           `use_plugin_uninstall` tinyint(1) NOT NULL default '0',\n                           `use_plugin_geninventorynumber` tinyint(1) NOT NULL default '0',\n                           `use_menu_entry` tinyint(1) NOT NULL default '0',\n                           `use_projects` tinyint(1) NOT NULL default '0',\n                           `linked_itemtypes` text NULL,\n                           `plugin_genericobject_typefamilies_id` INT( 11 ) NOT NULL DEFAULT 0,\n                           PRIMARY KEY ( `id` )\n                           ) ENGINE = MYISAM COMMENT = 'Object types definition table' DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
         $DB->query($query) or die($DB->error());
     }
     $migration->addField($table, "use_network_ports", "bool");
     $migration->addField($table, "use_direct_connections", "bool");
     $migration->addField($table, "use_plugin_geninventorynumber", "bool");
     $migration->addField($table, "use_contracts", "bool");
     $migration->addField($table, "use_menu_entry", "bool");
     $migration->addField($table, "use_global_search", "bool");
     $migration->addField($table, "use_projects", "bool");
     $migration->addField($table, "use_notepad", "bool");
     $migration->addField($table, "comment", "text");
     if (!$migration->addField($table, "date_mod", "datetime")) {
         $migration->changeField($table, "date_mod", "date_mod", "datetime");
     }
     $migration->addField($table, "date_creation", "datetime");
     $migration->addField($table, "linked_itemtypes", "text");
     $migration->addField($table, "plugin_genericobject_typefamilies_id", "integer");
     $migration->addField($table, "use_plugin_simcard", "bool");
     $migration->migrationOneTable($table);
     // Migrate notepad data
     $allGenericObjectTypes = PluginGenericobjectType::getTypes(true);
     $notepad = new Notepad();
     foreach ($allGenericObjectTypes as $genericObjectType => $genericObjectData) {
         $genericObjectTypeInstance = new $genericObjectType();
         if (FieldExists($genericObjectTypeInstance->getTable(), "notepad")) {
             $query = "INSERT INTO `" . $notepad->getTable() . "`\n                  (`items_id`,\n                  `itemtype`,\n                  `date`,\n                  `date_mod`,\n                  `content`\n               )\n               SELECT\n                  `id` as `items_id`,\n                  '" . $genericObjectType . "' as `itemtype`,\n                  now() as `date`,\n                  now() as `date_mod`,\n                  `notepad` as `content`\n               FROM `" . $genericObjectTypeInstance->getTable() . "`\n               WHERE notepad IS NOT NULL\n               AND notepad <> ''";
             $DB->query($query) or die($DB->error());
         }
         $query = "UPDATE`" . $notepad->getTable() . "`";
         $migration->dropField($genericObjectTypeInstance->getTable(), "notepad");
         $migration->migrationOneTable($genericObjectTypeInstance->getTable());
     }
     //Displayprefs
     $prefs = array(10 => 6, 9 => 5, 8 => 4, 7 => 3, 6 => 2, 2 => 1, 4 => 1, 11 => 7, 12 => 8, 14 => 10, 15 => 11);
     foreach ($prefs as $num => $rank) {
         if (!countElementsInTable("glpi_displaypreferences", "`itemtype`='" . __CLASS__ . "' AND `num`='{$num}'\n                                       AND `users_id`='0'")) {
             $preference = new DisplayPreference();
             $tmp['itemtype'] = __CLASS__;
             $tmp['num'] = $num;
             $tmp['rank'] = $rank;
             $tmp['users_id'] = 0;
             $preference->add($tmp);
         }
     }
     //If files are missing, recreate them!
     self::checkClassAndFilesForItemType();
 }
示例#27
0
 static function install(Migration $migration)
 {
     global $DB;
     $table = getTableForItemType(__CLASS__);
     if (!TableExists($table)) {
         $query = "CREATE TABLE `{$table}` (\n                           `id` INT( 11 ) NOT NULL AUTO_INCREMENT,\n                           `entities_id` INT( 11 ) NOT NULL DEFAULT 0,\n                           `itemtype` varchar(255) collate utf8_unicode_ci default NULL,\n                           `is_active` tinyint(1) NOT NULL default '0',\n                           `name` varchar(255) collate utf8_unicode_ci default NULL,\n                           `comment` text NULL,\n                           `date_mod` datetime NOT NULL default '0000-00-00 00:00:00',\n                           `use_global_search` tinyint(1) NOT NULL default '0',\n                           `use_unicity` tinyint(1) NOT NULL default '0',\n                           `use_history` tinyint(1) NOT NULL default '0',\n                           `use_infocoms` tinyint(1) NOT NULL default '0',\n                           `use_contracts` tinyint(1) NOT NULL default '0',\n                           `use_documents` tinyint(1) NOT NULL default '0',\n                           `use_tickets` tinyint(1) NOT NULL default '0',\n                           `use_links` tinyint(1) NOT NULL default '0',\n                           `use_loans` tinyint(1) NOT NULL default '0',\n                           `use_network_ports` tinyint(1) NOT NULL default '0',\n                           `use_direct_connections` tinyint(1) NOT NULL default '0',\n                           `use_plugin_datainjection` tinyint(1) NOT NULL default '0',\n                           `use_plugin_pdf` tinyint(1) NOT NULL default '0',\n                           `use_plugin_order` tinyint(1) NOT NULL default '0',\n                           `use_plugin_uninstall` tinyint(1) NOT NULL default '0',\n                           `use_plugin_geninventorynumber` tinyint(1) NOT NULL default '0',\n                           `use_menu_entry` tinyint(1) NOT NULL default '0',\n                           `linked_itemtypes` text NULL,\n                           PRIMARY KEY ( `id` )\n                           ) ENGINE = MYISAM COMMENT = 'Object types definition table' DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
         $DB->query($query) or die($DB->error());
     }
     $migration->addField($table, "use_network_ports", "bool");
     $migration->addField($table, "use_direct_connections", "bool");
     $migration->addField($table, "use_plugin_geninventorynumber", "bool");
     $migration->addField($table, "use_contracts", "bool");
     $migration->addField($table, "use_menu_entry", "bool");
     $migration->addField($table, "use_global_search", "bool");
     $migration->addField($table, "comment", "text");
     $migration->addField($table, "date_mod", "datetime");
     $migration->addField($table, "linked_itemtypes", "text");
     $migration->migrationOneTable($table);
     //Displayprefs
     $prefs = array(10 => 6, 9 => 5, 8 => 4, 7 => 3, 6 => 2, 2 => 1, 4 => 1, 11 => 7, 12 => 8, 14 => 10, 15 => 11);
     foreach ($prefs as $num => $rank) {
         if (!countElementsInTable("glpi_displaypreferences", "`itemtype`='" . __CLASS__ . "' AND `num`='{$num}'\n                                       AND `users_id`='0'")) {
             $preference = new DisplayPreference();
             $tmp['itemtype'] = __CLASS__;
             $tmp['num'] = $num;
             $tmp['rank'] = $rank;
             $tmp['users_id'] = 0;
             $preference->add($tmp);
         }
     }
     //If files are missing, recreate them!
     self::checkClassAndFilesForItemType();
 }
示例#28
0
function plugin_escalade_install()
{
    global $DB;
    //get version
    $plugin = new Plugin();
    $found = $plugin->find("name = 'escalade'");
    $plugin_escalade = array_shift($found);
    //init migration
    $migration = new Migration($plugin_escalade['version']);
    // == Tables creation (initial installation) ==
    if (!TableExists('glpi_plugin_escalade_histories')) {
        $query = "CREATE TABLE `glpi_plugin_escalade_histories` (\n         `id`              INT(11) NOT NULL AUTO_INCREMENT,\n         `tickets_id`      INT(11) NOT NULL,\n         `groups_id`       INT(11) NOT NULL,\n         `date_mod`        DATETIME NOT NULL,\n         PRIMARY KEY (`id`),\n         KEY `tickets_id` (`tickets_id`),\n         KEY `groups_id` (`groups_id`)\n      ) ENGINE = MYISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
        $DB->query($query);
    }
    if (!TableExists('glpi_plugin_escalade_configs')) {
        $query = "CREATE TABLE `glpi_plugin_escalade_configs` (\n         `id`                                      INT(11) NOT NULL AUTO_INCREMENT,\n         `remove_group`                            INT(11) NOT NULL,\n         `remove_delete_group_btn`                 INT(11) NOT NULL,\n         `remove_delete_user_btn`                  INT(11) NOT NULL,\n         `show_history`                            INT(11) NOT NULL,\n         `task_history`                            INT(11) NOT NULL,\n         `remove_tech`                             INT(11) NOT NULL,\n         `solve_return_group`                      INT(11) NOT NULL,\n         `reassign_group_from_cat`                 INT(11) NOT NULL,\n         `reassign_tech_from_cat`                  INT(11) NOT NULL,\n         `cloneandlink_ticket`                     INT(11) NOT NULL,\n         `close_linkedtickets`                     INT(11) NOT NULL,\n         `use_assign_user_group`                   INT(11) NOT NULL,\n         `use_assign_user_group_creation`          INT(11) NOT NULL,\n         `use_assign_user_group_modification`      INT(11) NOT NULL,\n         `assign_me_ticket`                        INT(11) NOT NULL,\n         `use_filter_assign_group`                 INT(11) NOT NULL,\n         `ticket_last_status`                      INT(11) NOT NULL,\n         PRIMARY KEY (`id`)\n      ) ENGINE = MYISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
        $DB->query($query);
        $query = "INSERT INTO glpi_plugin_escalade_configs \n      VALUES (NULL, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, '" . Ticket::WAITING . "')";
        $DB->query($query);
    }
    // == Update to 1.2 ==
    if (!FieldExists('glpi_plugin_escalade_configs', 'cloneandlink_ticket')) {
        $migration->addField('glpi_plugin_escalade_configs', 'cloneandlink_ticket', 'INT(11) NOT NULL', array('after' => 'reassign_tech_from_cat'));
        $migration->migrationOneTable('glpi_plugin_escalade_configs');
    }
    if (!FieldExists('glpi_plugin_escalade_configs', 'close_linkedtickets')) {
        $migration->addField('glpi_plugin_escalade_configs', 'close_linkedtickets', 'INT(11) NOT NULL', array('after' => 'cloneandlink_ticket'));
        $migration->migrationOneTable('glpi_plugin_escalade_configs');
    }
    if (!FieldExists('glpi_plugin_escalade_configs', 'use_assign_user_group')) {
        $migration->addField('glpi_plugin_escalade_configs', 'use_assign_user_group', 'INT(11) NOT NULL', array('after' => 'close_linkedtickets'));
        $migration->migrationOneTable('glpi_plugin_escalade_configs');
    }
    if (!FieldExists('glpi_plugin_escalade_configs', 'use_assign_user_group_creation')) {
        $migration->addField('glpi_plugin_escalade_configs', 'use_assign_user_group_creation', 'INT(11) NOT NULL', array('after' => 'use_assign_user_group'));
        $migration->migrationOneTable('glpi_plugin_escalade_configs');
    }
    if (!FieldExists('glpi_plugin_escalade_configs', 'use_assign_user_group_modification')) {
        $migration->addField('glpi_plugin_escalade_configs', 'use_assign_user_group_modification', 'INT(11) NOT NULL', array('after' => 'use_assign_user_group_creation'));
        $migration->migrationOneTable('glpi_plugin_escalade_configs');
    }
    if (!FieldExists('glpi_plugin_escalade_configs', 'remove_delete_group_btn')) {
        $migration->addField('glpi_plugin_escalade_configs', 'remove_delete_group_btn', 'INT(11) NOT NULL', array('after' => 'remove_group'));
        $migration->migrationOneTable('glpi_plugin_escalade_configs');
    }
    if (!FieldExists('glpi_plugin_escalade_configs', 'assign_me_ticket')) {
        $migration->addField('glpi_plugin_escalade_configs', 'assign_me_ticket', 'INT(11) NOT NULL', array('after' => 'use_assign_user_group_modification'));
        $migration->migrationOneTable('glpi_plugin_escalade_configs');
    }
    if (!isIndex("glpi_plugin_escalade_histories", 'tickets_id') || !isIndex("glpi_plugin_escalade_histories", 'groups_id')) {
        $migration->addKey("glpi_plugin_escalade_histories", 'tickets_id', 'tickets_id');
        $migration->addKey("glpi_plugin_escalade_histories", 'groups_id', 'groups_id');
        $migration->migrationOneTable('glpi_plugin_escalade_histories');
    }
    // == Update to 1.3 ==
    if (!FieldExists('glpi_plugin_escalade_configs', 'remove_delete_user_btn')) {
        $migration->addField('glpi_plugin_escalade_configs', 'remove_delete_user_btn', 'INT(11) NOT NULL DEFAULT 1', array('after' => 'remove_delete_group_btn'));
        $migration->migrationOneTable('glpi_plugin_escalade_configs');
    }
    if (!FieldExists('glpi_plugin_escalade_configs', 'use_filter_assign_group')) {
        $migration->addField('glpi_plugin_escalade_configs', 'use_filter_assign_group', 'INT(11) NOT NULL', array('after' => 'use_assign_user_group_modification'));
        $migration->migrationOneTable('glpi_plugin_escalade_configs');
    }
    if (!TableExists('glpi_plugin_escalade_groups_groups')) {
        $query = "CREATE TABLE `glpi_plugin_escalade_groups_groups` (\n         `id`                                      INT(11) NOT NULL AUTO_INCREMENT,\n         `groups_id_source` int(11) NOT NULL DEFAULT '0',\n         `groups_id_destination` int(11) NOT NULL DEFAULT '0',\n         PRIMARY KEY (`id`)\n      ) ENGINE = MYISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
        $DB->query($query);
    }
    // Update for 0.84 status
    if (TableExists('glpi_plugin_escalade_configs')) {
        foreach ($DB->request("glpi_plugin_escalade_configs") as $data) {
            switch ($data['ticket_last_status']) {
                case 'solved':
                    $status = Ticket::SOLVED;
                    break;
                case 'waiting':
                    $status = Ticket::WAITING;
                    break;
                case 'closed':
                    $status = Ticket::CLOSED;
                    break;
                case 'assign':
                    $status = Ticket::ASSIGNED;
                    break;
                case 'new':
                    $status = Ticket::INCOMING;
                    break;
                case 'plan':
                    $status = Ticket::PLANNED;
                    break;
                default:
                    $status = -1;
                    break;
            }
            $query = "UPDATE `glpi_plugin_escalade_configs`\n                   SET `ticket_last_status` = '" . $status . "'\n                   WHERE `id` = '" . $data['id'] . "'";
            $DB->query($query);
        }
        $query = "ALTER TABLE `glpi_plugin_escalade_configs` MODIFY `ticket_last_status` INT(11);";
        $DB->query($query);
    }
    return true;
}
示例#29
0
/**
 * Migrate tables from plugin fusinvdeploy to fusioninventory
 *    all datas in exploded tables are merged and stored in json in order table
 * @param  Migration $migration
 * @return nothing
 */
function migrateTablesFromFusinvDeploy($migration)
{
    global $DB;
    if (TableExists("glpi_plugin_fusioninventory_deployorders") && TableExists("glpi_plugin_fusinvdeploy_checks") && TableExists("glpi_plugin_fusinvdeploy_files") && TableExists("glpi_plugin_fusinvdeploy_actions")) {
        //add json field in deploy order table to store datas from old misc tables
        $field_created = $migration->addField("glpi_plugin_fusioninventory_deployorders", "json", "longtext DEFAULT NULL");
        $migration->migrationOneTable("glpi_plugin_fusioninventory_deployorders");
        $final_datas = array();
        //== glpi_plugin_fusioninventory_deployorders ==
        $o_query = "SELECT * FROM glpi_plugin_fusioninventory_deployorders";
        $o_res = $DB->query($o_query);
        while ($o_datas = $DB->fetch_assoc($o_res)) {
            $order_id = $o_datas['id'];
            $o_line = array();
            $of_line = array();
            $o_line['checks'] = array();
            $o_line['actions'] = array();
            $o_line['associatedFiles'] = array();
            //=== Checks ===
            if (TableExists("glpi_plugin_fusinvdeploy_checks")) {
                $c_query = "SELECT type, path, value, 'error' as `return`\n               FROM glpi_plugin_fusinvdeploy_checks\n               WHERE plugin_fusinvdeploy_orders_id = {$order_id}\n               ORDER BY ranking ASC";
                $c_res = $DB->query($c_query);
                $c_i = 0;
                while ($c_datas = $DB->fetch_assoc($c_res)) {
                    foreach ($c_datas as $c_key => $c_value) {
                        //specific case for filesytem sizes, convert to bytes
                        if (!empty($c_value) && is_numeric($c_value) && $c_datas['type'] !== 'freespaceGreater') {
                            $c_value = $c_value * 1024 * 1024;
                        }
                        //construct job check entry
                        $o_line['checks'][$c_i][$c_key] = $c_value;
                    }
                    $c_i++;
                }
            }
            $files_list = array();
            //=== Files ===
            if (TableExists("glpi_plugin_fusinvdeploy_files")) {
                $f_query = "SELECT id, name, is_p2p as p2p, filesize, mimetype, " . "p2p_retention_days as `p2p-retention-duration`, uncompress, sha512 " . "FROM glpi_plugin_fusinvdeploy_files " . "WHERE plugin_fusinvdeploy_orders_id = {$order_id}";
                $f_res = $DB->query($f_query);
                while ($f_datas = $DB->fetch_assoc($f_res)) {
                    //jump to next entry if sha512 is empty
                    // This kind of entries could happen sometimes on upload errors
                    if (empty($f_datas['sha512'])) {
                        continue;
                    }
                    //construct job file entry
                    $o_line['associatedFiles'][] = $f_datas['sha512'];
                    foreach ($f_datas as $f_key => $f_value) {
                        //we don't store the sha512 field in json
                        if ($f_key == "sha512" || $f_key == "id" || $f_key == "filesize" || $f_key == "mimetype") {
                            continue;
                        }
                        //construct order file entry
                        $of_line[$f_datas['sha512']][$f_key] = $f_value;
                    }
                    if (!in_array($f_datas['sha512'], $files_list)) {
                        $files_list[] = $f_datas['sha512'];
                    }
                }
            }
            //=== Actions ===
            $cmdStatus['RETURNCODE_OK'] = 'okCode';
            $cmdStatus['RETURNCODE_KO'] = 'errorCode';
            $cmdStatus['REGEX_OK'] = 'okPattern';
            $cmdStatus['REGEX_KO'] = 'errorPattern';
            if (TableExists("glpi_plugin_fusinvdeploy_actions")) {
                $a_query = "SELECT *\n               FROM glpi_plugin_fusinvdeploy_actions\n               WHERE plugin_fusinvdeploy_orders_id = {$order_id}\n               ORDER BY ranking ASC";
                $a_res = $DB->query($a_query);
                $a_i = 0;
                while ($a_datas = $DB->fetch_assoc($a_res)) {
                    //get type
                    $type = strtolower(str_replace("PluginFusinvdeployAction_", "", $a_datas['itemtype']));
                    //specific case for command type
                    $type = str_replace("command", "cmd", $type);
                    //table for action itemtype
                    $a_table = getTableForItemType($a_datas['itemtype']);
                    //get table fields
                    $at_query = "SELECT *\n                  FROM {$a_table}\n                  WHERE id = " . $a_datas['items_id'];
                    $at_res = $DB->query($at_query);
                    while ($at_datas = $DB->fetch_assoc($at_res)) {
                        foreach ($at_datas as $at_key => $at_value) {
                            //we don't store the id field of action itemtype table in json
                            if ($at_key == "id") {
                                continue;
                            }
                            //specific case for 'path' field
                            if ($at_key == "path") {
                                $o_line['actions'][$a_i][$type]['list'][] = $at_value;
                            } else {
                                //construct job actions entry
                                $o_line['actions'][$a_i][$type][$at_key] = $at_value;
                            }
                        }
                        //specific case for commands : we must add status and env vars
                        if ($a_datas['itemtype'] === "PluginFusinvdeployAction_Command") {
                            $ret_cmd_query = "SELECT type, value\n                        FROM glpi_plugin_fusinvdeploy_actions_commandstatus\n                        WHERE plugin_fusinvdeploy_commands_id = " . $at_datas['id'];
                            $ret_cmd_res = $DB->query($ret_cmd_query);
                            while ($res_cmd_datas = $DB->fetch_assoc($ret_cmd_res)) {
                                // Skip empty retchecks type:
                                // This surely means they have been drop at some point but entry has not been
                                // removed from database.
                                if (!empty($res_cmd_datas['type'])) {
                                    //construct command status array entry
                                    $o_line['actions'][$a_i][$type]['retChecks'][] = array('type' => $cmdStatus[$res_cmd_datas['type']], 'values' => array($res_cmd_datas['value']));
                                }
                            }
                        }
                    }
                    $a_i++;
                }
            }
            $final_datas[$order_id]['jobs'] = $o_line;
            $final_datas[$order_id]['associatedFiles'] = $of_line;
            unset($o_line);
            unset($of_line);
        }
        $options = 0;
        if (version_compare(PHP_VERSION, '5.3.3') >= 0) {
            $options = $options | JSON_NUMERIC_CHECK;
        }
        if (version_compare(PHP_VERSION, '5.4.0') >= 0) {
            $options = $options | JSON_UNESCAPED_SLASHES;
        }
        //store json in order table
        foreach ($final_datas as $order_id => $data) {
            $json = $DB->escape(json_encode($data, $options));
            $order_query = "UPDATE glpi_plugin_fusioninventory_deployorders\n            SET json = '{$json}'\n            WHERE id = {$order_id}";
            $DB->query($order_query);
        }
    }
    //=== Fileparts ===
    if (TableExists('glpi_plugin_fusinvdeploy_fileparts') && TableExists('glpi_plugin_fusinvdeploy_files')) {
        $files_list = $DB->request('glpi_plugin_fusinvdeploy_files');
        // multipart file datas
        foreach ($files_list as $file) {
            $sha = $file['sha512'];
            if (empty($sha)) {
                continue;
            }
            $shortsha = substr($sha, 0, 6);
            $fp_query = "SELECT  fp.`sha512` as filepart_hash, " . "        f.`sha512`  as file_hash      " . "FROM `glpi_plugin_fusinvdeploy_files` as f " . "INNER JOIN `glpi_plugin_fusinvdeploy_fileparts` as fp " . "ON   f.`id` = fp.`plugin_fusinvdeploy_files_id` " . "     AND f.`shortsha512` = '{$shortsha}' " . "GROUP BY fp.`sha512` " . "ORDER BY fp.`id`";
            $fp_res = $DB->query($fp_query);
            if ($DB->numrows($fp_res) > 0) {
                //print("writing file : " . GLPI_PLUGIN_DOC_DIR."/fusioninventory/files/manifests/{$sha}" . "\n");
                $fhandle = fopen(GLPI_PLUGIN_DOC_DIR . "/fusioninventory/files/manifests/{$sha}", 'w+');
                while ($fp_datas = $DB->fetch_assoc($fp_res)) {
                    if ($fp_datas['file_hash'] === $sha) {
                        fwrite($fhandle, $fp_datas['filepart_hash'] . "\n");
                    }
                }
                fclose($fhandle);
            }
        }
    }
    //migrate fusinvdeploy_files to fusioninventory_deployfiles
    if (TableExists("glpi_plugin_fusinvdeploy_files")) {
        $DB->query("TRUNCATE TABLE `glpi_plugin_fusioninventory_deployfiles`");
        if (FieldExists("glpi_plugin_fusinvdeploy_files", "filesize")) {
            $f_query = implode(array("SELECT  files.`id`, files.`name`,", "        files.`filesize`, files.`mimetype`,", "        files.`sha512`, files.`shortsha512`,", "        files.`create_date`,", "        pkgs.`entities_id`, pkgs.`is_recursive`", "FROM glpi_plugin_fusinvdeploy_files as files", "LEFT JOIN glpi_plugin_fusioninventory_deployorders as orders", "  ON orders.`id` = files.`plugin_fusinvdeploy_orders_id`", "LEFT JOIN glpi_plugin_fusioninventory_deploypackages as pkgs", "  ON orders.`plugin_fusioninventory_deploypackages_id` = pkgs.`id`", "WHERE", "  files.`shortsha512` != \"\""), " \n");
            $f_res = $DB->query($f_query);
            while ($f_datas = $DB->fetch_assoc($f_res)) {
                $entry = array("id" => $f_datas["id"], "name" => $f_datas["name"], "filesize" => $f_datas["filesize"], "mimetype" => $f_datas["mimetype"], "shortsha512" => $f_datas["shortsha512"], "sha512" => $f_datas["sha512"], "comments" => "", "date_mod" => $f_datas["create_date"], "entities_id" => $f_datas["entities_id"], "is_recursive" => $f_datas["is_recursive"]);
                $migration->displayMessage("\n");
                // Check if file exists
                $i_DeployFile = new PluginFusioninventoryDeployFile();
                $migration->displayMessage("migrating file " . $entry['name'] . " sha:" . $entry['sha512'] . "\n");
                if ($i_DeployFile->checkPresenceManifest($entry['sha512'])) {
                    $migration->displayMessage("manifest exists" . "\n");
                    $migration->insertInTable("glpi_plugin_fusioninventory_deployfiles", $entry);
                }
            }
        }
    }
    /**
     * JSON orders fixer:
     *    This piece of code makes sure that JSON orders in database are valid and will fix it
     *    otherwise.
     */
    $orders = $DB->request('glpi_plugin_fusioninventory_deployorders');
    foreach ($orders as $order_config) {
        $pfDeployOrder = new PluginFusioninventoryDeployOrder();
        $json_order = json_decode($order_config['json']);
        //print("deployorders fixer : actual order structure for ID ".$order_config['id']."\n" . print_r($json_order,true) ."\n");
        // Checks for /jobs json property
        if (!isset($json_order->jobs) || !is_object($json_order->jobs)) {
            //print("deployorders fixer : create missing required 'jobs' property\n");
            $json_order->jobs = new stdClass();
        }
        if (!isset($json_order->jobs->checks)) {
            //print("deployorders fixer : create missing required '/jobs/checks' array property\n");
            $json_order->jobs->checks = array();
        }
        if (!isset($json_order->jobs->actions)) {
            //print("deployorders fixer : create missing required '/jobs/actions' array property\n");
            $json_order->jobs->actions = array();
        }
        if (!isset($json_order->jobs->associatedFiles)) {
            //print("deployorders fixer : create missing required '/jobs/associatedFiles' array property\n");
            $json_order->jobs->associatedFiles = array();
        }
        // Checks for /associatedFiles json property
        if (!isset($json_order->associatedFiles) || !is_object($json_order->associatedFiles)) {
            //print("deployorders fixer : create missing required 'associatedFiles' property\n");
            $json_order->associatedFiles = new stdClass();
        }
        //print(
        //"deployorders fixer : final order structure for ID ".$order_config['id']."\n" .
        //   json_encode($json_order,JSON_PRETTY_PRINT) ."\n"
        //);
        $pfDeployOrder::updateOrderJson($order_config['id'], $json_order);
    }
    /**
     * Drop unused tables
     */
    $old_deploy_tables = array('glpi_plugin_fusinvdeploy_actions', 'glpi_plugin_fusinvdeploy_actions_commandenvvariables', 'glpi_plugin_fusinvdeploy_actions_commands', 'glpi_plugin_fusinvdeploy_actions_commandstatus', 'glpi_plugin_fusinvdeploy_actions_copies', 'glpi_plugin_fusinvdeploy_actions_deletes', 'glpi_plugin_fusinvdeploy_actions_messages', 'glpi_plugin_fusinvdeploy_actions_mkdirs', 'glpi_plugin_fusinvdeploy_actions_moves', 'glpi_plugin_fusinvdeploy_checks', 'glpi_plugin_fusinvdeploy_fileparts', 'glpi_plugin_fusinvdeploy_files', 'glpi_plugin_fusinvdeploy_files_mirrors');
    foreach ($old_deploy_tables as $table) {
        $migration->dropTable($table);
    }
    //drop unused views
    $old_deploy_views = array('glpi_plugin_fusinvdeploy_taskjobs', 'glpi_plugin_fusinvdeploy_tasks');
    foreach ($old_deploy_views as $view) {
        $DB->query("DROP VIEW IF EXISTS {$view}");
    }
}
示例#30
0
 public static function install(Migration $migration)
 {
     global $DB;
     $table = getTableForItemType(__CLASS__);
     if (!TableExists($table) && !TableExists("glpi_plugin_order_detail")) {
         $migration->displayMessage("Installing {$table}");
         //install
         $query = "CREATE TABLE IF NOT EXISTS `{$table}` (\n               `id` int(11) NOT NULL auto_increment,\n               `entities_id` int(11) NOT NULL default '0',\n               `is_recursive` tinyint(1) NOT NULL default '0',\n               `plugin_order_orders_id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_orders (id)',\n               `itemtype` varchar(100) collate utf8_unicode_ci NOT NULL COMMENT 'see .class.php file',\n               `items_id` int(11) NOT NULL default '0' COMMENT 'RELATION to various tables, according to itemtype (id)',\n               `plugin_order_references_id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_references (id)',\n               `plugin_order_deliverystates_id` int (11)  NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_deliverystates (id)',\n               `plugin_order_ordertaxes_id` float NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_ordertaxes (id)',\n               `delivery_number` varchar(255) collate utf8_unicode_ci default NULL,\n               `delivery_comment` text collate utf8_unicode_ci,\n               `price_taxfree` decimal(20,6) NOT NULL DEFAULT '0.000000',\n               `price_discounted` decimal(20,6) NOT NULL DEFAULT '0.000000',\n               `discount` decimal(20,6) NOT NULL DEFAULT '0.000000',\n               `price_ati` decimal(20,6) NOT NULL DEFAULT '0.000000',\n               `states_id` int(11) NOT NULL default 1,\n               `delivery_date` date default NULL,\n               `plugin_order_bills_id` INT( 11 ) NOT NULL DEFAULT '0',\n               `plugin_order_billstates_id` INT( 11 ) NOT NULL DEFAULT '0',\n               `comment` text collate utf8_unicode_ci,\n               PRIMARY KEY  (`id`),\n               KEY `FK_device` (`items_id`,`itemtype`),\n               KEY `entities_id` (`entities_id`),\n               KEY `item` (`itemtype`,`items_id`),\n               KEY `plugin_order_references_id` (`plugin_order_references_id`),\n               KEY `plugin_order_deliverystates_id` (`plugin_order_deliverystates_id`),\n               KEY `states_id` (`states_id`)\n            ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
         $DB->query($query) or die($DB->error());
     } else {
         //Upgrade
         $migration->displayMessage("Upgrading {$table}");
         //1.1.2
         if (TableExists("glpi_plugin_order_detail")) {
             $migration->addField("glpi_plugin_order_detail", "delivery_status", "int(1) NOT NULL default '0'");
             $migration->addField("glpi_plugin_order_detail", "delivery_comments", "TEXT");
             $migration->migrationOneTable("glpi_plugin_order_detail");
         }
         //1.2.0
         $migration->renameTable("glpi_plugin_order_detail", $table);
         $migration->changeField($table, "ID", "id", "int(11) NOT NULL AUTO_INCREMENT");
         $migration->changeField($table, "FK_order", "plugin_order_orders_id", "int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_orders (id)'");
         $migration->changeField($table, "device_type", "itemtype", "varchar(100) collate utf8_unicode_ci NOT NULL COMMENT 'see .class.php file'");
         $migration->changeField($table, "FK_device", "items_id", "int(11) NOT NULL default '0' COMMENT 'RELATION to various tables, according to itemtype (id)'");
         $migration->changeField($table, "FK_reference", "plugin_order_references_id", "int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_references (id)'");
         $migration->changeField($table, "delivery_status", "plugin_order_deliverystates_id", "int (11)  NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_deliverystates (id)'");
         $migration->changeField($table, "deliverynum", "delivery_number", "varchar(255) collate utf8_unicode_ci default NULL");
         $migration->changeField($table, "delivery_comments", "delivery_comment", "text collate utf8_unicode_ci");
         $migration->changeField($table, "status", "states_id", "int(11) NOT NULL default 1");
         $migration->changeField($table, "date", "delivery_date", "date default NULL");
         $migration->addKey($table, array("items_id", "itemtype"), "FK_device");
         $migration->addKey($table, array("itemtype", "items_id"), "item");
         $migration->addKey($table, "plugin_order_references_id");
         $migration->addKey($table, "plugin_order_deliverystates_id");
         $migration->addKey($table, "states_id");
         $migration->migrationOneTable($table);
         Plugin::migrateItemType(array(), array(), array($table));
         //1.4.0
         $migration->addField($table, "plugin_order_ordertaxes_id", "INT (11) NOT NULL default '0' COMMENT 'RELATION to glpi_plugin_order_ordertaxes (id)'");
         $migration->migrationOneTable($table);
         /* Migrate VAT */
         foreach ($DB->request("glpi_plugin_order_orders") as $data) {
             $query = "UPDATE `glpi_plugin_order_orders_items`\n                       SET `plugin_order_ordertaxes_id` = '" . $data["plugin_order_ordertaxes_id"] . "'\n                       WHERE `plugin_order_orders_id` = '" . $data["id"] . "'";
             $result = $DB->query($query) or die($DB->error());
         }
         //1.5.0
         $migration->addField($table, "entities_id", "INT( 11 ) NOT NULL DEFAULT '0'");
         $migration->addField($table, "is_recursive", "TINYINT( 1 ) NOT NULL DEFAULT '0'");
         $migration->addField($table, "plugin_order_bills_id", "INT( 11 ) NOT NULL DEFAULT '0'");
         $migration->addField($table, "plugin_order_billstates_id", "INT( 11 ) NOT NULL DEFAULT '0'");
         $migration->addKey($table, "entities_id");
         $migration->addKey($table, "plugin_order_bills_id");
         $migration->addKey($table, "plugin_order_billstates_id");
         $migration->addField($table, "comment", "text collate utf8_unicode_ci");
         $migration->migrationOneTable($table);
         //Change format for prices : from float to decimal
         $migration->changeField($table, "price_taxfree", "price_taxfree", "decimal(20,6) NOT NULL DEFAULT '0.000000'");
         $migration->changeField($table, "price_discounted", "price_discounted", "decimal(20,6) NOT NULL DEFAULT '0.000000'");
         $migration->changeField($table, "price_ati", "price_ati", "decimal(20,6) NOT NULL DEFAULT '0.000000'");
         $migration->changeField($table, "discount", "discount", "decimal(20,6) NOT NULL DEFAULT '0.000000'");
         //Drop unused fields from previous migration
         $migration->dropField($table, "price_taxfree2");
         $migration->dropField($table, "price_discounted2");
         $migration->migrationOneTable($table);
         //Forward entities_id and is_recursive into table glpi_plugin_order_orders_items
         $query = "SELECT `go`.`entities_id` as entities_id ,\n                          `go`.`is_recursive` as is_recursive, `goi`.`id` as items_id\n                   FROM `glpi_plugin_order_orders` as go, `{$table}` as `goi`\n                   WHERE `goi`.`plugin_order_orders_id`=`go`.`id`";
         foreach ($DB->request($query) as $data) {
             $update = "UPDATE `{$table}`\n                       SET `entities_id`='" . $data['entities_id'] . "'\n                          AND `is_recursive`='" . $data['is_recursive'] . "'\n                       WHERE `id`='" . $data['items_id'] . "'";
             $DB->query($update) or die($DB->error());
         }
         $migration->executeMigration();
     }
 }