function plugin_badges_install() { global $DB; include_once GLPI_ROOT . "/plugins/badges/inc/profile.class.php"; $install = false; $update78 = false; $update85 = false; $update201 = false; if (!TableExists("glpi_plugin_badges") && !TableExists("glpi_plugin_badges_badgetypes")) { $install = true; $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/empty-2.0.1.sql"); } else { if (TableExists("glpi_plugin_badges_users") && !TableExists("glpi_plugin_badges_default")) { $update78 = true; $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.4.sql"); $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.5.0.sql"); plugin_badges_configure15(); $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.5.1.sql"); $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.6.0.sql"); } else { if (TableExists("glpi_plugin_badges_profiles") && FieldExists("glpi_plugin_badges_profiles", "interface")) { $update78 = true; $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.5.0.sql"); plugin_badges_configure15(); $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.5.1.sql"); $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.6.0.sql"); } else { if (TableExists("glpi_plugin_badges") && !FieldExists("glpi_plugin_badges", "date_mod")) { $update78 = true; $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.5.1.sql"); $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.6.0.sql"); } else { if (!TableExists("glpi_plugin_badges_badgetypes")) { $update78 = true; $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.6.0.sql"); } else { if (TableExists("glpi_plugin_badges_profiles")) { $update85 = true; } } } } } } if (!TableExists("glpi_plugin_badges_requests")) { $update201 = true; $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-2.0.1.sql"); } if ($install || $update201) { // Badge request notification $query_id = "SELECT `id` FROM `glpi_notificationtemplates` WHERE `itemtype`='PluginBadgesBadge' AND `name` = 'Access Badges Request'"; $result = $DB->query($query_id) or die($DB->error()); $itemtype = $DB->result($result, 0, 'id'); if (empty($itemtype)) { $query_id = "INSERT INTO `glpi_notificationtemplates`(`id`, `name`, `itemtype`, `date_mod`, `comment`, `css`) VALUES ('','Access Badges Request','PluginBadgesBadge', NOW(),'','');"; $result = $DB->query($query_id) or die($DB->error()); $query_id = "SELECT `id` FROM `glpi_notificationtemplates` WHERE `itemtype`='PluginBadgesBadge' AND `name` = 'Access Badges Request'"; $result = $DB->query($query_id) or die($DB->error()); $itemtype = $DB->result($result, 0, 'id'); } $query = "INSERT INTO `glpi_notificationtemplatetranslations`\r\n VALUES(NULL, '" . $itemtype . "', '','##badge.action## : ##badge.entity##',\r\n '##lang.badge.entity## :##badge.entity##\r\n ##FOREACHbadgerequest## \r\n ##lang.badgerequest.arrivaldate## : ##badgerequest.arrivaldate##\t\r\n ##lang.badgerequest.requester## : ##badgerequest.requester##\t\r\n ##lang.badgerequest.visitorfirstname## : ##badgerequest.visitorfirstname##\t\r\n ##lang.badgerequest.visitorrealname## : ##badgerequest.visitorrealname##\r\n ##lang.badgerequest.visitorsociety## : ##badgerequest.visitorsociety##\r\n ##ENDFOREACHbadgerequest##',\r\n '<p>##lang.badge.entity## :##badge.entity##<br /> <br />\r\n ##FOREACHbadgerequest##<br />\r\n ##lang.badgerequest.arrivaldate## : ##badgerequest.arrivaldate##<br />\t\r\n ##lang.badgerequest.requester## : ##badgerequest.requester##<br />\r\n ##lang.badgerequest.visitorfirstname## : ##badgerequest.visitorfirstname##<br />\r\n ##lang.badgerequest.visitorrealname## : ##badgerequest.visitorrealname##<br />\r\n ##lang.badgerequest.visitorsociety## : ##badgerequest.visitorsociety##<br />\r\n ##ENDFOREACHbadgerequest##</p>');"; $result = $DB->query($query); $query = "INSERT INTO `glpi_notifications`\r\n VALUES (NULL, 'Access badge request', 0, 'PluginBadgesBadge', 'AccessBadgeRequest',\r\n 'mail','" . $itemtype . "',\r\n '', 1, 1, '" . date('Y-m-d H:i:s') . "');"; $result = $DB->query($query); } // Badge expiration alert notification $query_id = "SELECT `id` FROM `glpi_notificationtemplates` WHERE `itemtype`='PluginBadgesBadge' AND `name` = 'Access Badges Return'"; $result = $DB->query($query_id) or die($DB->error()); $itemtype = $DB->result($result, 0, 'id'); if (empty($itemtype)) { $query_id = "INSERT INTO `glpi_notificationtemplates`(`id`, `name`, `itemtype`, `date_mod`, `comment`, `css`) VALUES ('','Access Badges Return','PluginBadgesBadge', NOW(),'','');"; $result = $DB->query($query_id) or die($DB->error()); $query_id = "SELECT `id` FROM `glpi_notificationtemplates` WHERE `itemtype`='PluginBadgesBadge' AND `name` = 'Access Badges Return'"; $result = $DB->query($query_id) or die($DB->error()); $itemtype = $DB->result($result, 0, 'id'); } $query = "INSERT INTO `glpi_notificationtemplatetranslations`\r\n VALUES(NULL, '" . $itemtype . "', '','##badge.action## : ##badge.entity##',\r\n '##lang.badge.entity## :##badge.entity##\r\n ##FOREACHbadgerequest## \r\n ##lang.badgerequest.arrivaldate## : ##badgerequest.arrivaldate##\t\r\n ##lang.badgerequest.requester## : ##badgerequest.requester##\t\r\n ##lang.badgerequest.visitorfirstname## : ##badgerequest.visitorfirstname##\t\r\n ##lang.badgerequest.visitorrealname## : ##badgerequest.visitorrealname##\r\n ##lang.badgerequest.visitorsociety## : ##badgerequest.visitorsociety##\r\n ##ENDFOREACHbadgerequest##',\r\n '<p>##lang.badge.entity## :##badge.entity##<br /> <br />\r\n ##FOREACHbadgerequest##<br />\r\n ##lang.badgerequest.arrivaldate## : ##badgerequest.arrivaldate##<br />\t\r\n ##lang.badgerequest.requester## : ##badgerequest.requester##<br />\r\n ##lang.badgerequest.visitorfirstname## : ##badgerequest.visitorfirstname##<br />\r\n ##lang.badgerequest.visitorrealname## : ##badgerequest.visitorrealname##<br />\r\n ##lang.badgerequest.visitorsociety## : ##badgerequest.visitorsociety##<br />\r\n ##ENDFOREACHbadgerequest##</p>');"; $result = $DB->query($query); $query = "INSERT INTO `glpi_notifications`\r\n VALUES (NULL, 'Access badge return', 0, 'PluginBadgesBadge', 'BadgesReturn',\r\n 'mail','" . $itemtype . "',\r\n '', 1, 1, '" . date('Y-m-d H:i:s') . "');"; $result = $DB->query($query); if ($update78) { $query_ = "SELECT *\r\n FROM `glpi_plugin_badges_profiles` "; $result_ = $DB->query($query_); if ($DB->numrows($result_) > 0) { while ($data = $DB->fetch_array($result_)) { $query = "UPDATE `glpi_plugin_badges_profiles`\r\n SET `profiles_id` = '" . $data["id"] . "'\r\n WHERE `id` = '" . $data["id"] . "';"; $result = $DB->query($query); } } $query = "ALTER TABLE `glpi_plugin_badges_profiles`\r\n DROP `name` ;"; $result = $DB->query($query); Plugin::migrateItemType(array(1600 => 'PluginBadgesBadge'), array("glpi_bookmarks", "glpi_bookmarks_users", "glpi_displaypreferences", "glpi_documents_items", "glpi_infocoms", "glpi_logs", "glpi_items_tickets")); } if ($update85) { $notepad_tables = array('glpi_plugin_badges_badges'); 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_badges_badges` DROP COLUMN `notepad`;"; $DB->query($query); } } } CronTask::Register('PluginBadgesBadge', 'BadgesAlert', DAY_TIMESTAMP); CronTask::Register('PluginBadgesReturn', 'BadgesReturnAlert', DAY_TIMESTAMP); PluginBadgesProfile::initProfile(); PluginBadgesProfile::createFirstAccess($_SESSION['glpiactiveprofile']['id']); $migration = new Migration("2.0.0"); $migration->dropTable('glpi_plugin_badges_profiles'); return true; }
function plugin_badges_install() { global $DB; include_once GLPI_ROOT . "/plugins/badges/inc/profile.class.php"; $install = false; $update78 = false; $update80 = false; if (!TableExists("glpi_plugin_badges") && !TableExists("glpi_plugin_badges_badgetypes")) { $install = true; $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/empty-1.7.0.sql"); } else { if (TableExists("glpi_plugin_badges_users") && !TableExists("glpi_plugin_badges_default")) { $update78 = true; $update80 = true; $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.4.sql"); $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.5.0.sql"); plugin_badges_configure15(); $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.5.1.sql"); $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.6.0.sql"); } else { if (TableExists("glpi_plugin_badges_profiles") && FieldExists("glpi_plugin_badges_profiles", "interface")) { $update78 = true; $update80 = true; $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.5.0.sql"); plugin_badges_configure15(); $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.5.1.sql"); $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.6.0.sql"); } else { if (TableExists("glpi_plugin_badges") && !FieldExists("glpi_plugin_badges", "date_mod")) { $update78 = true; $update80 = true; $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.5.1.sql"); $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.6.0.sql"); } else { if (!TableExists("glpi_plugin_badges_badgetypes")) { $update78 = true; $update80 = true; $DB->runFile(GLPI_ROOT . "/plugins/badges/sql/update-1.6.0.sql"); } } } } } if ($install || $update78) { //Do One time on 0.78 $query_id = "SELECT `id` FROM `glpi_notificationtemplates` WHERE `itemtype`='PluginBadgesBadge' AND `name` = 'Alert Badges'"; $result = $DB->query($query_id) or die($DB->error()); $itemtype = $DB->result($result, 0, 'id'); $query = "INSERT INTO `glpi_notificationtemplatetranslations`\n VALUES(NULL, " . $itemtype . ", '','##badge.action## : ##badge.entity##',\n '##lang.badge.entity## :##badge.entity##\n ##FOREACHbadges##\n ##lang.badge.name## : ##badge.name## - ##lang.badge.dateexpiration## : ##badge.dateexpiration####IFbadge.serial## - ##lang.badge.serial## : ##badge.serial####ENDIFbadge.serial####IFbadge.users## - ##lang.badge.users## : ##badge.users####ENDIFbadge.users##\n ##ENDFOREACHbadges##',\n '<p>##lang.badge.entity## :##badge.entity##<br /> <br />\n ##FOREACHbadges##<br />\n ##lang.badge.name## : ##badge.name## - ##lang.badge.dateexpiration## : ##badge.dateexpiration####IFbadge.serial## - ##lang.badge.serial## : ##badge.serial####ENDIFbadge.serial####IFbadge.users## - ##lang.badge.users## : ##badge.users####ENDIFbadge.users##<br /> \n ##ENDFOREACHbadges##</p>');"; $result = $DB->query($query); $query = "INSERT INTO `glpi_notifications`\n VALUES (NULL, 'Alert Expired Badges', 0, 'PluginBadgesBadge', 'ExpiredBadges',\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 Badges Which Expire', 0, 'PluginBadgesBadge', 'BadgesWhichExpire',\n 'mail'," . $itemtype . ",\n '', 1, 1, '2010-02-17 22:36:46');"; $result = $DB->query($query); } if ($update78) { $query_ = "SELECT *\n FROM `glpi_plugin_badges_profiles` "; $result_ = $DB->query($query_); if ($DB->numrows($result_) > 0) { while ($data = $DB->fetch_array($result_)) { $query = "UPDATE `glpi_plugin_badges_profiles`\n SET `profiles_id` = '" . $data["id"] . "'\n WHERE `id` = '" . $data["id"] . "';"; $result = $DB->query($query); } } $query = "ALTER TABLE `glpi_plugin_badges_profiles`\n DROP `name` ;"; $result = $DB->query($query); Plugin::migrateItemType(array(1600 => 'PluginBadgesBadge'), array("glpi_bookmarks", "glpi_bookmarks_users", "glpi_displaypreferences", "glpi_documents_items", "glpi_infocoms", "glpi_logs", "glpi_tickets")); } CronTask::Register('PluginBadgesBadge', 'BadgesAlert', DAY_TIMESTAMP); PluginBadgesProfile::createFirstAccess($_SESSION['glpiactiveprofile']['id']); return true; }