function plugin_accounts_install() { global $DB, $CFG_GLPI; include_once GLPI_ROOT . "/plugins/accounts/inc/profile.class.php"; $install = false; $update78 = false; $update80 = false; $update171 = false; if (!TableExists("glpi_plugin_compte") && !TableExists("glpi_plugin_comptes") && !TableExists("glpi_comptes") && !TableExists("glpi_plugin_accounts_accounts")) { $install = true; $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/empty-2.0.0.sql"); } else { if (TableExists("glpi_comptes") && !FieldExists("glpi_comptes", "notes")) { $update78 = true; $update80 = true; $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.1.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.3.sql"); plugin_accounts_updatev14(); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.5.0.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.5.1.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.5.3.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.6.0.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.7.0.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.7.1.sql"); $_SESSION['plugin_acounts_upgrading'] = 1; } else { if (TableExists("glpi_plugin_comptes") && !FieldExists("glpi_plugin_comptes", "all_users")) { $update78 = true; $update80 = true; $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.3.sql"); plugin_accounts_updatev14(); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.5.0.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.5.1.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.5.3.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.6.0.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.7.0.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.7.1.sql"); $_SESSION['plugin_acounts_upgrading'] = 1; } else { if (TableExists("glpi_plugin_compte_profiles") && !FieldExists("glpi_plugin_compte_profiles", "my_groups")) { $update78 = true; $update80 = true; plugin_accounts_updatev14(); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.5.0.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.5.1.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.5.3.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.6.0.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.7.0.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.7.1.sql"); $_SESSION['plugin_acounts_upgrading'] = 1; } else { if (TableExists("glpi_plugin_compte_profiles") && FieldExists("glpi_plugin_compte_profiles", "interface")) { $update78 = true; $update80 = true; $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.5.0.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.5.1.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.5.3.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.6.0.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.7.0.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.7.1.sql"); $_SESSION['plugin_acounts_upgrading'] = 1; } else { if (TableExists("glpi_plugin_compte") && !FieldExists("glpi_plugin_compte", "date_mod")) { $update78 = true; $update80 = true; $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.5.1.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.5.3.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.6.0.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.7.0.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.7.1.sql"); } else { if (TableExists("glpi_plugin_compte") && !TableExists("glpi_plugin_compte_aeskey")) { $update78 = true; $update80 = true; $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.5.3.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.6.0.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.7.0.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.7.1.sql"); } else { if (TableExists("glpi_plugin_compte") && !TableExists("glpi_plugin_accounts_accounts")) { $update78 = true; $update80 = true; $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.6.0.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.7.0.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.7.1.sql"); } else { if (TableExists("glpi_plugin_accounts_accounts") && !FieldExists("glpi_plugin_accounts_accounts", "locations_id")) { $update80 = true; $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.7.0.sql"); $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.7.1.sql"); } else { if (TableExists("glpi_plugin_accounts_hashes") && !FieldExists("glpi_plugin_accounts_hashes", "entities_id")) { $update171 = true; $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.7.1.sql"); } } } } } } } } } } //from 1.6 version if (TableExists("glpi_plugin_accounts_accounts") && !FieldExists("glpi_plugin_accounts_accounts", "users_id_tech")) { $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.8.0.sql"); } //from 1.9 version if (TableExists("glpi_plugin_accounts_accounttypes") && !FieldExists("glpi_plugin_accounts_accounttypes", "is_recursive")) { $DB->runFile(GLPI_ROOT . "/plugins/accounts/sql/update-1.9.0.sql"); } if ($install || $update78) { //Do One time on 0.78 $query_id = "SELECT `id` FROM `glpi_notificationtemplates`\n WHERE `itemtype`='PluginAccountsAccount'\n AND `name` = 'New Accounts'"; $result = $DB->query($query_id) or die($DB->error()); $itemtype = $DB->result($result, 0, 'id'); $query = "INSERT INTO `glpi_notificationtemplatetranslations`\n VALUES(NULL, " . $itemtype . ", '','##lang.account.title##',\n '##lang.account.url## : ##account.url##\r\n\r\n\n ##lang.account.entity## : ##account.entity##\r\n\n ##IFaccount.name####lang.account.name## : ##account.name##\r\n##ENDIFaccount.name##\n ##IFaccount.type####lang.account.type## : ##account.type##\r\n##ENDIFaccount.type##\n ##IFaccount.state####lang.account.state## : ##account.state##\r\n##ENDIFaccount.state##\n ##IFaccount.login####lang.account.login## : ##account.login##\r\n##ENDIFaccount.login##\n ##IFaccount.users_id####lang.account.users_id## : ##account.users_id##\r\n##ENDIFaccount.users_id##\n ##IFaccount.groups_id####lang.account.groups_id## : ##account.groups_id##\r\n##ENDIFaccount.groups_id##\n ##IFaccount.others####lang.account.others## : ##account.others##\r\n##ENDIFaccount.others##\n ##IFaccount.datecreation####lang.account.datecreation## : ##account.datecreation##\r\n##ENDIFaccount.datecreation##\n ##IFaccount.dateexpiration####lang.account.dateexpiration## : ##account.dateexpiration##\r\n##ENDIFaccount.dateexpiration##\n ##IFaccount.comment####lang.account.comment## : ##account.comment##\r\n##ENDIFaccount.comment##',\n '<p><strong>##lang.account.url##</strong> : <a href=\"##account.url##\">##account.url##</a></p>\n <p><strong>##lang.account.entity##</strong> : ##account.entity##<br /> ##IFaccount.name##<strong>##lang.account.name##</strong> : ##account.name##<br />##ENDIFaccount.name## ##IFaccount.type##<strong>##lang.account.type##</strong> : ##account.type##<br />##ENDIFaccount.type## ##IFaccount.state##<strong>##lang.account.state##</strong> : ##account.state##<br />##ENDIFaccount.state## ##IFaccount.login##<strong>##lang.account.login##</strong> : ##account.login##<br />##ENDIFaccount.login## ##IFaccount.users##<strong>##lang.account.users##</strong> : ##account.users##<br />##ENDIFaccount.users## ##IFaccount.groups##<strong>##lang.account.groups##</strong> : ##account.groups##<br />##ENDIFaccount.groups## ##IFaccount.others##<strong>##lang.account.others##</strong> : ##account.others##<br />##ENDIFaccount.others## ##IFaccount.datecreation##<strong>##lang.account.datecreation##</strong> : ##account.datecreation##<br />##ENDIFaccount.datecreation## ##IFaccount.dateexpiration##<strong>##lang.account.dateexpiration##</strong> : ##account.dateexpiration##<br />##ENDIFaccount.dateexpiration## ##IFaccount.comment##<strong>##lang.account.comment##</strong> : ##account.comment####ENDIFaccount.comment##</p>');"; $result = $DB->query($query); $query = "INSERT INTO `glpi_notifications`\n VALUES (NULL, 'New Accounts', 0, 'PluginAccountsAccount', 'new',\n 'mail'," . $itemtype . ",\n '', 1, 1, '2010-02-17 22:36:46');"; $result = $DB->query($query); $query_id = "SELECT `id` FROM `glpi_notificationtemplates`\n WHERE `itemtype`='PluginAccountsAccount'\n AND `name` = 'Alert Accounts'"; $result = $DB->query($query_id) or die($DB->error()); $itemtype = $DB->result($result, 0, 'id'); $query = "INSERT INTO `glpi_notificationtemplatetranslations`\n VALUES(NULL, " . $itemtype . ", '','##account.action## : ##account.entity##',\n '##lang.account.entity## :##account.entity##\n ##FOREACHaccounts##\n ##lang.account.name## : ##account.name## - ##lang.account.dateexpiration## : ##account.dateexpiration##\n ##ENDFOREACHaccounts##',\n '<p>##lang.account.entity## :##account.entity##<br /> <br />\n ##FOREACHaccounts##<br />\n ##lang.account.name## : ##account.name## - ##lang.account.dateexpiration## : ##account.dateexpiration##<br />\n ##ENDFOREACHaccounts##</p>');"; $result = $DB->query($query); $query = "INSERT INTO `glpi_notifications`\n VALUES (NULL, 'Alert Expired Accounts', 0, 'PluginAccountsAccount', 'ExpiredAccounts',\n 'mail'," . $itemtype . ",\n '', 1, 1, '2010-02-17 22:36:46');"; $result = $DB->query($query); $query = "INSERT INTO `glpi_notifications`\n VALUES (NULL, 'Alert Accounts Which Expire', 0, 'PluginAccountsAccount', 'AccountsWhichExpire',\n 'mail'," . $itemtype . ",\n '', 1, 1, '2010-02-17 22:36:46');"; $result = $DB->query($query); } if ($update78) { //Do One time on 0.78 $query_ = "SELECT *\n FROM `glpi_plugin_accounts_profiles` "; $result_ = $DB->query($query_); if ($DB->numrows($result_) > 0) { while ($data = $DB->fetch_array($result_)) { $query = "UPDATE `glpi_plugin_accounts_profiles`\n SET `profiles_id` = '" . $data["id"] . "'\n WHERE `id` = '" . $data["id"] . "';"; $result = $DB->query($query); } } $query = "ALTER TABLE `glpi_plugin_accounts_profiles`\n DROP `name` ;"; $result = $DB->query($query); Plugin::migrateItemType(array(1900 => 'PluginAccountsAccount', 1901 => 'PluginAccountsHelpdesk', 1902 => 'PluginAccountsGroup'), array("glpi_bookmarks", "glpi_bookmarks_users", "glpi_displaypreferences", "glpi_documents_items", "glpi_infocoms", "glpi_logs", "glpi_items_tickets"), array("glpi_plugin_accounts_accounts_items")); Plugin::migrateItemType(array(1200 => "PluginAppliancesAppliance", 1300 => "PluginWebapplicationsWebapplication", 1700 => "PluginCertificatesCertificate", 4400 => "PluginDomainsDomain", 2400 => "PluginDatabasesDatabase"), array("glpi_plugin_accounts_accounts_items")); } if ($update171) { $query = "UPDATE `glpi_plugin_accounts_hashes`\n SET `is_recursive` = '1'\n WHERE `id` = '1';"; $result = $DB->query($query); $query = "UPDATE `glpi_plugin_accounts_aeskeys`\n SET `plugin_accounts_hashes_id` = '1'\n WHERE `id` = '1';"; $result = $DB->query($query); } if (isset($_SESSION['plugin_acounts_upgrading'])) { $msg = __('After plugin installation, you must do upgrade of your passwords from here : ', 'accounts'); $msg .= "<a href='" . $CFG_GLPI["root_doc"] . "/plugins/accounts/front/upgrade.form.php'>" . __('Upgrading page', 'accounts') . "</a>"; Session::addMessageAfterRedirect($msg, ERROR); } $notepad_tables = array('glpi_plugin_accounts_accounts'); foreach ($notepad_tables as $t) { // Migrate data if (FieldExists($t, 'notepad')) { $query = "SELECT id, notepad\n FROM `{$t}`\n WHERE notepad IS NOT NULL\n AND notepad <>'';"; foreach ($DB->request($query) as $data) { $iq = "INSERT INTO `glpi_notepads`\n (`itemtype`, `items_id`, `content`, `date`, `date_mod`)\n VALUES ('" . getItemTypeForTable($t) . "', '" . $data['id'] . "',\n '" . addslashes($data['notepad']) . "', NOW(), NOW())"; $DB->queryOrDie($iq, "0.85 migrate notepad data"); } $query = "ALTER TABLE `glpi_plugin_accounts_accounts` DROP COLUMN `notepad`;"; $DB->query($query); } } CronTask::Register('PluginAccountsAccount', 'AccountsAlert', DAY_TIMESTAMP); PluginAccountsProfile::initProfile(); PluginAccountsProfile::createFirstAccess($_SESSION['glpiactiveprofile']['id']); $migration = new Migration("2.0.0"); $migration->dropTable('glpi_plugin_accounts_profiles'); return true; }