diff --git a/application/commands/PluginCommand.php b/application/commands/PluginCommand.php index 92ee63207a8..c4a260657e3 100644 --- a/application/commands/PluginCommand.php +++ b/application/commands/PluginCommand.php @@ -1,9 +1,9 @@ pluginManager; @@ -22,6 +27,24 @@ public function actionCron($interval=null) $event->set('interval', $interval); $pm->dispatchEvent($event); } + + /** + * Call directly an event by command (it's default) + * @param string $target Target of action, plugin name for example + * @param mixed $function Extra parameters for plugin + * @param mixed $option Extra parameters for plugin + * @return void + */ + public function actionIndex($target, $function=null,$option=null) + { + $pm = \Yii::app()->pluginManager; + $event = new PluginEvent('direct'); + $event->set('target', $target); + $event->set('function', $function); + $event->set('option', $option); + $pm->dispatchEvent($event); + } + } ?> diff --git a/application/controllers/admin/PluginHelper.php b/application/controllers/admin/PluginHelper.php index 940721a5060..a9a5880b546 100644 --- a/application/controllers/admin/PluginHelper.php +++ b/application/controllers/admin/PluginHelper.php @@ -23,7 +23,7 @@ public function sidebody($surveyId, $plugin, $method) $aData['surveyid'] = $surveyId; $aData['surveybar']['buttons']['view']= true; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$surveyId.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$surveyId.")"; $content = $this->getContent($surveyId, $plugin, $method); diff --git a/application/controllers/admin/assessments.php b/application/controllers/admin/assessments.php index 169e73f521e..9275ced2c43 100644 --- a/application/controllers/admin/assessments.php +++ b/application/controllers/admin/assessments.php @@ -79,7 +79,7 @@ protected function _renderWrappedTemplate($sAction = 'assessments', $aViewUrls = $iSurveyID=$aData['surveyid']; $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo; $aData['surveybar']['closebutton']['url'] = 'admin/survey/sa/view/surveyid/'.$iSurveyID; // Close button - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")"; $aData['surveybar']['savebutton']['form'] = true; $aData['surveybar']['saveandclosebutton']['form'] = true; $aData['gid']=null; diff --git a/application/controllers/admin/conditionsaction.php b/application/controllers/admin/conditionsaction.php index 9c2b0827382..71f2e1c540d 100644 --- a/application/controllers/admin/conditionsaction.php +++ b/application/controllers/admin/conditionsaction.php @@ -105,7 +105,7 @@ public function index($subaction, $iSurveyID=null, $gid=null, $qid=null) $aData['sidemenu']['state'] = false; $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")"; $aData['questionbar']['closebutton']['url'] = 'admin/questions/sa/view/surveyid/'.$iSurveyID.'/gid/'.$gid.'/qid/'.$qid; // Close button $aData['questionbar']['buttons']['conditions'] = TRUE; diff --git a/application/controllers/admin/dataentry.php b/application/controllers/admin/dataentry.php index 0dfedaabd4d..31435ee50ca 100644 --- a/application/controllers/admin/dataentry.php +++ b/application/controllers/admin/dataentry.php @@ -1917,8 +1917,9 @@ public function insert() $message .= gT("Reload your survey by clicking on the following link (or pasting it into your browser):")."\n"; $aParams=array('lang'=>$saver['language'],'loadname'=>$saver['identifier'],'loadpass'=>$saver['password']); if (isset($tokendata['token'])) { $aParams['token']= $tokendata['token']; } - $message .= Yii::app()->getController()->createAbsoluteUrl("/survey/index/sid/{$iSurveyID}/loadall/reload/scid/{$scid}/",$aParams); - $from = $thissurvey['adminemail']; + $message .= Yii::app()->getController()->createAbsoluteUrl("/survey/index/sid/{$surveyid}/loadall/reload/scid/{$scid}/",$aParams); + $from = $thissurvey['adminemail']; + $sitename = Yii::app()->getConfig('sitename'); if (SendEmailMessage($message, $subject, $saver['email'], $from, $sitename, false, getBounceEmail($surveyid))) { $emailsent="Y"; diff --git a/application/controllers/admin/emailtemplates.php b/application/controllers/admin/emailtemplates.php index d087c4746ca..3aa1c37bc7e 100644 --- a/application/controllers/admin/emailtemplates.php +++ b/application/controllers/admin/emailtemplates.php @@ -71,7 +71,7 @@ function index($iSurveyId) $aData['sidemenu']['state'] = false; $surveyinfo = Survey::model()->findByPk($iSurveyId)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyId.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyId.")"; $aData['surveybar']['savebutton']['form'] = 'frmeditgroup'; diff --git a/application/controllers/admin/export.php b/application/controllers/admin/export.php index 494b442ac49..24602944db3 100644 --- a/application/controllers/admin/export.php +++ b/application/controllers/admin/export.php @@ -1230,7 +1230,7 @@ public function quexml($iSurveyID) $aData['surveybar']['closebutton']['url'] = 'admin/survey/sa/view/surveyid/'.$iSurveyID; // Close button $aData['sidemenu']['state'] = false; $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")"; array_unshift($aData['slangs'],$aData['baselang']); diff --git a/application/controllers/admin/expressions.php b/application/controllers/admin/expressions.php index 34b9e6a0f3d..1100e41dd9a 100644 --- a/application/controllers/admin/expressions.php +++ b/application/controllers/admin/expressions.php @@ -46,7 +46,7 @@ function index() { $aData['sidemenu']['state'] = false; $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")"; if(Yii::app()->request->getQuery('gid')!='') { $aData['questiongroupbar']['closebutton']['url'] = 'admin/questiongroups/sa/view/surveyid/'.$aData['surveyid'].'/gid/'.sanitize_int(Yii::app()->request->getQuery('gid')); diff --git a/application/controllers/admin/questiongroups.php b/application/controllers/admin/questiongroups.php index fe74be53279..bdbfd3d5d41 100644 --- a/application/controllers/admin/questiongroups.php +++ b/application/controllers/admin/questiongroups.php @@ -106,7 +106,7 @@ function import() $aData['sidemenu']['state'] = false; $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")"; $this->_renderWrappedTemplate('survey/QuestionGroups', 'import_view', $aData); } @@ -134,7 +134,7 @@ function importView($surveyid) $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")"; $this->_renderWrappedTemplate('survey/QuestionGroups', 'importGroup_view', $aData); } @@ -176,7 +176,7 @@ function add($surveyid) $aData['sidemenu']['state'] = false; $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")"; $aData['surveybar']['importquestiongroup'] = true; $aData['surveybar']['closebutton']['url'] = 'admin/survey/sa/listquestiongroups/surveyid/'.$surveyid; // Close button $aData['surveybar']['savebutton']['form'] = true; @@ -310,7 +310,7 @@ public function view($surveyid, $gid) $aData['sidemenu']['questiongroups'] = true; $aData['sidemenu']['group_name'] = $grow['group_name']; $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")"; $aData['surveyIsActive'] = $surveyinfo['active']=='Y'; $aData['questiongroupbar']['buttons']['view'] = true; @@ -415,7 +415,7 @@ public function edit($surveyid, $gid) $aData['aBaseLanguage'] = $aBaseLanguage; $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")"; /////////// // sidemenu diff --git a/application/controllers/admin/questions.php b/application/controllers/admin/questions.php index 45c3585ddc7..8e5f80cadbe 100644 --- a/application/controllers/admin/questions.php +++ b/application/controllers/admin/questions.php @@ -113,7 +113,7 @@ public function view($surveyid, $gid, $qid) $aData['sidemenu']['explorer']['qid'] = (isset($qid))?$qid:false; $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")"; // Last question visited : By user (only one by user) $setting_entry = 'last_question_'.Yii::app()->user->getId(); @@ -156,7 +156,7 @@ public function importView($groupid = null, $surveyid) $aData['surveyid'] = $surveyid; $aData['groupid'] = $groupid; $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")"; $this->_renderWrappedTemplate('survey/Question', 'importQuestion_view', $aData); } @@ -251,7 +251,7 @@ public function import() $aData['sidemenu']['state'] = false; $aData['surveyid'] = $iSurveyID; $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")"; $this->_renderWrappedTemplate('survey/Question', $aViewUrls, $aData); } @@ -402,7 +402,7 @@ public function editdefaultvalues($surveyid, $gid, $qid) $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")"; $aData['questiongroupbar']['savebutton']['form'] = 'frmeditgroup'; $aData['questiongroupbar']['closebutton']['url'] = 'admin/questions/sa/view/surveyid/'.$surveyid.'/gid/'.$gid.'/qid/'.$qid; // Close button @@ -446,7 +446,7 @@ public function answeroptions($surveyid, $gid, $qid) App()->getClientScript()->registerPackage('jquery-selectboxes'); $surveyinfo = Survey::model()->findByPk($surveyid)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$surveyid.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$surveyid.")"; $aData['questiongroupbar']['savebutton']['form'] = true; $aData['questiongroupbar']['saveandclosebutton']['form'] = 'frmeditgroup'; $aData['questiongroupbar']['closebutton']['url'] = 'admin/questions/sa/view/surveyid/'.$surveyid.'/gid/'.$gid.'/qid/'.$qid; // Close button @@ -664,7 +664,7 @@ public function subquestions($surveyid, $gid, $qid) $aViewUrls = $this->_editsubquestion($surveyid, $gid, $qid); $surveyinfo = Survey::model()->findByPk($surveyid)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$surveyid.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$surveyid.")"; $aData['questiongroupbar']['savebutton']['form'] = 'frmeditgroup'; $aData['questiongroupbar']['saveandclosebutton']['form'] = 'frmeditgroup'; $aData['questiongroupbar']['closebutton']['url'] = 'admin/questions/sa/view/surveyid/'.$surveyid.'/gid/'.$gid.'/qid/'.$qid; // Close button @@ -992,7 +992,7 @@ public function getSubquestionRow( $surveyid, $gid, $qid, $codes, $language, $fi { $view ='_answer_option'; $aData = array( - 'assessmentvisible' => $assessmentvisible ? true : false, + 'assessmentvisible' => $assessmentvisible == "false" ? false : true, 'assessment_value' => '', 'answer' => '', 'sortorder' => $newPosition, @@ -1035,7 +1035,7 @@ public function newquestion($surveyid) $surveyid = $iSurveyID = $aData['surveyid'] = sanitize_int($surveyid); App()->getClientScript()->registerPackage('qTip2'); $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")"; $aData['surveybar']['importquestion'] = true; $aData['surveybar']['savebutton']['form'] = 'frmeditgroup'; $aData['surveybar']['saveandclosebutton']['form'] = 'frmeditgroup'; @@ -1173,7 +1173,7 @@ public function index($sa, $surveyid, $gid, $qid=null) $aData['display']['menu_bars']['gid_action'] = 'addquestion'; $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")"; $aData['questiongroupbar']['savebutton']['form'] = 'frmeditgroup'; $aData['questiongroupbar']['saveandclosebutton']['form'] = 'frmeditgroup'; $aData['questiongroupbar']['closebutton']['url'] = 'admin/questions/sa/view/surveyid/'.$surveyid.'/gid/'.$gid.'/qid/'.$qid; // Close button diff --git a/application/controllers/admin/quotas.php b/application/controllers/admin/quotas.php index 0f4cb01f067..d946683f113 100644 --- a/application/controllers/admin/quotas.php +++ b/application/controllers/admin/quotas.php @@ -103,7 +103,7 @@ function index($iSurveyId, $quickreport = false) $aData['sidemenu']['state'] = false; $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")"; //$aData['surveybar']['active_survey_properties'] = 'quotas'; $aData['surveybar']['buttons']['view']= TRUE; @@ -418,7 +418,7 @@ function editquota($iSurveyId) $aData['sidemenu']['state'] = false; $surveyinfo = Survey::model()->findByPk($iSurveyId)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyId.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyId.")"; //$aData['surveybar']['active_survey_properties'] = 'quotas'; $aData['surveybar']['closebutton']['url'] = 'admin/quotas/sa/index/surveyid/'.$iSurveyId; // Close button @@ -488,7 +488,7 @@ function new_answer($iSurveyId, $sSubAction = 'new_answer') $aData['sidemenu']['state'] = false; $surveyinfo = Survey::model()->findByPk($iSurveyId)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyId.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyId.")"; $aData['surveybar']['closebutton']['url'] = 'admin/quotas/sa/index/surveyid/'.$iSurveyId; // Close button $aData['surveybar']['closebutton']['forbidden'][] = 'new_answer'; @@ -507,7 +507,7 @@ function newquota($iSurveyId) $aData['sidemenu']['state'] = false; $surveyinfo = Survey::model()->findByPk($iSurveyId)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyId.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyId.")"; $aData['surveybar']['savebutton']['form'] = 'frmeditgroup'; $aData['surveybar']['closebutton']['url'] = 'admin/quotas/sa/index/surveyid/'.$iSurveyId; // Close button diff --git a/application/controllers/admin/statistics.php b/application/controllers/admin/statistics.php index 810bf225ba4..215467c8277 100644 --- a/application/controllers/admin/statistics.php +++ b/application/controllers/admin/statistics.php @@ -192,6 +192,7 @@ public function run($surveyid = 0, $subaction = null) $grapherror = false; $error = ''; + $usegraph = (int)Yii::app()->request->getPost('usegraph',0); if (!function_exists("gd_info")) { $grapherror = true; $error.='
'.gT('You do not have the GD Library installed. Showing charts requires the GD library to function properly.'); @@ -205,7 +206,7 @@ public function run($surveyid = 0, $subaction = null) if ($grapherror) { - unset($_POST['usegraph']); + $usegraph=0; } @@ -466,17 +467,14 @@ public function run($surveyid = 0, $subaction = null) Yii::app()->loadHelper('admin/statistics'); $helper = new statistics_helper(); - $showtextinline=isset($_POST['showtextinline']) ? 1 : 0; + $showtextinline = (int)Yii::app()->request->getPost('showtextinline',0); $aData['showtextinline'] = $showtextinline; - + $aData['usegraph'] = $usegraph; + //Show Summary results if (isset($summary) && $summary) { - $usegraph=isset($_POST['usegraph']) ? 1 : 0; - $aData['usegraph'] = $usegraph; - $outputType = $_POST['outputtype']; - - + $outputType = Yii::app()->request->getPost('outputtype','html'); switch($outputType){ case 'html': $statisticsoutput .= $helper->generate_html_chartjs_statistics($surveyid,$summary,$summary,$usegraph,$outputType,'DD',$statlang); @@ -494,10 +492,7 @@ public function run($surveyid = 0, $subaction = null) } } //end if -> show summary results - - $usegraph=isset($_POST['usegraph']) ? 1 : 0; - $aData['usegraph'] = $usegraph; - + $aData['sStatisticsLanguage']=$statlang; $aData['output'] = $statisticsoutput; $aData['summary'] = $summary; @@ -787,7 +782,7 @@ public function simpleStatistics($surveyid) Yii::app()->loadHelper('admin/statistics'); $helper = new statistics_helper(); - $showtextinline=isset($_POST['showtextinline']) ? 1 : 0; + $showtextinline = (int)Yii::app()->request->getPost('showtextinline',0); $aData['showtextinline'] = $showtextinline; //Show Summary results diff --git a/application/controllers/admin/surveypermission.php b/application/controllers/admin/surveypermission.php index c170e4596c0..d8b9f683948 100644 --- a/application/controllers/admin/surveypermission.php +++ b/application/controllers/admin/surveypermission.php @@ -44,7 +44,7 @@ public function index($iSurveyID) $aData['sidemenu']['state'] = false; $oSurvey = Survey::model()->findByPk($iSurveyID); $surveyinfo = $oSurvey->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")"; $aData['surveybar']['closebutton']['url'] = 'admin/survey/sa/view/surveyid/'.$iSurveyID; // Close button $aBaseSurveyPermissions=Permission::model()->getSurveyBasePermissions(); @@ -240,7 +240,7 @@ public function index($iSurveyID) $aData['sidemenu']['state'] = false; $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")"; $aData['surveybar']['closebutton']['url'] = 'admin/survey/sa/view/surveyid/'.$iSurveyID; // Close button @@ -353,7 +353,7 @@ function addusergroup($surveyid) $aData['sidemenu']['state'] = false; $surveyinfo = Survey::model()->findByPk($surveyid)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$surveyid.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$surveyid.")"; $this->_renderWrappedTemplate('authentication', $aViewUrls, $aData); @@ -437,7 +437,7 @@ function adduser($surveyid) $aData['sidemenu']['state'] = false; $surveyinfo = Survey::model()->findByPk($surveyid)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$surveyid.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$surveyid.")"; $this->_renderWrappedTemplate('authentication', $aViewUrls, $aData); } @@ -572,7 +572,7 @@ function set($surveyid) $aData['sidemenu']['state'] = false; $surveyinfo = Survey::model()->findByPk($surveyid)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$surveyid.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$surveyid.")"; $aData['surveybar']['savebutton']['form'] = 'frmeditgroup'; $aData['surveybar']['saveandclosebutton']['form'] = 'frmeditgroup'; $aData['surveybar']['closebutton']['url'] = 'admin/survey/sa/view/surveyid/'.$surveyid; // Close button @@ -644,7 +644,7 @@ function delete($surveyid) $aData['sidemenu']['state'] = false; $surveyinfo = Survey::model()->findByPk($surveyid)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$surveyid.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$surveyid.")"; //$aData['surveybar']['savebutton']['form'] = 'frmeditgroup'; //$aData['surveybar']['closebutton']['url'] = 'admin/survey/sa/view/surveyid/'.$surveyid; @@ -759,7 +759,7 @@ function surveyright($surveyid) } $aData['sidemenu']['state'] = false; $surveyinfo = Survey::model()->findByPk($surveyid)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$surveyid.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$surveyid.")"; $this->_renderWrappedTemplate('authentication', $aViewUrls, $aData); diff --git a/application/controllers/admin/tokens.php b/application/controllers/admin/tokens.php index 01f68b3dc82..3e9504cf3d3 100644 --- a/application/controllers/admin/tokens.php +++ b/application/controllers/admin/tokens.php @@ -48,7 +48,7 @@ public function index($iSurveyId) $aData['surveyprivate'] = $thissurvey['anonymized']; $surveyinfo = Survey::model()->findByPk($iSurveyId)->surveyinfo; $aData["surveyinfo"] = $surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyId.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyId.")"; $aData['sidemenu']["token_menu"]=TRUE; $aData['token_bar']['buttons']['view']=TRUE; @@ -379,7 +379,7 @@ public function browse($iSurveyId, $limit = 50, $start = 0, $order = false, $sea $aData['aLanguages'] = $aLanguages; $surveyinfo = Survey::model()->findByPk($iSurveyId)->surveyinfo; $aData["surveyinfo"] = $surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyId.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyId.")"; $aData['sidemenu']["token_menu"] = true; $aData['sidemenu']['state'] = false; $aData['token_bar']['buttons']['view'] = true; @@ -553,7 +553,7 @@ public function addnew($iSurveyId) $surveyinfo = Survey::model()->findByPk($iSurveyId)->surveyinfo; $aData["surveyinfo"] = $surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyId.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyId.")"; $aData['sidemenu']["token_menu"]=TRUE; $aData['token_bar']['buttons']['view']=TRUE; $this->registerScriptFile( 'ADMIN_SCRIPT_PATH', 'tokens.js'); @@ -822,7 +822,7 @@ public function addDummies($iSurveyId, $subaction = '') $aData = array(); $aData['sidemenu']['state'] = false; $aData["surveyinfo"] = $surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyId.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyId.")"; $aData['sidemenu']["token_menu"]=TRUE; $aData['token_bar']['savebutton']['form'] = TRUE; $aData['token_bar']['closebutton']['url'] = 'admin/tokens/sa/index/surveyid/'.$iSurveyId; // Close button @@ -982,7 +982,7 @@ public function managetokenattributes($iSurveyId) $aData = array(); $aData['sidemenu']['state'] = false; $aData["surveyinfo"] = $surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyId.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyId.")"; $aData['sidemenu']["token_menu"]=TRUE; $aData['token_bar']['closebutton']['url'] = 'admin/tokens/sa/index/surveyid/'.$iSurveyId; // Close button @@ -1204,7 +1204,7 @@ public function email($iSurveyId, $tokenids = null) $surveyinfo = Survey::model()->findByPk($iSurveyId)->surveyinfo; $aData['sidemenu']['state'] = false; $aData["surveyinfo"] = $surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyId.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyId.")"; $aData['sidemenu']["token_menu"]=TRUE; $aData['token_bar']['closebutton']['url'] = 'admin/tokens/sa/index/surveyid/'.$iSurveyId; // Close button @@ -1592,7 +1592,7 @@ public function exportdialog($iSurveyId) $aData = array(); $aData["surveyinfo"] = $surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyId.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyId.")"; $aData['sidemenu']["token_menu"]=true; $aData['sidemenu']['state'] = false; $aData['token_bar']['exportbutton']['form']=true; @@ -1714,7 +1714,7 @@ public function importldap($iSurveyId) $surveyinfo = Survey::model()->findByPk($iSurveyId)->surveyinfo; $aData['sidemenu']['state'] = false; $aData["surveyinfo"] = $surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyId.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyId.")"; $aData['sidemenu']["token_menu"]=TRUE; $aData['token_bar']['closebutton']['url'] = 'admin/tokens/sa/index/surveyid/'.$iSurveyId; // Close button @@ -1993,7 +1993,7 @@ public function import($iSurveyId) $surveyinfo = Survey::model()->findByPk($iSurveyId)->surveyinfo; $aData['sidemenu']['state'] = false; $aData["surveyinfo"] = $surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyId.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyId.")"; $aData['sidemenu']["token_menu"]=TRUE; $aData['token_bar']['closebutton']['url'] = 'admin/tokens/sa/index/surveyid/'.$iSurveyId; $this->registerScriptFile( 'ADMIN_SCRIPT_PATH', 'tokensimport.js'); @@ -2340,7 +2340,7 @@ public function tokenify($iSurveyId) $surveyinfo = Survey::model()->findByPk($iSurveyId)->surveyinfo; $aData['sidemenu']['state'] = false; $aData["surveyinfo"] = $surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyId.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyId.")"; $aData['sidemenu']["token_menu"]=TRUE; @@ -2498,7 +2498,7 @@ public function bouncesettings($iSurveyId) $aData['sidemenu']['state'] = false; $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyId.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyId.")"; $this->_renderWrappedTemplate('token', array( 'bounce'), $aData); } @@ -2568,7 +2568,7 @@ public function _handletokenform($iSurveyId, $subaction, $iTokenId="", $ajax=fal $surveyinfo = $oSurvey->surveyinfo; $aData['sidemenu']['state'] = false; $aData["surveyinfo"] = $surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyId.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyId.")"; $aData['sidemenu']["token_menu"]=TRUE; $aData['token_bar']['savebutton']['form'] = TRUE; $aData['token_bar']['closebutton']['url'] = 'admin/tokens/sa/index/surveyid/'.$iSurveyId; @@ -2694,7 +2694,7 @@ public function _newtokentable($iSurveyId) $surveyinfo = Survey::model()->findByPk($iSurveyId)->surveyinfo; $aData['sidemenu']['state'] = false; $aData["surveyinfo"] = $surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyId.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyId.")"; $aData['sidemenu']["token_menu"]=TRUE; $this->_renderWrappedTemplate('token', 'tokenwarning', $aData); } diff --git a/application/controllers/admin/translate.php b/application/controllers/admin/translate.php index cb9faee6e04..5170194aa24 100644 --- a/application/controllers/admin/translate.php +++ b/application/controllers/admin/translate.php @@ -83,7 +83,7 @@ public function index() $aData['sidemenu']['state'] = false; $surveyinfo = Survey::model()->findByPk($iSurveyID)->surveyinfo; - $aData['title_bar']['title'] = $surveyinfo['surveyls_title']."(".gT("ID").":".$iSurveyID.")"; + $aData['title_bar']['title'] = $surveyinfo['surveyls_title']." (".gT("ID").":".$iSurveyID.")"; $aData['surveybar']['savebutton']['form'] = 'frmeditgroup'; $aData['surveybar']['closebutton']['url'] = 'admin/survey/sa/view/surveyid/'.$iSurveyID; // Close button diff --git a/application/controllers/survey/index.php b/application/controllers/survey/index.php index f91af0b02f6..b2422e44a8d 100644 --- a/application/controllers/survey/index.php +++ b/application/controllers/survey/index.php @@ -133,8 +133,7 @@ function action() SetSurveyLanguage( $surveyid, $sDisplayLanguage); } - if ( $this->_isClientTokenDifferentFromSessionToken($clienttoken,$surveyid) ) - { + if ($this->_isClientTokenDifferentFromSessionToken($clienttoken, $surveyid)) { $sReloadUrl=$this->getController()->createUrl("/survey/index/sid/{$surveyid}",array('token'=>$clienttoken,'lang'=>App()->language,'newtest'=>'Y')); $aErrors=array(gT('Token mismatch')); $asMessage = array(gT('The token you provided doesn\'t match the one in your session.')); @@ -151,6 +150,9 @@ function action() $aUrl, $aErrors ); + $this->_createNewUserSessionAndRedirect($surveyid, $redata, __LINE__, $asMessage); + } elseif (!$clienttoken) { + $clienttoken= isset($_SESSION['survey_'.$surveyid]['token']) ? $_SESSION['survey_'.$surveyid]['token'] : ""; // Fix for #12003 } if ( $this->_isSurveyFinished($surveyid) && ($thissurvey['alloweditaftercompletion'] != 'Y' || $thissurvey['tokenanswerspersistence'] != 'Y')) // No test for response update @@ -298,7 +300,6 @@ function action() { $token=$clienttoken; } - //GET BASIC INFORMATION ABOUT THIS SURVEY $thissurvey=getSurveyInfo($surveyid, $_SESSION['survey_'.$surveyid]['s_lang']); diff --git a/application/extensions/admin/survey/ListSurveysWidget/views/massive_actions/_delete_results.php b/application/extensions/admin/survey/ListSurveysWidget/views/massive_actions/_delete_results.php index 43417f72dc9..d158abe68a1 100644 --- a/application/extensions/admin/survey/ListSurveysWidget/views/massive_actions/_delete_results.php +++ b/application/extensions/admin/survey/ListSurveysWidget/views/massive_actions/_delete_results.php @@ -18,7 +18,7 @@ - + diff --git a/application/helpers/admin/activate_helper.php b/application/helpers/admin/activate_helper.php index 187991386a5..544ef192d46 100644 --- a/application/helpers/admin/activate_helper.php +++ b/application/helpers/admin/activate_helper.php @@ -289,9 +289,10 @@ function activateSurvey($iSurveyID, $simulate = false) $sCollation=" COLLATE SQL_Latin1_General_CP1_CS_AS"; } //Check for any additional fields for this survey and create necessary fields (token and datestamp) - $arSurvey = Survey::model()->findByAttributes(array('sid' => $iSurveyID)); + $oSurvey = Survey::model()->findByPk($iSurveyID); + $oSurvey->fixInvalidQuestions(); //Get list of questions for the base language - $sFieldMap = createFieldMap($iSurveyID,'full',true,false,$arSurvey->language); + $sFieldMap = createFieldMap($iSurveyID,'full',true,false,$oSurvey->language); //For each question, create the appropriate field(s) foreach ($sFieldMap as $j=>$aRow) { @@ -364,11 +365,11 @@ function activateSurvey($iSurveyID, $simulate = false) $aTableDefinition[$aRow['fieldname']] = "text"; break; case "ipaddress": - if ($arSurvey->ipaddr == "Y") + if ($oSurvey->ipaddr == "Y") $aTableDefinition[$aRow['fieldname']] = "text"; break; case "url": - if ($arSurvey->refurl == "Y") + if ($oSurvey->refurl == "Y") $aTableDefinition[$aRow['fieldname']] = "text"; break; case "token": @@ -408,7 +409,7 @@ function activateSurvey($iSurveyID, $simulate = false) default: $aTableDefinition[$aRow['fieldname']] = "string(5)"; } - if ($arSurvey->anonymized == 'N' && !array_key_exists('token',$aTableDefinition)){ + if ($oSurvey->anonymized == 'N' && !array_key_exists('token',$aTableDefinition)){ $aTableDefinition['token'] = 'string(35)'.$sCollation; } if ($simulate){ @@ -485,7 +486,7 @@ function activateSurvey($iSurveyID, $simulate = false) } } - if ($arSurvey->savetimings == "Y") + if ($oSurvey->savetimings == "Y") { $timingsfieldmap = createTimingsFieldMap($iSurveyID,"full",false,false,getBaseLanguageFromSurveyID($iSurveyID)); diff --git a/application/helpers/admin/statistics_helper.php b/application/helpers/admin/statistics_helper.php index 47a959414b4..4971498e5d2 100644 --- a/application/helpers/admin/statistics_helper.php +++ b/application/helpers/admin/statistics_helper.php @@ -38,9 +38,7 @@ function createChart($iQuestionID, $iSurveyID, $type=null, $lbl, $gdata, $grawda } $rootdir = Yii::app()->getConfig("rootdir"); $homedir = Yii::app()->getConfig("homedir"); - $homeurl = Yii::app()->getConfig("homeurl"); $admintheme = Yii::app()->getConfig("admintheme"); - $scriptname = Yii::app()->getConfig("scriptname"); $chartfontfile = Yii::app()->getConfig("chartfontfile"); $chartfontsize = Yii::app()->getConfig("chartfontsize"); $alternatechartfontfile = Yii::app()->getConfig("alternatechartfontfile"); @@ -109,7 +107,6 @@ function createChart($iQuestionID, $iSurveyID, $type=null, $lbl, $gdata, $grawda if (array_sum($gdata ) > 0) //Make sure that the percentages add up to more than 0 { $graph = ""; - $p1 = ""; $i = 0; foreach ($gdata as $data) { @@ -639,7 +636,6 @@ protected function buildOutputList($rt, $language, $surveyid, $outputType, $sql, $qtitle=""; $qquestion=""; $qtype=""; - $statlang = $oLanguage; $firstletter = substr($rt, 0, 1); $fieldmap=createFieldMap($surveyid, "full", false, false, $language); $sDatabaseType = Yii::app()->db->getDriverName(); @@ -735,9 +731,6 @@ protected function buildOutputList($rt, $language, $surveyid, $outputType, $sql, $qtype=$nresult->type; $qquestion=flattenText($nresult->question); - //more substrings - $count = substr($qqid, strlen($qqid)-1); - //get answers / subquestion text $nresult = Question::model()->find(array('order'=>'question_order', 'condition'=>'language=:language AND parent_qid=:parent_qid AND title=:title', @@ -1071,7 +1064,6 @@ protected function buildOutputList($rt, $language, $surveyid, $outputType, $sql, //Display the maximum and minimum figures after the quartiles for neatness $maximum=$row['maximum']; - $minimum=$row['minimum']; } @@ -1271,7 +1263,6 @@ protected function buildOutputList($rt, $language, $surveyid, $outputType, $sql, $qtype=$nrow[1]; $qquestion=flattenText($nrow[2]); $qiqid=$nrow[3]; - $qparentqid=$nrow[4]; $qother=$nrow[5]; } @@ -1612,9 +1603,6 @@ protected function displaySimpleResults($outputs, $results, $rt, $outputType, $s $TotalCompleted = 0; //Count of actually completed answers $statisticsoutput=""; $sDatabaseType = Yii::app()->db->getDriverName(); - $tempdir = Yii::app()->getConfig("tempdir"); - $tempurl = Yii::app()->getConfig("tempurl"); - $firstletter = substr($rt, 0, 1); $astatdata=array(); //loop though the array which contains all answer data @@ -1837,9 +1825,6 @@ protected function displaySimpleResults($outputs, $results, $rt, $outputType, $s //put question title and code into array $label[]=$fname; - //put only the code into the array - $justcode[]=$al[0]; - //edit labels and put them into antoher array //first check if $tempcount is > 0. If yes, $row has been modified and $tempcount has the original count. @@ -2399,8 +2384,6 @@ protected function displayResults($outputs, $results, $rt, $outputType, $surveyi $statisticsoutput = ""; $sDatabaseType = Yii::app()->db->getDriverName(); $tempdir = Yii::app()->getConfig("tempdir"); - $tempurl = Yii::app()->getConfig("tempurl"); - $firstletter = substr($rt, 0, 1); $astatdata = array(); if ($usegraph==1 && $outputType != 'html') @@ -3811,8 +3794,6 @@ public function generate_simple_statistics($surveyid, $allfields, $q2show='all', Yii::import('application.helpers.surveytranslator_helper', true); Yii::import('application.third_party.ar-php.Arabic', true); - $sTempDir = Yii::app()->getConfig("tempdir"); - //pick the best font file if font setting is 'auto' if (is_null($sLanguageCode)) { @@ -3820,18 +3801,10 @@ public function generate_simple_statistics($surveyid, $allfields, $q2show='all', } //Yii::app()->setLanguage($sLanguageCode); - /* - * this variable is used in the function shortencode() which cuts off a question/answer title - * after $maxchars and shows the rest as tooltip (in html mode) - */ - $maxchars = 13; - //Get an array of codes of all available languages in this survey $surveylanguagecodes = Survey::model()->findByPk($surveyid)->additionalLanguages; $surveylanguagecodes[] = Survey::model()->findByPk($surveyid)->language; - $fieldmap=createFieldMap($surveyid, "full", false, false, $sLanguageCode); - // Set language for questions and answers to base language of this survey $language=$sLanguageCode; @@ -3944,20 +3917,11 @@ public function generate_html_chartjs_statistics($surveyid, $allfields, $q2show= Yii::import('application.helpers.surveytranslator_helper', true); Yii::import('application.third_party.ar-php.Arabic', true); - $sTempDir = Yii::app()->getConfig("tempdir"); - //pick the best font file if font setting is 'auto' if (is_null($sLanguageCode)) { $sLanguageCode = getBaseLanguageFromSurveyID($surveyid); } - //Yii::app()->setLanguage($sLanguageCode); - - /* - * this variable is used in the function shortencode() which cuts off a question/answer title - * after $maxchars and shows the rest as tooltip (in html mode) - */ - $maxchars = 13; //no survey ID? -> come and get one if (!isset($surveyid)) {$surveyid=returnGlobal('sid');} @@ -3966,8 +3930,6 @@ public function generate_html_chartjs_statistics($surveyid, $allfields, $q2show= $surveylanguagecodes = Survey::model()->findByPk($surveyid)->additionalLanguages; $surveylanguagecodes[] = Survey::model()->findByPk($surveyid)->language; - $fieldmap=createFieldMap($surveyid, "full", false, false, $sLanguageCode); - // Set language for questions and answers to base language of this survey $language=$sLanguageCode; @@ -3999,7 +3961,6 @@ public function generate_html_chartjs_statistics($surveyid, $allfields, $q2show= //Get answers. We always use the answer code because the label might be too long elsewise $query = "SELECT code, answer FROM {{answers}} WHERE qid='".$field['qid']."' AND scale_id=0 AND language='{$language}' ORDER BY sortorder, answer"; $result = Yii::app()->db->createCommand($query)->query(); - $counter2=0; //check all the answers foreach ($result->readAll() as $row) @@ -4190,13 +4151,7 @@ public function generate_statistics($surveyid, $allfields, $q2show='all', $usegr { $sLanguageCode = getBaseLanguageFromSurveyID($surveyid); } - //Yii::app()->setLanguage($sLanguageCode); - /* - * this variable is used in the function shortencode() which cuts off a question/answer title - * after $maxchars and shows the rest as tooltip (in html mode) - */ - $maxchars = 13; //we collect all the html-output within this variable $sOutputHTML =''; /** @@ -4209,8 +4164,6 @@ public function generate_statistics($surveyid, $allfields, $q2show='all', $usegr //no survey ID? -> come and get one if (!isset($surveyid)) {$surveyid=returnGlobal('sid');} - $fieldmap=createFieldMap($surveyid, "full", false, false, $sLanguageCode); - // Set language for questions and answers to base language of this survey $language=$sLanguageCode; @@ -4242,7 +4195,6 @@ public function generate_statistics($surveyid, $allfields, $q2show='all', $usegr //Get answers. We always use the answer code because the label might be too long elsewise $query = "SELECT code, answer FROM {{answers}} WHERE qid='".$field['qid']."' AND scale_id=0 AND language='{$language}' ORDER BY sortorder, answer"; $result = Yii::app()->db->createCommand($query)->query(); - $counter2=0; //check all the answers foreach ($result->readAll() as $row) @@ -4348,8 +4300,6 @@ public function generate_statistics($surveyid, $allfields, $q2show='all', $usegr $this->formatBold = &$this->workbook->addFormat(array('Bold'=>1)); $this->sheet->setInputEncoding('utf-8'); $this->sheet->setColumn(0,20,20); - $separator="~|"; - /**XXX*/ } /** * Start generating @@ -4700,7 +4650,6 @@ function _listcolumn($surveyid, $column, $sortby="", $sortmethod="", $sorttype=" if($sorttype=='N') {$sortby = "($sortby * 1)";} //Converts text sorting into numerical sorting $search['order']=$sortby.' '.$sortmethod; } - Yii::log(print_r($search, true), CLogger::LEVEL_TRACE, 'debug'); $results=SurveyDynamic::model($surveyid)->findAll($search); $output=array(); foreach($results as $row) { diff --git a/application/helpers/common_helper.php b/application/helpers/common_helper.php index 221abef7867..1c5ec377406 100644 --- a/application/helpers/common_helper.php +++ b/application/helpers/common_helper.php @@ -4978,7 +4978,8 @@ function fixLanguageConsistency($sid, $availlangs='') reset($langs); } } - + /* Remove invalid question : can break survey */ + Survey::model()->findByPk($sid)->fixInvalidQuestions(); $query = "SELECT * FROM {{assessments}} WHERE sid='{$sid}' AND language='{$baselang}'"; $result = Yii::app()->db->createCommand($query)->query(); @@ -5655,7 +5656,7 @@ function getPrintableHeader() return $headelements; } -/** +/** * This function returns the Footer as result string * If you want to echo the Footer use doFooter()! * @return string diff --git a/application/helpers/frontend_helper.php b/application/helpers/frontend_helper.php index 6c0406bf52a..be509e5d57b 100644 --- a/application/helpers/frontend_helper.php +++ b/application/helpers/frontend_helper.php @@ -1887,6 +1887,10 @@ function doAssessment($surveyid, $returndataonly=false) $groups=array(); foreach($fieldmap as $field) { + // Init Assessment Value + $assessmentValue = NULL; + + // Default Assessment Value Calculation if (in_array($field['type'],array('1','F','H','W','Z','L','!','M','O','P'))) { $fieldmap[$field['fieldname']]['assessment_value']=0; @@ -1897,8 +1901,7 @@ function doAssessment($surveyid, $returndataonly=false) if ($_SESSION['survey_'.$surveyid][$field['fieldname']] == "Y") { $aAttributes=getQuestionAttributeValues($field['qid']); - $fieldmap[$field['fieldname']]['assessment_value']=(int)$aAttributes['assessment_value']; - $total=$total+(int)$aAttributes['assessment_value']; + $assessmentValue = (int)$aAttributes['assessment_value']; } } else // Single choice question @@ -1908,13 +1911,56 @@ function doAssessment($surveyid, $returndataonly=false) if ($usresult) { $usrow = $usresult->read(); - $fieldmap[$field['fieldname']]['assessment_value']=$usrow['assessment_value']; - $total=$total+$usrow['assessment_value']; + $assessmentValue = $usrow['assessment_value']; } } } $groups[]=$field['gid']; } + + // If this is a question (and not a survey field, like ID), save asessment value + if ($field['qid'] > 0) + { + /** + * Allow Plugin to update assessment value + */ + // Prepare Event Info + $event = new PluginEvent('afterSurveyQuestionAssessment'); + $event->set('surveyId', $surveyid); + $event->set('lang', $_SESSION['survey_'.$surveyid]['s_lang']); + $event->set('gid', $field['gid']); + $event->set('qid', $field['qid']); + + if (array_key_exists('sqid', $field)) + { + + $event->set('sqid', $field['sqid']); + } + + if (array_key_exists('aid', $field)) + { + + $event->set('aid', $field['aid']); + } + + $event->set('assessmentValue', $assessmentValue); + + if (isset($_SESSION['survey_'.$surveyid][$field['fieldname']])) + { + $event->set('response', $_SESSION['survey_'.$surveyid][$field['fieldname']]); + } + + // Dispatch Event and Get new assessment value + App()->getPluginManager()->dispatchEvent($event); + $updatedAssessmentValue=$event->get('assessmentValue', $assessmentValue); + + /** + * Save assessment value on the response + */ + $fieldmap[$field['fieldname']]['assessment_value']=$updatedAssessmentValue; + $total=$total+$updatedAssessmentValue; + } + $i++; } diff --git a/application/helpers/remotecontrol/remotecontrol_handle.php b/application/helpers/remotecontrol/remotecontrol_handle.php index df664d74981..9c0b4556831 100644 --- a/application/helpers/remotecontrol/remotecontrol_handle.php +++ b/application/helpers/remotecontrol/remotecontrol_handle.php @@ -480,7 +480,7 @@ public function export_timeline($sSessionKey, $iSurveyID, $sType, $dStart, $dEnd { if (!$this->_checkSessionKey($sSessionKey)) return array('status' => 'Invalid session key'); if (!in_array($sType, array('day','hour'))) return array('status' => 'Invalid Period'); - if (!hasSurveyPermission($iSurveyID, 'responses', 'read')) return array('status' => 'No permission'); + if (!Permission::model()->hasSurveyPermission($iSurveyID, 'responses', 'read')) return array('status' => 'No permission'); $oSurvey=Survey::model()->findByPk($iSurveyID); if (is_null($oSurvey)) return array('status' => 'Error: Invalid survey ID'); if (!tableExists('{{survey_' . $iSurveyID . '}}')) return array('status' => 'No available data'); @@ -1296,6 +1296,7 @@ public function import_question($sSessionKey, $iSurveyID,$iGroupID, $sImportData libxml_disable_entity_loader($bOldEntityLoaderState); // Put back entity loader to its original state, to avoid contagion to other applications on the server + try { $oQuestion->save(); diff --git a/application/libraries/PluginManager/LimesurveyApi.php b/application/libraries/PluginManager/LimesurveyApi.php index 12e26d6a6a5..498ac58a01f 100644 --- a/application/libraries/PluginManager/LimesurveyApi.php +++ b/application/libraries/PluginManager/LimesurveyApi.php @@ -4,6 +4,8 @@ use User; use PluginDynamic; use SurveyDynamic; +use Template; + /** * Class exposing a Limesurvey API to plugins. * This class is instantiated by the plugin manager, @@ -168,13 +170,21 @@ public function EMevaluateExpression($expression) /** * Get the current request object * - * @return LSHttpRequest + * @return \LSHttpRequest */ public function getRequest() { return App()->getRequest(); } + /** + * Returns an array of all available template names - does a basic check if the template might be valid + * @return array + */ + public function getTemplateList(){ + return Template::getTemplateList(); + } + /** * Gets a survey response from the database. * diff --git a/application/libraries/PluginManager/PluginBase.php b/application/libraries/PluginManager/PluginBase.php index 789748003ce..b0bf51b4b07 100644 --- a/application/libraries/PluginManager/PluginBase.php +++ b/application/libraries/PluginManager/PluginBase.php @@ -312,8 +312,7 @@ public function renderPartial($viewfile, $data, $return = false, $processOutput \Yii::setPathOfAlias($alias, $this->getDir()); $fullAlias = $alias . '.views.' . $viewfile; - if (isset($data['plugin'])) - { + if (isset($data['plugin'])) { throw new InvalidArgumentException("Key 'plugin' in data variable is for plugin base only. Please use another key name."); } diff --git a/application/models/Question.php b/application/models/Question.php index 22569b31a3d..767c05353e7 100644 --- a/application/models/Question.php +++ b/application/models/Question.php @@ -1047,13 +1047,13 @@ public function fixSubQuestions(){ /* Delete invalid subquestions (not in primary language */ $validSubQuestion = Question::model()->findAll(array( - 'select'=>'qid', + 'select'=>'title', 'condition'=>'parent_qid=:parent_qid AND language=:language', 'params'=>array('parent_qid' => $this->qid,'language' => $oSurvey->language) )); $criteria = new CDbCriteria; $criteria->compare('parent_qid',$this->qid); - $criteria->addNotInCondition('qid', CHtml::listData($validSubQuestion,'qid','qid')); + $criteria->addNotInCondition('title', CHtml::listData($validSubQuestion,'title','title')); Question::model()->deleteAll($criteria);// Must log count of deleted ? } diff --git a/application/models/Survey.php b/application/models/Survey.php index f3096cbb2a3..96940a7501f 100644 --- a/application/models/Survey.php +++ b/application/models/Survey.php @@ -247,6 +247,18 @@ public function rules() */ public function fixSurveyAttribute($event) { + $event = new PluginEvent('afterFindSurvey'); + $event->set('surveyid',$this->sid); + App()->getPluginManager()->dispatchEvent($event); + // set the attributes we allow to be fixed + $allowedAttributes = array( 'template','usecookie', 'allowprev', + 'showxquestions', 'shownoanswer', 'showprogress', 'questionindex', + 'usecaptcha', 'showgroupinfo', 'showqnumcode', 'navigationdelay'); + foreach ($allowedAttributes as $attribute) { + if (!is_null($event->get($attribute))) { + $this->{$attribute} = $event->get($attribute); + } + } $this->template=Template::templateNameFilter($this->template); } @@ -444,12 +456,12 @@ public function getGoogleanalyticsapikeysetting(){ if($this->googleanalyticsapikey === "9999useGlobal9999") { return "G"; - } + } else if($this->googleanalyticsapikey == "") { return "N"; } - else + else { return "Y"; } @@ -458,7 +470,7 @@ public function setGoogleanalyticsapikeysetting($value){ if($value == "G") { $this->googleanalyticsapikey = "9999useGlobal9999"; - } + } else if($value == "N") { $this->googleanalyticsapikey = ""; @@ -473,8 +485,8 @@ public function getGoogleanalyticsapikey(){ if($this->googleanalyticsapikey === "9999useGlobal9999") { return getGlobalSetting(googleanalyticsapikey); - } - else + } + else { return $this->googleanalyticsapikey; } @@ -1161,4 +1173,34 @@ public static function getSurveysWithTokenTable() $surveys = array_filter($surveys, function($s) { return tableExists('{{tokens_' . $s->sid); }); return $surveys; } + + /** + * Fix invalid question in this survey + */ + public function fixInvalidQuestions() + { + /* Delete invalid questions (don't exist in primary language) using qid like column name*/ + $validQuestion = Question::model()->findAll(array( + 'select'=>'qid', + 'condition'=>'sid=:sid AND language=:language AND parent_qid = 0', + 'params'=>array('sid' => $this->sid,'language' => $this->language) + )); + $criteria = new CDbCriteria; + $criteria->compare('sid',$this->sid); + $criteria->addCondition('parent_qid = 0'); + $criteria->addNotInCondition('qid', CHtml::listData($validQuestion,'qid','qid')); + Question::model()->deleteAll($criteria);// Must log count of deleted ? + + /* Delete invalid Sub questions (don't exist in primary language) using title like column name*/ + $validSubQuestion = Question::model()->findAll(array( + 'select'=>'title', + 'condition'=>'sid=:sid AND language=:language AND parent_qid != 0', + 'params'=>array('sid' => $this->sid,'language' => $this->language) + )); + $criteria = new CDbCriteria; + $criteria->compare('sid',$this->sid); + $criteria->addCondition('parent_qid != 0'); + $criteria->addNotInCondition('title', CHtml::listData($validSubQuestion,'title','title')); + Question::model()->deleteAll($criteria);// Must log count of deleted ? + } } diff --git a/application/views/admin/dataentry/active_html_view.php b/application/views/admin/dataentry/active_html_view.php index a7a02d86527..161c84bb94f 100644 --- a/application/views/admin/dataentry/active_html_view.php +++ b/application/views/admin/dataentry/active_html_view.php @@ -38,32 +38,59 @@ function saveshow(value) - + +
+ +
+ +
+
+ + +
+ +
+ + +
+
+ diff --git a/application/views/admin/dataentry/vvimport.php b/application/views/admin/dataentry/vvimport.php index cc57b90f810..c42acdf4ca9 100644 --- a/application/views/admin/dataentry/vvimport.php +++ b/application/views/admin/dataentry/vvimport.php @@ -11,7 +11,7 @@ ?> 'multipart/form-data', 'id'=>'vvexport', 'class'=>'form-horizontal'));?> -
+

@@ -24,7 +24,7 @@
- +

@@ -101,7 +101,7 @@ -
+
widget('yiiwheels.widgets.switch.WhSwitch', array( 'name' => 'forceimport', 'value'=> false, diff --git a/application/views/admin/export/vv_view.php b/application/views/admin/export/vv_view.php index d6b6196d6c4..acfbd0222cd 100644 --- a/application/views/admin/export/vv_view.php +++ b/application/views/admin/export/vv_view.php @@ -87,24 +87,24 @@
-