View Issue Details

IDProjectCategoryView StatusLast Update
14385Bug reports_ Unknownpublic2019-05-10 15:36
ReporterdominikvittAssigned ToDenisChenu  
PrioritylowSeverityfeature 
Status closedResolutionfixed 
Product Version4.0.0dev 
Fixed in Version4.0.0dev 
Summary14385: PHP warning on data entry page in debug mode
DescriptionThere is a "PHP warning: Invalid argument supplied for foreach()" error when opening data entry page in debug mode.
I traced it back , so here are my findings.
questionSeq2relevance variable is empty because setVariableAndTokenMappingsForExpressionManager function in EM manager ends with execution on line
https://github.com/LimeSurvey/LimeSurvey/blob/986203663ff4580ea5c162b96dd4c5eb1b0014f1/application/helpers/expressions/em_manager_helper.php#L3643
because $_SESSION['LEMforceRefresh'] is never set.
So the rest of the function is never executed.
$_SESSION['LEMforceRefresh'] is set in function SetDirtyFlag, but it seems like this function doesn't work any more.
Steps To ReproduceDebug mode is on.
Survey is activated.
Open Responses, click on "Data entry" button.
Warning should show immediately.
See attached HTML file.
Additional Information@DenisChenu:
Please, can you try to reproduce it and see if you can find something.
TagsNo tags attached.
Complete LimeSurvey version number (& build)
I will donate to the project if issue is resolved
Browser
Database & DB-Version
Server OS (if known)
Webserver software & version (if known)
PHP Version

Activities

dominikvitt

dominikvitt

2018-12-28 14:46

developer  

PHP warning.html (20,778 bytes)   
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0085)http://localhost/LimeSurvey-develop/index.php/admin/dataentry/sa/view/surveyid/628888 -->
<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 warning</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 warning</h1>

	<p class="message">
		Invalid argument supplied for foreach()	</p>

	<div class="source">
		<p class="file">/var/www/html/LimeSurvey-develop/application/helpers/expressions/em_manager_helper.php(4482)</p>
		<div class="code"><pre><span class="ln">4470</span>         /**
<span class="ln">4471</span>         * Check the relevance status of all questions on or before the current group.
<span class="ln">4472</span>         * This generates needed JavaScript for dynamic relevance, and sets flags about which questions and groups are relevant
<span class="ln">4473</span>         * @param string $onlyThisQseq
<span class="ln">4474</span>         * @return void
<span class="ln">4475</span>         */
<span class="ln">4476</span>         public function ProcessAllNeededRelevance($onlyThisQseq=NULL)
<span class="ln">4477</span>         {
<span class="ln">4478</span>             // TODO - in a running survey, only need to process the current Group.  For Admin mode, do we need to process all prior questions or not?
<span class="ln">4479</span>             //        $now = microtime(true);
<span class="ln">4480</span> 
<span class="ln">4481</span>             $grelComputed=array();  // so only process it once per group
<span class="error"><span class="ln error-ln">4482</span>             foreach($this-&gt;questionSeq2relevance as $rel)
</span><span class="ln">4483</span>             {
<span class="ln">4484</span>                 if (!is_null($onlyThisQseq) &amp;&amp; $onlyThisQseq!=$rel['qseq']) {
<span class="ln">4485</span>                     continue;
<span class="ln">4486</span>                 }
<span class="ln">4487</span>                 $qid = $rel['qid'];
<span class="ln">4488</span>                 $gseq = $rel['gseq'];
<span class="ln">4489</span>                 if ($this-&gt;allOnOnePage) {
<span class="ln">4490</span>                     ;   // process relevance for all questions
<span class="ln">4491</span>                 }
<span class="ln">4492</span>                 else if ($gseq != $this-&gt;currentGroupSeq) {
<span class="ln">4493</span>                     continue;
<span class="ln">4494</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;/var/www/html/LimeSurvey-develop/application/helpers/expressions/em_manager_helper.php(7175): <strong>LimeExpressionManager</strong>-&gt;<strong>ProcessAllNeededRelevance</strong>()				</div>

				<div class="code"><pre><span class="ln">7170</span>                     if ($gseq &gt; $LEM-&gt;maxGroupSeq) {
<span class="ln">7171</span>                         $LEM-&gt;maxGroupSeq = $gseq;
<span class="ln">7172</span>                     }
<span class="ln">7173</span> 
<span class="ln">7174</span>                     if (!$LEM-&gt;allOnOnePage || ($LEM-&gt;allOnOnePage &amp;&amp; !$LEM-&gt;processedRelevance)) {
<span class="error"><span class="ln error-ln">7175</span>                         $LEM-&gt;ProcessAllNeededRelevance();  // TODO - what if this is called using Survey or Data Entry format?
</span><span class="ln">7176</span>                         $LEM-&gt;_CreateSubQLevelRelevanceAndValidationEqns();
<span class="ln">7177</span>                         $LEM-&gt;processedRelevance=true;
<span class="ln">7178</span>                     }
<span class="ln">7179</span>                 }
<span class="ln">7180</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;/var/www/html/LimeSurvey-develop/application/controllers/admin/dataentry.php(1709): <strong>LimeExpressionManager</strong>::<strong>StartProcessingGroup</strong>("10", false, "628888")				</div>

				<div class="code"><pre><span class="ln">1704</span> 
<span class="ln">1705</span>             // SURVEY NAME AND DESCRIPTION TO GO HERE
<span class="ln">1706</span>             $aGroups = QuestionGroup::model()-&gt;findAllByAttributes(['sid'=&gt;$surveyid]);
<span class="ln">1707</span>             $aDataentryoutput = '';
<span class="ln">1708</span>             foreach ($aGroups as $arGroup) {
<span class="error"><span class="ln error-ln">1709</span>                 LimeExpressionManager::StartProcessingGroup($arGroup-&gt;gid, ($thissurvey['anonymized'] != "N"), $surveyid);
</span><span class="ln">1710</span> 
<span class="ln">1711</span>                 $aQuestions = Question::model()-&gt;findAllByAttributes(['sid'=&gt;$surveyid, 'parent_qid'=&gt;0, 'gid'=&gt;$arGroup['gid']]);
<span class="ln">1712</span>                 $aDataentryoutput .= "\t&lt;tr class='info'&gt;\n"
<span class="ln">1713</span>                 ."&lt;!-- Inside controller dataentry.php --&gt;"
<span class="ln">1714</span>                 ."&lt;td colspan='3'&gt;&lt;h4&gt;".flattenText($arGroup-&gt;questionGroupL10ns[$sDataEntryLanguage]-&gt;group_name, true)."&lt;/h4&gt;&lt;/td&gt;\n"
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#2			</td>
			<td class="content">
				<div class="trace-file">
										&nbsp;unknown(0): <strong>dataentry</strong>-&gt;<strong>view</strong>("628888")				</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;/var/www/html/LimeSurvey-develop/framework/web/actions/CAction.php(109): <strong>ReflectionMethod</strong>-&gt;<strong>invokeArgs</strong>(dataentry, array("628888"))				</div>

				<div class="code"><pre><span class="ln">104</span>             elseif($param-&gt;isDefaultValueAvailable())
<span class="ln">105</span>                 $ps[]=$param-&gt;getDefaultValue();
<span class="ln">106</span>             else
<span class="ln">107</span>                 return false;
<span class="ln">108</span>         }
<span class="error"><span class="ln error-ln">109</span>         $method-&gt;invokeArgs($object,$ps);
</span><span class="ln">110</span>         return true;
<span class="ln">111</span>     }
<span class="ln">112</span> }
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#4			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/LimeSurvey-develop/application/core/Survey_Common_Action.php(83): <strong>CAction</strong>-&gt;<strong>runWithParamsInternal</strong>(dataentry, ReflectionMethod, array("surveyid" =&gt; "628888", "sa" =&gt; "view", "iSurveyId" =&gt; "628888", "iSurveyID" =&gt; "628888", ...))				</div>

				<div class="code"><pre><span class="ln">78</span>             $oMethod = new ReflectionMethod($this, $sDefault);
<span class="ln">79</span>         }
<span class="ln">80</span> 
<span class="ln">81</span>         // We're all good to go, let's execute it
<span class="ln">82</span>         // runWithParamsInternal would automatically get the parameters of the method and populate them as required with the params
<span class="error"><span class="ln error-ln">83</span>         return parent::runWithParamsInternal($this, $oMethod, $params);
</span><span class="ln">84</span>     }
<span class="ln">85</span> 
<span class="ln">86</span>     /**
<span class="ln">87</span>      * Some functions have different parameters, which are just an alias of the
<span class="ln">88</span>      * usual parameters we're getting in the url. This function just populates
</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;/var/www/html/LimeSurvey-develop/framework/web/CController.php(308): <strong>Survey_Common_Action</strong>-&gt;<strong>runWithParams</strong>(array("surveyid" =&gt; "628888", "sa" =&gt; "view", "iSurveyId" =&gt; "628888", "iSurveyID" =&gt; "628888", ...))				</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">
				#6			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/LimeSurvey-develop/framework/web/CController.php(286): <strong>CController</strong>-&gt;<strong>runAction</strong>(dataentry)				</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">
				#7			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/LimeSurvey-develop/framework/web/CController.php(265): <strong>CController</strong>-&gt;<strong>runActionWithFilters</strong>(dataentry, 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 app collapsed">
			<td class="number">
				#8			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/LimeSurvey-develop/application/controllers/AdminController.php(158): <strong>CController</strong>-&gt;<strong>run</strong>("dataentry")				</div>

				<div class="code"><pre><span class="ln">153</span>                     $this-&gt;redirect(array('/admin/authentication/sa/login'));
<span class="ln">154</span>                 }
<span class="ln">155</span>             }
<span class="ln">156</span>         }
<span class="ln">157</span> 
<span class="error"><span class="ln error-ln">158</span>         return parent::run($action);
</span><span class="ln">159</span>     }
<span class="ln">160</span> 
<span class="ln">161</span>     /**
<span class="ln">162</span>      * Routes all the actions to their respective places
<span class="ln">163</span>      *
</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;/var/www/html/LimeSurvey-develop/framework/web/CWebApplication.php(282): <strong>AdminController</strong>-&gt;<strong>run</strong>("dataentry")				</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">
				#10			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/LimeSurvey-develop/framework/web/CWebApplication.php(141): <strong>CWebApplication</strong>-&gt;<strong>runController</strong>("admin/dataentry/sa/view")				</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">
				#11			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/LimeSurvey-develop/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">
				#12			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/var/www/html/LimeSurvey-develop/index.php(194): <strong>CApplication</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">189</span> require_once APPPATH . 'core/LSYii_Application' . EXT;
<span class="ln">190</span> 
<span class="ln">191</span> $config = require_once(APPPATH . 'config/internal' . EXT);
<span class="ln">192</span> 
<span class="ln">193</span> Yii::$enableIncludePath = false;
<span class="error"><span class="ln error-ln">194</span> Yii::createApplication('LSYii_Application', $config)-&gt;run();
</span><span class="ln">195</span> 
<span class="ln">196</span> /* End of file index.php */
<span class="ln">197</span> /* Location: ./index.php */
</pre></div>			</td>
		</tr>
				</tbody></table>
	</div>

	<div class="version">
		2018-12-28 14:13:19 Apache/2.4.29 (Ubuntu) <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.20	</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 warning.html (20,778 bytes)   
DenisChenu

DenisChenu

2018-12-31 17:19

developer   ~50082

@dominkvitt : i think : current sid can be different than the one needed ?

Maybe add a https://github.com/LimeSurvey/LimeSurvey/blob/986203663ff4580ea5c162b96dd4c5eb1b0014f1/application/helpers/expressions/em_manager_helper.php#L751 call somewhere.
DenisChenu

DenisChenu

2019-01-03 15:02

developer   ~50090

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

DenisChenu

2019-01-03 15:04

developer   ~50091

@dominikvitt : real fix is here : https://github.com/LimeSurvey/LimeSurvey/commit/6347619893a4630a57d288a49d0dbc6b529702ee#diff-796aba4d06254b9caea9d461e4ea80c9
Only in EM : isset VS is_empty :).

I try to save : get a white page …
c_schmitz

c_schmitz

2019-05-10 15:36

administrator   ~51887

4.0beta1 released

Related Changesets

LimeSurvey: develop 63476198

2019-01-03 15:02:39

DenisChenu

Details Diff
Dev: Fixed issue 14385: PHP warning on data entry page in debug mode
Dev: fix some questionL10ns related bug in view
Affected Issues
14385
mod - application/controllers/admin/dataentry.php Diff File
mod - application/helpers/expressions/em_manager_helper.php Diff File
mod - application/views/admin/dataentry/content_view.php Diff File

Issue History

Date Modified Username Field Change
2018-12-28 14:46 dominikvitt New Issue
2018-12-28 14:46 dominikvitt Status new => assigned
2018-12-28 14:46 dominikvitt Assigned To => DenisChenu
2018-12-28 14:46 dominikvitt File Added: PHP warning.html
2018-12-31 17:19 DenisChenu Note Added: 50082
2019-01-03 13:28 DenisChenu Project Development => Bug reports
2019-01-03 13:28 DenisChenu Category Response browsing => Other issues
2019-01-03 13:28 DenisChenu Priority none => low
2019-01-03 13:28 DenisChenu Severity partial_block => feature
2019-01-03 13:28 DenisChenu Category Other issues => _ Unknown
2019-01-03 13:28 DenisChenu Target Version 4.0.0dev =>
2019-01-03 15:02 DenisChenu Changeset attached => LimeSurvey develop 63476198
2019-01-03 15:02 DenisChenu Note Added: 50090
2019-01-03 15:02 DenisChenu Resolution open => fixed
2019-01-03 15:04 DenisChenu Note Added: 50091
2019-01-03 15:04 DenisChenu Status assigned => resolved
2019-01-03 15:04 DenisChenu Fixed in Version => 4.0.0dev
2019-05-10 15:36 c_schmitz Note Added: 51887
2019-05-10 15:36 c_schmitz Status resolved => closed