View Issue Details

This bug affects 1 person(s).
 24
IDProjectCategoryView StatusLast Update
09118Bug reportsPluginspublic2016-09-07 13:03
Reporterongkichilam Assigned Toc_schmitz  
PrioritynormalSeverityminor 
Status closedResolutionfixed 
Product Version2.05+ 
Target Version2.06+Fixed in Version2.50.x 
Summary09118: KCFinder Image Browse Server not working due to incorrect cookieDomain
Description

In the Survey editor, after I clicked on the Image > Browse Server, the KCFinder editor pops up but when click on any of the buttons (Upload, Refresh, Settings etc), nothing will happen, as seen in Chrome.

In Firefox, page became 'The address wasn't understood. Firefox doesn't know how to open this address, because the protocol (kcact) isn't associated with any program. You might need to install other software to open this address.'

At the backend, the upload directory already has the permission to auto-create the folder of the survey id, since images folder already created.

We are using Version 2.05+ Build 140502. But the problem is that it works fine in our Dev server but not in the Prod server.

Additional Information

Found the root cause.
There is a variable 'cookieDomain' in kcfinder/config.php that is set to blank.
However at tpljavascript.php, .kuki.domain is set based on the cookieDomain, which now populated based on the servername, which is not correct for our case because our site appears under the reverse proxy URL.

Once I set cookieDomain to our reverse proxy domain, it fixed the problem. However, I am not sure how to retain this, when we do LimeSurvey version upgrade later.

Appreciate if LS team can set the cookieDomain value based on application/config -> components -> request -> hostInfo.

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

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

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

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

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

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

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

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

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

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

.container {
	margin: 1em 4em;
}

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

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

.source {
	margin-bottom: 1em;
}

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

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

.traces {
	margin: 2em 0;
}

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

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

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

.trace .content {
	padding: 0.5em;
}

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

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

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

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

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

	<p class="message">
		Trying to get property of non-object	</p>

	<div class="source">
		<p class="file">/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/application/helpers/admin/htmleditor_helper.php(28)</p>
		<div class="code"><pre><span class="ln">16</span>     function initKcfinder()
<span class="ln">17</span>     {
<span class="ln">18</span>      Yii::app()-&gt;session['KCFINDER'] = array();
<span class="ln">19</span> 
<span class="ln">20</span>         $sAllowedExtensions = implode(' ', array_map('trim', explode(',', Yii::app()-&gt;getConfig('allowedresourcesuploads'))));
<span class="ln">21</span>         $_SESSION['KCFINDER']['types'] = array(
<span class="ln">22</span>             'files' =&gt; $sAllowedExtensions,
<span class="ln">23</span>             'flash' =&gt; $sAllowedExtensions,
<span class="ln">24</span>             'images' =&gt; $sAllowedExtensions
<span class="ln">25</span>         );
<span class="ln">26</span>         if (Yii::app()-&gt;getRequest()-&gt;enableCsrfValidation)
<span class="ln">27</span>         {
<span class="error"><span class="ln error-ln">28</span>             $_SESSION['KCFINDER']['cookieDomain'] = Yii::app()-&gt;getRequest()-&gt;csrfCookie-&gt;domain;
</span><span class="ln">29</span>         }
<span class="ln">30</span> 
<span class="ln">31</span>         if (Yii::app()-&gt;getConfig('demoMode') === false &amp;&amp;
<span class="ln">32</span>                 isset(Yii::app()-&gt;session['loginID']) &amp;&amp;
<span class="ln">33</span>                 isset(Yii::app()-&gt;session['FileManagerContext']))
<span class="ln">34</span>         {
<span class="ln">35</span>             // disable upload at survey creation time
<span class="ln">36</span>             // because we don't know the sid yet
<span class="ln">37</span>             if (preg_match('/^(create|edit):(question|group|answer)/', Yii::app()-&gt;session['FileManagerContext']) != 0 ||
<span class="ln">38</span>                     preg_match('/^edit:survey/', Yii::app()-&gt;session['FileManagerContext']) != 0 ||
<span class="ln">39</span>                     preg_match('/^edit:assessments/', Yii::app()-&gt;session['FileManagerContext']) != 0 ||
<span class="ln">40</span>                     preg_match('/^edit:emailsettings/', Yii::app()-&gt;session['FileManagerContext']) != 0)
</pre></div>	</div>

	<div class="traces">
		<h2>Stack Trace</h2>
				<table style="width:100%;">
						<tbody><tr class="trace app expanded">
			<td class="number">
				#0			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/application/helpers/admin/htmleditor_helper.php(133): <strong>initKcfinder</strong>()				</div>

				<div class="code"><pre><span class="ln">128</span>         }
<span class="ln">129</span>     }
<span class="ln">130</span> 
<span class="ln">131</span>     function getEditor($fieldtype,$fieldname,$fieldtext, $surveyID=null,$gID=null,$qID=null,$action=null)
<span class="ln">132</span>     {
<span class="error"><span class="ln error-ln">133</span>         initKcfinder();
</span><span class="ln">134</span>         //error_log("TIBO fieldtype=$fieldtype,fieldname=$fieldname,fieldtext=$fieldtext,surveyID=$surveyID,gID=$gID,qID=$qID,action=$action");
<span class="ln">135</span>         $session = &amp;Yii::app()-&gt;session;
<span class="ln">136</span> 
<span class="ln">137</span>         if ($session['htmleditormode'] &amp;&amp;
<span class="ln">138</span>         $session['htmleditormode'] == 'none')
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#1			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										
&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/application/views/admin/survey/Question/question_subviews/_tabs.php(47):
 <strong>getEditor</strong>("question-text", "question_en", "[Question:](en)", "666412", ...)				</div>

				<div class="code"><pre><span class="ln">42</span>         &lt;div class="form-group"&gt;
<span class="ln">43</span>                 &lt;label class="col-sm-3 control-label" for='question_&lt;?php echo $eqrow['language']; ?&gt;' class=""&gt;&lt;?php eT("Question:"); ?&gt;&lt;/label&gt;
<span class="ln">44</span>                 &lt;div class="col-sm-9"&gt;
<span class="ln">45</span>                 &lt;div class="htmleditor input-group"&gt;
<span class="ln">46</span>                     &lt;?php echo CHtml::textArea("question_{$eqrow['language']}",$eqrow['question'],array('class'=&gt;'form-control','cols'=&gt;'60','rows'=&gt;'8','id'=&gt;"question_{$eqrow['language']}")); ?&gt;
<span class="error"><span class="ln error-ln">47</span>                     &lt;?php echo getEditor("question-text","question_".$eqrow['language'], "[".gT("Question:", "js")."](".$eqrow['language'].")",$surveyid,$gid,$qid,$action); ?&gt;
</span><span class="ln">48</span>                 &lt;/div&gt;
<span class="ln">49</span>                 &lt;/div&gt;
<span class="ln">50</span>         &lt;/div&gt;
<span class="ln">51</span> 
<span class="ln">52</span>         &lt;!-- Question Help --&gt;
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#2			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/framework/web/CBaseController.php(126): <strong>require</strong>("/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/application/...")				</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">
				#3			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/framework/web/CBaseController.php(95): <strong>CBaseController</strong>-&gt;<strong>renderInternal</strong>("/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/application/...",
 array("eqrow" =&gt; array("qid" =&gt; "51349", "parent_qid" =&gt; "0", 
"sid" =&gt; "666412", "gid" =&gt; "2653", ...), "addlanguages" =&gt; 
array(), "surveyid" =&gt; "666412", "gid" =&gt; "2653", ...), 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">
				#4			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/framework/web/CController.php(869): <strong>CBaseController</strong>-&gt;<strong>renderFile</strong>("/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/application/...",
 array("eqrow" =&gt; array("qid" =&gt; "51349", "parent_qid" =&gt; "0", 
"sid" =&gt; "666412", "gid" =&gt; "2653", ...), "addlanguages" =&gt; 
array(), "surveyid" =&gt; "666412", "gid" =&gt; "2653", ...), true)				</div>

				<div class="code"><pre><span class="ln">864</span>      */
<span class="ln">865</span>     public function renderPartial($view,$data=null,$return=false,$processOutput=false)
<span class="ln">866</span>     {
<span class="ln">867</span>         if(($viewFile=$this-&gt;getViewFile($view))!==false)
<span class="ln">868</span>         {
<span class="error"><span class="ln error-ln">869</span>             $output=$this-&gt;renderFile($viewFile,$data,true);
</span><span class="ln">870</span>             if($processOutput)
<span class="ln">871</span>                 $output=$this-&gt;processOutput($output);
<span class="ln">872</span>             if($return)
<span class="ln">873</span>                 return $output;
<span class="ln">874</span>             else
</pre></div>			</td>
		</tr>
						<tr class="trace app expanded">
			<td class="number">
				#5			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										
&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/application/views/admin/survey/Question/editQuestion_view.php(59):
 <strong>CController</strong>-&gt;<strong>renderPartial</strong>("./survey/Question/question_subviews/_tabs",
 array("eqrow" =&gt; array("qid" =&gt; "51349", "parent_qid" =&gt; "0", 
"sid" =&gt; "666412", "gid" =&gt; "2653", ...), "addlanguages" =&gt; 
array(), "surveyid" =&gt; "666412", "gid" =&gt; "2653", ...))				</div>

				<div class="code"><pre><span class="ln">54</span>                                     'gid'=&gt;$gid, 'qid'=&gt;$qid,
<span class="ln">55</span>                                     'adding'=&gt;$adding,
<span class="ln">56</span>                                     'aqresult'=&gt;$aqresult,
<span class="ln">57</span>                                     'action'=&gt;$action
<span class="ln">58</span>                                 )
<span class="error"><span class="ln error-ln">59</span>                             ); ?&gt;
</span><span class="ln">60</span> 
<span class="ln">61</span>                     &lt;?php endif;?&gt;
<span class="ln">62</span>                 &lt;/div&gt;
<span class="ln">63</span> 
<span class="ln">64</span>                 &lt;!-- The Accordion --&gt;
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#6			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/framework/web/CBaseController.php(126): <strong>require</strong>("/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/application/...")				</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">
				#7			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/framework/web/CBaseController.php(95): <strong>CBaseController</strong>-&gt;<strong>renderInternal</strong>("/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/application/...",
 array("surveyid" =&gt; "666412", "gid" =&gt; "2653", "qid" =&gt; 
"51349", "display" =&gt; array("menu_bars" =&gt; array("surveysummary" 
=&gt; "viewgroup", "gid_action" =&gt; "addquestion", "qid_action" =&gt; 
"editquestion")), ...), 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">
				#8			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/framework/web/CController.php(869): <strong>CBaseController</strong>-&gt;<strong>renderFile</strong>("/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/application/...",
 array("surveyid" =&gt; "666412", "gid" =&gt; "2653", "qid" =&gt; 
"51349", "display" =&gt; array("menu_bars" =&gt; array("surveysummary" 
=&gt; "viewgroup", "gid_action" =&gt; "addquestion", "qid_action" =&gt; 
"editquestion")), ...), true)				</div>

				<div class="code"><pre><span class="ln">864</span>      */
<span class="ln">865</span>     public function renderPartial($view,$data=null,$return=false,$processOutput=false)
<span class="ln">866</span>     {
<span class="ln">867</span>         if(($viewFile=$this-&gt;getViewFile($view))!==false)
<span class="ln">868</span>         {
<span class="error"><span class="ln error-ln">869</span>             $output=$this-&gt;renderFile($viewFile,$data,true);
</span><span class="ln">870</span>             if($processOutput)
<span class="ln">871</span>                 $output=$this-&gt;processOutput($output);
<span class="ln">872</span>             if($return)
<span class="ln">873</span>                 return $output;
<span class="ln">874</span>             else
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#9			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/application/core/Survey_Common_Action.php(321): <strong>CController</strong>-&gt;<strong>renderPartial</strong>("/admin/survey/Question/editQuestion_view",
 array("surveyid" =&gt; "666412", "gid" =&gt; "2653", "qid" =&gt; 
"51349", "display" =&gt; array("menu_bars" =&gt; array("surveysummary" 
=&gt; "viewgroup", "gid_action" =&gt; "addquestion", "qid_action" =&gt; 
"editquestion")), ...))				</div>

				<div class="code"><pre><span class="ln">316</span>                 elseif (is_array($viewUrl))
<span class="ln">317</span>                 {
<span class="ln">318</span>                     foreach ($viewUrl as $aSubData)
<span class="ln">319</span>                     {
<span class="ln">320</span>                         $aSubData = array_merge($aData, $aSubData);
<span class="error"><span class="ln error-ln">321</span>                         Yii::app()-&gt;getController()-&gt;renderPartial($sViewPath . $sViewKey, $aSubData);
</span><span class="ln">322</span>                     }
<span class="ln">323</span>                 }
<span class="ln">324</span>             }
<span class="ln">325</span>             else
<span class="ln">326</span>             {
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#10			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/application/controllers/admin/questions.php(1893): <strong>Survey_Common_Action</strong>-&gt;<strong>_renderWrappedTemplate</strong>("survey/Question",
 array("editQuestion_view" =&gt; array(array("surveyid" =&gt; "666412", 
"gid" =&gt; "2653", "qid" =&gt; "51349", "display" =&gt; 
array("menu_bars" =&gt; array("surveysummary" =&gt; "viewgroup", 
"gid_action" =&gt; "addquestion", "qid_action" =&gt; "editquestion")), 
...)), "questionJavascript_view" =&gt; array(array("type" =&gt; "D"))), 
array("surveyid" =&gt; "666412", "gid" =&gt; "2653", "qid" =&gt; 
"51349", "display" =&gt; array("menu_bars" =&gt; array("surveysummary" 
=&gt; "viewgroup", "gid_action" =&gt; "addquestion", "qid_action" =&gt; 
"editquestion")), ...))				</div>

				<div class="code"><pre><span class="ln">1888</span>     * @param string|array $aViewUrls View url(s)
<span class="ln">1889</span>     * @param array $aData Data to be passed on. Optional.
<span class="ln">1890</span>     */
<span class="ln">1891</span>     protected function _renderWrappedTemplate($sAction = 'survey/Question', $aViewUrls = array(), $aData = array())
<span class="ln">1892</span>     {
<span class="error"><span class="ln error-ln">1893</span>         parent::_renderWrappedTemplate($sAction, $aViewUrls, $aData);
</span><span class="ln">1894</span>     }
<span class="ln">1895</span> 
<span class="ln">1896</span>     /**
<span class="ln">1897</span>      * Show error and redirect back if survey is active
<span class="ln">1898</span>      *
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#11			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/application/controllers/admin/questions.php(1364): <strong>questions</strong>-&gt;<strong>_renderWrappedTemplate</strong>("survey/Question",
 array("editQuestion_view" =&gt; array(array("surveyid" =&gt; "666412", 
"gid" =&gt; "2653", "qid" =&gt; "51349", "display" =&gt; 
array("menu_bars" =&gt; array("surveysummary" =&gt; "viewgroup", 
"gid_action" =&gt; "addquestion", "qid_action" =&gt; "editquestion")), 
...)), "questionJavascript_view" =&gt; array(array("type" =&gt; "D"))), 
array("surveyid" =&gt; "666412", "gid" =&gt; "2653", "qid" =&gt; 
"51349", "display" =&gt; array("menu_bars" =&gt; array("surveysummary" 
=&gt; "viewgroup", "gid_action" =&gt; "addquestion", "qid_action" =&gt; 
"editquestion")), ...))				</div>

				<div class="code"><pre><span class="ln">1359</span>         $aData['sidemenu']['explorer']['state'] = true;
<span class="ln">1360</span>         $aData['sidemenu']['explorer']['gid'] = (isset($gid))?$gid:false;
<span class="ln">1361</span>         $aData['sidemenu']['explorer']['qid'] = (isset($qid))?$qid:false;
<span class="ln">1362</span> 
<span class="ln">1363</span> 
<span class="error"><span class="ln error-ln">1364</span>         $this-&gt;_renderWrappedTemplate('survey/Question', $aViewUrls, $aData);
</span><span class="ln">1365</span>     }
<span class="ln">1366</span> 
<span class="ln">1367</span>     /**
<span class="ln">1368</span>     * Function responsible for deleting a question.
<span class="ln">1369</span>     *
</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>questions</strong>-&gt;<strong>index</strong>("editquestion", "666412", "2653", "51349")				</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;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/framework/web/actions/CAction.php(109): <strong>ReflectionMethod</strong>-&gt;<strong>invokeArgs</strong>(questions, array("editquestion", "666412", "2653", "51349"))				</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 collapsed">
			<td class="number">
				#14			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/application/core/Survey_Common_Action.php(101): <strong>CAction</strong>-&gt;<strong>runWithParamsInternal</strong>(questions,
 ReflectionMethod, array("surveyid" =&gt; "666412", "gid" =&gt; "2653", 
"qid" =&gt; "51349", "sa" =&gt; "editquestion", ...))				</div>

				<div class="code"><pre><span class="ln">096</span>             $oMethod = new ReflectionMethod($this, $sDefault);
<span class="ln">097</span>         }
<span class="ln">098</span> 
<span class="ln">099</span>         // We're all good to go, let's execute it
<span class="ln">100</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">101</span>         return parent::runWithParamsInternal($this, $oMethod, $params);
</span><span class="ln">102</span>     }
<span class="ln">103</span> 
<span class="ln">104</span>     /**
<span class="ln">105</span>     * Some functions have different parameters, which are just an alias of the
<span class="ln">106</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">
				#15			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/framework/web/CController.php(308): <strong>Survey_Common_Action</strong>-&gt;<strong>runWithParams</strong>(array("surveyid" =&gt; "666412", "gid" =&gt; "2653", "qid" =&gt; "51349", "sa" =&gt; "editquestion"))				</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">
				#16			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/framework/web/CController.php(286): <strong>CController</strong>-&gt;<strong>runAction</strong>(questions)				</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">
				#17			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/framework/web/CController.php(265): <strong>CController</strong>-&gt;<strong>runActionWithFilters</strong>(questions, 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">
				#18			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/application/controllers/AdminController.php(160): <strong>CController</strong>-&gt;<strong>run</strong>("questions")				</div>

				<div class="code"><pre><span class="ln">155</span>                     $this-&gt;redirect(array('/admin/authentication/sa/login'));
<span class="ln">156</span>                 }
<span class="ln">157</span> 
<span class="ln">158</span>             }
<span class="ln">159</span> 
<span class="error"><span class="ln error-ln">160</span>             return parent::run($action);
</span><span class="ln">161</span>     }
<span class="ln">162</span> 
<span class="ln">163</span>     /**
<span class="ln">164</span>     * Routes all the actions to their respective places
<span class="ln">165</span>     *
</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;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/framework/web/CWebApplication.php(282): <strong>AdminController</strong>-&gt;<strong>run</strong>("questions")				</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">
				#20			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/framework/web/CWebApplication.php(141): <strong>CWebApplication</strong>-&gt;<strong>runController</strong>("admin/questions/sa/editquestion")				</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">
				#21			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/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">
				#22			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;/home/sondages.pro/htdocs/limesurvey_GIT/LimeSurvey/index.php(212): <strong>CApplication</strong>-&gt;<strong>run</strong>()				</div>

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

	<div class="version">
		2016-05-11 16:38:22 Apache/2.2.22 (Debian) <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.17	</div>
</div>

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

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



</body></html>
PHP notice.html (35,780 bytes)   
Bug heat24
Complete LimeSurvey version number (& build)140502
I will donate to the project if issue is resolvedNo
Browser
Database type & versionMySQL
Server OS (if known)Linux
Webserver software & version (if known)Apache 2.2
PHP Version5.4

Relationships

has duplicate 11618 closedc_schmitz KCFinder dont work properly 

Users monitoring this issue

adolfocorreia

Activities

DenisChenu

DenisChenu

2014-06-28 11:50

developer   ~30246

See http://www.limesurvey.org/en/forum/installation-a-update-issues/97713-kcfinder-image-browse-server-not-working

I do some test but i think we must use:
components -> session -> cookieParams -> domain (and path).
and validate if
components -> session -> cookieParams -> domain (and path). is set to application/config -> components -> request -> hostInfo. by default (i think yes, but maybe not)

:)

DenisChenu

DenisChenu

2014-09-09 12:10

developer   ~30511

Can you test with

  • 'cookieDomain' => Yii::app()->session->cookieParams['domain'],
    and
  • 'cookiePath' => Yii::app()->session->cookieParams['path']

Because we need a strong solution working for all user.

ongkichilam

ongkichilam

2014-09-10 06:06

reporter   ~30517

at kcfinder/config.php, I changed to this

'cookieDomain' => Yii::app()->session->cookieParams['domain'],
'cookiePath' => Yii::app()->session->cookieParams['path'],

and in config.php

'session' => array (
'class' => 'system.web.CDbHttpSession',
'connectionID' => 'db',
'sessionTableName' => '{{sessions}}',
'cookieParams' => array('domain'=>'https://test.com.int',
'path'=>'https://test.com.int'),
),

Is that what you meant?
But it doesn't work after that. Blank page appeared.

DenisChenu

DenisChenu

2014-09-10 07:58

developer   ~30518

Last edited: 2014-09-10 08:00

For path : i think you need "/" because cookie path must be directory inside domain.

It's what i mean :)

But you can remove
'class' => 'system.web.CDbHttpSession',
'connectionID' => 'db',
'sessionTableName' => '{{sessions}}',

(except if you use session in DB)

ANd : pleae try to remove whole update of config.php

And : thanks a lot.

ongkichilam

ongkichilam

2014-09-10 12:25

reporter   ~30524

Error,

Fatal error: Class 'Yii' not found in /services/who-shared-hosting/sites/intradataform/htdocs/third_party/kcfinder/config.php on line 88

How else to read the config?

DenisChenu

DenisChenu

2014-09-10 12:27

developer   ~30525

I make some test and put a patch for this.

We can use $_SESSION['KCFINDER'] to put some var like this : then we can do it in LimeSUrvey.

We don't want to modify third_party to allow easily updating

adolfocorreia

adolfocorreia

2014-10-10 18:34

reporter   ~30784

Is there a patch/bugfix for this issue?

DenisChenu

DenisChenu

2014-10-26 10:27

developer   ~30857

Really dn't find a way without manually hacking config of kcfinder ....

Maybe a doc issue, or another idea.

DenisChenu

DenisChenu

2014-11-24 18:54

developer   ~31087

@Carsten : i do some test with update to last ckeditor, but surely linked with http://manual.limesurvey.org/Category:Development_HTML_editor :)

fradeff

fradeff

2016-01-18 11:13

reporter   ~34286

Last edited: 2016-01-18 11:26

same problem

on my installation it was old js files from previous limesurvey version (150520) that were messing around after a manual upgrade

bug identified by installing a brand new empty limesurvey which worked perfectly out of the box (so the problem was coming from my upgraded lime)

then making some

diff -qr lmtest limebug

found the bad guys

solution: remove these files:

rm third_party/kcfinder/js/helper.js
rm third_party/kcfinder/js/jquery.drag.js
rm third_party/kcfinder/js/jquery.js
rm third_party/kcfinder/js/jquery.rightClick.js

for me it worked, hope for you too

LouisGac

LouisGac

2016-05-11 15:33

developer   ~38353

I think this one as been resolved by Carsten some time ago.
Can you confirm it Carsten?

c_schmitz

c_schmitz

2016-05-11 16:10

administrator   ~38354

We bound the CookieDomain setting now to the CSRF domain setting - see https://manual.limesurvey.org/Optional_settings#Request_settings for details how to configure that one.

c_schmitz

c_schmitz

2016-05-11 16:10

administrator   ~38355

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

c_schmitz

c_schmitz

2016-05-11 16:33

administrator   ~38362

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

c_schmitz

c_schmitz

2016-05-12 10:38

administrator   ~38419

Version 2.50 Build 160512 released

Related Changesets

LimeSurvey: master c44d815f

2016-05-11 14:08:47

c_schmitz

Details Diff
Fixed issue 09118: Image Browse Server not working due to incorrect cookieDomain when using reverse proxy URL Affected Issues
09118
mod - application/helpers/admin/htmleditor_helper.php Diff File

LimeSurvey: master c5ff180a

2016-05-11 14:33:04

c_schmitz

Details Diff
Fixed issue 09118: Image Browse Server not working due to incorrect cookieDomain when using reverse proxy URL Affected Issues
09118
mod - application/helpers/admin/htmleditor_helper.php Diff File

Issue History

Date Modified Username Field Change
2014-06-26 10:05 ongkichilam New Issue
2014-06-28 11:50 DenisChenu Note Added: 30246
2014-06-28 11:50 DenisChenu Assigned To => DenisChenu
2014-06-28 11:50 DenisChenu Status new => assigned
2014-09-09 12:10 DenisChenu Note Added: 30511
2014-09-10 06:06 ongkichilam Note Added: 30517
2014-09-10 07:58 DenisChenu Note Added: 30518
2014-09-10 07:58 DenisChenu Note Edited: 30518
2014-09-10 07:59 DenisChenu Note Edited: 30518
2014-09-10 08:00 DenisChenu Note Edited: 30518
2014-09-10 12:25 ongkichilam Note Added: 30524
2014-09-10 12:27 DenisChenu Note Added: 30525
2014-10-10 18:20 adolfocorreia Issue Monitored: adolfocorreia
2014-10-10 18:34 adolfocorreia Note Added: 30784
2014-10-26 10:26 DenisChenu Assigned To DenisChenu =>
2014-10-26 10:27 DenisChenu Note Added: 30857
2014-10-26 10:27 DenisChenu Status assigned => new
2014-11-24 16:43 c_schmitz Assigned To => c_schmitz
2014-11-24 16:43 c_schmitz Status new => acknowledged
2014-11-24 16:44 c_schmitz Target Version => 2.06+
2014-11-24 18:54 DenisChenu Note Added: 31087
2016-01-18 11:13 fradeff Note Added: 34286
2016-01-18 11:26 fradeff Note Edited: 34286
2016-05-11 15:33 LouisGac Note Added: 38353
2016-05-11 15:33 LouisGac Status acknowledged => feedback
2016-05-11 16:10 c_schmitz Note Added: 38354
2016-05-11 16:10 c_schmitz Changeset attached => LimeSurvey master c44d815f
2016-05-11 16:10 c_schmitz Note Added: 38355
2016-05-11 16:10 c_schmitz Resolution open => fixed
2016-05-11 16:11 c_schmitz Status feedback => resolved
2016-05-11 16:11 c_schmitz Fixed in Version => 2.5
2016-05-11 16:33 c_schmitz Changeset attached => LimeSurvey master c5ff180a
2016-05-11 16:33 c_schmitz Note Added: 38362
2016-05-11 16:41 DenisChenu File Added: PHP notice.html
2016-05-12 10:38 c_schmitz Note Added: 38419
2016-05-12 10:38 c_schmitz Status resolved => closed
2016-09-07 13:03 c_schmitz Relationship added has duplicate 11618