From 1643e0d1cfdf572fe977075fbd563c08a0b5d0bc Mon Sep 17 00:00:00 2001
From: Peter Rotich <peter@osticket.com>
Date: Mon, 21 Jan 2013 14:45:22 -0500
Subject: [PATCH] Change session ID field to varchar(256) - to support 1024-bit
 hashes Make collation consistent - utf8_general_ci.

---
 include/mysql.php                                         | 2 +-
 include/upgrader/sql/435c62c3-2e7531a2.patch.sql          | 2 +-
 include/upgrader/sql/98ae1ed2-e342f869.patch.sql          | 4 ++--
 ...54c-d5339cae.patch.sql => 9f3b454c-c0fd16f4.patch.sql} | 8 ++++----
 include/upgrader/sql/c00511c7-7be60a84.patch.sql          | 6 +++---
 main.inc.php                                              | 2 +-
 setup/inc/class.installer.php                             | 3 +++
 setup/inc/sql/osTicket-mysql.sql                          | 6 +++---
 setup/inc/sql/osTicket-mysql.sql.md5                      | 2 +-
 9 files changed, 19 insertions(+), 16 deletions(-)
 rename include/upgrader/sql/{9f3b454c-d5339cae.patch.sql => 9f3b454c-c0fd16f4.patch.sql} (83%)

diff --git a/include/mysql.php b/include/mysql.php
index 7a3819f4e..15a8a432b 100644
--- a/include/mysql.php
+++ b/include/mysql.php
@@ -74,7 +74,7 @@
         return ($database && @mysql_select_db($database));
     }
 
-    function db_create_database($database, $charset='utf8', $collate='utf8_unicode_ci') {
+    function db_create_database($database, $charset='utf8', $collate='utf8_general_ci') {
         return @mysql_query(sprintf('CREATE DATABASE %s DEFAULT CHARACTER SET %s COLLATE %s', $database, $charset, $collate));
     }
    
diff --git a/include/upgrader/sql/435c62c3-2e7531a2.patch.sql b/include/upgrader/sql/435c62c3-2e7531a2.patch.sql
index 9537d1acb..760a6b0c3 100644
--- a/include/upgrader/sql/435c62c3-2e7531a2.patch.sql
+++ b/include/upgrader/sql/435c62c3-2e7531a2.patch.sql
@@ -10,7 +10,7 @@ CREATE TABLE `%TABLE_PREFIX%group_dept_access` (
   `dept_id` int(10) unsigned NOT NULL default '0',
   UNIQUE KEY `group_dept`  (`group_id`,`dept_id`),
   KEY `dept_id` (`dept_id`)
-) ENGINE=MyISAM;
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 -- Extend membership to groups
 ALTER TABLE `%TABLE_PREFIX%department`
diff --git a/include/upgrader/sql/98ae1ed2-e342f869.patch.sql b/include/upgrader/sql/98ae1ed2-e342f869.patch.sql
index 4fc011ce8..3c2f57454 100644
--- a/include/upgrader/sql/98ae1ed2-e342f869.patch.sql
+++ b/include/upgrader/sql/98ae1ed2-e342f869.patch.sql
@@ -143,7 +143,7 @@ CREATE TABLE `%TABLE_PREFIX%api_key` (
   `created` datetime NOT NULL default '0000-00-00 00:00:00',
   PRIMARY KEY  (`id`),
   UNIQUE KEY `ipaddr` (`ipaddr`)
-) ENGINE=MyISAM;
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%syslog`;
 CREATE TABLE `%TABLE_PREFIX%syslog` (
@@ -157,7 +157,7 @@ CREATE TABLE `%TABLE_PREFIX%syslog` (
   `updated` datetime NOT NULL default '0000-00-00 00:00:00',
   PRIMARY KEY  (`log_id`),
   KEY `log_type` (`log_type`)
-) ENGINE=MyISAM;
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 UPDATE `%TABLE_PREFIX%config`
     SET `ostversion`='1.6 RC5';
diff --git a/include/upgrader/sql/9f3b454c-d5339cae.patch.sql b/include/upgrader/sql/9f3b454c-c0fd16f4.patch.sql
similarity index 83%
rename from include/upgrader/sql/9f3b454c-d5339cae.patch.sql
rename to include/upgrader/sql/9f3b454c-c0fd16f4.patch.sql
index bc9a23a7a..bcd1eedeb 100644
--- a/include/upgrader/sql/9f3b454c-d5339cae.patch.sql
+++ b/include/upgrader/sql/9f3b454c-c0fd16f4.patch.sql
@@ -1,13 +1,13 @@
 /**
  * @version v1.7
  *
- * @schema d5339caebcfbdcca7d57be5b17f804ee
+ * @schema c0fd16f4eaf99b920be9f7fc6ebead32
  */
 
--- increate varchar size for various fields... based on feedback from users.
+-- Increment varchar size for various fields... based on feedback from users.
 
 ALTER TABLE  `%TABLE_PREFIX%session` 
-    CHANGE  `session_id`  `session_id` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  '';
+    CHANGE  `session_id`  `session_id` VARCHAR( 256 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  '';
 
 ALTER TABLE  `%TABLE_PREFIX%ticket` 
     CHANGE  `name`  `name` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  '',
@@ -25,4 +25,4 @@ ALTER TABLE  `%TABLE_PREFIX%department`
     CHANGE  `dept_name`  `dept_name` VARCHAR( 128 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  '';
 
 UPDATE `%TABLE_PREFIX%config`
-    SET `schema_signature`='d5339caebcfbdcca7d57be5b17f804ee';
+    SET `schema_signature`='c0fd16f4eaf99b920be9f7fc6ebead32';
diff --git a/include/upgrader/sql/c00511c7-7be60a84.patch.sql b/include/upgrader/sql/c00511c7-7be60a84.patch.sql
index 80e652cc7..25465e81b 100644
--- a/include/upgrader/sql/c00511c7-7be60a84.patch.sql
+++ b/include/upgrader/sql/c00511c7-7be60a84.patch.sql
@@ -88,7 +88,7 @@ CREATE TABLE IF NOT EXISTS `%TABLE_PREFIX%sla` (
     `updated` datetime NOT NULL,
     PRIMARY KEY  (`id`),
     UNIQUE KEY `name` (`name`)
-) ENGINE=MyISAM;
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  
 -- Create a default SLA
 INSERT INTO `%TABLE_PREFIX%sla` (`isactive`, `enable_priority_escalation`,
@@ -109,7 +109,7 @@ CREATE TABLE IF NOT EXISTS `%TABLE_PREFIX%team` (
     UNIQUE KEY `name` (`name`),
     KEY `isnabled` (`isenabled`),
     KEY `lead_id` (`lead_id`)
-) ENGINE=MyISAM;
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 -- Create a default TEAM
 INSERT INTO `%TABLE_PREFIX%team` (`lead_id`, `isenabled`, `noalerts`, `name`, `notes`, `created`, `updated`)
@@ -121,7 +121,7 @@ CREATE TABLE IF NOT EXISTS `%TABLE_PREFIX%team_member` (
   `staff_id` int(10) unsigned NOT NULL,
   `updated` datetime NOT NULL,
   PRIMARY KEY  (`team_id`,`staff_id`)
-) ENGINE=MyISAM;
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
 ALTER TABLE `%TABLE_PREFIX%department`
     ADD sla_id INT UNSIGNED NOT NULL DEFAULT '0' AFTER tpl_id;
diff --git a/main.inc.php b/main.inc.php
index c4cf687ce..0d8ccd34c 100644
--- a/main.inc.php
+++ b/main.inc.php
@@ -63,7 +63,7 @@
 
     #Current version && schema signature (Changes from version to version)
     define('THIS_VERSION','1.7-RC4+'); //Shown on admin panel
-    define('SCHEMA_SIGNATURE','d5339caebcfbdcca7d57be5b17f804ee'); //MD5 signature of the db schema. (used to trigger upgrades)
+    define('SCHEMA_SIGNATURE', 'c0fd16f4eaf99b920be9f7fc6ebead32'); //MD5 signature of the db schema. (used to trigger upgrades)
     #load config info
     $configfile='';
     if(file_exists(ROOT_DIR.'ostconfig.php')) //Old installs prior to v 1.6 RC5
diff --git a/setup/inc/class.installer.php b/setup/inc/class.installer.php
index f355fbe04..0e2e19f57 100644
--- a/setup/inc/class.installer.php
+++ b/setup/inc/class.installer.php
@@ -95,6 +95,9 @@ class Installer extends SetupWizard {
                 if(mysql_query($sql)) {
                     $this->errors['err'] = 'We have a problem - another installation with same table prefix exists!';
                     $this->errors['prefix'] = 'Prefix already in-use';
+                } else {
+                    //Try changing charset and collation of the DB - no bigie if we fail.
+                    mysql_query('ALTER DATABASE '.$vars['dbname'].' DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci');
                 }
             }
         }
diff --git a/setup/inc/sql/osTicket-mysql.sql b/setup/inc/sql/osTicket-mysql.sql
index f20f2f00a..ba980b876 100644
--- a/setup/inc/sql/osTicket-mysql.sql
+++ b/setup/inc/sql/osTicket-mysql.sql
@@ -383,7 +383,7 @@ CREATE TABLE `%TABLE_PREFIX%group_dept_access` (
   `dept_id` int(10) unsigned NOT NULL default '0',
   UNIQUE KEY `group_dept` (`group_id`,`dept_id`),
   KEY `dept_id`  (`dept_id`)
-) ENGINE=MyISAM;
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 INSERT INTO `%TABLE_PREFIX%group_dept_access` (`group_id`, `dept_id`) VALUES
     (1, 1), (1, 2), (2, 1), (2, 2), (3, 1), (3, 2);
@@ -449,7 +449,7 @@ INSERT INTO `%TABLE_PREFIX%canned_attachment` (`canned_id`, `file_id`) VALUES (1
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%session`;
 CREATE TABLE `%TABLE_PREFIX%session` (
-  `session_id` varchar(255) collate utf8_unicode_ci NOT NULL default '',
+  `session_id` varchar(256) collate utf8_unicode_ci NOT NULL default '',
   `session_data` longtext collate utf8_unicode_ci,
   `session_expire` datetime default NULL,
   `session_updated` datetime default NULL,
@@ -558,7 +558,7 @@ CREATE TABLE `%TABLE_PREFIX%team_member` (
   `staff_id` int(10) unsigned NOT NULL,
   `updated` datetime NOT NULL,
   PRIMARY KEY  (`team_id`,`staff_id`)
-) ENGINE=MyISAM;
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%ticket`;
 CREATE TABLE `%TABLE_PREFIX%ticket` (
diff --git a/setup/inc/sql/osTicket-mysql.sql.md5 b/setup/inc/sql/osTicket-mysql.sql.md5
index acaa7c293..db25b4569 100644
--- a/setup/inc/sql/osTicket-mysql.sql.md5
+++ b/setup/inc/sql/osTicket-mysql.sql.md5
@@ -1 +1 @@
-d5339caebcfbdcca7d57be5b17f804ee
+c0fd16f4eaf99b920be9f7fc6ebead32
-- 
GitLab