Beispiel #1
0
function plugin_positions_install()
{
    global $DB, $CFG_GLPI;
    include_once GLPI_ROOT . "/plugins/positions/inc/profile.class.php";
    if (!TableExists("glpi_plugin_positions_positions")) {
        $DB->runFile(GLPI_ROOT . "/plugins/positions/sql/empty-4.2.2.sql");
    }
    //v1.0.0 to V2.0.0
    if (TableExists("glpi_plugin_positions_positions_items") && !FieldExists("glpi_plugin_positions_positions_items", "items_id")) {
        $query = "ALTER TABLE `glpi_plugin_positions_positions` \r\n                ADD `items_id` int(11) NOT NULL default '0' COMMENT 'RELATION to various tables, according to itemtype (id)';";
        $result = $DB->query($query);
        $query = "ALTER TABLE `glpi_plugin_positions_positions` \r\n                ADD `itemtype` varchar(100) collate utf8_unicode_ci NOT NULL COMMENT 'see .class.php file';";
        $result = $DB->query($query);
        $query_ = "SELECT *\r\n                 FROM `glpi_plugin_positions_positions_items` ";
        $result_ = $DB->query($query_);
        if ($DB->numrows($result_) > 0) {
            while ($data = $DB->fetch_array($result_)) {
                $query = "UPDATE `glpi_plugin_positions_positions`\r\n                      SET `items_id` = '" . $data["items_id"] . "',\r\n                          `itemtype` = '" . $data["itemtype"] . "'\r\n                      WHERE `id` = '" . $data["id"] . "';";
                $result = $DB->query($query);
            }
        }
        $query = "DROP TABLE `glpi_plugin_positions_positions_items`;";
        $result = $DB->query($query);
    }
    //v1.0.0 to V2.0.0
    if (!TableExists("glpi_plugin_positions_infos")) {
        $query = "CREATE TABLE `glpi_plugin_positions_infos` (\r\n                  `id` int(11) NOT NULL auto_increment,\r\n                  `name` varchar(255) collate utf8_unicode_ci default NULL,\r\n                  `entities_id` int(11) NOT NULL default '0',\r\n                  `is_recursive` tinyint(1) NOT NULL default '0',\r\n                  `itemtype` varchar(100) collate utf8_unicode_ci NOT NULL COMMENT 'see .class.php file',\r\n                  `fields` text collate utf8_unicode_ci,\r\n                  `comment` text collate utf8_unicode_ci,\r\n                  `notepad` longtext collate utf8_unicode_ci,\r\n                  `date_mod` datetime NULL default NULL,\r\n                  `is_active` tinyint(1) NOT NULL DEFAULT '0',\r\n                  `is_deleted` tinyint(1) NOT NULL default '0',\r\n                  PRIMARY KEY  (`id`)\r\n               ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
        $result = $DB->query($query);
    }
    //to V3.0.0
    if (TableExists("glpi_plugin_positions_positions") && FieldExists("glpi_plugin_positions_positions", "documents_id")) {
        $query = "ALTER TABLE `glpi_plugin_positions_positions` DROP `documents_id`;";
        $result = $DB->query($query);
    }
    // Update to 4.0.1
    if (!FieldExists("glpi_plugin_positions_positions", "width") && !FieldExists("glpi_plugin_positions_positions", "height")) {
        $DB->runFile(GLPI_ROOT . "/plugins/positions/sql/update-4.0.1.sql");
    }
    //to v4.2.2
    if (!TableExists("glpi_plugin_positions_configs")) {
        //add table config
        $query = "CREATE TABLE `glpi_plugin_positions_configs` (\r\n               `id` int(11) NOT NULL auto_increment,\r\n               `use_view_all_object` tinyint(1) NOT NULL default '0',\r\n               PRIMARY KEY  (`id`)\r\n            )ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
        $result = $DB->query($query);
        $query = "INSERT INTO `glpi_plugin_positions_configs` (`id`,`use_view_all_object`) VALUES ('1', '0');";
        $DB->query($query);
        //add fields locations_id
        $query = "ALTER TABLE `glpi_plugin_positions_positions` \r\n                ADD `locations_id` int(11) NOT NULL default '0' COMMENT 'RELATION to table glpi_locations';";
        $result = $DB->query($query);
        include GLPI_ROOT . "/plugins/positions/sql/update_421_422.php";
        update421to422();
    }
    if (TableExists("glpi_plugin_positions_profiles")) {
        $notepad_tables = array('glpi_plugin_positions_positions');
        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 ('PluginPositionsPosition', '" . $data['id'] . "',\r\n                              '" . addslashes($data['notepad']) . "', NOW(), NOW())";
                    $DB->queryOrDie($iq, "0.85 migrate notepad data");
                }
                $query = "ALTER TABLE `glpi_plugin_positions_positions` DROP COLUMN `notepad`;";
                $DB->query($query);
            }
        }
    }
    $rep_files_positions = GLPI_PLUGIN_DOC_DIR . "/positions";
    if (!is_dir($rep_files_positions)) {
        mkdir($rep_files_positions);
    }
    $rep_files_positions_pics = GLPI_PLUGIN_DOC_DIR . "/positions/pics";
    if (!is_dir($rep_files_positions_pics)) {
        mkdir($rep_files_positions_pics);
    }
    PluginPositionsProfile::initProfile();
    PluginPositionsProfile::createFirstAccess($_SESSION['glpiactiveprofile']['id']);
    $migration = new Migration("4.2.2");
    $migration->dropTable('glpi_plugin_positions_profiles');
    return true;
}