View Issue Details

This bug affects 1 person(s).
 4
IDProjectCategoryView StatusLast Update
06799Bug reportsSurvey participants (Tokens)public2012-11-02 21:42
Reporterhelper Assigned Toc_schmitz  
PrioritynormalSeverityblock 
Status closedResolutionfixed 
Product Version2.00+ 
Fixed in Version2.00+ 
Summary06799: Dummy Token Generation Fails
Description

Testing an existing survey, I need to create a set of tokens to setup. This currently is throwing errors. Attached dump and lsa.

Steps To Reproduce

Make survey active then attempt to generate dummy tokens using default values.

TagsNo tags attached.
Attached Files
add.htm (18,250 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 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">
		Illegal string offset 'mandatory'	</p>

	<div class="source">
		<p class="file">C:\etc\Apache\htdocs\MSSQL\application\controllers\admin\tokens.php(998)</p>
		<div class="code"><pre><span class="ln">0986</span>             'sent' =&gt; 'N',
<span class="ln">0987</span>             'remindersent' =&gt; 'N',
<span class="ln">0988</span>             'completed' =&gt; 'N',
<span class="ln">0989</span>             'usesleft' =&gt; Yii::app()-&gt;request-&gt;getPost('usesleft'),
<span class="ln">0990</span>             'validfrom' =&gt; Yii::app()-&gt;request-&gt;getPost('validfrom'),
<span class="ln">0991</span>             'validuntil' =&gt; Yii::app()-&gt;request-&gt;getPost('validuntil'));
<span class="ln">0992</span> 
<span class="ln">0993</span>             // add attributes
<span class="ln">0994</span>             $attrfieldnames = getTokenFieldsAndNames($iSurveyId,true);
<span class="ln">0995</span>             foreach ($attrfieldnames as $attr_name =&gt; $desc)
<span class="ln">0996</span>             {
<span class="ln">0997</span>                 $value = Yii::app()-&gt;request-&gt;getPost($attr_name);
<span class="error"><span class="ln error-ln">0998</span>                 if ($desc['mandatory'] == 'Y' &amp;&amp; trim($value) == '')
</span><span class="ln">0999</span>                     $this-&gt;getController()-&gt;error(sprintf($clang-&gt;gT('%s cannot be empty'), $desc['description']));
<span class="ln">1000</span>                 $aData[$attr_name] = Yii::app()-&gt;request-&gt;getPost($attr_name);
<span class="ln">1001</span>             }
<span class="ln">1002</span> 
<span class="ln">1003</span>             $amount = sanitize_int(Yii::app()-&gt;request-&gt;getPost('amount'));
<span class="ln">1004</span>             $tokenlength = sanitize_int(Yii::app()-&gt;request-&gt;getPost('tokenlen'));
<span class="ln">1005</span> 
<span class="ln">1006</span>             // Fill an array with all existing tokens
<span class="ln">1007</span>             $criteria = Tokens_dynamic::model($iSurveyId)-&gt;getDbCriteria();
<span class="ln">1008</span>             $criteria-&gt;select = 'token';
<span class="ln">1009</span>             $ntresult = Tokens_dynamic::model($iSurveyId)-&gt;findAllAsArray($criteria);   //Use AsArray to skip active record creation
<span class="ln">1010</span>             $existingtokens=array();
</pre></div>	</div>

	<div class="traces">
		<h2>Stack Trace</h2>
				<table style="width:100%;">
						<tbody><tr class="trace core collapsed">
			<td class="number">
				#0			</td>
			<td class="content">
				<div class="trace-file">
										&nbsp;unknown(0): <strong>tokens</strong>-&gt;<strong>addDummies</strong>("945857", "add")				</div>

							</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#1			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\etc\Apache\htdocs\MSSQL\framework\web\actions\CAction.php(107): <strong>ReflectionMethod</strong>-&gt;<strong>invokeArgs</strong>(tokens, array("945857", "add"))				</div>

				<div class="code"><pre><span class="ln">102</span>             else if($param-&gt;isDefaultValueAvailable())
<span class="ln">103</span>                 $ps[]=$param-&gt;getDefaultValue();
<span class="ln">104</span>             else
<span class="ln">105</span>                 return false;
<span class="ln">106</span>         }
<span class="error"><span class="ln error-ln">107</span>         $method-&gt;invokeArgs($object,$ps);
</span><span class="ln">108</span>         return true;
<span class="ln">109</span>     }
<span class="ln">110</span> }
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#2			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\etc\Apache\htdocs\MSSQL\application\core\Survey_Common_Action.php(82): <strong>CAction</strong>-&gt;<strong>runWithParamsInternal</strong>(tokens,
 ReflectionMethod, array("surveyid" =&gt; "945857", "subaction" =&gt; 
"add", "sa" =&gt; "adddummies", "iSurveyId" =&gt; "945857", ...))				</div>

				<div class="code"><pre><span class="ln">77</span>             $oMethod = new ReflectionMethod($this, $sDefault);
<span class="ln">78</span>         }
<span class="ln">79</span> 
<span class="ln">80</span>         // We're all good to go, let's execute it
<span class="ln">81</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">82</span>         return parent::runWithParamsInternal($this, $oMethod, $params);
</span><span class="ln">83</span>     }
<span class="ln">84</span> 
<span class="ln">85</span>     /**
<span class="ln">86</span>     * Some functions have different parameters, which are just an alias of the
<span class="ln">87</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">
				#3			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\etc\Apache\htdocs\MSSQL\framework\web\CController.php(309): <strong>Survey_Common_Action</strong>-&gt;<strong>runWithParams</strong>(array("surveyid" =&gt; "945857", "subaction" =&gt; "add", "sa" =&gt; "adddummies"))				</div>

				<div class="code"><pre><span class="ln">304</span>     {
<span class="ln">305</span>         $priorAction=$this-&gt;_action;
<span class="ln">306</span>         $this-&gt;_action=$action;
<span class="ln">307</span>         if($this-&gt;beforeAction($action))
<span class="ln">308</span>         {
<span class="error"><span class="ln error-ln">309</span>             if($action-&gt;runWithParams($this-&gt;getActionParams())===false)
</span><span class="ln">310</span>                 $this-&gt;invalidActionParams($action);
<span class="ln">311</span>             else
<span class="ln">312</span>                 $this-&gt;afterAction($action);
<span class="ln">313</span>         }
<span class="ln">314</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;C:\etc\Apache\htdocs\MSSQL\framework\web\CController.php(287): <strong>CController</strong>-&gt;<strong>runAction</strong>(tokens)				</div>

				<div class="code"><pre><span class="ln">282</span>      * @see runAction
<span class="ln">283</span>      */
<span class="ln">284</span>     public function runActionWithFilters($action,$filters)
<span class="ln">285</span>     {
<span class="ln">286</span>         if(empty($filters))
<span class="error"><span class="ln error-ln">287</span>             $this-&gt;runAction($action);
</span><span class="ln">288</span>         else
<span class="ln">289</span>         {
<span class="ln">290</span>             $priorAction=$this-&gt;_action;
<span class="ln">291</span>             $this-&gt;_action=$action;
<span class="ln">292</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;C:\etc\Apache\htdocs\MSSQL\framework\web\CController.php(266): <strong>CController</strong>-&gt;<strong>runActionWithFilters</strong>(tokens, array())				</div>

				<div class="code"><pre><span class="ln">261</span>         {
<span class="ln">262</span>             if(($parent=$this-&gt;getModule())===null)
<span class="ln">263</span>                 $parent=Yii::app();
<span class="ln">264</span>             if($parent-&gt;beforeControllerAction($this,$action))
<span class="ln">265</span>             {
<span class="error"><span class="ln error-ln">266</span>                 $this-&gt;runActionWithFilters($action,$this-&gt;filters());
</span><span class="ln">267</span>                 $parent-&gt;afterControllerAction($this,$action);
<span class="ln">268</span>             }
<span class="ln">269</span>         }
<span class="ln">270</span>         else
<span class="ln">271</span>             $this-&gt;missingAction($actionID);
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#6			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\etc\Apache\htdocs\MSSQL\application\controllers\AdminController.php(159): <strong>CController</strong>-&gt;<strong>run</strong>("tokens")				</div>

				<div class="code"><pre><span class="ln">154</span>                 Yii::app()-&gt;session['redirectopage'] = Yii::app()-&gt;request-&gt;requestUri;
<span class="ln">155</span> 
<span class="ln">156</span>                 $this-&gt;redirect($this-&gt;createUrl('/admin/authentication/login'));
<span class="ln">157</span>             }
<span class="ln">158</span> 
<span class="error"><span class="ln error-ln">159</span>             return parent::run($action);
</span><span class="ln">160</span>     }
<span class="ln">161</span> 
<span class="ln">162</span>     /**
<span class="ln">163</span>     * Routes all the actions to their respective places
<span class="ln">164</span>     *
</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;C:\etc\Apache\htdocs\MSSQL\framework\web\CWebApplication.php(276): <strong>AdminController</strong>-&gt;<strong>run</strong>("tokens")				</div>

				<div class="code"><pre><span class="ln">271</span>         {
<span class="ln">272</span>             list($controller,$actionID)=$ca;
<span class="ln">273</span>             $oldController=$this-&gt;_controller;
<span class="ln">274</span>             $this-&gt;_controller=$controller;
<span class="ln">275</span>             $controller-&gt;init();
<span class="error"><span class="ln error-ln">276</span>             $controller-&gt;run($actionID);
</span><span class="ln">277</span>             $this-&gt;_controller=$oldController;
<span class="ln">278</span>         }
<span class="ln">279</span>         else
<span class="ln">280</span>             throw new CHttpException(404,Yii::t('yii','Unable to resolve the request "{route}".',
<span class="ln">281</span>                 array('{route}'=&gt;$route===''?$this-&gt;defaultController:$route)));
</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;C:\etc\Apache\htdocs\MSSQL\framework\web\CWebApplication.php(135): <strong>CWebApplication</strong>-&gt;<strong>runController</strong>("admin/tokens/sa/adddummies")				</div>

				<div class="code"><pre><span class="ln">130</span>             foreach(array_splice($this-&gt;catchAllRequest,1) as $name=&gt;$value)
<span class="ln">131</span>                 $_GET[$name]=$value;
<span class="ln">132</span>         }
<span class="ln">133</span>         else
<span class="ln">134</span>             $route=$this-&gt;getUrlManager()-&gt;parseUrl($this-&gt;getRequest());
<span class="error"><span class="ln error-ln">135</span>         $this-&gt;runController($route);
</span><span class="ln">136</span>     }
<span class="ln">137</span> 
<span class="ln">138</span>     /**
<span class="ln">139</span>      * Registers the core application components.
<span class="ln">140</span>      * This method overrides the parent implementation by registering additional core components.
</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;C:\etc\Apache\htdocs\MSSQL\framework\base\CApplication.php(162): <strong>CWebApplication</strong>-&gt;<strong>processRequest</strong>()				</div>

				<div class="code"><pre><span class="ln">157</span>      */
<span class="ln">158</span>     public function run()
<span class="ln">159</span>     {
<span class="ln">160</span>         if($this-&gt;hasEventHandler('onBeginRequest'))
<span class="ln">161</span>             $this-&gt;onBeginRequest(new CEvent($this));
<span class="error"><span class="ln error-ln">162</span>         $this-&gt;processRequest();
</span><span class="ln">163</span>         if($this-&gt;hasEventHandler('onEndRequest'))
<span class="ln">164</span>             $this-&gt;onEndRequest(new CEvent($this));
<span class="ln">165</span>     }
<span class="ln">166</span> 
<span class="ln">167</span>     /**
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#10			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\etc\Apache\htdocs\MSSQL\index.php(178): <strong>CApplication</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">173</span>  *
<span class="ln">174</span>  */
<span class="ln">175</span> require_once BASEPATH . 'yii' . EXT;
<span class="ln">176</span> require_once APPPATH . 'core/LSYii_Application' . EXT;
<span class="ln">177</span> 
<span class="error"><span class="ln error-ln">178</span> Yii::createApplication('LSYii_Application', APPPATH . 'config/config' . EXT)-&gt;run();
</span><span class="ln">179</span> 
<span class="ln">180</span> /* End of file index.php */
<span class="ln">181</span> /* Location: ./index.php */
</pre></div>			</td>
		</tr>
				</tbody></table>
	</div>

	<div class="version">
		2012-10-29 13:47:05 Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7 <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.10	</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>
add.htm (18,250 bytes)   
PHP warning.htm (17,982 bytes)   
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0091)http://localhost/limesurvey/index.php/admin/tokens/adddummies/surveyid/544997/subaction/add -->
<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>
<style type="text/css"></style></head>

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

	<p class="message">
		Illegal string offset 'mandatory'	</p>

	<div class="source">
		<p class="file">C:\xampp\htdocs\limesurvey\application\controllers\admin\tokens.php(998)</p>
		<div class="code"><pre><span class="ln">0986</span>             'sent' =&gt; 'N',
<span class="ln">0987</span>             'remindersent' =&gt; 'N',
<span class="ln">0988</span>             'completed' =&gt; 'N',
<span class="ln">0989</span>             'usesleft' =&gt; Yii::app()-&gt;request-&gt;getPost('usesleft'),
<span class="ln">0990</span>             'validfrom' =&gt; Yii::app()-&gt;request-&gt;getPost('validfrom'),
<span class="ln">0991</span>             'validuntil' =&gt; Yii::app()-&gt;request-&gt;getPost('validuntil'));
<span class="ln">0992</span> 
<span class="ln">0993</span>             // add attributes
<span class="ln">0994</span>             $attrfieldnames = getTokenFieldsAndNames($iSurveyId,true);
<span class="ln">0995</span>             foreach ($attrfieldnames as $attr_name =&gt; $desc)
<span class="ln">0996</span>             {
<span class="ln">0997</span>                 $value = Yii::app()-&gt;request-&gt;getPost($attr_name);
<span class="error"><span class="ln error-ln">0998</span>                 if ($desc['mandatory'] == 'Y' &amp;&amp; trim($value) == '')
</span><span class="ln">0999</span>                     $this-&gt;getController()-&gt;error(sprintf($clang-&gt;gT('%s cannot be empty'), $desc['description']));
<span class="ln">1000</span>                 $aData[$attr_name] = Yii::app()-&gt;request-&gt;getPost($attr_name);
<span class="ln">1001</span>             }
<span class="ln">1002</span> 
<span class="ln">1003</span>             $amount = sanitize_int(Yii::app()-&gt;request-&gt;getPost('amount'));
<span class="ln">1004</span>             $tokenlength = sanitize_int(Yii::app()-&gt;request-&gt;getPost('tokenlen'));
<span class="ln">1005</span> 
<span class="ln">1006</span>             // Fill an array with all existing tokens
<span class="ln">1007</span>             $criteria = Tokens_dynamic::model($iSurveyId)-&gt;getDbCriteria();
<span class="ln">1008</span>             $criteria-&gt;select = 'token';
<span class="ln">1009</span>             $ntresult = Tokens_dynamic::model($iSurveyId)-&gt;findAllAsArray($criteria);   //Use AsArray to skip active record creation
<span class="ln">1010</span>             $existingtokens=array();
</pre></div>	</div>

	<div class="traces">
		<h2>Stack Trace</h2>
				<table style="width:100%;">
						<tbody><tr class="trace core collapsed">
			<td class="number">
				#0			</td>
			<td class="content">
				<div class="trace-file">
										&nbsp;unknown(0): <strong>tokens</strong>-&gt;<strong>addDummies</strong>("544997", "add")				</div>

							</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#1			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\xampp\htdocs\limesurvey\framework\web\actions\CAction.php(107): <strong>ReflectionMethod</strong>-&gt;<strong>invokeArgs</strong>(tokens, array("544997", "add"))				</div>

				<div class="code"><pre><span class="ln">102</span>             else if($param-&gt;isDefaultValueAvailable())
<span class="ln">103</span>                 $ps[]=$param-&gt;getDefaultValue();
<span class="ln">104</span>             else
<span class="ln">105</span>                 return false;
<span class="ln">106</span>         }
<span class="error"><span class="ln error-ln">107</span>         $method-&gt;invokeArgs($object,$ps);
</span><span class="ln">108</span>         return true;
<span class="ln">109</span>     }
<span class="ln">110</span> }
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#2			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\xampp\htdocs\limesurvey\application\core\Survey_Common_Action.php(82): <strong>CAction</strong>-&gt;<strong>runWithParamsInternal</strong>(tokens, ReflectionMethod, array("surveyid" =&gt; "544997", "subaction" =&gt; "add", "sa" =&gt; "adddummies", "iSurveyId" =&gt; "544997", ...))				</div>

				<div class="code"><pre><span class="ln">77</span>             $oMethod = new ReflectionMethod($this, $sDefault);
<span class="ln">78</span>         }
<span class="ln">79</span> 
<span class="ln">80</span>         // We're all good to go, let's execute it
<span class="ln">81</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">82</span>         return parent::runWithParamsInternal($this, $oMethod, $params);
</span><span class="ln">83</span>     }
<span class="ln">84</span> 
<span class="ln">85</span>     /**
<span class="ln">86</span>     * Some functions have different parameters, which are just an alias of the
<span class="ln">87</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">
				#3			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\xampp\htdocs\limesurvey\framework\web\CController.php(309): <strong>Survey_Common_Action</strong>-&gt;<strong>runWithParams</strong>(array("surveyid" =&gt; "544997", "subaction" =&gt; "add", "sa" =&gt; "adddummies"))				</div>

				<div class="code"><pre><span class="ln">304</span>     {
<span class="ln">305</span>         $priorAction=$this-&gt;_action;
<span class="ln">306</span>         $this-&gt;_action=$action;
<span class="ln">307</span>         if($this-&gt;beforeAction($action))
<span class="ln">308</span>         {
<span class="error"><span class="ln error-ln">309</span>             if($action-&gt;runWithParams($this-&gt;getActionParams())===false)
</span><span class="ln">310</span>                 $this-&gt;invalidActionParams($action);
<span class="ln">311</span>             else
<span class="ln">312</span>                 $this-&gt;afterAction($action);
<span class="ln">313</span>         }
<span class="ln">314</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;C:\xampp\htdocs\limesurvey\framework\web\CController.php(287): <strong>CController</strong>-&gt;<strong>runAction</strong>(tokens)				</div>

				<div class="code"><pre><span class="ln">282</span>      * @see runAction
<span class="ln">283</span>      */
<span class="ln">284</span>     public function runActionWithFilters($action,$filters)
<span class="ln">285</span>     {
<span class="ln">286</span>         if(empty($filters))
<span class="error"><span class="ln error-ln">287</span>             $this-&gt;runAction($action);
</span><span class="ln">288</span>         else
<span class="ln">289</span>         {
<span class="ln">290</span>             $priorAction=$this-&gt;_action;
<span class="ln">291</span>             $this-&gt;_action=$action;
<span class="ln">292</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;C:\xampp\htdocs\limesurvey\framework\web\CController.php(266): <strong>CController</strong>-&gt;<strong>runActionWithFilters</strong>(tokens, array())				</div>

				<div class="code"><pre><span class="ln">261</span>         {
<span class="ln">262</span>             if(($parent=$this-&gt;getModule())===null)
<span class="ln">263</span>                 $parent=Yii::app();
<span class="ln">264</span>             if($parent-&gt;beforeControllerAction($this,$action))
<span class="ln">265</span>             {
<span class="error"><span class="ln error-ln">266</span>                 $this-&gt;runActionWithFilters($action,$this-&gt;filters());
</span><span class="ln">267</span>                 $parent-&gt;afterControllerAction($this,$action);
<span class="ln">268</span>             }
<span class="ln">269</span>         }
<span class="ln">270</span>         else
<span class="ln">271</span>             $this-&gt;missingAction($actionID);
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#6			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\xampp\htdocs\limesurvey\application\controllers\AdminController.php(159): <strong>CController</strong>-&gt;<strong>run</strong>("tokens")				</div>

				<div class="code"><pre><span class="ln">154</span>                 Yii::app()-&gt;session['redirectopage'] = Yii::app()-&gt;request-&gt;requestUri;
<span class="ln">155</span> 
<span class="ln">156</span>                 $this-&gt;redirect($this-&gt;createUrl('/admin/authentication/login'));
<span class="ln">157</span>             }
<span class="ln">158</span> 
<span class="error"><span class="ln error-ln">159</span>             return parent::run($action);
</span><span class="ln">160</span>     }
<span class="ln">161</span> 
<span class="ln">162</span>     /**
<span class="ln">163</span>     * Routes all the actions to their respective places
<span class="ln">164</span>     *
</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;C:\xampp\htdocs\limesurvey\framework\web\CWebApplication.php(276): <strong>AdminController</strong>-&gt;<strong>run</strong>("tokens")				</div>

				<div class="code"><pre><span class="ln">271</span>         {
<span class="ln">272</span>             list($controller,$actionID)=$ca;
<span class="ln">273</span>             $oldController=$this-&gt;_controller;
<span class="ln">274</span>             $this-&gt;_controller=$controller;
<span class="ln">275</span>             $controller-&gt;init();
<span class="error"><span class="ln error-ln">276</span>             $controller-&gt;run($actionID);
</span><span class="ln">277</span>             $this-&gt;_controller=$oldController;
<span class="ln">278</span>         }
<span class="ln">279</span>         else
<span class="ln">280</span>             throw new CHttpException(404,Yii::t('yii','Unable to resolve the request "{route}".',
<span class="ln">281</span>                 array('{route}'=&gt;$route===''?$this-&gt;defaultController:$route)));
</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;C:\xampp\htdocs\limesurvey\framework\web\CWebApplication.php(135): <strong>CWebApplication</strong>-&gt;<strong>runController</strong>("admin/tokens/sa/adddummies")				</div>

				<div class="code"><pre><span class="ln">130</span>             foreach(array_splice($this-&gt;catchAllRequest,1) as $name=&gt;$value)
<span class="ln">131</span>                 $_GET[$name]=$value;
<span class="ln">132</span>         }
<span class="ln">133</span>         else
<span class="ln">134</span>             $route=$this-&gt;getUrlManager()-&gt;parseUrl($this-&gt;getRequest());
<span class="error"><span class="ln error-ln">135</span>         $this-&gt;runController($route);
</span><span class="ln">136</span>     }
<span class="ln">137</span> 
<span class="ln">138</span>     /**
<span class="ln">139</span>      * Registers the core application components.
<span class="ln">140</span>      * This method overrides the parent implementation by registering additional core components.
</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;C:\xampp\htdocs\limesurvey\framework\base\CApplication.php(162): <strong>CWebApplication</strong>-&gt;<strong>processRequest</strong>()				</div>

				<div class="code"><pre><span class="ln">157</span>      */
<span class="ln">158</span>     public function run()
<span class="ln">159</span>     {
<span class="ln">160</span>         if($this-&gt;hasEventHandler('onBeginRequest'))
<span class="ln">161</span>             $this-&gt;onBeginRequest(new CEvent($this));
<span class="error"><span class="ln error-ln">162</span>         $this-&gt;processRequest();
</span><span class="ln">163</span>         if($this-&gt;hasEventHandler('onEndRequest'))
<span class="ln">164</span>             $this-&gt;onEndRequest(new CEvent($this));
<span class="ln">165</span>     }
<span class="ln">166</span> 
<span class="ln">167</span>     /**
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#10			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\xampp\htdocs\limesurvey\index.php(178): <strong>CApplication</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">173</span>  *
<span class="ln">174</span>  */
<span class="ln">175</span> require_once BASEPATH . 'yii' . EXT;
<span class="ln">176</span> require_once APPPATH . 'core/LSYii_Application' . EXT;
<span class="ln">177</span> 
<span class="error"><span class="ln error-ln">178</span> Yii::createApplication('LSYii_Application', APPPATH . 'config/config' . EXT)-&gt;run();
</span><span class="ln">179</span> 
<span class="ln">180</span> /* End of file index.php */
<span class="ln">181</span> /* Location: ./index.php */
</pre></div>			</td>
		</tr>
				</tbody></table>
	</div>

	<div class="version">
		2012-10-31 18:43:20 Apache/2.4.2 (Win32) OpenSSL/1.0.1c PHP/5.4.4 <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.10	</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><style type="text/css"></style></html>
PHP warning.htm (17,982 bytes)   
PHP warning1.htm (17,982 bytes)   
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0091)http://localhost/limesurvey/index.php/admin/tokens/adddummies/surveyid/544997/subaction/add -->
<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>
<style type="text/css"></style></head>

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

	<p class="message">
		Illegal string offset 'mandatory'	</p>

	<div class="source">
		<p class="file">C:\xampp\htdocs\limesurvey\application\controllers\admin\tokens.php(998)</p>
		<div class="code"><pre><span class="ln">0986</span>             'sent' =&gt; 'N',
<span class="ln">0987</span>             'remindersent' =&gt; 'N',
<span class="ln">0988</span>             'completed' =&gt; 'N',
<span class="ln">0989</span>             'usesleft' =&gt; Yii::app()-&gt;request-&gt;getPost('usesleft'),
<span class="ln">0990</span>             'validfrom' =&gt; Yii::app()-&gt;request-&gt;getPost('validfrom'),
<span class="ln">0991</span>             'validuntil' =&gt; Yii::app()-&gt;request-&gt;getPost('validuntil'));
<span class="ln">0992</span> 
<span class="ln">0993</span>             // add attributes
<span class="ln">0994</span>             $attrfieldnames = getTokenFieldsAndNames($iSurveyId,true);
<span class="ln">0995</span>             foreach ($attrfieldnames as $attr_name =&gt; $desc)
<span class="ln">0996</span>             {
<span class="ln">0997</span>                 $value = Yii::app()-&gt;request-&gt;getPost($attr_name);
<span class="error"><span class="ln error-ln">0998</span>                 if ($desc['mandatory'] == 'Y' &amp;&amp; trim($value) == '')
</span><span class="ln">0999</span>                     $this-&gt;getController()-&gt;error(sprintf($clang-&gt;gT('%s cannot be empty'), $desc['description']));
<span class="ln">1000</span>                 $aData[$attr_name] = Yii::app()-&gt;request-&gt;getPost($attr_name);
<span class="ln">1001</span>             }
<span class="ln">1002</span> 
<span class="ln">1003</span>             $amount = sanitize_int(Yii::app()-&gt;request-&gt;getPost('amount'));
<span class="ln">1004</span>             $tokenlength = sanitize_int(Yii::app()-&gt;request-&gt;getPost('tokenlen'));
<span class="ln">1005</span> 
<span class="ln">1006</span>             // Fill an array with all existing tokens
<span class="ln">1007</span>             $criteria = Tokens_dynamic::model($iSurveyId)-&gt;getDbCriteria();
<span class="ln">1008</span>             $criteria-&gt;select = 'token';
<span class="ln">1009</span>             $ntresult = Tokens_dynamic::model($iSurveyId)-&gt;findAllAsArray($criteria);   //Use AsArray to skip active record creation
<span class="ln">1010</span>             $existingtokens=array();
</pre></div>	</div>

	<div class="traces">
		<h2>Stack Trace</h2>
				<table style="width:100%;">
						<tbody><tr class="trace core collapsed">
			<td class="number">
				#0			</td>
			<td class="content">
				<div class="trace-file">
										&nbsp;unknown(0): <strong>tokens</strong>-&gt;<strong>addDummies</strong>("544997", "add")				</div>

							</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#1			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\xampp\htdocs\limesurvey\framework\web\actions\CAction.php(107): <strong>ReflectionMethod</strong>-&gt;<strong>invokeArgs</strong>(tokens, array("544997", "add"))				</div>

				<div class="code"><pre><span class="ln">102</span>             else if($param-&gt;isDefaultValueAvailable())
<span class="ln">103</span>                 $ps[]=$param-&gt;getDefaultValue();
<span class="ln">104</span>             else
<span class="ln">105</span>                 return false;
<span class="ln">106</span>         }
<span class="error"><span class="ln error-ln">107</span>         $method-&gt;invokeArgs($object,$ps);
</span><span class="ln">108</span>         return true;
<span class="ln">109</span>     }
<span class="ln">110</span> }
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#2			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\xampp\htdocs\limesurvey\application\core\Survey_Common_Action.php(82): <strong>CAction</strong>-&gt;<strong>runWithParamsInternal</strong>(tokens, ReflectionMethod, array("surveyid" =&gt; "544997", "subaction" =&gt; "add", "sa" =&gt; "adddummies", "iSurveyId" =&gt; "544997", ...))				</div>

				<div class="code"><pre><span class="ln">77</span>             $oMethod = new ReflectionMethod($this, $sDefault);
<span class="ln">78</span>         }
<span class="ln">79</span> 
<span class="ln">80</span>         // We're all good to go, let's execute it
<span class="ln">81</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">82</span>         return parent::runWithParamsInternal($this, $oMethod, $params);
</span><span class="ln">83</span>     }
<span class="ln">84</span> 
<span class="ln">85</span>     /**
<span class="ln">86</span>     * Some functions have different parameters, which are just an alias of the
<span class="ln">87</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">
				#3			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\xampp\htdocs\limesurvey\framework\web\CController.php(309): <strong>Survey_Common_Action</strong>-&gt;<strong>runWithParams</strong>(array("surveyid" =&gt; "544997", "subaction" =&gt; "add", "sa" =&gt; "adddummies"))				</div>

				<div class="code"><pre><span class="ln">304</span>     {
<span class="ln">305</span>         $priorAction=$this-&gt;_action;
<span class="ln">306</span>         $this-&gt;_action=$action;
<span class="ln">307</span>         if($this-&gt;beforeAction($action))
<span class="ln">308</span>         {
<span class="error"><span class="ln error-ln">309</span>             if($action-&gt;runWithParams($this-&gt;getActionParams())===false)
</span><span class="ln">310</span>                 $this-&gt;invalidActionParams($action);
<span class="ln">311</span>             else
<span class="ln">312</span>                 $this-&gt;afterAction($action);
<span class="ln">313</span>         }
<span class="ln">314</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;C:\xampp\htdocs\limesurvey\framework\web\CController.php(287): <strong>CController</strong>-&gt;<strong>runAction</strong>(tokens)				</div>

				<div class="code"><pre><span class="ln">282</span>      * @see runAction
<span class="ln">283</span>      */
<span class="ln">284</span>     public function runActionWithFilters($action,$filters)
<span class="ln">285</span>     {
<span class="ln">286</span>         if(empty($filters))
<span class="error"><span class="ln error-ln">287</span>             $this-&gt;runAction($action);
</span><span class="ln">288</span>         else
<span class="ln">289</span>         {
<span class="ln">290</span>             $priorAction=$this-&gt;_action;
<span class="ln">291</span>             $this-&gt;_action=$action;
<span class="ln">292</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;C:\xampp\htdocs\limesurvey\framework\web\CController.php(266): <strong>CController</strong>-&gt;<strong>runActionWithFilters</strong>(tokens, array())				</div>

				<div class="code"><pre><span class="ln">261</span>         {
<span class="ln">262</span>             if(($parent=$this-&gt;getModule())===null)
<span class="ln">263</span>                 $parent=Yii::app();
<span class="ln">264</span>             if($parent-&gt;beforeControllerAction($this,$action))
<span class="ln">265</span>             {
<span class="error"><span class="ln error-ln">266</span>                 $this-&gt;runActionWithFilters($action,$this-&gt;filters());
</span><span class="ln">267</span>                 $parent-&gt;afterControllerAction($this,$action);
<span class="ln">268</span>             }
<span class="ln">269</span>         }
<span class="ln">270</span>         else
<span class="ln">271</span>             $this-&gt;missingAction($actionID);
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#6			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\xampp\htdocs\limesurvey\application\controllers\AdminController.php(159): <strong>CController</strong>-&gt;<strong>run</strong>("tokens")				</div>

				<div class="code"><pre><span class="ln">154</span>                 Yii::app()-&gt;session['redirectopage'] = Yii::app()-&gt;request-&gt;requestUri;
<span class="ln">155</span> 
<span class="ln">156</span>                 $this-&gt;redirect($this-&gt;createUrl('/admin/authentication/login'));
<span class="ln">157</span>             }
<span class="ln">158</span> 
<span class="error"><span class="ln error-ln">159</span>             return parent::run($action);
</span><span class="ln">160</span>     }
<span class="ln">161</span> 
<span class="ln">162</span>     /**
<span class="ln">163</span>     * Routes all the actions to their respective places
<span class="ln">164</span>     *
</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;C:\xampp\htdocs\limesurvey\framework\web\CWebApplication.php(276): <strong>AdminController</strong>-&gt;<strong>run</strong>("tokens")				</div>

				<div class="code"><pre><span class="ln">271</span>         {
<span class="ln">272</span>             list($controller,$actionID)=$ca;
<span class="ln">273</span>             $oldController=$this-&gt;_controller;
<span class="ln">274</span>             $this-&gt;_controller=$controller;
<span class="ln">275</span>             $controller-&gt;init();
<span class="error"><span class="ln error-ln">276</span>             $controller-&gt;run($actionID);
</span><span class="ln">277</span>             $this-&gt;_controller=$oldController;
<span class="ln">278</span>         }
<span class="ln">279</span>         else
<span class="ln">280</span>             throw new CHttpException(404,Yii::t('yii','Unable to resolve the request "{route}".',
<span class="ln">281</span>                 array('{route}'=&gt;$route===''?$this-&gt;defaultController:$route)));
</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;C:\xampp\htdocs\limesurvey\framework\web\CWebApplication.php(135): <strong>CWebApplication</strong>-&gt;<strong>runController</strong>("admin/tokens/sa/adddummies")				</div>

				<div class="code"><pre><span class="ln">130</span>             foreach(array_splice($this-&gt;catchAllRequest,1) as $name=&gt;$value)
<span class="ln">131</span>                 $_GET[$name]=$value;
<span class="ln">132</span>         }
<span class="ln">133</span>         else
<span class="ln">134</span>             $route=$this-&gt;getUrlManager()-&gt;parseUrl($this-&gt;getRequest());
<span class="error"><span class="ln error-ln">135</span>         $this-&gt;runController($route);
</span><span class="ln">136</span>     }
<span class="ln">137</span> 
<span class="ln">138</span>     /**
<span class="ln">139</span>      * Registers the core application components.
<span class="ln">140</span>      * This method overrides the parent implementation by registering additional core components.
</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;C:\xampp\htdocs\limesurvey\framework\base\CApplication.php(162): <strong>CWebApplication</strong>-&gt;<strong>processRequest</strong>()				</div>

				<div class="code"><pre><span class="ln">157</span>      */
<span class="ln">158</span>     public function run()
<span class="ln">159</span>     {
<span class="ln">160</span>         if($this-&gt;hasEventHandler('onBeginRequest'))
<span class="ln">161</span>             $this-&gt;onBeginRequest(new CEvent($this));
<span class="error"><span class="ln error-ln">162</span>         $this-&gt;processRequest();
</span><span class="ln">163</span>         if($this-&gt;hasEventHandler('onEndRequest'))
<span class="ln">164</span>             $this-&gt;onEndRequest(new CEvent($this));
<span class="ln">165</span>     }
<span class="ln">166</span> 
<span class="ln">167</span>     /**
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#10			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;C:\xampp\htdocs\limesurvey\index.php(178): <strong>CApplication</strong>-&gt;<strong>run</strong>()				</div>

				<div class="code"><pre><span class="ln">173</span>  *
<span class="ln">174</span>  */
<span class="ln">175</span> require_once BASEPATH . 'yii' . EXT;
<span class="ln">176</span> require_once APPPATH . 'core/LSYii_Application' . EXT;
<span class="ln">177</span> 
<span class="error"><span class="ln error-ln">178</span> Yii::createApplication('LSYii_Application', APPPATH . 'config/config' . EXT)-&gt;run();
</span><span class="ln">179</span> 
<span class="ln">180</span> /* End of file index.php */
<span class="ln">181</span> /* Location: ./index.php */
</pre></div>			</td>
		</tr>
				</tbody></table>
	</div>

	<div class="version">
		2012-10-31 18:43:20 Apache/2.4.2 (Win32) OpenSSL/1.0.1c PHP/5.4.4 <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.10	</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><style type="text/css"></style></html>
PHP warning1.htm (17,982 bytes)   
datafortokens.csv (521 bytes)
Bug heat4
Complete LimeSurvey version number (& build)121025
I will donate to the project if issue is resolvedNo
BrowserIE8, FF, Chrome
Database type & versionMicrosoft SQL Server 2008
Server OS (if known)Windows 2008r2
Webserver software & version (if known)Apache 2.4
PHP Version5.4

Users monitoring this issue

There are no users monitoring this issue.

Activities

c_schmitz

c_schmitz

2012-10-31 14:43

administrator   ~21823

Please update to the latest build 121031 and report if the issue still exists, because I cannot reproduce this.

helper

helper

2012-10-31 16:54

reporter   ~21835

Sorry - appears that this happens when there is an additional required variable previously in the token. Once the required variable is removed (or changed to not required), the generation fails.

c_schmitz

c_schmitz

2012-10-31 16:56

administrator   ~21836

Did you update and test again?

helper

helper

2012-10-31 18:47

reporter   ~21839

Issue continues... Version 2.00+ Build 121031

  1. Import survey_archive_945857(1).lsa
  2. Navigate to the Token management
  3. Validate that there is an additonal attribute "MRN"
  4. Attempt to Generate dummy tokens using defaults
c_schmitz

c_schmitz

2012-10-31 23:43

administrator   ~21840

Can you add one token to the token table then export the .lsa file again and attach it here?

helper

helper

2012-11-01 12:23

reporter   ~21861

Interesting... I cannot export - I will open another bug for that.

I did run the following from the database and saved the results to a csv (attached):

SELECT TOP 1000 [tid]
,[participant_id]
,[firstname]
,[lastname]
,[email]
,[emailstatus]
,[token]
,[language]
,[blacklisted]
,[sent]
,[remindersent]
,[remindercount]
,[completed]
,[usesleft]
,[validfrom]
,[validuntil]
,[mpid]
,[attribute_1]
FROM [limedev].[dbo].[lime_tokens_761276]

c_schmitz

c_schmitz

2012-11-01 15:28

administrator   ~21877

Please update to Build 121101 and report back if the issue still exists because I cannot reproduce it here.

helper

helper

2012-11-01 18:03

reporter   ~21879

Downloaded and install the latest version (121101) on Windows7/MySQL - imported both of the surveys from this ticket. Error consistant on both.

Updated both other enviorments (Window7/MySQL and Windows2008r2/MSSQL) - Error consistant and has not changed.

helper

helper

2012-11-01 19:12

reporter   ~21880

Line 998 of tokens.php change to the following:

if (isset($desc['mandatory']) && ($desc['mandatory'] == 'Y' && trim($value) == ''))

This fixes the issue.

c_schmitz

c_schmitz

2012-11-02 10:53

administrator   ~21892

Well, the real fix is a little more complicated than that but thank you very much for the hint. That one helped me to find the underlying issue in general. I think older PHP version are more lenient and so we were not able to reproduce it.

c_schmitz

c_schmitz

2012-11-02 10:54

administrator   ~21894

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

c_schmitz

c_schmitz

2012-11-02 11:18

administrator   ~21904

Fix committed to 2.1 branch: http://bugs.limesurvey.org/plugin.php?page=Source/view&amp;id=10111

c_schmitz

c_schmitz

2012-11-02 13:56

administrator   ~21912

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

c_schmitz

c_schmitz

2012-11-02 14:02

administrator   ~21916

Fix committed to 2.1 branch: http://bugs.limesurvey.org/plugin.php?page=Source/view&amp;id=10118

c_schmitz

c_schmitz

2012-11-02 21:42

administrator   ~21930

New version 2.00+ Build 121102 released.

Related Changesets

LimeSurvey: master 518092d3

2012-11-02 09:54:22

c_schmitz

Details Diff
Fixed issue 06799: Dummy token generation fails Affected Issues
06799
mod - application/controllers/admin/conditionsaction.php Diff File
mod - application/controllers/admin/export.php Diff File
mod - application/controllers/admin/limereplacementfields.php Diff File
mod - application/controllers/admin/participantsaction.php Diff File
mod - application/controllers/admin/remotecontrol.php Diff File
mod - application/controllers/admin/tokens.php Diff File
mod - application/helpers/admin/token_helper.php Diff File
mod - application/helpers/common_helper.php Diff File
mod - application/helpers/export_helper.php Diff File
mod - application/helpers/expressions/em_manager_helper.php Diff File
mod - application/models/Participants.php Diff File
mod - application/models/Survey_links.php Diff File
mod - application/views/admin/token/browse.php Diff File

LimeSurvey: 2.1 4df76b4e

2012-11-02 10:17:53

c_schmitz

Details Diff
Fixed issue 06799: Dummy token generation fails Affected Issues
06799
mod - application/controllers/admin/conditionsaction.php Diff File
mod - application/controllers/admin/export.php Diff File
mod - application/controllers/admin/limereplacementfields.php Diff File
mod - application/controllers/admin/participantsaction.php Diff File
mod - application/controllers/admin/remotecontrol.php Diff File
mod - application/controllers/admin/tokens.php Diff File
mod - application/helpers/admin/token_helper.php Diff File
mod - application/helpers/common_helper.php Diff File
mod - application/helpers/export_helper.php Diff File
mod - application/helpers/expressions/em_manager_helper.php Diff File
mod - application/models/Participants.php Diff File
mod - application/models/Survey_links.php Diff File
mod - application/views/admin/token/browse.php Diff File

LimeSurvey: master cf3adb6e

2012-11-02 12:54:43

c_schmitz

Details Diff
Fixed issue 06799: Dummy token generation fails Affected Issues
06799
mod - application/views/admin/export/exportresults_view.php Diff File

LimeSurvey: 2.1 8ec93552

2012-11-02 12:54:43

c_schmitz

Details Diff
Fixed issue 06799: Dummy token generation fails Affected Issues
06799
mod - application/views/admin/export/exportresults_view.php Diff File

Issue History

Date Modified Username Field Change
2012-10-29 18:51 helper New Issue
2012-10-29 18:51 helper File Added: survey_archive_945857(1).lsa
2012-10-29 18:52 helper File Added: add.htm
2012-10-30 09:12 c_schmitz Assigned To => c_schmitz
2012-10-30 09:12 c_schmitz Status new => assigned
2012-10-31 14:43 c_schmitz Note Added: 21823
2012-10-31 14:43 c_schmitz Status assigned => feedback
2012-10-31 16:54 helper Note Added: 21835
2012-10-31 16:54 helper Status feedback => assigned
2012-10-31 16:56 c_schmitz Note Added: 21836
2012-10-31 16:56 c_schmitz Status assigned => feedback
2012-10-31 18:45 helper File Added: PHP warning.htm
2012-10-31 18:46 helper File Added: PHP warning1.htm
2012-10-31 18:47 helper Note Added: 21839
2012-10-31 18:47 helper Status feedback => assigned
2012-10-31 23:43 c_schmitz Note Added: 21840
2012-10-31 23:44 c_schmitz Status assigned => feedback
2012-11-01 12:23 helper Note Added: 21861
2012-11-01 12:23 helper Status feedback => assigned
2012-11-01 12:24 helper File Added: survey_archive_761276.lsa
2012-11-01 12:25 helper File Added: datafortokens.csv
2012-11-01 15:28 c_schmitz Note Added: 21877
2012-11-01 15:28 c_schmitz Status assigned => feedback
2012-11-01 18:03 helper Note Added: 21879
2012-11-01 18:03 helper Status feedback => assigned
2012-11-01 19:12 helper Note Added: 21880
2012-11-02 10:53 c_schmitz Note Added: 21892
2012-11-02 10:53 c_schmitz Status assigned => resolved
2012-11-02 10:53 c_schmitz Fixed in Version => 2.00+
2012-11-02 10:53 c_schmitz Resolution open => fixed
2012-11-02 10:54 c_schmitz Changeset attached => LimeSurvey master 518092d3
2012-11-02 10:54 c_schmitz Note Added: 21894
2012-11-02 11:18 c_schmitz Changeset attached => LimeSurvey 2.1 4df76b4e
2012-11-02 11:18 c_schmitz Note Added: 21904
2012-11-02 13:56 c_schmitz Changeset attached => LimeSurvey master cf3adb6e
2012-11-02 13:56 c_schmitz Note Added: 21912
2012-11-02 14:02 c_schmitz Changeset attached => LimeSurvey 2.1 8ec93552
2012-11-02 14:02 c_schmitz Note Added: 21916
2012-11-02 21:42 c_schmitz Note Added: 21930
2012-11-02 21:42 c_schmitz Status resolved => closed
2016-12-08 10:39 c_schmitz Category Tokens => Survey participants (Tokens)