diff --git a/admin/database.php b/admin/database.php index b224f5ba3ba..26cf901a7ca 100644 --- a/admin/database.php +++ b/admin/database.php @@ -386,7 +386,7 @@ function get_max_question_order($gid) $questiontype=$connect->GetOne("SELECT type FROM ".db_table_name('questions')." WHERE qid=$postqid"); $qtproperties=getqtypelist('','array'); - if ($qtproperties[$questiontype]['answerscales']>0) + if ($qtproperties[$questiontype]['answerscales']>0 && $qtproperties[$questiontype]['subqestions']==0) { for ($scale_id=0;$scale_id<$qtproperties[$questiontype]['answerscales'];$scale_id++) { @@ -394,15 +394,41 @@ function get_max_question_order($gid) { if (isset($_POST['defaultanswerscale_'.$scale_id.'_'.$language])) { - Updatedefaultvalues($postqid,$scale_id,'',$language,$_POST['defaultanswerscale_'.$scale_id.'_'.$language],true); + Updatedefaultvalues($postqid,0,$scale_id,'',$language,$_POST['defaultanswerscale_'.$scale_id.'_'.$language],true); } if (isset($_POST['other_'.$scale_id.'_'.$language])) { - Updatedefaultvalues($postqid,$scale_id,'other',$language,$_POST['other_'.$scale_id.'_'.$language],true); + Updatedefaultvalues($postqid,0,$scale_id,'other',$language,$_POST['other_'.$scale_id.'_'.$language],true); } } } } + if ($qtproperties[$questiontype]['subquestions']>0) + { + + foreach ($questlangs as $language) + { + $sqquery = "SELECT * FROM ".db_table_name('questions')." WHERE sid=$surveyid AND gid=$gid AND parent_qid=$postqid and language=".db_quoteall($language)." and scale_id=0 order by question_order"; + $sqresult = db_execute_assoc($sqquery); + $sqrows = $sqresult->GetRows(); + + for ($scale_id=0;$scale_id<$qtproperties[$questiontype]['subquestions'];$scale_id++) + { + foreach ($sqrows as $aSubquestionrow) + { + if (isset($_POST['defaultanswerscale_'.$scale_id.'_'.$language.'_'.$aSubquestionrow['qid']])) + { + Updatedefaultvalues($postqid,$aSubquestionrow['qid'],$scale_id,'',$language,$_POST['defaultanswerscale_'.$scale_id.'_'.$language.'_'.$aSubquestionrow['qid']],true); + } +/* if (isset($_POST['other_'.$scale_id.'_'.$language])) + { + Updatedefaultvalues($postqid,$qid,$scale_id,'other',$language,$_POST['other_'.$scale_id.'_'.$language],true); + } */ + + } + } + } + } } @@ -1400,23 +1426,23 @@ function get_max_question_order($gid) * @param mixed $defaultvalue The default value itself * @param boolean $ispost If defaultvalue is from a $_POST set this to true to properly quote things */ -function Updatedefaultvalues($qid,$scale_id,$specialtype,$language,$defaultvalue,$ispost) +function Updatedefaultvalues($qid,$sqid,$scale_id,$specialtype,$language,$defaultvalue,$ispost) { global $connect; if ($defaultvalue=='') // Remove the default value if it is empty { - $connect->execute("DELETE FROM ".db_table_name('defaultvalues')." WHERE qid=$qid AND specialtype='$specialtype' AND scale_id={$scale_id} AND language='{$language}'"); + $connect->execute("DELETE FROM ".db_table_name('defaultvalues')." WHERE sqid=$sqid AND qid=$qid AND specialtype='$specialtype' AND scale_id={$scale_id} AND language='{$language}'"); } else { - $exists=$connect->GetOne("SELECT qid FROM ".db_table_name('defaultvalues')." WHERE qid=$qid AND specialtype=$specialtype'' AND scale_id={$scale_id} AND language='{$language}'"); + $exists=$connect->GetOne("SELECT qid FROM ".db_table_name('defaultvalues')." WHERE sqid=$sqid AND qid=$qid AND specialtype=$specialtype'' AND scale_id={$scale_id} AND language='{$language}'"); if ($exists===false) { - $connect->execute('INSERT INTO '.db_table_name('defaultvalues')." (defaultvalue,qid,scale_id,language,specialtype) VALUES (".db_quoteall($defaultvalue,$ispost).",{$qid},{$scale_id},'{$language}','{$specialtype}')"); + $connect->execute('INSERT INTO '.db_table_name('defaultvalues')." (defaultvalue,qid,scale_id,language,specialtype,sqid) VALUES (".db_quoteall($defaultvalue,$ispost).",{$qid},{$scale_id},'{$language}','{$specialtype}',{$sqid})"); } else { - $connect->execute('Update '.db_table_name('defaultvalues')." set defaultvalue=".db_quoteall($defaultvalue,$ispost)." WHERE qid=$qid AND specialtype='' AND scale_id={$scale_id} AND language='{$language}'"); + $connect->execute('Update '.db_table_name('defaultvalues')." set defaultvalue=".db_quoteall($defaultvalue,$ispost)." WHERE sqid=$sqid AND qid=$qid AND specialtype='' AND scale_id={$scale_id} AND language='{$language}'"); } } } diff --git a/admin/html.php b/admin/html.php index bd04675f9aa..6924aee9c88 100644 --- a/admin/html.php +++ b/admin/html.php @@ -1713,17 +1713,11 @@ $vasummary .="
\n" - ." | \n" - .$clang->gT("Code") - ." | \n" - ."\n" - .$clang->gT("Subquestion") - ." | \n"; + ."".$clang->gT("Code")." | \n" + ."".$clang->gT("Subquestion")." | \n"; if ($activated != 'Y' && $first) { - $vasummary .="\n" - .$clang->gT("Action") - ." | \n"; + $vasummary .="".$clang->gT("Action")." | \n"; } $vasummary .="{$row['title']}";
}
elseif ($activated != 'Y' && $first) // If survey is decactivated
diff --git a/admin/install/create-mysql.sql b/admin/install/create-mysql.sql
index 55c9b829253..12d7cad2831 100644
--- a/admin/install/create-mysql.sql
+++ b/admin/install/create-mysql.sql
@@ -43,9 +43,10 @@ CREATE TABLE `prefix_defaultvalues` (
`qid` int(11) NOT NULL default '0',
`specialtype` varchar(20) NOT NULL default '',
`scale_id` int(11) NOT NULL default '0',
+ `sqid` int(11) NOT NULL default '0',
`language` varchar(20) NOT NULL,
`defaultvalue` text,
- PRIMARY KEY (`qid` , `scale_id`, `language`, `specialtype` )
+ PRIMARY KEY (`qid` , `scale_id`, `language`, `specialtype`, `sqid` )
) ENGINE=$databasetabletype CHARACTER SET utf8 COLLATE utf8_unicode_ci;
@@ -149,6 +150,7 @@ CREATE TABLE `prefix_questions` (
`language` varchar(20) default 'en',
`default_value` text,
`scale_id` tinyint NOT NULL default '0',
+ `same_default` tinyint NOT NULL default '0' COMMENT 'Saves if user set to use the same default value across languages in default options dialog',
PRIMARY KEY (`qid`,`language`)
) ENGINE=$databasetabletype AUTO_INCREMENT=1 CHARACTER SET utf8 COLLATE utf8_unicode_ci;
diff --git a/admin/questionhandling.php b/admin/questionhandling.php
index f2a4aaaffc4..d96d7f98519 100644
--- a/admin/questionhandling.php
+++ b/admin/questionhandling.php
@@ -130,7 +130,7 @@
$baselang = GetBaseLanguageFromSurveyID($surveyid);
array_unshift($questlangs,$baselang);
- $questionrow=$connect->GetRow("SELECT type, other FROM ".db_table_name('questions')." WHERE sid=$surveyid AND gid=$gid AND qid=$qid AND language='$baselang'");
+ $questionrow=$connect->GetRow("SELECT type, other, title, question FROM ".db_table_name('questions')." WHERE sid=$surveyid AND gid=$gid AND qid=$qid AND language='$baselang'");
$qtproperties=getqtypelist('','array');
$editdefvalues=" ".$clang->gT('Edit default answer values')." "
@@ -155,7 +155,7 @@
{
$editdefvalues.=sprintf($clang->gT('Default answer value:'),$scale_id)."";
}
- $defaultvalue=$connect->GetOne("SELECT defaultvalue FROM ".db_table_name('defaultvalues')." WHERE qid=$qid AND and specialtype='' scale_id={$scale_id} AND language='{$language}'");
+ $defaultvalue=$connect->GetOne("SELECT defaultvalue FROM ".db_table_name('defaultvalues')." WHERE qid=$qid AND specialtype='' and scale_id={$scale_id} AND language='{$language}'");
$editdefvalues.=" |
---|