| Anonymous | Login | 2010-07-31 23:00 CEST | ![]() |
| Main | My View | View Issues | Change Log | Roadmap |
| View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | |||||
| ID | Project | Category | View Status | Date Submitted | Last Update | |
| 04186 | User patches | Installation | public | 2010-03-08 23:41 | 2010-06-03 16:16 | |
| Reporter | c-pucci | |||||
| Assigned To | c_schmitz | |||||
| Priority | normal | Severity | tweak | Reproducibility | N/A | |
| Status | closed | Resolution | fixed | |||
| Platform | OS | OS Version | ||||
| Product Version | 1.87 | |||||
| Target Version | Fixed in Version | |||||
| Summary | 04186: Native MS SQL Server Support | |||||
| Description | Currently LimeSurvey 1.x only supports the community mssql driver for php, (via ADOdb). Our team has created an ADODB driver package that uses the Native SQL Server driver for PHP which was recently released by Microsoft (currently in v1.1). More information regarding the Native SQL Server driver for PHP can be found here: http://www.microsoft.com/sqlserver/2005/en/us/PHP-Driver.aspx [^] I've attached a patch file that adds Native SQL Server support to LimeSurvey 1.x, (diffed against SVN head), to this request and would like to work with the developers/maintainers in order to have this package officially supported. | |||||
| Tags | No tags attached. | |||||
| LimeSurvey build number | 1.87 | |||||
| Attached Files | Index: admin/database.php
===================================================================
--- admin/database.php (revision 8454)
+++ admin/database.php (working copy)
@@ -120,7 +120,7 @@
}
else{
$query = "INSERT INTO ".db_table_name('groups')." (gid, sid, group_name, description,group_order,language) VALUES ('{$groupid}','".db_quote($postsid)."', '".db_quote($_POST['group_name_'.$grouplang])."', '".db_quote($_POST['description_'.$grouplang])."',".getMaxgrouporder(returnglobal('sid')).",'{$grouplang}')";
- if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n') $query = 'SET IDENTITY_INSERT '.db_table_name('groups')." ON; " . $query . 'SET IDENTITY_INSERT '.db_table_name('groups')." OFF;";
+ if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative') $query = 'SET IDENTITY_INSERT '.db_table_name('groups')." ON; " . $query . 'SET IDENTITY_INSERT '.db_table_name('groups')." OFF;";
$result = $connect->Execute($query) or safe_die("Error<br />".$query."<br />".$connect->ErrorMsg()); // Checked
}
if (!$result)
@@ -309,7 +309,7 @@
$query = "INSERT INTO ".db_table_name('questions')." (qid, sid, gid, type, title, question, preg, help, other, mandatory, lid, lid1, question_order, language)"
." VALUES ('$qid','{$postsid}', '{$postgid}', '{$_POST['type']}', '{$_POST['title']}',"
." '{$_POST['question_'.$alang]}', '{$_POST['preg']}', '{$_POST['help_'.$alang]}', '{$_POST['other']}', '{$_POST['mandatory']}', '{$_POST['lid']}', '{$_POST['lid1']}',$question_order,'{$alang}')";
- if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n') $query = "SET IDENTITY_INSERT ".db_table_name('questions')." ON; " . $query . "SET IDENTITY_INSERT ".db_table_name('questions')." OFF;";
+ if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative') $query = "SET IDENTITY_INSERT ".db_table_name('questions')." ON; " . $query . "SET IDENTITY_INSERT ".db_table_name('questions')." OFF;";
$result2 = $connect->Execute($query); // Checked
if (!$result2)
{
@@ -683,11 +683,11 @@
$_POST['question_'.$qlanguage]=fix_FCKeditor_text($_POST['question_'.$qlanguage]);
$_POST['help_'.$qlanguage]=fix_FCKeditor_text($_POST['help_'.$qlanguage]);
- if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n') {@$connect->Execute('SET IDENTITY_INSERT '.db_table_name('questions')." ON");}
+ if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative') {@$connect->Execute('SET IDENTITY_INSERT '.db_table_name('questions')." ON");}
$query = "INSERT INTO {$dbprefix}questions (qid, sid, gid, type, title, question, help, other, mandatory, lid, lid1, question_order, language)
VALUES ($newqid,{$postsid}, {$postgid}, '{$_POST['type']}', '{$_POST['title']}', '".$_POST['question_'.$qlanguage]."', '".$_POST['help_'.$qlanguage]."', '{$_POST['other']}', '{$_POST['mandatory']}', '{$_POST['lid']}', '{$_POST['lid1']}', $max,".db_quoteall($qlanguage).")";
$result = $connect->Execute($query) or safe_die($connect->ErrorMsg()); // Checked
- if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n') {@$connect->Execute('SET IDENTITY_INSERT '.db_table_name('questions')." OFF");}
+ if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative') {@$connect->Execute('SET IDENTITY_INSERT '.db_table_name('questions')." OFF");}
}
if (!$result)
{
Index: admin/install/cmd_install.php
===================================================================
--- admin/install/cmd_install.php (revision 8454)
+++ admin/install/cmd_install.php (working copy)
@@ -68,6 +68,7 @@
$createdbtype=$databasetype;
if ($createdbtype=='mssql_n' || $createdbtype=='odbc_mssql' || $createdbtype=='odbtp') $createdbtype='mssql';
+ if ($createdbtype=='mssqlnative') $createdbtype == 'mssqlnative';
$sqlfile = dirname(__FILE__).'/create-'.$createdbtype.'.sql' ;
if (!empty($sqlfile)) {
@@ -156,7 +157,7 @@
$upgradedbtype=$databasetype;
if ($upgradedbtype=='mssql_n' || $upgradedbtype=='odbc_mssql' || $upgradedbtype=='odbtp') $upgradedbtype='mssql';
-
+ if ($upgradedbtype=='mssqnlative') $upgradedbtype='mssqlnative';
include ('upgrade-'.$upgradedbtype.'.php');
$usquery = "SELECT stg_value FROM ".db_table_name("settings_global")." where stg_name='DBVersion'";
Index: admin/install/create-mssqlnative.sql
===================================================================
--- admin/install/create-mssqlnative.sql (revision 0)
+++ admin/install/create-mssqlnative.sql (revision 0)
@@ -0,0 +1,404 @@
+-- LimeSurvey Native MS SQL Server 2005+ database schema
+
+-- --------------------------------------------------------
+
+CREATE TABLE [prefix_quota] (
+ [id] int NOT NULL IDENTITY (1,1),
+ [sid] int ,
+ [name] varchar(255),
+ [qlimit] int ,
+ [action] int ,
+ [active] int NOT NULL default '1',
+ [autoload_url] int NOT NULL default '0',
+ PRIMARY KEY ([id])
+);
+
+
+CREATE TABLE [prefix_quota_languagesettings] (
+ [quotals_id] int NOT NULL IDENTITY (1,1),
+ [quotals_quota_id] int,
+ [quotals_language] varchar(45) NOT NULL default 'en',
+ [quotals_name] varchar(255),
+ [quotals_message] varchar(max),
+ [quotals_url] varchar(255),
+ [quotals_urldescrip] varchar(255),
+ PRIMARY KEY ([quotals_id])
+);
+
+
+CREATE TABLE [prefix_quota_members] (
+ [id] int NOT NULL IDENTITY (1,1),
+ [sid] int ,
+ [qid] int ,
+ [quota_id] int ,
+ [code] varchar(11) ,
+ PRIMARY KEY ([id])
+);
+
+
+
+
+--
+-- Table structure for table [answers]
+--
+
+CREATE TABLE [prefix_answers] (
+ [qid] INT NOT NULL default '0',
+ [code] VARCHAR(5) NOT NULL default '',
+ [answer] varchar(8000) NOT NULL,
+ [default_value] char(1) NOT NULL default 'N',
+ [sortorder] INT NOT NULL,
+ [assessment_value] INT NOT NULL default '0',
+ [language] VARCHAR(20) default 'en',
+ PRIMARY KEY ([qid],[code],[language])
+)
+;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table [assessments]
+--
+
+CREATE TABLE [prefix_assessments] (
+ [id] INT NOT NULL IDENTITY (1,1),
+ [sid] INT NOT NULL default '0',
+ [scope] VARCHAR(5) NOT NULL default '',
+ [gid] INT NOT NULL default '0',
+ [name] varchar(max) NOT NULL,
+ [minimum] VARCHAR(50) NOT NULL default '',
+ [maximum] VARCHAR(50) NOT NULL default '',
+ [message] varchar(max) NOT NULL,
+ [language] VARCHAR(20) NOT NULL default 'en',
+ PRIMARY KEY ([id],[language])
+)
+;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table [conditions]
+--
+
+CREATE TABLE [prefix_conditions] (
+ [cid] INT NOT NULL IDENTITY (1,1),
+ [qid] INT NOT NULL default '0',
+ [scenario] INT NOT NULL default '1',
+ [cqid] INT NOT NULL default '0',
+ [cfieldname] VARCHAR(50) NOT NULL default '',
+ [method] char(2) NOT NULL default '',
+ [value] VARCHAR(255) NOT NULL default '',
+ PRIMARY KEY ([cid])
+)
+;
+
+--
+-- Table structure for table [groups]
+--
+
+CREATE TABLE [prefix_groups] (
+ [gid] INT NOT NULL IDENTITY (1,1),
+ [sid] INT NOT NULL default '0',
+ [group_name] VARCHAR(100) NOT NULL default '',
+ [group_order] INT NOT NULL default '0',
+ [description] varchar(max),
+ [language] VARCHAR(20) default 'en',
+ PRIMARY KEY ([gid],[language])
+)
+;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table [labels]
+--
+
+CREATE TABLE [prefix_labels] (
+ [lid] INT NOT NULL default '0',
+ [code] VARCHAR(5) NOT NULL default '',
+ [title] VARCHAR(4000),
+ [sortorder] INT NOT NULL,
+ [language] VARCHAR(20) default 'en',
+ [assessment_value] INT NOT NULL default '0',
+ PRIMARY KEY ([lid],[sortorder],[language]),
+)
+;
+
+CREATE INDEX labels_code_idx
+ ON [prefix_labels] ([code])
+;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table [labelsets]
+--
+
+CREATE TABLE [prefix_labelsets] (
+ [lid] INT NOT NULL IDENTITY (1,1),
+ [label_name] VARCHAR(100) NOT NULL default '',
+ [languages] VARCHAR(200) default 'en',
+ PRIMARY KEY ([lid])
+)
+;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table [question_attributes]
+--
+
+CREATE TABLE [prefix_question_attributes] (
+ [qaid] INT NOT NULL IDENTITY (1,1),
+ [qid] INT NOT NULL default '0',
+ [attribute] VARCHAR(50) default NULL,
+ [value] varchar(max) default NULL,
+ PRIMARY KEY ([qaid])
+)
+;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table [questions]
+--
+
+CREATE TABLE [prefix_questions] (
+ [qid] INT NOT NULL IDENTITY (1,1),
+ [sid] INT NOT NULL default '0',
+ [gid] INT NOT NULL default '0',
+ [type] char(1) NOT NULL default 'T',
+ [title] VARCHAR(20) NOT NULL default '',
+ [question] varchar(max) NOT NULL,
+ [preg] varchar(max),
+ [help] varchar(max),
+ [other] char(1) NOT NULL default 'N',
+ [mandatory] char(1) default NULL,
+ [lid] INT NOT NULL default '0',
+ [lid1] INT NOT NULL default '0',
+ [question_order] INT NOT NULL,
+ [language] VARCHAR(20) default 'en',
+ PRIMARY KEY ([qid],[language])
+)
+;
+
+-- --------------------------------------------------------
+
+
+--
+-- Table structure for table [saved_control]
+--
+
+CREATE TABLE [prefix_saved_control] (
+ [scid] INT NOT NULL IDENTITY (1,1),
+ [sid] INT NOT NULL default '0',
+ [srid] INT NOT NULL default '0',
+ [identifier] varchar(255) NOT NULL,
+ [access_code] varchar(max) NOT NULL,
+ [email] VARCHAR(320) default NULL,
+ [ip] varchar(max) NOT NULL,
+ [saved_thisstep] varchar(max) NOT NULL,
+ [status] char(1) NOT NULL default '',
+ [saved_date] datetime,
+ [refurl] varchar(max),
+ PRIMARY KEY ([scid])
+)
+;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table [surveys]
+--
+
+CREATE TABLE [prefix_surveys] (
+ [sid] INT NOT NULL,
+ [owner_id] INT NOT NULL,
+ [admin] VARCHAR(50) default NULL,
+ [active] char(1) NOT NULL default 'N',
+ [startdate] DATETIME default NULL,
+ [expires] DATETIME default NULL,
+ [adminemail] VARCHAR(320) default NULL,
+ [private] char(1) default NULL,
+ [faxto] VARCHAR(20) default NULL,
+ [format] char(1) default NULL,
+ [template] VARCHAR(100) default 'default',
+ [language] VARCHAR(50) default NULL,
+ [additional_languages] VARCHAR(255) default NULL,
+ [datestamp] char(1) default 'N',
+ [usecookie] char(1) default 'N',
+ [notification] char(1) default '0',
+ [allowregister] char(1) default 'N',
+ [allowsave] char(1) default 'Y',
+ [autonumber_start] bigINT default '0',
+ [autoredirect] char(1) default 'N',
+ [allowprev] char(1) default 'Y',
+ [printanswers] char(1) default 'N',
+ [ipaddr] char(1) default 'N',
+ [refurl] char(1) default 'N',
+ [datecreated] DATETIME default NULL,
+ [listpublic] char(1) default 'N',
+ [publicstatistics] char(1) default 'N',
+ [publicgraphs] char(1) default 'N',
+ [htmlemail] char(1) default 'N',
+ [tokenanswerspersistence] char(1) default 'N',
+ [assessments] char(1) default 'N',
+ [usecaptcha] char(1) default 'N',
+ [usetokens] char(1) default 'N',
+ [bounce_email] VARCHAR(320) default NULL,
+ [attributedescriptions] varchar(max),
+ [emailresponseto] varchar(max),
+ [tokenlength] tinyint default '15',
+
+ PRIMARY KEY ([sid])
+)
+;
+--
+-- Table structure for table [surveys_languagesettings]
+--
+
+if EXISTS (select * from dbo.sysobjects where id = object_id(N'[dbo].[prefix_surveys_languagesettings]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
+DROP TABLE [dbo].[prefix_surveys_languagesettings]
+;
+
+CREATE TABLE [prefix_surveys_languagesettings] (
+ [surveyls_survey_id] INT NOT NULL DEFAULT 0,
+ [surveyls_language] VARCHAR(45) NOT NULL DEFAULT 'en',
+ [surveyls_title] VARCHAR(200) NOT NULL,
+ [surveyls_description] varchar(max) NULL,
+ [surveyls_welcometext] varchar(max) NULL,
+ [surveyls_endtext] varchar(max) NULL,
+ [surveyls_url] VARCHAR(255) NULL,
+ [surveyls_urldescription] VARCHAR(255) NULL,
+ [surveyls_email_invite_subj] VARCHAR(255) NULL,
+ [surveyls_email_invite] varchar(max) NULL,
+ [surveyls_email_remind_subj] VARCHAR(255) NULL,
+ [surveyls_email_remind] varchar(max) NULL,
+ [surveyls_email_register_subj] VARCHAR(255) NULL,
+ [surveyls_email_register] varchar(max) NULL,
+ [surveyls_email_confirm_subj] VARCHAR(255) NULL,
+ [surveyls_email_confirm] varchar(max) NULL,
+ [surveyls_dateformat] INT NOT NULL DEFAULT 1,
+ PRIMARY KEY ([surveyls_survey_id],[surveyls_language])
+)
+;
+
+--
+-- Table structure for table [users]
+--
+
+CREATE TABLE [prefix_users] (
+ [uid] INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
+ [users_name] VARCHAR(64) NOT NULL UNIQUE default '',
+ [password] varchar(8000) NOT NULL default '',
+ [full_name] VARCHAR(50) NOT NULL,
+ [parent_id] INT NOT NULL,
+ [lang] VARCHAR(20),
+ [email] VARCHAR(320) NOT NULL UNIQUE,
+ [create_survey] TINYINT NOT NULL default '0',
+ [create_user] TINYINT NOT NULL default '0',
+ [delete_user] TINYINT NOT NULL default '0',
+ [superadmin] TINYINT NOT NULL default '0',
+ [configurator] TINYINT NOT NULL default '0',
+ [manage_template] TINYINT NOT NULL default '0',
+ [manage_label] TINYINT NOT NULL default '0',
+ [htmleditormode] char(7) default 'default',
+ [one_time_pw] varchar(max),
+ [dateformat] INT NOT NULL DEFAULT 1
+);
+
+
+--
+-- Table structure for table [surveys_rights]
+--
+
+CREATE TABLE [prefix_surveys_rights] (
+ [sid] INT NOT NULL default '0',
+ [uid] INT NOT NULL default '0',
+ [edit_survey_property] TINYINT NOT NULL default '0',
+ [define_questions] TINYINT NOT NULL default '0',
+ [browse_response] TINYINT NOT NULL default '0',
+ [export] TINYINT NOT NULL default '0',
+ [delete_survey] TINYINT NOT NULL default '0',
+ [activate_survey] TINYINT NOT NULL default '0',
+ PRIMARY KEY ([sid], [uid])
+)
+;
+
+--
+-- Table structure for table [user_groups]
+--
+
+CREATE TABLE [prefix_user_groups] (
+ [ugid] INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
+ [name] VARCHAR(20) NOT NULL UNIQUE,
+ [description] varchar(max) NOT NULL default '',
+ [owner_id] INT NOT NULL
+)
+;
+
+--
+-- Table structure for table [user_in_groups]
+--
+
+CREATE TABLE [prefix_user_in_groups] (
+ [ugid] INT NOT NULL,
+ [uid] INT NOT NULL
+)
+;
+
+--
+-- Table structure for table [settings_global]
+--
+
+CREATE TABLE [prefix_settings_global] (
+ [stg_name] VARCHAR(50) NOT NULL default '',
+ [stg_value] VARCHAR(255) NOT NULL default '',
+ PRIMARY KEY ([stg_name])
+);
+
+
+CREATE TABLE [prefix_templates_rights] (
+ [uid] int NOT NULL,
+ [folder] varchar(255) NOT NULL,
+ [use] int NOT NULL,
+ PRIMARY KEY ([uid],[folder])
+ );
+
+CREATE TABLE [prefix_templates] (
+ [folder] varchar(255) NOT NULL,
+ [creator] int NOT NULL,
+ PRIMARY KEY ([folder])
+ );
+
+--
+-- Table [settings_global]
+--
+
+INSERT INTO [prefix_settings_global] VALUES ('DBVersion', '142');
+INSERT INTO [prefix_settings_global] VALUES ('SessionName', '$sessionname');
+
+
+--
+-- indexes
+--
+create index [answers_idx2] on [prefix_answers] ([sortorder]);
+create index [assessments_idx2] on [prefix_assessments] ([sid]);
+create index [assessments_idx3] on [prefix_assessments] ([gid]);
+create index [conditions_idx2] on [prefix_conditions] ([qid]);
+create index [conditions_idx3] on [prefix_conditions] ([cqid]);
+create index [groups_idx2] on [prefix_groups] ([sid]);
+create index [questions_idx2] on [prefix_questions] ([sid]);
+create index [questions_idx3] on [prefix_questions] ([gid]);
+create index [questions_idx4] on [prefix_questions] ([type]);
+create index [question_attributes_idx2] on [prefix_question_attributes] ([qid]);
+create index [quota_idx2] on [prefix_quota] ([sid]);
+create index [saved_control_idx2] on [prefix_saved_control] ([sid]);
+create index [user_in_groups_idx1] on [prefix_user_in_groups] ([ugid], [uid]);
+
+
+--
+-- Create the admin user
+--
+
+INSERT INTO [prefix_users] ([users_name], [password], [full_name], [parent_id], [lang] ,[email], [create_survey], [create_user] ,[delete_user] ,[superadmin] ,[configurator] ,[manage_template] , [manage_label]) VALUES ('$defaultuser', '$defaultpass', '$siteadminname', 0, '$defaultlang', '$siteadminemail', 1,1,1,1,1,1,1);
Index: admin/install/createdb.php
===================================================================
--- admin/install/createdb.php (revision 8454)
+++ admin/install/createdb.php (working copy)
@@ -38,6 +38,7 @@
$createdbtype='mysql';
}
if ($createdbtype=='mssql_n' || $createdbtype=='odbc_mssql' || $createdbtype=='odbtp') $createdbtype='mssql';
+ if($createdbtype=='mssqlnative') $createdbtype='mssqlnative';
if (modify_database(dirname(__FILE__).'/create-'.$createdbtype.'.sql'))
{
echo sprintf($clang->gT("Database `%s` has been successfully populated."),$dbname)."</font></strong></font><br /><br />\n";
@@ -72,6 +73,7 @@
break;
case 'mssql_n':
case 'odbc_mssql':
+ case 'mssqlnative':
case 'odbtp': $createDb=$connect->Execute("CREATE DATABASE [$dbname];");
break;
default: $createDb=$connect->Execute("CREATE DATABASE $dbname");
Index: admin/install/resetadminpw.php
===================================================================
--- admin/install/resetadminpw.php (revision 8454)
+++ admin/install/resetadminpw.php (working copy)
@@ -27,7 +27,8 @@
echo $modifyoutput; flush();
break;
case 'odbtp':
- case 'mssql_n':
+ case 'mssql_n':
+ case 'mssqlnative':
case 'odbc_mssql':modify_database("",'UPDATE [prefix_users] set password=\'$defaultpass\' where uid=1;');
echo $modifyoutput; flush();
break;
Index: admin/labels.php
===================================================================
--- admin/labels.php (revision 8454)
+++ admin/labels.php (working copy)
@@ -543,7 +543,7 @@
}
if (isset($sqlvalues))
{
- if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n') {@$connect->Execute('SET IDENTITY_INSERT '.db_table_name('labels')." ON");}
+ if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative') {@$connect->Execute('SET IDENTITY_INSERT '.db_table_name('labels')." ON");}
foreach ($sqlvalues as $sqlline)
{
$query = "INSERT INTO ".db_table_name('labels')." (lid,code,sortorder,language,assessment_value) VALUES ".($sqlline);
@@ -553,7 +553,7 @@
$labelsoutput.= "<script type=\"text/javascript\">\n<!--\n alert(\"".$clang->gT("Failed to Copy already defined labels to added languages","js")." - ".$query." - ".$connect->ErrorMsg()."\")\n //-->\n</script>\n";
}
}
- if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n') {@$connect->Execute('SET IDENTITY_INSERT '.db_table_name('labels')." OFF");}
+ if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative') {@$connect->Execute('SET IDENTITY_INSERT '.db_table_name('labels')." OFF");}
}
// If languages are removed, delete labels for these languages
@@ -685,13 +685,13 @@
$_POST['insertassessmentvalue']=(int)$_POST['insertassessmentvalue'];
foreach ($lslanguages as $lslanguage)
{
- if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n') {@$connect->Execute('SET IDENTITY_INSERT '.db_table_name('labels')." ON");}
+ if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative') {@$connect->Execute('SET IDENTITY_INSERT '.db_table_name('labels')." ON");}
$query = "INSERT INTO ".db_table_name('labels')." (lid, code, title, sortorder,language, assessment_value) VALUES ($lid, {$_POST['insertcode']}, {$_POST['inserttitle']}, '$newsortorder','$lslanguage',{$_POST['insertassessmentvalue']})";
if (!$result = $connect->Execute($query))
{
$labelsoutput.= "<script type=\"text/javascript\">\n<!--\n alert(\"".$clang->gT("Failed to insert label", "js")." - ".$query." - ".$connect->ErrorMsg()."\")\n //-->\n</script>\n";
}
- if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n') {@$connect->Execute('SET IDENTITY_INSERT '.db_table_name('labels')." OFF");}
+ if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative') {@$connect->Execute('SET IDENTITY_INSERT '.db_table_name('labels')." OFF");}
}
}
else
@@ -838,7 +838,7 @@
{
// If question type is not dual scale, then update only if: value is old label code AND question uses the modified label
// If question is Dualscale then check if it uses the modified label as lid or lid1 and check
- if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n')
+ if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative')
{
$query = "UPDATE ".db_table_name('conditions')
." SET value = $newcode "
Index: admin/listcolumn.php
===================================================================
--- admin/listcolumn.php (revision 8454)
+++ admin/listcolumn.php (working copy)
@@ -34,7 +34,7 @@
exit;
}
-if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n')
+if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative')
{ $query = "SELECT id, ".db_quote_id($column)." FROM {$dbprefix}survey_$surveyid WHERE (".db_quote_id($column)." NOT LIKE '')"; }
else
{ $query = "SELECT id, ".db_quote_id($column)." FROM {$dbprefix}survey_$surveyid WHERE (".db_quote_id($column)." != '')"; }
@@ -64,7 +64,7 @@
$listcolumnoutput= "<table width='98%' class='statisticstable' border='1' cellpadding='2' cellspacing='0'>\n";
$listcolumnoutput.= "<thead><tr><th><input type='image' src='$imagefiles/downarrow.png' align='middle' onclick=\"window.open('admin.php?action=listcolumn&sid=$surveyid&column=$column&order=id', '_top')\" /></th>\n";
$listcolumnoutput.= "<th valign='top'><input type='image' align='right' src='$imagefiles/close.gif' onclick='window.close()' />";
-if ($connect->databaseType != 'odbc_mssql' && $connect->databaseType != 'odbtp' && $connect->databaseType != 'mssql_n')
+if ($connect->databaseType != 'odbc_mssql' && $connect->databaseType != 'odbtp' && $connect->databaseType != 'mssql_n' || $connect->databaseType == 'mssqlnative')
{ $listcolumnoutput.= "<input type='image' src='$imagefiles/downarrow.png' align='left' onclick=\"window.open('admin.php?action=listcolumn&sid=$surveyid&column=$column&order=alpha', '_top')\" />"; }
$listcolumnoutput.= "</th></tr>\n";
while ($row=$result->FetchRow())
Index: admin/questionhandling.php
===================================================================
--- admin/questionhandling.php (revision 8454)
+++ admin/questionhandling.php (working copy)
@@ -194,12 +194,12 @@
{
if ($value != 99)
{
- if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n') {@$connect->Execute('SET IDENTITY_INSERT '.db_table_name('questions')." ON");}
+ if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative') {@$connect->Execute('SET IDENTITY_INSERT '.db_table_name('questions')." ON");}
$egquery = "INSERT INTO ".db_table_name('questions')." (qid, sid, gid, type, title, question, preg, help, other, mandatory, lid, lid1, question_order, language)"
." VALUES ('{$qid}','{$surveyid}', '{$gid}', '{$basesettings['type']}', '{$basesettings['title']}',"
." '{$basesettings['question']}', '{$basesettings['preg']}', '{$basesettings['help']}', '{$basesettings['other']}', '{$basesettings['mandatory']}', '{$basesettings['lid']}', '{$basesettings['lid1']}', '{$basesettings['question_order']}','{$key}')";
$egresult = $connect->Execute($egquery);
- if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n') {@$connect->Execute('SET IDENTITY_INSERT '.db_table_name('questions')." OFF");}
+ if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative') {@$connect->Execute('SET IDENTITY_INSERT '.db_table_name('questions')." OFF");}
}
}
Index: admin/remotecontrol/lsrc.helper.php
===================================================================
--- admin/remotecontrol/lsrc.helper.php (revision 8454)
+++ admin/remotecontrol/lsrc.helper.php (working copy)
@@ -4094,7 +4094,7 @@
. "firstname C(40) ,\n "
. "lastname C(40) ,\n ";
//MSSQL needs special treatment because of some strangeness in ADODB
- if ($databasetype == 'odbc_mssql' || $databasetype == 'odbtp' || $databasetype == 'mssql_n')
+ if ($databasetype == 'odbc_mssql' || $databasetype == 'odbtp' || $databasetype == 'mssql_n' || $databasetype == 'mssqlnative')
{
$createtokentable.= "email text ,\n "
."emailstatus text ,\n ";
Index: admin/remotecontrol/lsrc.server.php
===================================================================
--- admin/remotecontrol/lsrc.server.php (revision 8454)
+++ admin/remotecontrol/lsrc.server.php (working copy)
@@ -449,7 +449,7 @@
. "firstname C(40) ,\n "
. "lastname C(40) ,\n ";
//MSSQL needs special treatment because of some strangeness in ADODB
- if ($databasetype == 'odbc_mssql' || $databasetype == 'odbtp' || $databasetype == 'mssql_n')
+ if ($databasetype == 'odbc_mssql' || $databasetype == 'odbtp' || $databasetype == 'mssql_n' || $databasetype == 'mssqlnative')
{
$createtokentable.= "email C(320) ,\n "
."emailstatus C(300) DEFAULT 'OK',\n ";
Index: admin/statistics_function.php
===================================================================
--- admin/statistics_function.php (revision 8454)
+++ admin/statistics_function.php (working copy)
@@ -951,7 +951,7 @@
$fieldname=substr($rt, 1, strlen($rt));
//special treatment for MS SQL databases
- if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n')
+ if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative')
{
//standard deviation
$query = "SELECT STDEVP(".db_quote_id($fieldname)."*1) as stdev";
@@ -978,7 +978,7 @@
//Only select responses where there is an actual number response, ignore nulls and empties (if these are included, they are treated as zeroes, and distort the deviation/mean calculations)
//special treatment for MS SQL databases
- if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n')
+ if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative')
{
//no NULL/empty values please
$query .= " FROM ".db_table_name("survey_$surveyid")." WHERE ".db_quote_id($fieldname)." IS NOT NULL";
@@ -1859,7 +1859,7 @@
{
//get more data
- if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n')
+ if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative')
{
// mssql cannot compare text blobs so we have to cast here
$query = "SELECT count(*) FROM ".db_table_name("survey_$surveyid")." WHERE cast(".db_quote_id($rt)." as varchar)= '$al[0]'";
@@ -1876,7 +1876,7 @@
// ==> value is ''
// * NoAnswer due to conditions, or a page not displayed
// ==> value is NULL
- if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n')
+ if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative')
{
// mssql cannot compare text blobs so we have to cast here
//$query = "SELECT count(*) FROM ".db_table_name("survey_$surveyid")." WHERE (".db_quote_id($rt)." IS NULL "
Index: admin/tokens.php
===================================================================
--- admin/tokens.php (revision 8454)
+++ admin/tokens.php (working copy)
@@ -118,7 +118,7 @@
$bquery = "SELECT * FROM ".db_table_name("tokens_$surveyid").' where 1=1';
if (trim($_POST['filteremail'])!='')
{
- if ($databasetype=='odbc_mssql' || $databasetype=='odbtp' || $databasetype=='mssql_n')
+ if ($databasetype=='odbc_mssql' || $databasetype=='odbtp' || $databasetype=='mssql_n' || $connect->databaseType == 'mssqlnative')
{
$bquery .= ' and CAST(email as varchar) like '.db_quoteall('%'.$_POST['filteremail'].'%', true);
}
@@ -296,7 +296,7 @@
. "firstname C(40),\n "
. "lastname C(40),\n ";
//MSSQL needs special treatment because of some strangeness in ADODB
- if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n')
+ if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative')
{
$createtokentable.= "email C(320),\n "
."emailstatus C(300) DEFAULT 'OK',\n ";
Index: admin/update/updater.php
===================================================================
--- admin/update/updater.php (revision 8454)
+++ admin/update/updater.php (working copy)
@@ -491,7 +491,8 @@
if (intval($dbversionnumber)>intval($currentDBVersion))
{
$upgradedbtype=$databasetype;
- if ($upgradedbtype=='mssql_n' || $upgradedbtype=='odbc_mssql' || $upgradedbtype=='odbtp') $upgradedbtype='mssql';
+ if ($upgradedbtype=='mssql_n' || $upgradedbtype=='odbc_mssql' || $upgradedbtype=='odbtp') $upgradedbtype='mssql';
+ if ($upgradedbtype=='mssqlnative') $upgradedbtype = 'mssqlnative';
if ($upgradedbtype=='mysqli') $upgradedbtype='mysql';
include ('upgrade-'.$upgradedbtype.'.php');
$tables = $connect->MetaTables();
Index: admin/update/upgrade-mssqlnative.php
===================================================================
--- admin/update/upgrade-mssqlnative.php (revision 0)
+++ admin/update/upgrade-mssqlnative.php (revision 0)
@@ -0,0 +1,501 @@
+<?PHP
+/*
+* LimeSurvey
+* Copyright (C) 2007 The LimeSurvey Project Team / Carsten Schmitz
+* All rights reserved.
+* License: http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
+* LimeSurvey is free software. This version may have been modified pursuant
+* to the GNU General Public License, and as distributed it includes or
+* is derivative of works licensed under the GNU General Public License or
+* other free or open source software licenses.
+* See COPYRIGHT.php for copyright notices and details.
+*
+* $Id: upgrade-mssql.php 7556 2009-09-01 23:48:37Z c_schmitz $
+*/
+
+// There will be a file for each database (accordingly named to the dbADO scheme)
+// where based on the current database version the database is upgraded
+// For this there will be a settings table which holds the last time the database was upgraded
+
+function db_upgrade($oldversion) {
+/// This function does anything necessary to upgrade
+/// older versions to match current functionality
+ global $modifyoutput, $dbprefix;
+ echo str_pad('Starting database update ('.date('Y-m-d H:i:s').')',4096)."<br />\n";
+ if ($oldversion < 111) {
+
+ // Language upgrades from version 110 to 111 since the language names did change
+
+ $oldnewlanguages=array('german_informal'=>'german-informal',
+ 'cns'=>'cn-Hans',
+ 'cnt'=>'cn-Hant',
+ 'pt_br'=>'pt-BR',
+ 'gr'=>'el',
+ 'jp'=>'ja',
+ 'si'=>'sl',
+ 'se'=>'sv',
+ 'vn'=>'vi');
+
+ foreach ($oldnewlanguages as $oldlang=>$newlang)
+ {
+ modify_database("","update [prefix_answers] set [language`='$newlang' where language='$oldlang'"); echo $modifyoutput; flush();
+ modify_database("","update [prefix_questions] set [language`='$newlang' where language='$oldlang'");echo $modifyoutput; flush();
+ modify_database("","update [prefix_groups] set [language`='$newlang' where language='$oldlang'");echo $modifyoutput; flush();
+ modify_database("","update [prefix_labels] set [language`='$newlang' where language='$oldlang'");echo $modifyoutput; flush();
+ modify_database("","update [prefix_surveys] set [language`='$newlang' where language='$oldlang'");echo $modifyoutput; flush();
+ modify_database("","update [prefix_surveys_languagesettings] set [surveyls_language`='$newlang' where surveyls_language='$oldlang'");echo $modifyoutput; flush();
+ modify_database("","update [prefix_users] set [lang`='$newlang' where lang='$oldlang'");echo $modifyoutput; flush();
+ }
+
+
+
+ $resultdata=db_execute_assoc("select * from ".db_table_name("labelsets"));
+ while ($datarow = $resultdata->FetchRow()){
+ $toreplace=$datarow['languages'];
+ $toreplace=str_replace('german_informal','german-informal',$toreplace);
+ $toreplace=str_replace('cns','cn-Hans',$toreplace);
+ $toreplace=str_replace('cnt','cn-Hant',$toreplace);
+ $toreplace=str_replace('pt_br','pt-BR',$toreplace);
+ $toreplace=str_replace('gr','el',$toreplace);
+ $toreplace=str_replace('jp','ja',$toreplace);
+ $toreplace=str_replace('si','sl',$toreplace);
+ $toreplace=str_replace('se','sv',$toreplace);
+ $toreplace=str_replace('vn','vi',$toreplace);
+ modify_database("","update [prefix_labelsets] set [languages`='$toreplace' where lid=".$datarow['lid']);echo $modifyoutput;flush();
+ }
+
+
+ $resultdata=db_execute_assoc("select * from ".db_table_name("surveys"));
+ while ($datarow = $resultdata->FetchRow()){
+ $toreplace=$datarow['additional_languages'];
+ $toreplace=str_replace('german_informal','german-informal',$toreplace);
+ $toreplace=str_replace('cns','cn-Hans',$toreplace);
+ $toreplace=str_replace('cnt','cn-Hant',$toreplace);
+ $toreplace=str_replace('pt_br','pt-BR',$toreplace);
+ $toreplace=str_replace('gr','el',$toreplace);
+ $toreplace=str_replace('jp','ja',$toreplace);
+ $toreplace=str_replace('si','sl',$toreplace);
+ $toreplace=str_replace('se','sv',$toreplace);
+ $toreplace=str_replace('vn','vi',$toreplace);
+ modify_database("","update [prefix_surveys] set [additional_languages`='$toreplace' where sid=".$datarow['sid']);echo $modifyoutput;flush();
+ }
+ modify_database("","update [prefix_settings_global] set [stg_value]='111' where stg_name='DBVersion'"); echo $modifyoutput;
+
+ }
+
+ if ($oldversion < 112) {
+ //The size of the users_name field is now 64 char (20 char before version 112)
+ modify_database("","ALTER TABLE [prefix_users] ALTER COLUMN [users_name] VARCHAR( 64 ) NOT NULL"); echo $modifyoutput; flush();
+ modify_database("","update [prefix_settings_global] set [stg_value]='112' where stg_name='DBVersion'"); echo $modifyoutput; flush();
+ }
+
+ if ($oldversion < 113) {
+ //No action needed
+ modify_database("","update [prefix_settings_global] set [stg_value]='113' where stg_name='DBVersion'"); echo $modifyoutput; flush();
+ }
+
+ if ($oldversion < 114) {
+ modify_database("","ALTER TABLE [prefix_saved_control] ALTER COLUMN [email] VARCHAR(320) NOT NULL"); echo $modifyoutput; flush();
+ modify_database("","ALTER TABLE [prefix_surveys] ALTER COLUMN [adminemail] VARCHAR(320) NOT NULL"); echo $modifyoutput; flush();
+ modify_database("","ALTER TABLE [prefix_users] ALTER COLUMN [email] VARCHAR(320) NOT NULL"); echo $modifyoutput; flush();
+ modify_database("",'INSERT INTO [prefix_settings_global] VALUES (\'SessionName\', \'$sessionname\');');echo $modifyoutput; flush();
+ modify_database("","update [prefix_settings_global] set [stg_value]='114' where stg_name='DBVersion'"); echo $modifyoutput; flush();
+ }
+
+ if ($oldversion < 126) {
+ modify_database("","ALTER TABLE [prefix_surveys] ADD [printanswers] CHAR(1) DEFAULT 'N'"); echo $modifyoutput; flush();
+ modify_database("","ALTER TABLE [prefix_surveys] ADD [listpublic] CHAR(1) DEFAULT 'N'"); echo $modifyoutput; flush();
+ upgrade_survey_tables117();
+ upgrade_survey_tables118();
+ //119
+ modify_database("","CREATE TABLE [prefix_quota] (
+ [id] int NOT NULL IDENTITY (1,1),
+ [sid] int,
+ [name] varchar(255) ,
+ [qlimit] int ,
+ [action] int ,
+ [active] int NOT NULL default '1',
+ PRIMARY KEY ([id])
+ );");echo $modifyoutput; flush();
+ modify_database("","CREATE TABLE [prefix_quota_members] (
+ [id] int NOT NULL IDENTITY (1,1),
+ [sid] int ,
+ [qid] int ,
+ [quota_id] int ,
+ [code] varchar(5) ,
+ PRIMARY KEY ([id])
+ );");echo $modifyoutput; flush();
+
+ // Rename Norwegian language code from NO to NB
+ $oldnewlanguages=array('no'=>'nb');
+ foreach ($oldnewlanguages as $oldlang=>$newlang)
+ {
+ modify_database("","update [prefix_answers] set [language]='$newlang' where [language]='$oldlang'");echo $modifyoutput;flush();
+ modify_database("","update [prefix_questions] set [language]='$newlang' where [language]='$oldlang'");echo $modifyoutput;flush();
+ modify_database("","update [prefix_groups] set [language]='$newlang' where [language]='$oldlang'");echo $modifyoutput;flush();
+ modify_database("","update [prefix_labels] set [language]='$newlang' where [language]='$oldlang'");echo $modifyoutput;flush();
+ modify_database("","update [prefix_surveys] set [language]='$newlang' where [language]='$oldlang'");echo $modifyoutput;flush();
+ modify_database("","update [prefix_surveys_languagesettings] set [surveyls_language]='$newlang' where surveyls_language='$oldlang'");echo $modifyoutput;flush();
+ modify_database("","update [prefix_users] set [lang]='$newlang' where lang='$oldlang'");echo $modifyoutput;flush();
+ }
+
+ $resultdata=db_execute_assoc("select * from ".db_table_name("labelsets"));
+ while ($datarow = $resultdata->FetchRow()){
+ $toreplace=$datarow['languages'];
+ $toreplace2=str_replace('no','nb',$toreplace);
+ if ($toreplace2!=$toreplace) {modify_database("","update [prefix_labelsets] set [languages]='$toreplace' where lid=".$datarow['lid']);echo $modifyoutput;flush();}
+ }
+
+ $resultdata=db_execute_assoc("select * from ".db_table_name("surveys"));
+ while ($datarow = $resultdata->FetchRow()){
+ $toreplace=$datarow['additional_languages'];
+ $toreplace2=str_replace('no','nb',$toreplace);
+ if ($toreplace2!=$toreplace) {modify_database("","update [prefix_surveys] set [additional_languages]='$toreplace' where sid=".$datarow['sid']);echo $modifyoutput;flush();}
+ }
+
+ modify_database("","ALTER TABLE [prefix_surveys] ADD [htmlemail] CHAR(1) DEFAULT 'N'"); echo $modifyoutput; flush();
+ modify_database("","ALTER TABLE [prefix_surveys] ADD [usecaptcha] CHAR(1) DEFAULT 'N'"); echo $modifyoutput; flush();
+ modify_database("","ALTER TABLE [prefix_surveys] ADD [tokenanswerspersistence] CHAR(1) DEFAULT 'N'"); echo $modifyoutput; flush();
+ modify_database("","ALTER TABLE [prefix_users] ADD [htmleditormode] CHAR(7) DEFAULT 'default'"); echo $modifyoutput; flush();
+ modify_database("","CREATE TABLE [prefix_templates_rights] (
+ [uid] int NOT NULL,
+ [folder] varchar(255) NOT NULL,
+ [use] int NOT NULL,
+ PRIMARY KEY ([uid],[folder])
+ );");echo $modifyoutput; flush();
+ modify_database("","CREATE TABLE [prefix_templates] (
+ [folder] varchar(255) NOT NULL,
+ [creator] int NOT NULL,
+ PRIMARY KEY ([folder])
+ );");echo $modifyoutput; flush();
+ //123
+ modify_database("","ALTER TABLE [prefix_conditions] ALTER COLUMN [value] VARCHAR(255)"); echo $modifyoutput; flush();
+ // There is no other way to remove the previous default value
+ /*modify_database("","DECLARE @STR VARCHAR(100)
+ SET @STR = (
+ SELECT NAME
+ FROM SYSOBJECTS SO
+ JOIN SYSCONSTRAINTS SC ON SO.ID = SC.CONSTID
+ WHERE OBJECT_NAME(SO.PARENT_OBJ) = 'lime_labels'
+ AND SO.XTYPE = 'D' AND SC.COLID =
+ (SELECT COLID FROM SYSCOLUMNS WHERE ID = OBJECT_ID('lime_labels') AND NAME = 'title'))
+ SET @STR = 'ALTER TABLE lime_labels DROP CONSTRAINT ' + @STR
+ exec (@STR);"); echo $modifyoutput; flush(); */
+
+ modify_database("","ALTER TABLE [prefix_labels] ALTER COLUMN [title] varchar(4000)"); echo $modifyoutput; flush();
+ //124
+ modify_database("","ALTER TABLE [prefix_surveys] ADD [bounce_email] varchar(max)"); echo $modifyoutput; flush();
+ //125
+ upgrade_token_tables125();
+ modify_database("","EXEC sp_rename 'prefix_users.move_user','superadmin'"); echo $modifyoutput; flush();
+ modify_database("","UPDATE [prefix_users] SET [superadmin]=1 where ([create_survey]=1 AND [create_user]=1 AND [delete_user]=1 AND [configurator]=1)"); echo $modifyoutput; flush();
+ //126
+ modify_database("","ALTER TABLE [prefix_questions] ADD [lid1] int NOT NULL DEFAULT '0'"); echo $modifyoutput; flush();
+ modify_database("","UPDATE [prefix_conditions] SET [method]='==' where ( [method] is null) or [method]='' or [method]='0'"); echo $modifyoutput; flush();
+
+ modify_database("","update [prefix_settings_global] set [stg_value]='126' where stg_name='DBVersion'"); echo $modifyoutput; flush();
+ }
+
+ if ($oldversion < 127) {
+ modify_database("","create index [answers_idx2] on [prefix_answers] ([sortorder])"); echo $modifyoutput;
+ modify_database("","create index [assessments_idx2] on [prefix_assessments] ([sid])"); echo $modifyoutput;
+ modify_database("","create index [assessments_idx3] on [prefix_assessments] ([gid])"); echo $modifyoutput;
+ modify_database("","create index [conditions_idx2] on [prefix_conditions] ([qid])"); echo $modifyoutput;
+ modify_database("","create index [conditions_idx3] on [prefix_conditions] ([cqid])"); echo $modifyoutput;
+ modify_database("","create index [groups_idx2] on [prefix_groups] ([sid])"); echo $modifyoutput;
+ modify_database("","create index [question_attributes_idx2] on [prefix_question_attributes] ([qid])"); echo $modifyoutput;
+ modify_database("","create index [questions_idx2] on [prefix_questions] ([sid])"); echo $modifyoutput;
+ modify_database("","create index [questions_idx3] on [prefix_questions] ([gid])"); echo $modifyoutput;
+ modify_database("","create index [questions_idx4] on [prefix_questions] ([type])"); echo $modifyoutput;
+ modify_database("","create index [quota_idx2] on [prefix_quota] ([sid])"); echo $modifyoutput;
+ modify_database("","create index [saved_control_idx2] on [prefix_saved_control] ([sid])"); echo $modifyoutput;
+ modify_database("","create index [user_in_groups_idx1] on [prefix_user_in_groups] ([ugid], [uid])"); echo $modifyoutput;
+ modify_database("","update [prefix_settings_global] set [stg_value]='127' where stg_name='DBVersion'"); echo $modifyoutput; flush();
+}
+
+ if ($oldversion < 128) {
+ upgrade_token_tables128();
+ modify_database("","update [prefix_settings_global] set [stg_value]='128' where stg_name='DBVersion'"); echo $modifyoutput; flush();
+ }
+
+ if ($oldversion < 129) {
+ //128
+ modify_database("","ALTER TABLE [prefix_surveys] ADD [startdate] DATETIME"); echo $modifyoutput; flush();
+ modify_database("","ALTER TABLE [prefix_surveys] ADD [usestartdate] char(1) NOT NULL default 'N'"); echo $modifyoutput; flush();
+ modify_database("","update [prefix_settings_global] set [stg_value]='129' where stg_name='DBVersion'"); echo $modifyoutput; flush();
+ }
+ if ($oldversion < 130)
+ {
+ modify_database("","ALTER TABLE [prefix_conditions] ADD [scenario] int NOT NULL DEFAULT '1'"); echo $modifyoutput; flush();
+ modify_database("","UPDATE [prefix_conditions] SET [scenario]=1 where ( [scenario] is null) or [scenario]='' or [scenario]=0"); echo $modifyoutput; flush();
+ modify_database("","update [prefix_settings_global] set [stg_value]='130' where stg_name='DBVersion'"); echo $modifyoutput; flush();
+ }
+ if ($oldversion < 131)
+ {
+ modify_database("","ALTER TABLE [prefix_surveys] ADD [publicstatistics] char(1) NOT NULL default 'N'"); echo $modifyoutput; flush();
+ modify_database("","update [prefix_settings_global] set [stg_value]='131' where stg_name='DBVersion'"); echo $modifyoutput; flush();
+ }
+ if ($oldversion < 132)
+ {
+ modify_database("","ALTER TABLE [prefix_surveys] ADD [publicgraphs] char(1) NOT NULL default 'N'"); echo $modifyoutput; flush();
+ modify_database("","update [prefix_settings_global] set [stg_value]='132' where stg_name='DBVersion'"); echo $modifyoutput; flush();
+ }
+
+ if ($oldversion < 133)
+ {
+ modify_database("","ALTER TABLE [prefix_users] ADD [one_time_pw] varchar(max)"); echo $modifyoutput; flush();
+ // Add new assessment setting
+ modify_database("","ALTER TABLE [prefix_surveys] ADD [assessments] char(1) NOT NULL default 'N'"); echo $modifyoutput; flush();
+ // add new assessment value fields to answers & labels
+ modify_database("","ALTER TABLE [prefix_answers] ADD [assessment_value] int NOT NULL default '0'"); echo $modifyoutput; flush();
+ modify_database("","ALTER TABLE [prefix_labels] ADD [assessment_value] int NOT NULL default '0'"); echo $modifyoutput; flush();
+ // copy any valid codes from code field to assessment field
+ modify_database("","update [prefix_answers] set [assessment_value]=CAST([code] as int)");// no output here is intended
+ modify_database("","update [prefix_labels] set [assessment_value]=CAST([code] as int)");// no output here is intended
+ // activate assessment where assesment rules exist
+ modify_database("","update [prefix_surveys] set [assessments]='Y' where [sid] in (SELECT [sid] FROM [prefix_assessments] group by [sid])"); echo $modifyoutput; flush();
+ // add language field to assessment table
+ modify_database("","ALTER TABLE [prefix_assessments] ADD [language] varchar(20) NOT NULL default 'en'"); echo $modifyoutput; flush();
+ // update language field with default language of that particular survey
+ modify_database("","update [prefix_assessments] set [language]=(select [language] from [prefix_surveys] where [sid]=[prefix_assessments].[sid])"); echo $modifyoutput; flush();
+ // copy assessment link to message since from now on we will have HTML assignment messages
+ modify_database("","update [prefix_assessments] set [message]=cast([message] as varchar) +'<br /><a href=\"'+[link]+'\">'+[link]+'</a>'"); echo $modifyoutput; flush();
+ // drop the old link field
+ modify_database("","ALTER TABLE [prefix_assessments] DROP COLUMN [link]"); echo $modifyoutput; flush();
+ // change the primary index to include language
+ // and fix missing translations for assessments
+ upgrade_survey_tables133a();
+
+ // Add new fields to survey language settings
+ modify_database("","ALTER TABLE [prefix_surveys_languagesettings] ADD [surveyls_url] varchar(255)"); echo $modifyoutput; flush();
+ modify_database("","ALTER TABLE [prefix_surveys_languagesettings] ADD [surveyls_endtext] varchar(max)"); echo $modifyoutput; flush();
+ // copy old URL fields ot language specific entries
+ modify_database("","update [prefix_surveys_languagesettings] set [surveyls_url]=(select [url] from [prefix_surveys] where [sid]=[prefix_surveys_languagesettings].[surveyls_survey_id])"); echo $modifyoutput; flush();
+ // drop old URL field
+ mssql_drop_constraint('url','surveys');
+ modify_database("","ALTER TABLE [prefix_surveys] DROP COLUMN [url]"); echo $modifyoutput; flush();
+
+ modify_database("","update [prefix_settings_global] set [stg_value]='133' where stg_name='DBVersion'"); echo $modifyoutput; flush();
+ }
+
+ if ($oldversion < 134)
+ {
+ // Add new assessment setting
+ modify_database("","ALTER TABLE [prefix_surveys] ADD [usetokens] char(1) NOT NULL default 'N'"); echo $modifyoutput; flush();
+ mssql_drop_constraint('attribute1','surveys');
+ mssql_drop_constraint('attribute2','surveys');
+ modify_database("", "ALTER TABLE [prefix_surveys] ADD [attributedescriptions] varchar(max);"); echo $modifyoutput; flush();
+ modify_database("","ALTER TABLE [prefix_surveys] DROP COLUMN [attribute1]"); echo $modifyoutput; flush();
+ modify_database("","ALTER TABLE [prefix_surveys] DROP COLUMN [attribute2]"); echo $modifyoutput; flush();
+ upgrade_token_tables134();
+ modify_database("","update [prefix_settings_global] set [stg_value]='134' where stg_name='DBVersion'"); echo $modifyoutput; flush();
+ }
+ if ($oldversion < 135)
+ {
+ mssql_drop_constraint('value','question_attributes');
+ modify_database("","ALTER TABLE [prefix_question_attributes] ALTER COLUMN [value] varchar(max)"); echo $modifyoutput; flush();
+ modify_database("","ALTER TABLE [prefix_answers] ALTER COLUMN [answer] varchar(8000)"); echo $modifyoutput; flush();
+ modify_database("","update [prefix_settings_global] set [stg_value]='135' where stg_name='DBVersion'"); echo $modifyoutput; flush();
+ }
+ if ($oldversion < 136) //New quota functions
+ {
+ modify_database("", "ALTER TABLE[prefix_quota] ADD [autoload_url] int NOT NULL default '0'"); echo $modifyoutput; flush();
+ modify_database("","CREATE TABLE [prefix_quota_languagesettings] (
+ [quotals_id] int NOT NULL IDENTITY (1,1),
+ [quotals_quota_id] int,
+ [quotals_language] varchar(45) NOT NULL default 'en',
+ [quotals_name] varchar(255),
+ [quotals_message] varchar(max),
+ [quotals_url] varchar(255),
+ [quotals_urldescrip] varchar(255),
+ PRIMARY KEY ([quotals_id])
+ );");echo $modifyoutput; flush();
+ modify_database("","update [prefix_settings_global] set [stg_value]='136' where stg_name='DBVersion'"); echo $modifyoutput; flush();
+ }
+ if ($oldversion < 137) //New date format specs
+ {
+ modify_database("", "ALTER TABLE [prefix_surveys_languagesettings] ADD [surveyls_dateformat] int NOT NULL default '1'"); echo $modifyoutput; flush();
+ modify_database("", "ALTER TABLE [prefix_users] ADD [dateformat] int NOT NULL default '1'"); echo $modifyoutput; flush();
+ modify_database("", "update [prefix_surveys] set startdate=null where usestartdate='N'"); echo $modifyoutput; flush();
+ modify_database("", "update [prefix_surveys] set expires=null where useexpiry='N'"); echo $modifyoutput; flush();
+ mssql_drop_constraint('usestartdate','surveys');
+ mssql_drop_constraint('useexpiry','surveys');
+ modify_database("", "ALTER TABLE [prefix_surveys] DROP COLUMN usestartdate"); echo $modifyoutput; flush();
+ modify_database("", "ALTER TABLE [prefix_surveys] DROP COLUMN useexpiry"); echo $modifyoutput; flush();
+ modify_database("","update [prefix_settings_global] set [stg_value]='137' where stg_name='DBVersion'"); echo $modifyoutput; flush();
+ }
+
+ if ($oldversion < 138) //Modify quota field
+ {
+ modify_database("", "ALTER TABLE [prefix_quota_members] ALTER COLUMN [code] VARCHAR(11) NULL"); echo $modifyoutput; flush();
+ modify_database("", "UPDATE [prefix_settings_global] SET [stg_value]='138' WHERE stg_name='DBVersion'"); echo $modifyoutput; flush();
+ }
+
+ if ($oldversion < 139) //Modify quota field
+ {
+ upgrade_survey_tables139();
+ modify_database("", "UPDATE [prefix_settings_global] SET [stg_value]='139' WHERE stg_name='DBVersion'"); echo $modifyoutput; flush();
+ }
+
+ if ($oldversion < 140) //Modify surveys table
+ {
+ modify_database("", "ALTER TABLE [prefix_surveys] ADD [emailresponseto] varchar(max)"); echo $modifyoutput; flush();
+ modify_database("", "UPDATE [prefix_settings_global] SET [stg_value]='140' WHERE stg_name='DBVersion'"); echo $modifyoutput; flush();
+ }
+
+ if ($oldversion < 141) //Modify surveys table
+ {
+ modify_database("", "ALTER TABLE [prefix_surveys] ADD [tokenlength] tinyint NOT NULL default '15'"); echo $modifyoutput; flush();
+ modify_database("", "UPDATE [prefix_settings_global] SET [stg_value]='141' WHERE stg_name='DBVersion'"); echo $modifyoutput; flush();
+ }
+
+ if ($oldversion < 142) //Modify surveys table
+ {
+ upgrade_question_attributes142();
+ modify_database("", "ALTER TABLE [prefix_surveys] ALTER COLUMN [startdate] datetime NULL"); echo $modifyoutput; flush();
+ modify_database("", "ALTER TABLE [prefix_surveys] ALTER COLUMN [expires] datetime NULL"); echo $modifyoutput; flush();
+ modify_database("", "UPDATE [prefix_question_attributes] SET [value]='0' WHERE cast([value] as varchar)='false'"); echo $modifyoutput; flush();
+ modify_database("", "UPDATE [prefix_question_attributes] SET [value]='1' WHERE cast([value] as varchar)='true'"); echo $modifyoutput; flush();
+ modify_database("", "UPDATE [prefix_settings_global] SET [stg_value]='142' WHERE stg_name='DBVersion'"); echo $modifyoutput; flush();
+ }
+ echo '<br /><br />Database update finished ('.date('Y-m-d H:i:s').')<br />';
+ return true;
+}
+
+function upgrade_survey_tables117()
+{
+ global $modifyoutput;
+ $surveyidquery = "SELECT sid FROM ".db_table_name('surveys')." WHERE active='Y' and datestamp='Y'";
+ $surveyidresult = db_execute_num($surveyidquery);
+ if (!$surveyidresult) {return "Database Error";}
+ else
+ {
+ while ( $sv = $surveyidresult->FetchRow() )
+ {
+ modify_database("","ALTER TABLE ".db_table_name('survey_'.$sv[0])." ADD [startdate] datetime"); echo $modifyoutput; flush();
+ }
+ }
+}
+
+
+function upgrade_survey_tables118()
+{
+ global $connect,$modifyoutput,$dbprefix;
+ $tokentables=$connect->MetaTables('TABLES',false,$dbprefix."tokens%");
+ foreach ($tokentables as $sv)
+ {
+ modify_database("","ALTER TABLE ".$sv." ALTER COLUMN [token] VARCHAR(36)"); echo $modifyoutput; flush();
+ }
+}
+
+
+function upgrade_token_tables125()
+{
+ global $connect,$modifyoutput,$dbprefix;
+ $tokentables=$connect->MetaTables('TABLES',false,$dbprefix."tokens%");
+ foreach ($tokentables as $sv)
+ {
+ modify_database("","ALTER TABLE ".$sv." ADD [emailstatus] VARCHAR(300) DEFAULT 'OK'"); echo $modifyoutput; flush();
+ }
+}
+
+
+function upgrade_token_tables128()
+{
+ global $connect,$modifyoutput,$dbprefix;
+ $tokentables=$connect->MetaTables('TABLES',false,$dbprefix."tokens%");
+ foreach ($tokentables as $sv)
+ {
+ modify_database("","ALTER TABLE ".$sv." ADD [remindersent] VARCHAR(17) DEFAULT 'OK'"); echo $modifyoutput; flush();
+ modify_database("","ALTER TABLE ".$sv." ADD [remindercount] int DEFAULT '0'"); echo $modifyoutput; flush();
+ }
+}
+
+
+function upgrade_survey_tables133a()
+{
+ global $dbprefix, $connect, $modifyoutput;
+ // find out the constraint name of the old primary key
+ $pkquery = " SELECT CONSTRAINT_NAME "
+ ."FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS "
+ ."WHERE (TABLE_NAME = '{$dbprefix}assessments') AND (CONSTRAINT_TYPE = 'PRIMARY KEY')";
+
+ $primarykey=$connect->GetRow($pkquery);
+ if ($primarykey!=false)
+ {
+ modify_database("","ALTER TABLE [prefix_assessments] DROP CONSTRAINT {$primarykey[0]}"); echo $modifyoutput; flush();
+ }
+ // add the new primary key
+ modify_database("","ALTER TABLE [prefix_assessments] ADD CONSTRAINT pk_assessments_id_lang PRIMARY KEY ([id],[language])"); echo $modifyoutput; flush();
+ $surveyidquery = "SELECT sid,additional_languages FROM ".db_table_name('surveys');
+ $surveyidresult = db_execute_num($surveyidquery);
+ while ( $sv = $surveyidresult->FetchRow() )
+ {
+ FixLanguageConsistency($sv[0],$sv[1]);
+ }
+}
+
+
+function upgrade_token_tables134()
+{
+ global $connect,$modifyoutput,$dbprefix;
+ $tokentables=$connect->MetaTables('TABLES',false,$dbprefix."tokens%");
+ foreach ($tokentables as $sv)
+ {
+ modify_database("","ALTER TABLE ".$sv." ADD [validfrom] DATETIME"); echo $modifyoutput; flush();
+ modify_database("","ALTER TABLE ".$sv." ADD [validuntil] DATETIME"); echo $modifyoutput; flush();
+ }
+}
+
+function mssql_drop_constraint($fieldname, $tablename)
+{
+ global $dbprefix, $connect, $modifyoutput;
+ // find out the name of the default constraint
+ // Did I already mention that this is the most suckiest thing I have ever seen in MSSQL database?
+ // It proves how badly designer some Microsoft software is!
+ $dfquery ="SELECT c_obj.name AS constraint_name
+ FROM sys.sysobjects AS c_obj INNER JOIN
+ sys.sysobjects AS t_obj ON c_obj.parent_obj = t_obj.id INNER JOIN
+ sys.sysconstraints AS con ON c_obj.id = con.constid INNER JOIN
+ sys.syscolumns AS col ON t_obj.id = col.id AND con.colid = col.colid
+ WHERE (c_obj.xtype = 'D') AND (col.name = '$fieldname') AND (t_obj.name='$dbprefix$tablename')";
+ $defaultname=$connect->GetRow($dfquery);
+ if ($defaultname!=false)
+ {
+ modify_database("","ALTER TABLE [prefix_$tablename] DROP CONSTRAINT {$defaultname[0]}"); echo $modifyoutput; flush();
+ }
+
+
+}
+
+function upgrade_survey_tables139()
+{
+ global $modifyoutput,$dbprefix;
+ $surveyidquery = db_select_tables_like($dbprefix."survey_%");
+ $surveyidresult = db_execute_num($surveyidquery);
+ if (!$surveyidresult) {return "Database Error";}
+ else
+ {
+ while ( $sv = $surveyidresult->FetchRow() )
+ {
+ modify_database("","ALTER TABLE ".$sv[0]." ADD [lastpage] int"); echo $modifyoutput; flush();
+ }
+ }
+}
+
+function upgrade_question_attributes142()
+{
+ global $modifyoutput,$dbprefix, $connect;
+ $attributequery="Select qid from {$dbprefix}question_attributes where attribute='exclude_all_other' group by qid having count(qid)>1 ";
+ $questionids = db_select_column($attributequery);
+ foreach ($questionids as $questionid)
+ {
+ //Select all affected question attributes
+ $attributevalues=db_select_column("SELECT value from {$dbprefix}question_attributes where attribute='exclude_all_other' and qid=".$questionid);
+ modify_database("","delete from {$dbprefix}question_attributes where attribute='exclude_all_other' and qid=".$questionid); echo $modifyoutput; flush();
+ $record['value']=implode(';',$attributevalues);
+ $record['attribute']='exclude_all_other';
+ $record['qid']=$questionid;
+ $connect->AutoExecute("{$dbprefix}question_attributes", $record, 'INSERT');
+ }
+}
\ No newline at end of file
Index: admin/vvimport.php
===================================================================
--- admin/vvimport.php (revision 8454)
+++ admin/vvimport.php (working copy)
@@ -284,7 +284,7 @@
}
if (isset($fielddata['id']))
{
- if ($databasetype=='odbc_mssql' || $databasetype=='odbtp' || $databasetype=='mssql_n') {$connect->Execute('SET IDENTITY_INSERT '.$surveytable." ON");} //Checked
+ if ($databasetype=='odbc_mssql' || $databasetype=='odbtp' || $databasetype=='mssql_n' || $connect->databaseType == 'mssqlnative') {$connect->Execute('SET IDENTITY_INSERT '.$surveytable." ON");} //Checked
}
// try again, without the 'id' field.
@@ -296,7 +296,7 @@
if (isset($fielddata['id']))
{
- if ($databasetype=='odbc_mssql' || $databasetype=='odbtp' || $databasetype=='mssql_n') {$connect->Execute('SET IDENTITY_INSERT '.$surveytable." OFF");} //Checked
+ if ($databasetype=='odbc_mssql' || $databasetype=='odbtp' || $databasetype=='mssql_n' || $connect->databaseType == 'mssqlnative') {$connect->Execute('SET IDENTITY_INSERT '.$surveytable." OFF");} //Checked
}
Index: common.php
===================================================================
--- common.php (revision 8454)
+++ common.php (working copy)
@@ -154,7 +154,8 @@
case "mysql": if ($databaseport!="default") {$dbhost="$databaselocation:$databaseport";}
else {$dbhost=$databaselocation;}
break;
- case "mssql_n":
+ case "mssql_n":
+ case "mssqlnative":
case "mssql": if ($databaseport!="default") {$dbhost="$databaselocation,$databaseport";}
else {$dbhost=$databaselocation;}
break;
@@ -215,7 +216,7 @@
}
// Setting dateformat for mssql driver. It seems if you don't do that the in- and output format could be different
-if ($databasetype=='odbc_mssql' || $databasetype=='odbtp' || $databasetype=='mssql_n') {
+if ($databasetype=='odbc_mssql' || $databasetype=='odbtp' || $databasetype=='mssql_n' || $databasetype=='mssqlnative') {
@$connect->Execute('SET DATEFORMAT ymd;'); //Checked
@$connect->Execute('SET QUOTED_IDENTIFIER ON;'); //Checked
}
@@ -530,6 +531,7 @@
break;
case "mssql_n" :
case "mssql" :
+ case "mssqlnative" :
case "odbc_mssql" :
return "[".$id."]";
break;
Index: config-defaults.php
===================================================================
--- config-defaults.php (revision 8454)
+++ config-defaults.php (working copy)
@@ -28,6 +28,7 @@
// mysql: Recommended driver for mysql
// mysqli: Slightly faster driver for mysql - not on all server systems available
// odbc_mssql: MSSQL driver for easy run with MS SQL Server
+ // mssqlnative: Native SQL Server driver for SQL Server 2005+
// mssql_n: Experimental driver for MS SQL Server which handles UTF-8 charsets
// odbtp: Best choice for MSSQL-Server to handle UTF-8 correctly - we recommend to activate $databasepersistent for decent speed
// postgres: Standard postgres driver
Index: config.php
===================================================================
--- config.php (revision 8454)
+++ config.php (working copy)
@@ -28,11 +28,12 @@
// mysql: Recommended driver for mysql
// mysqli: Slightly faster driver for mysql - not on all server systems available
// odbc_mssql: MSSQL driver using ODBC with MS SQL Server
+ // mssqlnative: Native SQL Server driver for SQL Server 2005+
// mssql_n: Experimental driver for MS SQL Server which handles UTF-8 charsets
// odbtp: ODBTP driver to access MSSQL-Server is needed for this one - we also recommend to activate $databasepersistent for decent speed
// postgres: Standard postgres driver
-$databaselocation = 'localhost'; // Network location of your Database - for odbc_mssql use the mssql servername, not localhost or IP
+$databaselocation = 'localhost'; // Network location of your Database - for odbc_mssql or mssqlnative use the mssql servername, not localhost or IP
$databasename = 'limesurvey'; // The name of the database that we will create
$databaseuser = 'root'; // The name of a user with rights to create db (or if db already exists, then rights within that db)
$databasepass = ''; // Password of db user
Index: index.php
===================================================================
--- index.php (revision 8454)
+++ index.php (working copy)
@@ -782,7 +782,7 @@
}
$query .="AND ".db_table_name('saved_control').".identifier = '".auto_escape($_SESSION['holdname'])."' ";
- if ($databasetype=='odbc_mssql' || $databasetype=='odbtp' || $databasetype=='mssql_n')
+ if ($databasetype=='odbc_mssql' || $databasetype=='odbtp' || $databasetype=='mssql_n' || $databasetype=='mssqlnative')
{
$query .="AND CAST(".db_table_name('saved_control').".access_code as varchar(32))= '".md5(auto_unescape($_SESSION['holdpass']))."'\n";
}
Index: statistics_user.php
===================================================================
--- statistics_user.php (revision 8454)
+++ statistics_user.php (working copy)
@@ -183,7 +183,7 @@
."AND ".db_table_name("questions").".sid=$surveyid\n"
."AND ".db_table_name("questions").".qid=".db_table_name("question_attributes").".qid\n"
."AND ".db_table_name("question_attributes").".attribute='public_statistics'\n";
-if ($databasetype=='mssql_n' or $databasetype=='mssql' or $databasetype=='odbc_mssql' )
+if ($databasetype=='mssql_n' or $databasetype=='mssql' or $databasetype=='odbc_mssql' or $databasetype=="mssqlnative")
{
$query .="AND CAST(CAST(".db_table_name("question_attributes").".value as varchar) as int)='1'\n";
}
@@ -878,7 +878,7 @@
$fieldname=substr($rt, 1, strlen($rt));
//special treatment for MS SQL databases
- if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n')
+ if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative')
{
//standard deviation
$query = "SELECT STDEVP(".db_quote_id($fieldname)."*1) as stdev";
@@ -906,7 +906,7 @@
//Only select responses where there is an actual number response, ignore nulls and empties (if these are included, they are treated as zeroes, and distort the deviation/mean calculations)
//special treatment for MS SQL databases
- if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n')
+ if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative')
{
//no NULL/empty values please
$query .= " FROM ".db_table_name("survey_$surveyid")." WHERE ".db_quote_id($fieldname)." IS NOT NULL";
@@ -1565,7 +1565,7 @@
else
{
//get more data
- if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n')
+ if ($connect->databaseType == 'odbc_mssql' || $connect->databaseType == 'odbtp' || $connect->databaseType == 'mssql_n' || $connect->databaseType == 'mssqlnative')
{
// mssql cannot compare text blobs so we have to cast here
$query = "SELECT count(*) FROM ".db_table_name("survey_$surveyid")." WHERE cast(".db_quote_id($rt)." as varchar)= '$al[0]'";
| |||||
Notes |
|
|
c_schmitz (administrator) 2010-03-17 19:29 |
Hi The patch looks great - I have a couple questions: - Why do you need a separate file create-mssqlnative.sql - I can only see that TEXT were replaced with VARCHAR(MAX) (which is only available in SLQ server 2005+) -So, does this driver generally not work with TEXT fields? Is it not backward compatible to older versions? |
Issue History |
|||
| Date Modified | Username | Field | Change |
| 2010-03-08 23:41 | c-pucci | New Issue | |
| 2010-03-08 23:41 | c-pucci | File Added: limesurvey-svn-head-r8454-sqlsrv.patch | |
| 2010-03-09 11:10 | ElMatador69 | Status | new => assigned |
| 2010-03-09 11:10 | ElMatador69 | Assigned To | => c_schmitz |
| 2010-03-13 16:13 | c_schmitz | Status | assigned => acknowledged |
| 2010-03-17 00:13 | c_schmitz | Status | acknowledged => assigned |
| 2010-03-17 19:29 | c_schmitz | Note Added: 11408 | |
| 2010-03-17 19:29 | c_schmitz | Status | assigned => feedback |
| 2010-04-27 02:24 | c_schmitz | Status | feedback => resolved |
| 2010-04-27 02:24 | c_schmitz | Resolution | open => fixed |
| 2010-06-03 16:16 | c_schmitz | Status | resolved => closed |
| Copyright © 2000 - 2010 MantisBT Group |


