View Issue Details

This issue affects 3 person(s).
 22
IDProjectCategoryView StatusLast Update
20244Bug reportsResponse browsingpublic2026-03-04 08:47
ReporterDenisChenu Assigned Toc_schmitz  
PrioritynoneSeverityminor 
Status resolvedResolutionfixed 
Product Version6.6.x 
Summary20244: Upload question type : json_decode deprecated
Description

When set debug to 2 or 1 : see json_decode(): Passing null to parameter #1 ($json) of type string is deprecated

Steps To Reproduce

Steps to reproduce

Import included survey
Activate
Launch
Submit without set Yes to 1st question
Set debug=2 :
Browse

Expected result

See response list

Actual result

PHP error

TagsNo tags attached.
Attached Files
PHP error.html (50,181 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" data-lt-installed="true"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>PHP error</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 error</h1>

	<p class="message">
		json_decode(): Passing null to parameter #1 ($json) of type string is deprecated	</p>

	<div class="source">
		<p class="file">/media/shnoulle/data/webdev/master/application/helpers/common_helper.php(4559)</p>
		<div class="code"><pre><span class="ln">4547</span>     $ans = str_replace(array('{', '}'), array('{ ', ' }'), $ans);
<span class="ln">4548</span>     return $ans;
<span class="ln">4549</span> }
<span class="ln">4550</span> 
<span class="ln">4551</span> /**
<span class="ln">4552</span>  * Decode a json string, sometimes needs stripslashes
<span class="ln">4553</span>  *
<span class="ln">4554</span>  * @param string $jsonString
<span class="ln">4555</span>  * @return mixed
<span class="ln">4556</span>  */
<span class="ln">4557</span> function json_decode_ls($jsonString)
<span class="ln">4558</span> {
<span class="error"><span class="ln error-ln">4559</span>     $decoded = json_decode($jsonString, true);
</span><span class="ln">4560</span> 
<span class="ln">4561</span>     if (is_null($decoded) &amp;&amp; !empty($jsonString)) {
<span class="ln">4562</span>         // probably we need stipslahes
<span class="ln">4563</span>         $decoded = json_decode(stripslashes($jsonString), true);
<span class="ln">4564</span>     }
<span class="ln">4565</span> 
<span class="ln">4566</span>     return $decoded;
<span class="ln">4567</span> }
<span class="ln">4568</span> 
<span class="ln">4569</span> /**
<span class="ln">4570</span>  * Return accepted codingsArray for importing files
<span class="ln">4571</span>  *
</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;/media/shnoulle/data/webdev/master/application/helpers/common_helper.php(4559): <strong>json_decode</strong>(null, true)				</div>

				<div class="code"><pre><span class="ln">4554</span>  * @param string $jsonString
<span class="ln">4555</span>  * @return mixed
<span class="ln">4556</span>  */
<span class="ln">4557</span> function json_decode_ls($jsonString)
<span class="ln">4558</span> {
<span class="error"><span class="ln error-ln">4559</span>     $decoded = json_decode($jsonString, true);
</span><span class="ln">4560</span> 
<span class="ln">4561</span>     if (is_null($decoded) &amp;&amp; !empty($jsonString)) {
<span class="ln">4562</span>         // probably we need stipslahes
<span class="ln">4563</span>         $decoded = json_decode(stripslashes($jsonString), true);
<span class="ln">4564</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;/media/shnoulle/data/webdev/master/application/models/SurveyDynamic.php(408): <strong>json_decode_ls</strong>(null)				</div>

				<div class="code"><pre><span class="ln">403</span> 
<span class="ln">404</span>         // Upload question
<span class="ln">405</span>         if ($oFieldMap-&gt;type == Question::QT_VERTICAL_FILE_UPLOAD &amp;&amp; strpos((string) $oFieldMap-&gt;fieldname, 'filecount') === false) {
<span class="ln">406</span>             $sSurveyEntry = "&lt;table class='table table-condensed upload-question'&gt;";
<span class="ln">407</span>             $aQuestionAttributes = QuestionAttribute::model()-&gt;getQuestionAttributes($oFieldMap-&gt;qid);
<span class="error"><span class="ln error-ln">408</span>             $aFilesInfo = json_decode_ls($this-&gt;$colName);
</span><span class="ln">409</span>             if (!empty($aFilesInfo)) {
<span class="ln">410</span>                 foreach ($aFilesInfo as $iFileIndex =&gt; $fileInfo) {
<span class="ln">411</span>                     if (empty($fileInfo)) {
<span class="ln">412</span>                         continue;
<span class="ln">413</span>                     }
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#2			</td>
			<td class="content">
				<div class="trace-file">
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/base/CComponent.php(612) : eval()'d code(1): <strong>SurveyDynamic</strong>-&gt;<strong>getExtendedData</strong>("416742X277X2679", "en", "eyJmaWVsZG5hbWUiOiI0MTY3NDJYMjc3WDI2NzkiLCJ0eXBlIjoifCIsInNpZCI6...")				</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;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/base/CComponent.php(612): <strong>eval</strong>()				</div>

				<div class="code"><pre><span class="ln">607</span>         if(is_string($_expression_))
<span class="ln">608</span>         {
<span class="ln">609</span>             extract($_data_);
<span class="ln">610</span>             try
<span class="ln">611</span>             {
<span class="error"><span class="ln error-ln">612</span>                 return eval('return ' . $_expression_ . ';');
</span><span class="ln">613</span>             }
<span class="ln">614</span>             catch (ParseError $e)
<span class="ln">615</span>             {
<span class="ln">616</span>                 return false;
<span class="ln">617</span>             }
</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;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/zii/widgets/grid/CDataColumn.php(148): <strong>CComponent</strong>-&gt;<strong>evaluateExpression</strong>("$data-&gt;getExtendedData("416742X277X2679", "en", "eyJmaWVsZG5hbWU...", array("data" =&gt; SurveyDynamic, "row" =&gt; 0))				</div>

				<div class="code"><pre><span class="ln">143</span>      */
<span class="ln">144</span>     public function getDataCellContent($row)
<span class="ln">145</span>     {
<span class="ln">146</span>         $data=$this-&gt;grid-&gt;dataProvider-&gt;data[$row];
<span class="ln">147</span>         if($this-&gt;value!==null)
<span class="error"><span class="ln error-ln">148</span>             $value=$this-&gt;evaluateExpression($this-&gt;value,array('data'=&gt;$data,'row'=&gt;$row));
</span><span class="ln">149</span>         elseif($this-&gt;name!==null)
<span class="ln">150</span>             $value=CHtml::value($data,$this-&gt;name);
<span class="ln">151</span>         return $value===null ? $this-&gt;grid-&gt;nullDisplay : $this-&gt;grid-&gt;getFormatter()-&gt;format($value,$this-&gt;type);
<span class="ln">152</span>     }
<span class="ln">153</span> }
</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;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/zii/widgets/grid/CGridColumn.php(237): <strong>CDataColumn</strong>-&gt;<strong>getDataCellContent</strong>(0)				</div>

				<div class="code"><pre><span class="ln">232</span>      * @param mixed $data the data associated with the row
<span class="ln">233</span>      * @deprecated since 1.1.16. Use {@link getDataCellContent()} instead.
<span class="ln">234</span>      */
<span class="ln">235</span>     protected function renderDataCellContent($row,$data)
<span class="ln">236</span>     {
<span class="error"><span class="ln error-ln">237</span>         echo $this-&gt;getDataCellContent($row);
</span><span class="ln">238</span>     }
<span class="ln">239</span> 
<span class="ln">240</span>     /**
<span class="ln">241</span>      * Returns the filter cell content.
<span class="ln">242</span>      * The default implementation simply returns an empty column.
</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;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/zii/widgets/grid/CGridColumn.php(160): <strong>CGridColumn</strong>-&gt;<strong>renderDataCellContent</strong>(0, SurveyDynamic)				</div>

				<div class="code"><pre><span class="ln">155</span>                 else
<span class="ln">156</span>                     $options['class']=$class;
<span class="ln">157</span>             }
<span class="ln">158</span>         }
<span class="ln">159</span>         echo CHtml::openTag('td',$options);
<span class="error"><span class="ln error-ln">160</span>         $this-&gt;renderDataCellContent($row,$data);
</span><span class="ln">161</span>         echo '&lt;/td&gt;';
<span class="ln">162</span>     }
<span class="ln">163</span> 
<span class="ln">164</span>     /**
<span class="ln">165</span>      * Renders the footer cell.
</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;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/zii/widgets/grid/CGridView.php(655): <strong>CGridColumn</strong>-&gt;<strong>renderDataCell</strong>(0)				</div>

				<div class="code"><pre><span class="ln">650</span>      * @param integer $row
<span class="ln">651</span>      * @since 1.1.16
<span class="ln">652</span>      */
<span class="ln">653</span>     protected function renderDataCell($column, $row)
<span class="ln">654</span>     {
<span class="error"><span class="ln error-ln">655</span>         $column-&gt;renderDataCell($row);
</span><span class="ln">656</span>     }
<span class="ln">657</span>     
<span class="ln">658</span>     /**
<span class="ln">659</span>      * @return boolean whether the table should render a footer.
<span class="ln">660</span>      * This is true if any of the {@link columns} has a true {@link CGridColumn::hasFooter} value.
</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;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/zii/widgets/grid/CGridView.php(639): <strong>CGridView</strong>-&gt;<strong>renderDataCell</strong>(TbDataColumn, 0)				</div>

				<div class="code"><pre><span class="ln">634</span>                 $htmlOptions['class']=$class;
<span class="ln">635</span>         }
<span class="ln">636</span> 
<span class="ln">637</span>         echo CHtml::openTag('tr', $htmlOptions)."\n";
<span class="ln">638</span>         foreach($this-&gt;columns as $column)
<span class="error"><span class="ln error-ln">639</span>             $this-&gt;renderDataCell($column, $row);
</span><span class="ln">640</span>         echo "&lt;/tr&gt;\n";
<span class="ln">641</span>     }
<span class="ln">642</span> 
<span class="ln">643</span>     /**
<span class="ln">644</span>      * A seam for people extending CGridView to be able to hook onto the data cell rendering process.
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#9			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/zii/widgets/grid/CGridView.php(595): <strong>CGridView</strong>-&gt;<strong>renderTableRow</strong>(0)				</div>

				<div class="code"><pre><span class="ln">590</span>         echo "&lt;tbody&gt;\n";
<span class="ln">591</span> 
<span class="ln">592</span>         if($n&gt;0)
<span class="ln">593</span>         {
<span class="ln">594</span>             for($row=0;$row&lt;$n;++$row)
<span class="error"><span class="ln error-ln">595</span>                 $this-&gt;renderTableRow($row);
</span><span class="ln">596</span>         }
<span class="ln">597</span>         else
<span class="ln">598</span>         {
<span class="ln">599</span>             echo '&lt;tr&gt;&lt;td colspan="'.count($this-&gt;columns).'" class="empty"&gt;';
<span class="ln">600</span>             $this-&gt;renderEmptyText();
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#10			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/zii/widgets/grid/CGridView.php(505): <strong>CGridView</strong>-&gt;<strong>renderTableBody</strong>()				</div>

				<div class="code"><pre><span class="ln">500</span>         if($this-&gt;dataProvider-&gt;getItemCount()&gt;0 || $this-&gt;showTableOnEmpty)
<span class="ln">501</span>         {
<span class="ln">502</span>             echo "&lt;table class=\"{$this-&gt;itemsCssClass}\"&gt;\n";
<span class="ln">503</span>             $this-&gt;renderTableHeader();
<span class="ln">504</span>             ob_start();
<span class="error"><span class="ln error-ln">505</span>             $this-&gt;renderTableBody();
</span><span class="ln">506</span>             $body=ob_get_clean();
<span class="ln">507</span>             $this-&gt;renderTableFooter();
<span class="ln">508</span>             echo $body; // TFOOT must appear before TBODY according to the standard.
<span class="ln">509</span>             echo "&lt;/table&gt;";
<span class="ln">510</span>         }
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#11			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/zii/widgets/CBaseListView.php(181): <strong>CGridView</strong>-&gt;<strong>renderItems</strong>()				</div>

				<div class="code"><pre><span class="ln">176</span>     protected function renderSection($matches)
<span class="ln">177</span>     {
<span class="ln">178</span>         $method='render'.$matches[1];
<span class="ln">179</span>         if(method_exists($this,$method))
<span class="ln">180</span>         {
<span class="error"><span class="ln error-ln">181</span>             $this-&gt;$method();
</span><span class="ln">182</span>             $html=ob_get_contents();
<span class="ln">183</span>             ob_clean();
<span class="ln">184</span>             return $html;
<span class="ln">185</span>         }
<span class="ln">186</span>         else
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#12			</td>
			<td class="content">
				<div class="trace-file">
										&nbsp;unknown(0): <strong>CBaseListView</strong>-&gt;<strong>renderSection</strong>(array("{items}", "items"))				</div>

							</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#13			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/zii/widgets/CBaseListView.php(164): <strong>preg_replace_callback</strong>("/{(\w+)}/", array(CLSGridView, "renderSection"), "
&lt;div id="bottom-scroller" class="content-right scrolling-wrappe...")				</div>

				<div class="code"><pre><span class="ln">159</span>      * The rendering results will replace the corresponding placeholders in {@link template}.
<span class="ln">160</span>      */
<span class="ln">161</span>     public function renderContent()
<span class="ln">162</span>     {
<span class="ln">163</span>         ob_start();
<span class="error"><span class="ln error-ln">164</span>         echo preg_replace_callback("/{(\w+)}/",array($this,'renderSection'),$this-&gt;template);
</span><span class="ln">165</span>         ob_end_flush();
<span class="ln">166</span>     }
<span class="ln">167</span> 
<span class="ln">168</span>     /**
<span class="ln">169</span>      * Renders a section.
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#14			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/zii/widgets/CBaseListView.php(149): <strong>CBaseListView</strong>-&gt;<strong>renderContent</strong>()				</div>

				<div class="code"><pre><span class="ln">144</span>     {
<span class="ln">145</span>         $this-&gt;registerClientScript();
<span class="ln">146</span> 
<span class="ln">147</span>         echo CHtml::openTag($this-&gt;tagName,$this-&gt;htmlOptions)."\n";
<span class="ln">148</span> 
<span class="error"><span class="ln error-ln">149</span>         $this-&gt;renderContent();
</span><span class="ln">150</span>         $this-&gt;renderKeys();
<span class="ln">151</span> 
<span class="ln">152</span>         echo CHtml::closeTag($this-&gt;tagName);
<span class="ln">153</span>     }
<span class="ln">154</span> 
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#15			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/web/CBaseController.php(182): <strong>CBaseListView</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">177</span>             return ob_get_clean();
<span class="ln">178</span>         }
<span class="ln">179</span>         else
<span class="ln">180</span>         {
<span class="ln">181</span>             $widget=$this-&gt;createWidget($className,$properties);
<span class="error"><span class="ln error-ln">182</span>             $widget-&gt;run();
</span><span class="ln">183</span>             return $widget;
<span class="ln">184</span>         }
<span class="ln">185</span>     }
<span class="ln">186</span> 
<span class="ln">187</span>     /**
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#16			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/application/views/responses/partial/responseListTable.php(256): <strong>CBaseController</strong>-&gt;<strong>widget</strong>("application.extensions.admin.grid.CLSGridView",
 array("dataProvider" =&gt; LSCActiveDataProvider, "filter" =&gt; 
SurveyDynamic, "columns" =&gt; array(array("id" =&gt; "id", "class" 
=&gt; "CCheckBoxColumn", "selectableRows" =&gt; "100", 
"headerHtmlOptions" =&gt; array("class" =&gt; "ls-sticky-column"), ...),
 array("header" =&gt; "id", "name" =&gt; "id"), array("header" =&gt; 
"seed", "name" =&gt; "seed"), array("header" =&gt; "lastpage", "name" 
=&gt; "lastpage", "type" =&gt; "number", "filter" =&gt; "&lt;input 
class="form-control" type="text" name="SurveyDynamic[last..."), ...), 
"id" =&gt; "responses-grid", ...))				</div>

				<div class="code"><pre><span class="ln">251</span>             'headerHtmlOptions' =&gt; ['class' =&gt; 'ls-sticky-column'],
<span class="ln">252</span>             'filterHtmlOptions' =&gt; ['class' =&gt; 'ls-sticky-column'],
<span class="ln">253</span>             'htmlOptions'       =&gt; ['class' =&gt; 'text-center ls-sticky-column'],
<span class="ln">254</span>         ];
<span class="ln">255</span> 
<span class="error"><span class="ln error-ln">256</span>         $this-&gt;widget(
</span><span class="ln">257</span>             'application.extensions.admin.grid.CLSGridView',
<span class="ln">258</span>             [
<span class="ln">259</span>                 'dataProvider'          =&gt; $model-&gt;search(),
<span class="ln">260</span>                 'filter'                =&gt; $model,
<span class="ln">261</span>                 'columns'               =&gt; $aColumns,
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#17			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/web/CBaseController.php(126): <strong>require</strong>("/media/shnoulle/data/webdev/master/application/views/responses/p...")				</div>

				<div class="code"><pre><span class="ln">121</span>             $data=$_data_;
<span class="ln">122</span>         if($_return_)
<span class="ln">123</span>         {
<span class="ln">124</span>             ob_start();
<span class="ln">125</span>             ob_implicit_flush(false);
<span class="error"><span class="ln error-ln">126</span>             require($_viewFile_);
</span><span class="ln">127</span>             return ob_get_clean();
<span class="ln">128</span>         }
<span class="ln">129</span>         else
<span class="ln">130</span>             require($_viewFile_);
<span class="ln">131</span>     }
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#18			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/web/CBaseController.php(95): <strong>CBaseController</strong>-&gt;<strong>renderInternal</strong>("/
media/shnoulle/data/webdev/master/application/views/responses/p...", 
array("surveyid" =&gt; 416742, "dateformatdetails" =&gt; array("phpdate"
 =&gt; "d.m.Y", "jsdate" =&gt; "DD.MM.YYYY", "dateformat" =&gt; 
"dd.mm.yyyy"), "model" =&gt; SurveyDynamic, "bHaveToken" =&gt; false, 
...), true)				</div>

				<div class="code"><pre><span class="ln">090</span>     {
<span class="ln">091</span>         $widgetCount=count($this-&gt;_widgetStack);
<span class="ln">092</span>         if(($renderer=Yii::app()-&gt;getViewRenderer())!==null &amp;&amp; $renderer-&gt;fileExtension==='.'.CFileHelper::getExtension($viewFile))
<span class="ln">093</span>             $content=$renderer-&gt;renderFile($this,$viewFile,$data,$return);
<span class="ln">094</span>         else
<span class="error"><span class="ln error-ln">095</span>             $content=$this-&gt;renderInternal($viewFile,$data,$return);
</span><span class="ln">096</span>         if(count($this-&gt;_widgetStack)===$widgetCount)
<span class="ln">097</span>             return $content;
<span class="ln">098</span>         else
<span class="ln">099</span>         {
<span class="ln">100</span>             $widget=end($this-&gt;_widgetStack);
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#19			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/web/CController.php(872): <strong>CBaseController</strong>-&gt;<strong>renderFile</strong>("/
media/shnoulle/data/webdev/master/application/views/responses/p...", 
array("surveyid" =&gt; 416742, "dateformatdetails" =&gt; array("phpdate"
 =&gt; "d.m.Y", "jsdate" =&gt; "DD.MM.YYYY", "dateformat" =&gt; 
"dd.mm.yyyy"), "model" =&gt; SurveyDynamic, "bHaveToken" =&gt; false, 
...), true)				</div>

				<div class="code"><pre><span class="ln">867</span>      */
<span class="ln">868</span>     public function renderPartial($view,$data=null,$return=false,$processOutput=false)
<span class="ln">869</span>     {
<span class="ln">870</span>         if(($viewFile=$this-&gt;getViewFile($view))!==false)
<span class="ln">871</span>         {
<span class="error"><span class="ln error-ln">872</span>             $output=$this-&gt;renderFile($viewFile,$data,true);
</span><span class="ln">873</span>             if($processOutput)
<span class="ln">874</span>                 $output=$this-&gt;processOutput($output);
<span class="ln">875</span>             if($return)
<span class="ln">876</span>                 return $output;
<span class="ln">877</span>             else
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#20			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/application/views/responses/browseindex_view.php(37): <strong>CController</strong>-&gt;<strong>renderPartial</strong>("partial/
responseListTable", array("surveyid" =&gt; 416742, "dateformatdetails" 
=&gt; array("phpdate" =&gt; "d.m.Y", "jsdate" =&gt; "DD.MM.YYYY", 
"dateformat" =&gt; "dd.mm.yyyy"), "model" =&gt; SurveyDynamic, 
"bHaveToken" =&gt; false, ...), true)				</div>

				<div class="code"><pre><span class="ln">32</span>         &lt;li class="nav-item"&gt;&lt;a class="nav-link active" href="#allResponses" aria-controls="allResponses" role="tab" data-bs-toggle="tab"&gt;&lt;?php eT('All responses'); ?&gt;&lt;/a&gt;&lt;/li&gt;
<span class="ln">33</span>         &lt;li class="nav-item"&gt;&lt;a class="nav-link" href="#notSubmittedResponses" aria-controls="notSubmittedResponses" role="tab" data-bs-toggle="tab"&gt;&lt;?php eT('Saved but not submitted responses'); ?&gt;&lt;/a&gt;&lt;/li&gt;
<span class="ln">34</span>     &lt;/ul&gt;
<span class="ln">35</span>     &lt;div class="tab-content p-4 h-100"&gt;
<span class="ln">36</span>         &lt;div id="allResponses" class="tab-pane show fade active row"&gt;
<span class="error"><span class="ln error-ln">37</span>             &lt;?php echo $this-&gt;renderPartial(
</span><span class="ln">38</span>                 'partial/responseListTable',
<span class="ln">39</span>                 [
<span class="ln">40</span>                     'surveyid' =&gt; $surveyid,
<span class="ln">41</span>                     'dateformatdetails' =&gt; $dateformatdetails,
<span class="ln">42</span>                     'model' =&gt; $model,
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#21			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/web/CBaseController.php(126): <strong>require</strong>("/media/shnoulle/data/webdev/master/application/views/responses/b...")				</div>

				<div class="code"><pre><span class="ln">121</span>             $data=$_data_;
<span class="ln">122</span>         if($_return_)
<span class="ln">123</span>         {
<span class="ln">124</span>             ob_start();
<span class="ln">125</span>             ob_implicit_flush(false);
<span class="error"><span class="ln error-ln">126</span>             require($_viewFile_);
</span><span class="ln">127</span>             return ob_get_clean();
<span class="ln">128</span>         }
<span class="ln">129</span>         else
<span class="ln">130</span>             require($_viewFile_);
<span class="ln">131</span>     }
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#22			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/web/CBaseController.php(95): <strong>CBaseController</strong>-&gt;<strong>renderInternal</strong>("/
media/shnoulle/data/webdev/master/application/views/responses/b...", 
array("num_completed_answers" =&gt; 1, "num_total_answers" =&gt; 1, 
"surveyid" =&gt; 416742, "dateformatdetails" =&gt; array("phpdate" =&gt;
 "d.m.Y", "jsdate" =&gt; "DD.MM.YYYY", "dateformat" =&gt; "dd.mm.yyyy"),
 ...), true)				</div>

				<div class="code"><pre><span class="ln">090</span>     {
<span class="ln">091</span>         $widgetCount=count($this-&gt;_widgetStack);
<span class="ln">092</span>         if(($renderer=Yii::app()-&gt;getViewRenderer())!==null &amp;&amp; $renderer-&gt;fileExtension==='.'.CFileHelper::getExtension($viewFile))
<span class="ln">093</span>             $content=$renderer-&gt;renderFile($this,$viewFile,$data,$return);
<span class="ln">094</span>         else
<span class="error"><span class="ln error-ln">095</span>             $content=$this-&gt;renderInternal($viewFile,$data,$return);
</span><span class="ln">096</span>         if(count($this-&gt;_widgetStack)===$widgetCount)
<span class="ln">097</span>             return $content;
<span class="ln">098</span>         else
<span class="ln">099</span>         {
<span class="ln">100</span>             $widget=end($this-&gt;_widgetStack);
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#23			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/web/CController.php(872): <strong>CBaseController</strong>-&gt;<strong>renderFile</strong>("/
media/shnoulle/data/webdev/master/application/views/responses/b...", 
array("num_completed_answers" =&gt; 1, "num_total_answers" =&gt; 1, 
"surveyid" =&gt; 416742, "dateformatdetails" =&gt; array("phpdate" =&gt;
 "d.m.Y", "jsdate" =&gt; "DD.MM.YYYY", "dateformat" =&gt; "dd.mm.yyyy"),
 ...), true)				</div>

				<div class="code"><pre><span class="ln">867</span>      */
<span class="ln">868</span>     public function renderPartial($view,$data=null,$return=false,$processOutput=false)
<span class="ln">869</span>     {
<span class="ln">870</span>         if(($viewFile=$this-&gt;getViewFile($view))!==false)
<span class="ln">871</span>         {
<span class="error"><span class="ln error-ln">872</span>             $output=$this-&gt;renderFile($viewFile,$data,true);
</span><span class="ln">873</span>             if($processOutput)
<span class="ln">874</span>                 $output=$this-&gt;processOutput($output);
<span class="ln">875</span>             if($return)
<span class="ln">876</span>                 return $output;
<span class="ln">877</span>             else
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#24			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/web/CController.php(785): <strong>CController</strong>-&gt;<strong>renderPartial</strong>("browseindex_view",
 array("num_completed_answers" =&gt; 1, "num_total_answers" =&gt; 1, 
"surveyid" =&gt; 416742, "dateformatdetails" =&gt; array("phpdate" =&gt;
 "d.m.Y", "jsdate" =&gt; "DD.MM.YYYY", "dateformat" =&gt; "dd.mm.yyyy"),
 ...), true)				</div>

				<div class="code"><pre><span class="ln">780</span>      */
<span class="ln">781</span>     public function render($view,$data=null,$return=false)
<span class="ln">782</span>     {
<span class="ln">783</span>         if($this-&gt;beforeRender($view))
<span class="ln">784</span>         {
<span class="error"><span class="ln error-ln">785</span>             $output=$this-&gt;renderPartial($view,$data,true);
</span><span class="ln">786</span>             if(($layoutFile=$this-&gt;getLayoutFile($this-&gt;layout))!==false)
<span class="ln">787</span>                 $output=$this-&gt;renderFile($layoutFile,array('content'=&gt;$output),true);
<span class="ln">788</span> 
<span class="ln">789</span>             $this-&gt;afterRender($view,$output);
<span class="ln">790</span> 
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#25			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/application/controllers/ResponsesController.php(538): <strong>CController</strong>-&gt;<strong>render</strong>("browseindex_view",
 array("num_completed_answers" =&gt; 1, "num_total_answers" =&gt; 1, 
"surveyid" =&gt; 416742, "dateformatdetails" =&gt; array("phpdate" =&gt;
 "d.m.Y", "jsdate" =&gt; "DD.MM.YYYY", "dateformat" =&gt; "dd.mm.yyyy"),
 ...))				</div>

				<div class="code"><pre><span class="ln">533</span>             $aViewUrls[] = 'savedlist_view';
<span class="ln">534</span>             // ===================================================
<span class="ln">535</span> 
<span class="ln">536</span>             $this-&gt;aData = $aData;
<span class="ln">537</span> 
<span class="error"><span class="ln error-ln">538</span>             $this-&gt;render('browseindex_view', [
</span><span class="ln">539</span>                 // summary table data
<span class="ln">540</span>                 'num_completed_answers' =&gt; $aData['num_completed_answers'],
<span class="ln">541</span>                 'num_total_answers'     =&gt; $aData['num_total_answers'],
<span class="ln">542</span>                 // response table data
<span class="ln">543</span>                 'surveyid' =&gt; $aData['surveyid'],
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#26			</td>
			<td class="content">
				<div class="trace-file">
										&nbsp;unknown(0): <strong>ResponsesController</strong>-&gt;<strong>actionBrowse</strong>(416742, 0)				</div>

							</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#27			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/web/actions/CAction.php(114): <strong>ReflectionMethod</strong>-&gt;<strong>invokeArgs</strong>(ResponsesController, array("416742", 0))				</div>

				<div class="code"><pre><span class="ln">109</span>             elseif($param-&gt;isDefaultValueAvailable())
<span class="ln">110</span>                 $ps[]=$param-&gt;getDefaultValue();
<span class="ln">111</span>             else
<span class="ln">112</span>                 return false;
<span class="ln">113</span>         }
<span class="error"><span class="ln error-ln">114</span>         $method-&gt;invokeArgs($object,$ps);
</span><span class="ln">115</span>         return true;
<span class="ln">116</span>     }
<span class="ln">117</span> }
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#28			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/web/actions/CInlineAction.php(47): <strong>CAction</strong>-&gt;<strong>runWithParamsInternal</strong>(ResponsesController, ReflectionMethod, array("r" =&gt; "responses/browse", "surveyId" =&gt; "416742"))				</div>

				<div class="code"><pre><span class="ln">42</span>     {
<span class="ln">43</span>         $methodName='action'.$this-&gt;getId();
<span class="ln">44</span>         $controller=$this-&gt;getController();
<span class="ln">45</span>         $method=new ReflectionMethod($controller, $methodName);
<span class="ln">46</span>         if($method-&gt;getNumberOfParameters()&gt;0)
<span class="error"><span class="ln error-ln">47</span>             return $this-&gt;runWithParamsInternal($controller, $method, $params);
</span><span class="ln">48</span> 
<span class="ln">49</span>         $controller-&gt;$methodName();
<span class="ln">50</span>         return true;
<span class="ln">51</span>     }
<span class="ln">52</span> }
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#29			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/web/CController.php(308): <strong>CInlineAction</strong>-&gt;<strong>runWithParams</strong>(array("r" =&gt; "responses/browse", "surveyId" =&gt; "416742"))				</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">
				#30			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/web/filters/CFilterChain.php(134): <strong>CController</strong>-&gt;<strong>runAction</strong>(CInlineAction)				</div>

				<div class="code"><pre><span class="ln">129</span>             $filter=$this-&gt;itemAt($this-&gt;filterIndex++);
<span class="ln">130</span>             Yii::trace('Running filter '.($filter instanceof CInlineFilter ? get_class($this-&gt;controller).'.filter'.$filter-&gt;name.'()':get_class($filter).'.filter()'),'system.web.filters.CFilterChain');
<span class="ln">131</span>             $filter-&gt;filter($this);
<span class="ln">132</span>         }
<span class="ln">133</span>         else
<span class="error"><span class="ln error-ln">134</span>             $this-&gt;controller-&gt;runAction($this-&gt;action);
</span><span class="ln">135</span>     }
<span class="ln">136</span> }</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#31			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/web/CController.php(291): <strong>CFilterChain</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">286</span>             $this-&gt;runAction($action);
<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="error"><span class="ln error-ln">291</span>             CFilterChain::create($this,$action,$filters)-&gt;run();
</span><span class="ln">292</span>             $this-&gt;_action=$priorAction;
<span class="ln">293</span>         }
<span class="ln">294</span>     }
<span class="ln">295</span> 
<span class="ln">296</span>     /**
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#32			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/web/CController.php(265): <strong>CController</strong>-&gt;<strong>runActionWithFilters</strong>(CInlineAction, array("postOnly + delete, deleteSingle, deleteAttachments"))				</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 app collapsed">
			<td class="number">
				#33			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/application/controllers/LSBaseController.php(145): <strong>CController</strong>-&gt;<strong>run</strong>("browse")				</div>

				<div class="code"><pre><span class="ln">140</span>                     $this-&gt;redirect(array('/admin/authentication/sa/login'));
<span class="ln">141</span>                 }
<span class="ln">142</span>             }
<span class="ln">143</span>         }
<span class="ln">144</span> 
<span class="error"><span class="ln error-ln">145</span>         parent::run($action);
</span><span class="ln">146</span>     }
<span class="ln">147</span> 
<span class="ln">148</span>     /**
<span class="ln">149</span>      * Load and set session vars
<span class="ln">150</span>      *
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#34			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/web/CWebApplication.php(282): <strong>LSBaseController</strong>-&gt;<strong>run</strong>("browse")				</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">
				#35			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/framework/web/CWebApplication.php(141): <strong>CWebApplication</strong>-&gt;<strong>runController</strong>("responses/browse")				</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">
				#36			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/vendor/yiisoft/yii/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 collapsed">
			<td class="number">
				#37			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/media/shnoulle/data/webdev/master/index.php(161): <strong>CApplication</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">156</span> require_once APPPATH . 'core/LSYii_Application' . EXT;
<span class="ln">157</span> 
<span class="ln">158</span> $config = require_once(APPPATH . 'config/internal' . EXT);
<span class="ln">159</span> 
<span class="ln">160</span> Yii::$enableIncludePath = false;
<span class="error"><span class="ln error-ln">161</span> Yii::createApplication('LSYii_Application', $config)-&gt;run();
</span><span class="ln">162</span> 
<span class="ln">163</span> /* End of file index.php */
<span class="ln">164</span> /* Location: ./index.php */
</pre></div>			</td>
		</tr>
				</tbody></table>
	</div>

	<div class="version">
		2025-08-26 15:48:36 nginx/1.22.1 <a href="https://www.yiiframework.com/">Yii Framework</a>/1.1.31	</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 error.html (50,181 bytes)   
Bug heat22
Complete LimeSurvey version number (& build)6.15.8
I will donate to the project if issue is resolvedNo
Browsernot relevant
Database type & versionnot relevant
Server OS (if known)Linux debian
Webserver software & version (if known)nginx
PHP Version8.3.24

Users monitoring this issue

fabianlehner

Activities

fabianlehner

fabianlehner

2025-09-09 12:05

reporter   ~83380

happens for me as well, on 6.15.10

Mazi

Mazi

2026-03-03 15:37

updater   ~84363

Last edited: 2026-03-03 15:37

@tibor.pacalat: We can reproduce the problem with the latest 6.16.11 version released today. Any survey including a file upload question throiws the mentioned error.
To reproduce simply create a survey with a file upload question, activate, browse responses.
PHP 8.3.30

Full error stack (slightly different at newer version when it comes to lines numbers)
PHP error
json_decode(): Passing null to parameter #1 ($json) of type string is deprecated

/var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/application/helpers/common_helper.php(4704)

4692 $ans = str_replace(array('{', '}'), array('{ ', ' }'), $ans);
4693 return $ans;
4694 }
4695
4696 /*
4697
Decode a json string, sometimes needs stripslashes
4698
4699
@param string $jsonString
4700 @return mixed
4701
/
4702 function json_decode_ls($jsonString)
4703 {
4704 $decoded = json_decode($jsonString, true);
4705
4706 if (is_null($decoded) && !empty($jsonString)) {
4707 // probably we need stipslahes
4708 $decoded = json_decode(stripslashes($jsonString), true);
4709 }
4710
4711 return $decoded;
4712 }
4713
4714 /*
4715
Return accepted codingsArray for importing files
4716
Stack Trace
#0
– /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/application/helpers/common_helper.php(4704): json_decode(null, true)
4699
@param string $jsonString
4700 @return mixed
4701
/
4702 function json_decode_ls($jsonString)
4703 {
4704 $decoded = json_decode($jsonString, true);
4705
4706 if (is_null($decoded) && !empty($jsonString)) {
4707 // probably we need stipslahes
4708 $decoded = json_decode(stripslashes($jsonString), true);
4709 }
#1
– /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/application/models/SurveyDynamic.php(408): json_decode_ls(null)
403
404 // Upload question
405 if ($oFieldMap->type == Question::QT_VERTICAL_FILE_UPLOAD && strpos((string) $oFieldMap->fieldname, 'filecount') === false) {
406 $sSurveyEntry = "<table class='table table-condensed upload-question'>";
407 $aQuestionAttributes = QuestionAttribute::model()->getQuestionAttributes($oFieldMap->qid);
408 $aFilesInfo = json_decode_ls($this->$colName);
409 if (!empty($aFilesInfo)) {
410 foreach ($aFilesInfo as $iFileIndex => $fileInfo) {
411 if (empty($fileInfo)) {
412 continue;
413 }
#2
/var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/base/CComponent.php(612) : eval()'d code(1): SurveyDynamic->getExtendedData("449714X4791X85952", "en", "eyJmaWVsZG5hbWUiOiI0NDk3MTRYNDc5MVg4NTk1MiIsInR5cGUiOiJ8Iiwic2lk...")
#3

  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/base/CComponent.php(612): eval()
    #4
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/zii/widgets/grid/CDataColumn.php(148): CComponent->evaluateExpression("$data->getExtendedData("449714X4791X85952", "en", "eyJmaWVsZG5hb...", array("data" => SurveyDynamic, "row" => 1))
    #5
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/zii/widgets/grid/CGridColumn.php(237): CDataColumn->getDataCellContent(1)
    #6
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/zii/widgets/grid/CGridColumn.php(160): CGridColumn->renderDataCellContent(1, SurveyDynamic)
    #7
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/zii/widgets/grid/CGridView.php(655): CGridColumn->renderDataCell(1)
    #8
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/zii/widgets/grid/CGridView.php(639): CGridView->renderDataCell(TbDataColumn, 1)
    #9
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/zii/widgets/grid/CGridView.php(595): CGridView->renderTableRow(1)
    #10
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/zii/widgets/grid/CGridView.php(505): CGridView->renderTableBody()
    #11
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/zii/widgets/CBaseListView.php(181): CGridView->renderItems()
    #12
    unknown(0): CBaseListView->renderSection(array("{items}", "items"))
    #13
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/zii/widgets/CBaseListView.php(164): preg_replace_callback("/{(\w+)}/", array(CLSGridView, "renderSection"), " <div id="bottom-scroller" class="content-right scrolling-wrappe...")
    #14
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/zii/widgets/CBaseListView.php(149): CBaseListView->renderContent()
    #15
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/web/CBaseController.php(182): CBaseListView->run()
    #16
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/application/views/responses/partial/responseListTable.php(256): CBaseController->widget("application.extensions.admin.grid.CLSGridView", array("dataProvider" => LSCActiveDataProvider, "filter" => SurveyDynamic, "columns" => array(array("id" => "id", "class" => "CCheckBoxColumn", "selectableRows" => "100", "headerHtmlOptions" => array("class" => "ls-sticky-column"), ...), array("header" => "id", "name" => "id"), array("header" => "seed", "name" => "seed"), array("header" => "lastpage", "name" => "lastpage", "type" => "number", "filter" => "<input class="form-control" type="text" name="SurveyDynamic[last..."), ...), "id" => "responses-grid", ...))
    #17
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/web/CBaseController.php(126): require("/var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/a...")
    #18
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/web/CBaseController.php(95): CBaseController->renderInternal("/var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/a...", array("surveyid" => 449714, "dateformatdetails" => array("phpdate" => "d.m.Y", "jsdate" => "DD.MM.YYYY", "dateformat" => "tt.mm.jjjj"), "model" => SurveyDynamic, "bHaveToken" => false, ...), true)
    #19
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/web/CController.php(872): CBaseController->renderFile("/var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/a...", array("surveyid" => 449714, "dateformatdetails" => array("phpdate" => "d.m.Y", "jsdate" => "DD.MM.YYYY", "dateformat" => "tt.mm.jjjj"), "model" => SurveyDynamic, "bHaveToken" => false, ...), true)
    #20
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/application/views/responses/browseindex_view.php(37): CController->renderPartial("partial/responseListTable", array("surveyid" => 449714, "dateformatdetails" => array("phpdate" => "d.m.Y", "jsdate" => "DD.MM.YYYY", "dateformat" => "tt.mm.jjjj"), "model" => SurveyDynamic, "bHaveToken" => false, ...), true)
    #21
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/web/CBaseController.php(126): require("/var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/a...")
    #22
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/web/CBaseController.php(95): CBaseController->renderInternal("/var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/a...", array("num_completed_answers" => 0, "num_total_answers" => 2, "surveyid" => 449714, "dateformatdetails" => array("phpdate" => "d.m.Y", "jsdate" => "DD.MM.YYYY", "dateformat" => "tt.mm.jjjj"), ...), true)
    #23
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/web/CController.php(872): CBaseController->renderFile("/var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/a...", array("num_completed_answers" => 0, "num_total_answers" => 2, "surveyid" => 449714, "dateformatdetails" => array("phpdate" => "d.m.Y", "jsdate" => "DD.MM.YYYY", "dateformat" => "tt.mm.jjjj"), ...), true)
    #24
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/web/CController.php(785): CController->renderPartial("browseindex_view", array("num_completed_answers" => 0, "num_total_answers" => 2, "surveyid" => 449714, "dateformatdetails" => array("phpdate" => "d.m.Y", "jsdate" => "DD.MM.YYYY", "dateformat" => "tt.mm.jjjj"), ...), true)
    #25
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/application/controllers/ResponsesController.php(538): CController->render("browseindex_view", array("num_completed_answers" => 0, "num_total_answers" => 2, "surveyid" => 449714, "dateformatdetails" => array("phpdate" => "d.m.Y", "jsdate" => "DD.MM.YYYY", "dateformat" => "tt.mm.jjjj"), ...))
    #26
    unknown(0): ResponsesController->actionBrowse(449714, 0)
    #27
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/web/actions/CAction.php(114): ReflectionMethod->invokeArgs(ResponsesController, array("449714", 0))
    #28
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/web/actions/CInlineAction.php(47): CAction->runWithParamsInternal(ResponsesController, ReflectionMethod, array("surveyId" => "449714"))
    #29
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/web/CController.php(308): CInlineAction->runWithParams(array("surveyId" => "449714"))
    #30
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/web/filters/CFilterChain.php(134): CController->runAction(CInlineAction)
    #31
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/web/CController.php(291): CFilterChain->run()
    #32
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/web/CController.php(265): CController->runActionWithFilters(CInlineAction, array("postOnly + delete, deleteSingle, deleteAttachments"))
    #33
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/application/controllers/LSBaseController.php(145): CController->run("browse")
    #34
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/web/CWebApplication.php(282): LSBaseController->run("browse")
    #35
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/web/CWebApplication.php(141): CWebApplication->runController("responses/browse")
    #36
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/vendor/yiisoft/yii/framework/base/CApplication.php(185): CWebApplication->processRequest()
    #37
  • /var/www/vhosts/my-survey.host/httpdocs/ls6temp.my-survey.host/index.php(161): CApplication->run()
Mazi

Mazi

2026-03-03 15:38

updater   ~84364

@tibor.pacalat @DenisChenu I suggest changing the severity to block since quite some users can be affected by this problem, especially if their PHP version is updated from 8.1 to latest 8.3 or 8.4.

DenisChenu

DenisChenu

2026-03-03 15:40

developer   ~84365

PHP8.4: Have others's issue

Happen only for debug to 2 or 1

Don't know here (but fix is easy)

c_schmitz

c_schmitz

2026-03-04 08:47

administrator   ~84383

Fix committed to master branch: http://bugs.limesurvey.org/plugin.php?page=Source/view&id=39384

Related Changesets

LimeSurvey: master da53d94a

2026-03-04 08:47

c_schmitz


Details Diff
Fixed issue 20244: Deprecation error in Upload question type when debug mode is activated Affected Issues
20244
mod - application/helpers/common_helper.php Diff File

Issue History

Date Modified Username Field Change
2025-08-26 17:53 DenisChenu New Issue
2025-08-26 17:53 DenisChenu File Added: PHP error.html
2025-09-09 12:04 fabianlehner Issue Monitored: fabianlehner
2025-09-09 12:04 fabianlehner Bug heat 0 => 2
2025-09-09 12:04 guest Bug heat 2 => 8
2025-09-09 12:05 fabianlehner Note Added: 83380
2025-09-09 12:05 fabianlehner Bug heat 8 => 10
2026-03-03 15:37 Mazi Note Added: 84363
2026-03-03 15:37 Mazi Bug heat 10 => 18
2026-03-03 15:37 Mazi Note Edited: 84363
2026-03-03 15:38 Mazi Note Added: 84364
2026-03-03 15:40 DenisChenu Note Added: 84365
2026-03-03 15:40 DenisChenu Bug heat 18 => 20
2026-03-04 08:46 c_schmitz Assigned To => c_schmitz
2026-03-04 08:46 c_schmitz Status new => assigned
2026-03-04 08:47 c_schmitz Changeset attached => LimeSurvey master da53d94a
2026-03-04 08:47 c_schmitz Note Added: 84383
2026-03-04 08:47 c_schmitz Status assigned => resolved
2026-03-04 08:47 c_schmitz Resolution open => fixed
2026-03-04 08:47 c_schmitz Bug heat 20 => 22