function plugin_vip_install() { global $DB; $migration = new Migration(100); // Création de la table uniquement lors de la première installation if (!TableExists("glpi_plugin_vip_profiles")) { // Table des droits du profil $query = "CREATE TABLE `glpi_plugin_vip_profiles` (\n\t `id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_profiles (id)',\n\t `show_vip_tab` tinyint(1) collate utf8_unicode_ci default NULL,\n\t PRIMARY KEY (`id`)\n\t ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci"; $DB->query($query) or die("Error creating Vip Profiles table" . $DB->error()); $migration->executeMigration(); //creation du premier accès nécessaire lors de l'installation du plugin include_once GLPI_ROOT . "/plugins/vip/inc/profile.class.php"; PluginVipProfile::createAdminAccess($_SESSION['glpiactiveprofile']['id']); } if (!TableExists("glpi_plugin_vip_groups")) { // $query = "CREATE TABLE `glpi_plugin_vip_groups` (\n `id` int(11) NOT NULL default 0 COMMENT 'RELATION to glpi_groups(id)',\n `isvip` tinyint(1) default '0',\n PRIMARY KEY (`id`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci"; $DB->query($query) or die("Erreur lors de la création de la table des groupes vip " . $DB->error()); $query = "INSERT INTO `glpi_plugin_vip_groups`\n (`id`, `isvip`)\n VALUES ('0', '0')"; $DB->query($query) or die("Erreur lors de l'insertion des valeurs par défaut dans la table des groupes vip " . $DB->error()); } if (!TableExists("glpi_plugin_vip_tickets")) { $query = "CREATE TABLE glpi_plugin_vip_tickets (\n\t\t\t\t id int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_tickets (id)',\n\t\t\t\t isvip tinyint(1) default '0',\n\t\t\t\t PRIMARY KEY (`id`)\n\t\t\t\t) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci"; $DB->query($query) or die("Error creating Vip Tickets table"); } $query = "INSERT INTO glpi_plugin_vip_tickets\n\t\t\t\t SELECT id, '0'\n\t\t\t\t\t FROM glpi_tickets\n\t\t ON DUPLICATE KEY\n\t\t\t\t UPDATE isvip = '0'"; $DB->query($query) or die("Error inserting ticket in Vip Tickets table"); $migration->executeMigration(); return true; }
/** * Install * * @return bool for success (will die for most error) * */ function install() { global $DB; $migration = new Migration(100); // Install script $DB->runFile(GLPI_ROOT . "/plugins/consumables/install/sql/empty-1.0.0.sql"); // Notification // Request $query_id = "INSERT INTO `glpi_notificationtemplates`(`name`, `itemtype`, `date_mod`, `comment`, `css`) VALUES ('Consumables Request','PluginConsumablesRequest', NOW(),'','');"; $result = $DB->query($query_id) or die($DB->error()); $query_id = "SELECT `id` FROM `glpi_notificationtemplates` WHERE `itemtype`='PluginConsumablesRequest' AND `name` = 'Consumables Request'"; $result = $DB->query($query_id) or die($DB->error()); $itemtype = $DB->result($result, 0, 'id'); $query = "INSERT INTO `glpi_notificationtemplatetranslations`\r\nVALUES(NULL, '" . $itemtype . "', '','##consumable.action## : ##consumable.entity##',\r\n'##lang.consumable.entity## :##consumable.entity##\r\n##lang.consumablerequest.requester## : ##consumablerequest.requester##\t\r\n##lang.consumablerequest.consumabletype## : ##consumablerequest.consumabletype##\t\r\n##lang.consumablerequest.consumable## : ##consumablerequest.consumable##\r\n##lang.consumablerequest.number## : ##consumablerequest.number##\r\n##lang.consumablerequest.request_date## : ##consumablerequest.request_date##\r\n##lang.consumablerequest.status## : ##consumablerequest.status##',\r\n'<p>##lang.consumable.entity## :##consumable.entity##<br /> <br />\r\n##lang.consumablerequest.requester## : ##consumablerequest.requester##<br />\t\r\n##lang.consumablerequest.consumabletype## : ##consumablerequest.consumabletype##<br />\r\n##lang.consumablerequest.consumable## : ##consumablerequest.consumable##<br />\r\n##lang.consumablerequest.number## : ##consumablerequest.number##<br />\r\n##lang.consumablerequest.request_date## : ##consumablerequest.request_date##<br />\r\n##lang.consumablerequest.status## : ##consumablerequest.status##<br />');"; $result = $DB->query($query); $query = "INSERT INTO `glpi_notifications`\r\n VALUES (NULL, 'Consumable request', 0, 'PluginConsumablesRequest', 'ConsumableRequest',\r\n 'mail','" . $itemtype . "', '', 1, 1, '" . date('Y-m-d H:i:s') . "');"; $result = $DB->query($query); // Request validation $query_id = "INSERT INTO `glpi_notificationtemplates`(`name`, `itemtype`, `date_mod`, `comment`, `css`) VALUES ('Consumables Request Validation','PluginConsumablesRequest', NOW(),'','');"; $result = $DB->query($query_id) or die($DB->error()); $query_id = "SELECT `id` FROM `glpi_notificationtemplates` WHERE `itemtype`='PluginConsumablesRequest' AND `name` = 'Consumables Request Validation'"; $result = $DB->query($query_id) or die($DB->error()); $itemtype = $DB->result($result, 0, 'id'); $query = "INSERT INTO `glpi_notificationtemplatetranslations`\r\nVALUES(NULL, '" . $itemtype . "', '','##consumable.action## : ##consumable.entity##',\r\n'##lang.consumable.entity## :##consumable.entity##\r\n##lang.consumablerequest.requester## : ##consumablerequest.requester##\t\r\n##lang.consumablerequest.validator## : ##consumablerequest.validator##\t\r\n##lang.consumablerequest.consumabletype## : ##consumablerequest.consumabletype##\t\r\n##lang.consumablerequest.consumable## : ##consumablerequest.consumable##\r\n##lang.consumablerequest.number## : ##consumablerequest.number##\r\n##lang.consumablerequest.request_date## : ##consumablerequest.request_date##\r\n##lang.consumablerequest.status## : ##consumablerequest.status##\r\n##lang.consumablerequest.comment## : ##consumablerequest.comment##',\r\n'<p>##lang.consumable.entity## :##consumable.entity##<br /> <br />\r\n##lang.consumablerequest.requester## : ##consumablerequest.requester##<br />\t\r\n##lang.consumablerequest.validator## : ##consumablerequest.validator##<br />\r\n##lang.consumablerequest.consumabletype## : ##consumablerequest.consumabletype##<br />\r\n##lang.consumablerequest.consumable## : ##consumablerequest.consumable##<br />\r\n##lang.consumablerequest.number## : ##consumablerequest.number##<br />\r\n##lang.consumablerequest.request_date## : ##consumablerequest.request_date##<br />\r\n##lang.consumablerequest.status## : ##consumablerequest.status##<br />\r\n##lang.consumablerequest.comment## : ##consumablerequest.comment##<br />');"; $result = $DB->query($query); $query = "INSERT INTO `glpi_notifications`\r\n VALUES (NULL, 'Consumable request validation', 0, 'PluginConsumablesRequest', 'ConsumableResponse',\r\n 'mail','" . $itemtype . "','', 1, 1, '" . date('Y-m-d H:i:s') . "');"; $result = $DB->query($query); $migration->executeMigration(); return true; }
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; }
function plugin_ticketmail_install() { global $DB; $migration = new Migration(100); //Fresh install if (!TableExists('glpi_plugin_ticketmail_profiles')) { $query = "CREATE TABLE `glpi_plugin_ticketmail_profiles` (\n\t\t\t\t\t`id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_profiles (id)',\n\t\t\t\t\t`show_ticketmail_onglet` char(1) collate utf8_unicode_ci default NULL,\n\t\t\t\t\tPRIMARY KEY (`id`)\n\t\t\t\t ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;"; $DB->queryOrDie($query, $DB->error()); $migration->executeMigration(); include_once GLPI_ROOT . "/plugins/ticketmail/inc/profile.class.php"; PluginTicketmailProfile::createAdminAccess($_SESSION['glpiactiveprofile']['id']); } else { // Since v0.84 remove "profiles_id" column and use "id" if (FieldExists('glpi_plugin_ticketmail_profiles', 'profiles_id')) { $drop_column_query = "ALTER TABLE glpi_plugin_ticketmail_profiles DROP COLUMN `id`;"; $rename_column_query = "ALTER TABLE glpi_plugin_ticketmail_profiles\n\t\t\t\t\t\t\t\t\tCHANGE profiles_id id int(11) NOT NULL default '0'\n\t\t\t\t\t\t\t\t\tCOMMENT 'RELATION to glpi_profiles (id)';"; $DB->queryOrDie($drop_column_query, $DB->error()); $DB->queryOrDie($rename_column_query, $DB->error()); $add_primarykey_query = "ALTER TABLE glpi_plugin_ticketmail_profiles\n\t\t\t\t\t\t\t\t\t ADD PRIMARY KEY (id);"; $drop_old_index_query = "ALTER TABLE glpi_plugin_ticketmail_profiles\n\t\t\t\t\t\t\t\t\t DROP INDEX profiles_id;"; $DB->queryOrDie($add_primarykey_query, $DB->error()); $DB->queryOrDie($drop_old_index_query, $DB->error()); } } return true; }
/** * Install or update fields * * @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 `plugin_fields_itemtype` VARCHAR(30) NOT NULL,\n `plugin_fields_items_id` INT(11) NOT NULL,\n `language` VARCHAR(5) NOT NULL,\n `label` VARCHAR(255) DEFAULT NULL,\n PRIMARY KEY (`id`),\n KEY `plugin_fields_itemtype` (`plugin_fields_itemtype`),\n KEY `plugin_fields_items_id` (`plugin_fields_items_id`),\n KEY `language` (`language`),\n UNIQUE KEY `unicity` (`plugin_fields_itemtype`, `plugin_fields_items_id`, `language`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;"; $DB->query($query) or die($DB->error()); } $migration->displayMessage("Updating {$table}"); $migration->executeMigration(); return true; }
/** * Update from 4.2.1 to 4.2.2 * * @return bool for success (will die for most error) * */ function update421to422() { global $DB; $migration = new Migration('422'); $query = "SELECT * FROM `glpi_plugin_positions_positions`"; $result_query = $DB->query($query); while ($data = $DB->fetch_array($result_query)) { if (!($itemclass = getAllDatasFromTable(getTableForItemType($data['itemtype']), "`id` = " . $data['items_id']))) { $query = "DELETE FROM `glpi_plugin_positions_positions` WHERE `items_id` =" . $data['items_id'] . " AND `itemtype` = '" . $data['itemtype'] . "'"; $DB->queryOrDie($query); continue; } $itemclass = reset($itemclass); $query = "UPDATE `glpi_plugin_positions_positions` SET `locations_id` = " . $itemclass['locations_id'] . " WHERE `items_id` =" . $data['items_id'] . " AND `itemtype` = '" . $data['itemtype'] . "'"; $DB->queryOrDie($query, "ADD fields locations_ids for glpi_plugin_positions_positions"); } $migration->executeMigration(); return true; }
function plugin_winadminpassword_install() { global $DB; $migration = new Migration(100); if (!TableExists("glpi_plugin_winadminpassword_profiles")) { $query_profile = "CREATE TABLE IF NOT EXISTS `glpi_plugin_winadminpassword_profiles` (\n\t `id` int(11) NOT NULL,\n\t `profile` varchar(255) default NULL,\n\t `use` tinyint(1) default 0,\n\t PRIMARY KEY (`id`)\n\t ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci"; $DB->queryOrDie($query_profile, $DB->error()); $migration->migrationOneTable("glpi_plugin_winadminpassword_profiles"); // Give right to current Profile include_once GLPI_ROOT . '/plugins/winadminpassword/inc/profile.class.php'; $prof = new PluginWinadminpasswordProfile(); $prof->add(array('id' => $_SESSION['glpiactiveprofile']['id'], 'profile' => $_SESSION['glpiactiveprofile']['name'], 'use' => 1)); } if (!TableExists("glpi_plugin_winadminpassword_configs")) { $query = "CREATE TABLE IF NOT EXISTS `glpi_plugin_winadminpassword_configs` (\n\t `id` int(11) NOT NULL auto_increment,\n\t `key` varchar(255) collate utf8_unicode_ci default NULL,\n\t\t\t\t`length` int(11) default 12,\n\t\t\t\t`algo` int(11) default 1,\n\t\t\t\t`size` int(11) default 14,\n\t\t\t\t`color` varchar(255) collate utf8_unicode_ci,\n\t PRIMARY KEY (`id`)\n\t ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci"; $DB->queryOrDie($query, $DB->error()); } $migration->executeMigration(); return true; }
$types = array(1 => __('MAC'), 2 => __('IP'), 3 => __('Serial number')); if (isset($_POST["delete"]) && isset($_POST['id'])) { $query = "DELETE\n FROM `glpi_plugin_reports_doublons_backlists`\n WHERE `id` = '" . $_POST['id'] . "'"; $DB->query($query); } else { if (isset($_POST["add"]) && isset($_POST["type"]) && isset($_POST["addr"]) && strlen($_POST["addr"])) { $query = "INSERT INTO `glpi_plugin_reports_doublons_backlists`\n SET `type` = '" . $_POST["type"] . "',\n `addr` = '" . trim($_POST["addr"]) . "',\n `comment` = '" . trim($_POST["comment"]) . "'"; $DB->query($query); } } // Initial creation if (TableExists("glpi_plugin_reports_doublons_backlist")) { $migration = new Migration(160); $migration->renameTable("glpi_plugin_reports_doublons_backlist", "glpi_plugin_reports_doublons_backlists"); $migration->changeField("glpi_plugin_reports_doublons_backlists", "ID", "id", 'autoincrement'); $migration->executeMigration(); } else { if (!TableExists("glpi_plugin_reports_doublons_backlists")) { $query = "CREATE TABLE IF NOT EXISTS `glpi_plugin_reports_doublons_backlists` (\n `id` int(11) NOT NULL AUTO_INCREMENT,\n `type` int(11) NOT NULL DEFAULT '0',\n `addr` varchar(255) DEFAULT NULL,\n `comment` varchar(255) DEFAULT NULL,\n PRIMARY KEY (`id`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci"; $DB->query($query) or die($DB->error()); $query = "INSERT INTO`glpi_plugin_reports_doublons_backlists`\n (`type`, `addr`, `comment`)\n VALUES (1, '44:45:53:54:42:00', 'Nortel IPSECSHM Adapter'),\n (1, 'BA:D0:BE:EF:FA:CE', 'GlobeTrotter Module 3G+ Network Card'),\n (1, '00:53:45:00:00:00', 'WAN (PPP/SLIP) Interface'),\n (1, '80:00:60:0F:E8:00', 'Windows Mobile-based'),\n (2, '127.0.0.1', 'loopback'),\n (3, 'INVALID', 'from OCSNG'),\n (3, 'XxXxXxX', 'from IBM')"; $DB->query($query); } } // ---------- Form ------------ echo "<div class='center'><table class='tab_cadre' cellpadding='5'>\n"; echo "<tr class='tab_bg_1 center'><th><a href='" . GLPI_ROOT . "/plugins/reports/front/config.form.php'>" . __('Reports plugin configuration', 'reports') . "</a><br /> <br />" . sprintf(__('%1$s: %2$s'), __('Report configuration', 'reports'), __('Duplicate computers', 'reports')) . "</th></tr>\n"; $plug = new Plugin(); if ($plug->isActivated('reports')) { echo "<tr class='tab_bg_1 center'><td>"; echo "<a href='./doublons.php'>" . sprintf(__('%1$s - %2$s'), __('Report'), __('Duplicate computers', 'reports')) . "</a>";
function plugin_archires_updateTo210() { $migration = new Migration(210); $migration->changeField("glpi_plugin_archires_appliancequeries", "appliances_id", "plugin_appliances_appliances_id", 'integer', array('comment' => 'RELATION to glpi_plugin_appliances (id)')); $migration->executeMigration(); }
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(); } }
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## : ##notimported.entity##\n\n" . "##FOREACHnotimported## \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', '<p>##lang.notimported.action## : ##notimported.entity##<br /><br />" . "##FOREACHnotimported## <br />##lang.notimported.reason## : ##notimported.reason##<br />" . "##lang.notimported.name## : ##notimported.name##<br />" . "##lang.notimported.deviceid## : ##notimported.deviceid##<br />" . "##lang.notimported.tag## : ##notimported.tag##<br />" . "##lang.notimported.serial## : ##notimported.serial##</p>\r\n<p><a href=\"##infocom.url##\">" . "##notimported.url##</a><br />##ENDFOREACHnotimported##</p>');"; $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_pdf_install() { global $DB; $migration = new Migration('0.84'); if (!TableExists('glpi_plugin_pdf_profiles')) { $query = "CREATE TABLE IF NOT EXISTS\n `glpi_plugin_pdf_profiles` (\n `id` int(11) NOT NULL,\n `profile` varchar(255) default NULL,\n `use` tinyint(1) default 0,\n PRIMARY KEY (`id`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci"; $DB->queryOrDir($query, $DB->error()); } else { if (FieldExists('glpi_plugin_pdf_profiles', 'ID')) { //< 0.7.0 $migration->changeField('glpi_plugin_pdf_profiles', 'ID', 'id', 'autoincrement'); } } if (!TableExists('glpi_plugin_pdf_preference')) { $query = "CREATE TABLE IF NOT EXISTS\n `glpi_plugin_pdf_preferences` (\n `id` int(11) NOT NULL AUTO_INCREMENT,\n `users_id` int(11) NOT NULL COMMENT 'RELATION to glpi_users (id)',\n `itemtype` VARCHAR(100) NOT NULL COMMENT 'see define.php *_TYPE constant',\n `tabref` varchar(255) NOT NULL COMMENT 'ref of tab to display, or plugname_#, or option name',\n PRIMARY KEY (`id`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci"; $DB->query($query) or die($DB->error()); } else { $migration->renameTable('glpi_plugin_pdf_preference', 'glpi_plugin_pdf_preferences'); // 0.6.0 if (FieldExists('glpi_plugin_pdf_preferences', 'user_id')) { $migration->changeField('glpi_plugin_pdf_preferences', 'user_id', 'users_id', 'integer', array('comment' => 'RELATION to glpi_users (id)')); } // 0.6.1 if (FieldExists('glpi_plugin_pdf_preferences', 'FK_users')) { $migration->changeField('glpi_plugin_pdf_preferences', 'FK_users', 'users_id', 'integer', array('comment' => 'RELATION to glpi_users (id)')); } // 0.6.0 if (FieldExists('glpi_plugin_pdf_preferences', 'cat')) { $migration->changeField('glpi_plugin_pdf_preferences', 'cat', 'itemtype', 'VARCHAR(100) NOT NULL', array('comment' => 'see define.php *_TYPE constant')); } // 0.6.1 if (FieldExists('glpi_plugin_pdf_preferences', 'device_type')) { $migration->changeField('glpi_plugin_pdf_preferences', 'device_type', 'itemtype', 'VARCHAR(100) NOT NULL', array('comment' => 'see define.php *_TYPE constant')); } // 0.6.0 if (FieldExists('glpi_plugin_pdf_preferences', 'table_num')) { $migration->changeField('glpi_plugin_pdf_preferences', 'table_num', 'tabref', 'string', array('comment' => 'ref of tab to display, or plugname_#, or option name')); } $migration->executeMigration(); } // Give right to current Profile include_once GLPI_ROOT . '/plugins/pdf/inc/profile.class.php'; $prof = new PluginPdfProfile(); if (!$prof->getFromDB($_SESSION['glpiactiveprofile']['id'])) { $prof->add(array('id' => $_SESSION['glpiactiveprofile']['id'], 'profile' => $_SESSION['glpiactiveprofile']['name'], 'use' => 1)); } return true; }
function plugin_datainjection_update131_14() { global $DB; $migration = new Migration('1.4'); $migration->addField('glpi_plugin_data_injection_models', 'float_format', 'bool'); //Template recursivity : need standardize names in order to use privatePublicSwitch $migration->changeField('glpi_plugin_data_injection_models', 'user_id', 'FK_users', 'integer'); $migration->changeField('glpi_plugin_data_injection_models', 'public', 'private', 'bool'); $migration->migrationOneTable('glpi_plugin_data_injection_models'); $sql = "UPDATE `glpi_plugin_data_injection_models`\n SET `FK_entities` = '-1',\n `private` = '1'\n WHERE `private` = '0'"; $DB->query($sql); $sql = "UPDATE `glpi_plugin_data_injection_models`\n SET `private` = '0'\n WHERE `private` = '1'\n AND `FK_entities` > '0'"; $DB->query($sql); $migration->addField('glpi_plugin_data_injection_models', 'recursive', 'bool'); $sql = "UPDATE `glpi_plugin_data_injection_profiles`\n SET `create_model` = `use_model`\n WHERE `create_model` IS NULL"; $DB->query($sql); $migration->dropField('glpi_plugin_data_injection_profiles', 'use_model'); $migration->changeField('glpi_plugin_data_injection_profiles', 'create_model', 'model', 'char'); $migration->executeMigration(); }
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; }