From 9e2c3763fb9ae4d30f6eae22d75f2675b9ed2809 Mon Sep 17 00:00:00 2001 From: Carsten Schmitz Date: Tue, 9 Sep 2014 11:58:35 +0200 Subject: [PATCH] Changed feature #9206: Extended firstname, lastname to 150 characters and email fields to 254 characters on token tables and participant database to match width Changed feature: Token attributes are now of type text --- application/config/version.php | 2 +- application/helpers/admin/token_helper.php | 2 +- .../helpers/update/updatedb_helper.php | 39 +++++++++++++++++++ installer/sql/create-mssql.sql | 6 +-- installer/sql/create-mysql.sql | 6 +-- installer/sql/create-pgsql.sql | 6 +-- 6 files changed, 50 insertions(+), 11 deletions(-) diff --git a/application/config/version.php b/application/config/version.php index 153d5f89758..dc56520f12d 100644 --- a/application/config/version.php +++ b/application/config/version.php @@ -13,7 +13,7 @@ */ $config['versionnumber'] = "2.06"; -$config['dbversionnumber'] = 177; +$config['dbversionnumber'] = 178; $config['buildnumber'] = ''; $config['updatable'] = true; diff --git a/application/helpers/admin/token_helper.php b/application/helpers/admin/token_helper.php index f508dbb1025..401d590dc28 100644 --- a/application/helpers/admin/token_helper.php +++ b/application/helpers/admin/token_helper.php @@ -44,7 +44,7 @@ function createTokenTable($iSurveyID, $aAttributeFields=array()) ); foreach ($aAttributeFields as $sAttributeField) { - $fields[$sAttributeField]='string'; + $fields[$sAttributeField]='text'; } try{ $sTableName="{{tokens_".intval($iSurveyID)."}}"; diff --git a/application/helpers/update/updatedb_helper.php b/application/helpers/update/updatedb_helper.php index 24ef79e67cd..15bf236526c 100644 --- a/application/helpers/update/updatedb_helper.php +++ b/application/helpers/update/updatedb_helper.php @@ -1252,6 +1252,14 @@ function db_upgrade_all($iOldDBVersion) { $oDB->createCommand()->update('{{settings_global}}',array('stg_value'=>177),"stg_name='DBVersion'"); } + if ($iOldDBVersion < 178) + { + upgradeTokenTables178(); + alterColumn('{{participants}}', 'email', "{$sVarchar}(254)", false); + alterColumn('{{participants}}', 'firstname', "{$sVarchar}(150)", false); + alterColumn('{{participants}}', 'lastname', "{$sVarchar}(150)", false); + $oDB->createCommand()->update('{{settings_global}}',array('stg_value'=>178),"stg_name='DBVersion'"); + } $oTransaction->commit(); // Activate schema caching @@ -1279,6 +1287,37 @@ function db_upgrade_all($iOldDBVersion) { } +function upgradeTokenTables178() +{ + $sVarchar = Yii::app()->getConfig('varchar'); + $oSchema=Yii::app()->db->schema; + $sDBDriverName=setsDBDriverName(); + if($sDBDriverName=='mssql') $sSubstringCommand='substring'; else $sSubstringCommand='substr'; + + $surveyidresult = dbGetTablesLike("tokens%"); + if (!$surveyidresult) {return "Database Error";} + else + { + foreach ( $surveyidresult as $sv ) + { + $sTableName=reset($sv); + $oSchema=$oSchema->getTable($sTableName); + foreach ($oSchema->columnNames as $sColumnName) + { + if (strpos($sColumnName,'attribute_')===0) + { + alterColumn($sTableName, $sColumnName, "text"); + } + } + Yii::app()->db->createCommand("UPDATE {$sTableName} set email={$sSubstringCommand}(email,0,254)")->execute(); + alterColumn($sTableName, 'email', "{$sVarchar}(254)"); + alterColumn($sTableName, 'firstname', "{$sVarchar}(150)"); + alterColumn($sTableName, 'lastname', "{$sVarchar}(150)"); + } + } +} + + function upgradeSurveys177() { $sSurveyQuery = "SELECT * FROM {{surveys_languagesettings}}"; diff --git a/installer/sql/create-mssql.sql b/installer/sql/create-mssql.sql index ec735e55882..e33182aefb2 100644 --- a/installer/sql/create-mssql.sql +++ b/installer/sql/create-mssql.sql @@ -193,8 +193,8 @@ PRIMARY KEY ([participant_id],[share_uid]) -- CREATE TABLE [prefix_participants] ( [participant_id] varchar(50) NOT NULL, -[firstname] varchar(40) NULL, -[lastname] varchar(40) NULL, +[firstname] varchar(150) NULL, +[lastname] varchar(150) NULL, [email] varchar(254) NULL, [language] varchar(40) NULL, [blacklisted] varchar(1) NOT NULL, @@ -566,4 +566,4 @@ create index [parent_qid_idx] on [prefix_questions] ([parent_qid]); -- -- Version Info -- -INSERT INTO [prefix_settings_global] VALUES ('DBVersion', '177'); \ No newline at end of file +INSERT INTO [prefix_settings_global] VALUES ('DBVersion', '178'); \ No newline at end of file diff --git a/installer/sql/create-mysql.sql b/installer/sql/create-mysql.sql index d9a398d3d05..fea2cff3bd4 100644 --- a/installer/sql/create-mysql.sql +++ b/installer/sql/create-mysql.sql @@ -193,8 +193,8 @@ CREATE TABLE `prefix_participant_shares` ( -- CREATE TABLE `prefix_participants` ( `participant_id` varchar(50) NOT NULL, - `firstname` varchar(40) DEFAULT NULL, - `lastname` varchar(40) DEFAULT NULL, + `firstname` varchar(150) DEFAULT NULL, + `lastname` varchar(150) DEFAULT NULL, `email` varchar(254) DEFAULT NULL, `language` varchar(40) DEFAULT NULL, `blacklisted` varchar(1) NOT NULL, @@ -571,4 +571,4 @@ create index `parent_qid_idx` on `prefix_questions` (`parent_qid`); -- -- Version Info -- -INSERT INTO `prefix_settings_global` VALUES ('DBVersion', '177'); +INSERT INTO `prefix_settings_global` VALUES ('DBVersion', '178'); diff --git a/installer/sql/create-pgsql.sql b/installer/sql/create-pgsql.sql index bb40138e1e2..d546e575fa1 100644 --- a/installer/sql/create-pgsql.sql +++ b/installer/sql/create-pgsql.sql @@ -199,8 +199,8 @@ CREATE TABLE prefix_participant_shares ( -- CREATE TABLE prefix_participants ( "participant_id" character varying(50) PRIMARY KEY NOT NULL, - "firstname" character varying(40), - "lastname" character varying(40), + "firstname" character varying(150), + "lastname" character varying(150), "email" character varying(254), "language" character varying(40), "blacklisted" character varying(1) NOT NULL, @@ -576,4 +576,4 @@ create unique index permissions_idx2 ON prefix_permissions (entity_id, entity, u -- -- Version Info -- -INSERT INTO prefix_settings_global VALUES ('DBVersion', '177'); +INSERT INTO prefix_settings_global VALUES ('DBVersion', '178');