View Issue Details

This bug affects 1 person(s).
 2
IDProjectCategoryView StatusLast Update
11929Bug reportsSurvey takingpublic2017-03-07 11:02
ReporterDenisChenu Assigned ToLouisGac 
PrioritynoneSeverityminor 
Status closedResolutionfixed 
Summary11929: Reload a "all in one survey" : PHP notice
Description

All in one survey show a notice or a bad alert if user reload the page.

Steps To Reproduce

Take a all in one survey (any)
Launch it without newtest=Y (via surveys listing for example)
Reload page : PHP Notice with debug>=2

With debug == 0 : show an alert "One or more questions have not been answered in a valid manner ...." it must not. Reloading must be accepted on first page.

Think there are a lack of control : did we are in a "$_POST" request , but : what for "just after entre token in token form"

TagsNo tags attached.
Attached Files
PHP notice.html (17,742 bytes)   
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>PHP notice</title>

<style type="text/css">
/*<![CDATA[*/
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;margin:0;padding:0;}
body{line-height:1;}
ol,ul{list-style:none;}
blockquote,q{quotes:none;}
blockquote:before,blockquote:after,q:before,q:after{content:none;}
:focus{outline:0;}
ins{text-decoration:none;}
del{text-decoration:line-through;}
table{border-collapse:collapse;border-spacing:0;}

body {
	font: normal 9pt "Verdana";
	color: #000;
	background: #fff;
}

h1 {
	font: normal 18pt "Verdana";
	color: #f00;
	margin-bottom: .5em;
}

h2 {
	font: normal 14pt "Verdana";
	color: #800000;
	margin-bottom: .5em;
}

h3 {
	font: bold 11pt "Verdana";
}

pre {
	font: normal 11pt Menlo, Consolas, "Lucida Console", Monospace;
}

pre span.error {
	display: block;
	background: #fce3e3;
}

pre span.ln {
	color: #999;
	padding-right: 0.5em;
	border-right: 1px solid #ccc;
}

pre span.error-ln {
	font-weight: bold;
}

.container {
	margin: 1em 4em;
}

.version {
	color: gray;
	font-size: 8pt;
	border-top: 1px solid #aaa;
	padding-top: 1em;
	margin-bottom: 1em;
}

.message {
	color: #000;
	padding: 1em;
	font-size: 11pt;
	background: #f3f3f3;
	-webkit-border-radius: 10px;
	-moz-border-radius: 10px;
	border-radius: 10px;
	margin-bottom: 1em;
	line-height: 160%;
}

.source {
	margin-bottom: 1em;
}

.code pre {
	background-color: #ffe;
	margin: 0.5em 0;
	padding: 0.5em;
	line-height: 125%;
	border: 1px solid #eee;
}

.source .file {
	margin-bottom: 1em;
	font-weight: bold;
}

.traces {
	margin: 2em 0;
}

.trace {
	margin: 0.5em 0;
	padding: 0.5em;
}

.trace.app {
	border: 1px dashed #c00;
}

.trace .number {
	text-align: right;
	width: 2em;
	padding: 0.5em;
}

.trace .content {
	padding: 0.5em;
}

.trace .plus,
.trace .minus {
	display:inline;
	vertical-align:middle;
	text-align:center;
	border:1px solid #000;
	color:#000;
	font-size:10px;
	line-height:10px;
	margin:0;
	padding:0 1px;
	width:10px;
	height:10px;
}

.trace.collapsed .minus,
.trace.expanded .plus,
.trace.collapsed pre {
	display: none;
}

.trace-file {
	cursor: pointer;
	padding: 0.2em;
}

.trace-file:hover {
	background: #f0ffff;
}
/*]]>*/
</style>
</head>

<body>
<div class="container">
	<h1>PHP notice</h1>

	<p class="message">
		Undefined variable: stepInfo	</p>

	<div class="source">
		<p class="file">/home/sondages.pro/htdocs/limesurvey_GIT/testing/answershtml/application/helpers/SurveyRuntimeHelper.php(288)</p>
		<div class="code"><pre><span class="ln">276</span>                             $plus_qanda['finalgroup']=$ia[10];
<span class="ln">277</span>                         else
<span class="ln">278</span>                             $plus_qanda['finalgroup']=$ia[5];
<span class="ln">279</span>                         $qanda[] = $plus_qanda;
<span class="ln">280</span>                     }
<span class="ln">281</span>                     if ($plus_inputnames)
<span class="ln">282</span>                     {
<span class="ln">283</span>                         $inputnames = addtoarray_single($inputnames, $plus_inputnames);
<span class="ln">284</span>                     }
<span class="ln">285</span> 
<span class="ln">286</span>                     //Display the "mandatory" popup if necessary
<span class="ln">287</span>                     // TMSW - get question-level error messages - don't call **_popup() directly
<span class="error"><span class="ln error-ln">288</span>                     if ($okToShowErrors &amp;&amp; $stepInfo['mandViolation'])
</span><span class="ln">289</span>                     {
<span class="ln">290</span>                         list($mandatorypopup, $popup) = mandatory_popup($ia, $notanswered);
<span class="ln">291</span>                     }
<span class="ln">292</span> 
<span class="ln">293</span>                     //Display the "validation" popup if necessary
<span class="ln">294</span>                     if ($okToShowErrors &amp;&amp; !$stepInfo['valid'])
<span class="ln">295</span>                     {
<span class="ln">296</span>                         list($validationpopup, $vpopup) = validation_popup($ia, $notvalidated);
<span class="ln">297</span>                     }
<span class="ln">298</span> 
<span class="ln">299</span>                     // Display the "file validation" popup if necessary
<span class="ln">300</span>                     if ($okToShowErrors &amp;&amp; isset($filenotvalidated))
</pre></div>	</div>

	<div class="traces">
		<h2>Stack Trace</h2>
				<table style="width:100%;">
						<tbody><tr class="trace app expanded">
			<td class="number">
				#0			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/testing/answershtml/application/controllers/survey/index.php(658): <strong>SurveyRuntimeHelper</strong>-&gt;<strong>run</strong>("33944",
 array("surveyid" =&gt; "33944", "thissurvey" =&gt; array("template" 
=&gt; "default", "language" =&gt; "fr", "sid" =&gt; "33944", "owner_id" 
=&gt; "1", ...), "thisstep" =&gt; null, "tokensexist" =&gt; 0, ...))				</div>

				<div class="code"><pre><span class="ln">653</span>         //Send local variables to the appropriate survey type
<span class="ln">654</span>         unset($redata);
<span class="ln">655</span>         $redata = compact(array_keys(get_defined_vars()));
<span class="ln">656</span>         Yii::import('application.helpers.SurveyRuntimeHelper');
<span class="ln">657</span>         $tmp = new SurveyRuntimeHelper();
<span class="error"><span class="ln error-ln">658</span>         $tmp-&gt;run($surveyid,$redata);
</span><span class="ln">659</span> 
<span class="ln">660</span>         if (App()-&gt;request-&gt;getPost('saveall') || isset($flashmessage))
<span class="ln">661</span>         {
<span class="ln">662</span>             App()-&gt;clientScript-&gt;registerScript("saveflashmessage","alert('".gT("Your responses were successfully saved.","js")."');",CClientScript::POS_READY);
<span class="ln">663</span>         }
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#1			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/testing/answershtml/application/controllers/survey/index.php(73): <strong>index</strong>-&gt;<strong>action</strong>()				</div>

				<div class="code"><pre><span class="ln">68</span>             App()-&gt;getClientScript()-&gt;reset();
<span class="ln">69</span>             return $buffer;
<span class="ln">70</span>         });
<span class="ln">71</span> 
<span class="ln">72</span>         ob_implicit_flush(false);
<span class="error"><span class="ln error-ln">73</span>         $this-&gt;action();
</span><span class="ln">74</span>         ob_flush();
<span class="ln">75</span>     }
<span class="ln">76</span> 
<span class="ln">77</span>     function action()
<span class="ln">78</span>     {
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#2			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/testing/answershtml/framework/web/actions/CAction.php(76): <strong>index</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">71</span>     {
<span class="ln">72</span>         $method=new ReflectionMethod($this, 'run');
<span class="ln">73</span>         if($method-&gt;getNumberOfParameters()&gt;0)
<span class="ln">74</span>             return $this-&gt;runWithParamsInternal($this, $method, $params);
<span class="ln">75</span> 
<span class="error"><span class="ln error-ln">76</span>         $this-&gt;run();
</span><span class="ln">77</span>         return true;
<span class="ln">78</span>     }
<span class="ln">79</span> 
<span class="ln">80</span>     /**
<span class="ln">81</span>      * Executes a method of an object with the supplied named parameters.
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#3			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/testing/answershtml/framework/web/CController.php(308): <strong>CAction</strong>-&gt;<strong>runWithParams</strong>(array("lang" =&gt; "fr", "sid" =&gt; "33944"))				</div>

				<div class="code"><pre><span class="ln">303</span>     {
<span class="ln">304</span>         $priorAction=$this-&gt;_action;
<span class="ln">305</span>         $this-&gt;_action=$action;
<span class="ln">306</span>         if($this-&gt;beforeAction($action))
<span class="ln">307</span>         {
<span class="error"><span class="ln error-ln">308</span>             if($action-&gt;runWithParams($this-&gt;getActionParams())===false)
</span><span class="ln">309</span>                 $this-&gt;invalidActionParams($action);
<span class="ln">310</span>             else
<span class="ln">311</span>                 $this-&gt;afterAction($action);
<span class="ln">312</span>         }
<span class="ln">313</span>         $this-&gt;_action=$priorAction;
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#4			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/testing/answershtml/framework/web/CController.php(286): <strong>CController</strong>-&gt;<strong>runAction</strong>(index)				</div>

				<div class="code"><pre><span class="ln">281</span>      * @see runAction
<span class="ln">282</span>      */
<span class="ln">283</span>     public function runActionWithFilters($action,$filters)
<span class="ln">284</span>     {
<span class="ln">285</span>         if(empty($filters))
<span class="error"><span class="ln error-ln">286</span>             $this-&gt;runAction($action);
</span><span class="ln">287</span>         else
<span class="ln">288</span>         {
<span class="ln">289</span>             $priorAction=$this-&gt;_action;
<span class="ln">290</span>             $this-&gt;_action=$action;
<span class="ln">291</span>             CFilterChain::create($this,$action,$filters)-&gt;run();
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#5			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/testing/answershtml/framework/web/CController.php(265): <strong>CController</strong>-&gt;<strong>runActionWithFilters</strong>(index, array())				</div>

				<div class="code"><pre><span class="ln">260</span>         {
<span class="ln">261</span>             if(($parent=$this-&gt;getModule())===null)
<span class="ln">262</span>                 $parent=Yii::app();
<span class="ln">263</span>             if($parent-&gt;beforeControllerAction($this,$action))
<span class="ln">264</span>             {
<span class="error"><span class="ln error-ln">265</span>                 $this-&gt;runActionWithFilters($action,$this-&gt;filters());
</span><span class="ln">266</span>                 $parent-&gt;afterControllerAction($this,$action);
<span class="ln">267</span>             }
<span class="ln">268</span>         }
<span class="ln">269</span>         else
<span class="ln">270</span>             $this-&gt;missingAction($actionID);
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#6			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/testing/answershtml/framework/web/CWebApplication.php(282): <strong>CController</strong>-&gt;<strong>run</strong>("index")				</div>

				<div class="code"><pre><span class="ln">277</span>         {
<span class="ln">278</span>             list($controller,$actionID)=$ca;
<span class="ln">279</span>             $oldController=$this-&gt;_controller;
<span class="ln">280</span>             $this-&gt;_controller=$controller;
<span class="ln">281</span>             $controller-&gt;init();
<span class="error"><span class="ln error-ln">282</span>             $controller-&gt;run($actionID);
</span><span class="ln">283</span>             $this-&gt;_controller=$oldController;
<span class="ln">284</span>         }
<span class="ln">285</span>         else
<span class="ln">286</span>             throw new CHttpException(404,Yii::t('yii','Unable to resolve the request "{route}".',
<span class="ln">287</span>                 array('{route}'=&gt;$route===''?$this-&gt;defaultController:$route)));
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#7			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/testing/answershtml/framework/web/CWebApplication.php(141): <strong>CWebApplication</strong>-&gt;<strong>runController</strong>("survey/index/sid/33944")				</div>

				<div class="code"><pre><span class="ln">136</span>             foreach(array_splice($this-&gt;catchAllRequest,1) as $name=&gt;$value)
<span class="ln">137</span>                 $_GET[$name]=$value;
<span class="ln">138</span>         }
<span class="ln">139</span>         else
<span class="ln">140</span>             $route=$this-&gt;getUrlManager()-&gt;parseUrl($this-&gt;getRequest());
<span class="error"><span class="ln error-ln">141</span>         $this-&gt;runController($route);
</span><span class="ln">142</span>     }
<span class="ln">143</span> 
<span class="ln">144</span>     /**
<span class="ln">145</span>      * Registers the core application components.
<span class="ln">146</span>      * This method overrides the parent implementation by registering additional core components.
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#8			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/testing/answershtml/framework/base/CApplication.php(185): <strong>CWebApplication</strong>-&gt;<strong>processRequest</strong>()				</div>

				<div class="code"><pre><span class="ln">180</span>     public function run()
<span class="ln">181</span>     {
<span class="ln">182</span>         if($this-&gt;hasEventHandler('onBeginRequest'))
<span class="ln">183</span>             $this-&gt;onBeginRequest(new CEvent($this));
<span class="ln">184</span>         register_shutdown_function(array($this,'end'),0,false);
<span class="error"><span class="ln error-ln">185</span>         $this-&gt;processRequest();
</span><span class="ln">186</span>         if($this-&gt;hasEventHandler('onEndRequest'))
<span class="ln">187</span>             $this-&gt;onEndRequest(new CEvent($this));
<span class="ln">188</span>     }
<span class="ln">189</span> 
<span class="ln">190</span>     /**
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#9			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/testing/answershtml/index.php(214): <strong>CApplication</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">209</span>         die (sprintf('%s should be writable by the webserver (766 or 776).', $sDefaultRuntimePath));
<span class="ln">210</span>     }
<span class="ln">211</span> }
<span class="ln">212</span> 
<span class="ln">213</span> Yii::$enableIncludePath = false;
<span class="error"><span class="ln error-ln">214</span> Yii::createApplication('LSYii_Application', $config)-&gt;run();
</span><span class="ln">215</span> 
<span class="ln">216</span> /* End of file index.php */
<span class="ln">217</span> /* Location: ./index.php */
</pre></div>			</td>
		</tr>
				</tbody></table>
	</div>

	<div class="version">
		2016-11-21 08:26:00 Apache/2.2.22 (Debian) <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.17	</div>
</div>

<script type="text/javascript">
/*<![CDATA[*/
var traceReg = new RegExp("(^|\\s)trace-file(\\s|$)");
var collapsedReg = new RegExp("(^|\\s)collapsed(\\s|$)");

var e = document.getElementsByTagName("div");
for(var j=0,len=e.length;j<len;j++){
	if(traceReg.test(e[j].className)){
		e[j].onclick = function(){
			var trace = this.parentNode.parentNode;
			if(collapsedReg.test(trace.className))
				trace.className = trace.className.replace("collapsed", "expanded");
			else
				trace.className = trace.className.replace("expanded", "collapsed");
		}
	}
}
/*]]>*/
</script>



</body></html>
PHP notice.html (17,742 bytes)   
Bug heat2
Complete LimeSurvey version number (& build)20161121
I will donate to the project if issue is resolvedNo
BrowserFF49.0.2
Database type & versionnot relevant
Server OS (if known)not relevant
Webserver software & version (if known)not relevant
PHP Versionnot relevant

Relationships

related to 11928 closedLouisGac Error when ending survey that is not active 

Users monitoring this issue

There are no users monitoring this issue.

Activities

LouisGac

LouisGac

2016-12-06 16:32

developer   ~42408

resolved with: https://bugs.limesurvey.org/view.php?id=11928

Issue History

Date Modified Username Field Change
2016-11-21 08:34 DenisChenu New Issue
2016-11-21 08:34 DenisChenu Status new => assigned
2016-11-21 08:34 DenisChenu Assigned To => LouisGac
2016-11-21 08:34 DenisChenu File Added: PHP notice.html
2016-11-21 08:36 DenisChenu File Added: limesurvey_survey_647651.lss
2016-11-21 10:02 LouisGac Relationship added related to 11928
2016-11-21 10:33 LouisGac Sticky Issue No => Yes
2016-12-06 16:32 LouisGac Status assigned => resolved
2016-12-06 16:32 LouisGac Resolution open => fixed
2016-12-06 16:32 LouisGac Note Added: 42408
2016-12-06 16:32 LouisGac Sticky Issue Yes => No
2017-03-07 11:02 c_schmitz Status resolved => closed