View Issue Details

This bug affects 1 person(s).
 4
IDProjectCategoryView StatusLast Update
18952Bug reportsPluginspublic2023-08-08 11:01
ReporterDenisChenu Assigned Toollehar  
PrioritynoneSeverityblock 
Status feedbackResolutionopen 
Product Version5.6.x 
Summary18952: After update to 5.6.29 from 3.28.56 : all plugin broken
Description

With valid plugin (5.X compatible or incompatible). After upgragde to 5.X : all plugin are invlidated : $this->plugin_type is NULL

Steps To Reproduce

Steps to reproduce

Include some 3.X and 3+5.X compatible plugin : example :https://dl.sondages.pro/addScriptToQuestion.zip and https://dl.sondages.pro/autoComplete.zip
Install plugin
Update to 5.X (with debug set)
Check plugins

Expected result

Existing plugin compatible are installed and enable
Existing plugin not compatible are installed not enable (and there are way to update)

Actual result

All plugin are set as invalid

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

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

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

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

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

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

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

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

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

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

.container {
	margin: 1em 4em;
}

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

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

.source {
	margin-bottom: 1em;
}

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

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

.traces {
	margin: 2em 0;
}

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

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

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

.trace .content {
	padding: 0.5em;
}

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

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

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

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

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

	<p class="message">
		Undefined index: 	</p>

	<div class="source">
		<p class="file">E:\WebSite\limesurvey\application\models\Plugin.php(345)</p>
		<div class="code"><pre><span class="ln">333</span>     }
<span class="ln">334</span> 
<span class="ln">335</span>     /**
<span class="ln">336</span>      * Get installation folder of this plugin.
<span class="ln">337</span>      * Installation folder is different for core and
<span class="ln">338</span>      * user plugins.
<span class="ln">339</span>      * @return string
<span class="ln">340</span>      * @throws Exception
<span class="ln">341</span>      */
<span class="ln">342</span>     protected function getDir()
<span class="ln">343</span>     {
<span class="ln">344</span>         $pluginManager = App()-&gt;getPluginManager();
<span class="error"><span class="ln error-ln">345</span>         $alias = $pluginManager-&gt;pluginDirs[$this-&gt;plugin_type];
</span><span class="ln">346</span> 
<span class="ln">347</span>         if (empty($alias)) {
<span class="ln">348</span>             throw new \Exception('Unknown plugin type: ' . json_encode($this-&gt;plugin_type));
<span class="ln">349</span>         }
<span class="ln">350</span> 
<span class="ln">351</span>         $folder = Yii::getPathOfAlias($alias);
<span class="ln">352</span> 
<span class="ln">353</span>         if (empty($folder)) {
<span class="ln">354</span>             throw new \Exception('Alias has no folder: ' . json_encode($alias));
<span class="ln">355</span>         }
<span class="ln">356</span> 
<span class="ln">357</span>         // NB: Name is same as plugin folder and plugin main class.
</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;E:\WebSite\limesurvey\application\models\Plugin.php(100): <strong>Plugin</strong>-&gt;<strong>getDir</strong>()				</div>

				<div class="code"><pre><span class="ln">095</span>      * @return ExtensionConfig
<span class="ln">096</span>      * @throws Exception if file does not exist.
<span class="ln">097</span>      */
<span class="ln">098</span>     public function getExtensionConfig()
<span class="ln">099</span>     {
<span class="error"><span class="ln error-ln">100</span>         $file = $this-&gt;getDir() . DIRECTORY_SEPARATOR . 'config.xml';
</span><span class="ln">101</span>         if (file_exists($file)) {
<span class="ln">102</span>             if (\PHP_VERSION_ID &lt; 80000) {
<span class="ln">103</span>                 libxml_disable_entity_loader(false);
<span class="ln">104</span>             }
<span class="ln">105</span>             $config = simplexml_load_file(realpath($file));
</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;E:\WebSite\limesurvey\application\models\Plugin.php(171): <strong>Plugin</strong>-&gt;<strong>getExtensionConfig</strong>()				</div>

				<div class="code"><pre><span class="ln">166</span>      * @return string
<span class="ln">167</span>      * @throws Exception
<span class="ln">168</span>      */
<span class="ln">169</span>     public function getDescription()
<span class="ln">170</span>     {
<span class="error"><span class="ln error-ln">171</span>         $config = $this-&gt;getExtensionConfig();
</span><span class="ln">172</span>         // Harden for XSS
<span class="ln">173</span>         $filter = LSYii_HtmlPurifier::getXssPurifier();
<span class="ln">174</span>         return $filter-&gt;purify($config-&gt;getDescription());
<span class="ln">175</span>     }
<span class="ln">176</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;E:\WebSite\limesurvey\application\models\Plugin.php(185): <strong>Plugin</strong>-&gt;<strong>getDescription</strong>()				</div>

				<div class="code"><pre><span class="ln">180</span>      * @return string
<span class="ln">181</span>      */
<span class="ln">182</span>     public function getPossibleDescription()
<span class="ln">183</span>     {
<span class="ln">184</span>         try {
<span class="error"><span class="ln error-ln">185</span>             return $this-&gt;getDescription();
</span><span class="ln">186</span>         } catch (\Throwable $ex) {
<span class="ln">187</span>             return sprintf(gT('Error: Could not get plugin description: %s'), $ex-&gt;getMessage());
<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">
				#3			</td>
			<td class="content">
				<div class="trace-file">
										&nbsp;E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\base\CComponent.php(614) : eval()'d code(1): <strong>Plugin</strong>-&gt;<strong>getPossibleDescription</strong>()				</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;E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\base\CComponent.php(614): <strong>eval</strong>()				</div>

				<div class="code"><pre><span class="ln">609</span>         if(is_string($_expression_))
<span class="ln">610</span>         {
<span class="ln">611</span>             extract($_data_);
<span class="ln">612</span>             try
<span class="ln">613</span>             {
<span class="error"><span class="ln error-ln">614</span>                 return eval('return ' . $_expression_ . ';');
</span><span class="ln">615</span>             }
<span class="ln">616</span>             catch (ParseError $e)
<span class="ln">617</span>             {
<span class="ln">618</span>                 return false;
<span class="ln">619</span>             }
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#5			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\zii\widgets\grid\CDataColumn.php(148): <strong>CComponent</strong>-&gt;<strong>evaluateExpression</strong>("$data-&gt;getPossibleDescription()", array("data" =&gt; Plugin, "row" =&gt; 0))				</div>

				<div class="code"><pre><span class="ln">143</span>      */
<span class="ln">144</span>     public function getDataCellContent($row)
<span class="ln">145</span>     {
<span class="ln">146</span>         $data=$this-&gt;grid-&gt;dataProvider-&gt;data[$row];
<span class="ln">147</span>         if($this-&gt;value!==null)
<span class="error"><span class="ln error-ln">148</span>             $value=$this-&gt;evaluateExpression($this-&gt;value,array('data'=&gt;$data,'row'=&gt;$row));
</span><span class="ln">149</span>         elseif($this-&gt;name!==null)
<span class="ln">150</span>             $value=CHtml::value($data,$this-&gt;name);
<span class="ln">151</span>         return $value===null ? $this-&gt;grid-&gt;nullDisplay : $this-&gt;grid-&gt;getFormatter()-&gt;format($value,$this-&gt;type);
<span class="ln">152</span>     }
<span class="ln">153</span> }
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#6			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\zii\widgets\grid\CGridColumn.php(237): <strong>CDataColumn</strong>-&gt;<strong>getDataCellContent</strong>(0)				</div>

				<div class="code"><pre><span class="ln">232</span>      * @param mixed $data the data associated with the row
<span class="ln">233</span>      * @deprecated since 1.1.16. Use {@link getDataCellContent()} instead.
<span class="ln">234</span>      */
<span class="ln">235</span>     protected function renderDataCellContent($row,$data)
<span class="ln">236</span>     {
<span class="error"><span class="ln error-ln">237</span>         echo $this-&gt;getDataCellContent($row);
</span><span class="ln">238</span>     }
<span class="ln">239</span> 
<span class="ln">240</span>     /**
<span class="ln">241</span>      * Returns the filter cell content.
<span class="ln">242</span>      * The default implementation simply returns an empty column.
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#7			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\zii\widgets\grid\CGridColumn.php(160): <strong>CGridColumn</strong>-&gt;<strong>renderDataCellContent</strong>(0, Plugin)				</div>

				<div class="code"><pre><span class="ln">155</span>                 else
<span class="ln">156</span>                     $options['class']=$class;
<span class="ln">157</span>             }
<span class="ln">158</span>         }
<span class="ln">159</span>         echo CHtml::openTag('td',$options);
<span class="error"><span class="ln error-ln">160</span>         $this-&gt;renderDataCellContent($row,$data);
</span><span class="ln">161</span>         echo '&lt;/td&gt;';
<span class="ln">162</span>     }
<span class="ln">163</span> 
<span class="ln">164</span>     /**
<span class="ln">165</span>      * Renders the footer cell.
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#8			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\zii\widgets\grid\CGridView.php(655): <strong>CGridColumn</strong>-&gt;<strong>renderDataCell</strong>(0)				</div>

				<div class="code"><pre><span class="ln">650</span>      * @param integer $row
<span class="ln">651</span>      * @since 1.1.16
<span class="ln">652</span>      */
<span class="ln">653</span>     protected function renderDataCell($column, $row)
<span class="ln">654</span>     {
<span class="error"><span class="ln error-ln">655</span>         $column-&gt;renderDataCell($row);
</span><span class="ln">656</span>     }
<span class="ln">657</span>     
<span class="ln">658</span>     /**
<span class="ln">659</span>      * @return boolean whether the table should render a footer.
<span class="ln">660</span>      * This is true if any of the {@link columns} has a true {@link CGridColumn::hasFooter} value.
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#9			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\zii\widgets\grid\CGridView.php(639): <strong>CGridView</strong>-&gt;<strong>renderDataCell</strong>(TbDataColumn, 0)				</div>

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

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

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

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

							</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#14			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\zii\widgets\CBaseListView.php(164): <strong>preg_replace_callback</strong>("/{(\w+)}/", array(TbGridView, "renderSection"), "{items}
&lt;div id='pluginsListPager'&gt;&lt;div class="col-sm-4" id="mas...")				</div>

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

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

				<div class="code"><pre><span class="ln">177</span>             return ob_get_clean();
<span class="ln">178</span>         }
<span class="ln">179</span>         else
<span class="ln">180</span>         {
<span class="ln">181</span>             $widget=$this-&gt;createWidget($className,$properties);
<span class="error"><span class="ln error-ln">182</span>             $widget-&gt;run();
</span><span class="ln">183</span>             return $widget;
<span class="ln">184</span>         }
<span class="ln">185</span>     }
<span class="ln">186</span> 
<span class="ln">187</span>     /**
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#17			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\application\views\admin\pluginmanager\index.php(133): <strong>CBaseController</strong>-&gt;<strong>widget</strong>("bootstrap.widgets.TbGridView",
 array("id" =&gt; "plugins-grid", "dataProvider" =&gt; 
CArrayDataProvider, "htmlOptions" =&gt; array("class" =&gt; 
"table-responsive grid-view-ls"), "template" =&gt; "{items}
&lt;div id='pluginsListPager'&gt;&lt;div class="col-sm-4" id="mas...", 
...))				</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>             'columns'                  =&gt; $gridColumns,
<span class="ln">132</span>             'rowHtmlOptionsExpression' =&gt; 'array("data-id" =&gt; $data["id"])',
<span class="error"><span class="ln error-ln">133</span>             'ajaxUpdate'               =&gt; 'plugins-grid'
</span><span class="ln">134</span>         ]
<span class="ln">135</span>     );
<span class="ln">136</span> 
<span class="ln">137</span>     $this-&gt;renderPartial('./pluginmanager/uploadModal', []);
<span class="ln">138</span>     ?&gt;
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#18			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\web\CBaseController.php(126): <strong>require</strong>("E:\WebSite\limesurvey\application\views\admin\pluginmanager\inde...")				</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">
				#19			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\web\CBaseController.php(95): <strong>CBaseController</strong>-&gt;<strong>renderInternal</strong>("E:\WebSite\limesurvey\application\views/admin/pluginmanager/inde...",
 array("data" =&gt; array(array("id" =&gt; "29", "name" =&gt; 
"addScriptToQuestion", "load_error" =&gt; null, "description" =&gt; "", 
...), array("id" =&gt; "30", "name" =&gt; "answersAsReadonly", 
"load_error" =&gt; null, "description" =&gt; "", ...), array("id" =&gt; 
"40", "name" =&gt; "arrayTextAdapt", "load_error" =&gt; null, 
"description" =&gt; "", ...), array("id" =&gt; "97", "name" =&gt; 
"ArrayWithOtherFreeText", "load_error" =&gt; null, "description" =&gt; 
"", ...), ...), "plugins" =&gt; array(Plugin, Plugin, Plugin, Plugin, 
...), "extraMenus" =&gt; array(), "pageTitle" =&gt; "Plugins", ...), 
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">
				#20			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\web\CController.php(872): <strong>CBaseController</strong>-&gt;<strong>renderFile</strong>("E:\WebSite\limesurvey\application\views/admin/pluginmanager/inde...",
 array("data" =&gt; array(array("id" =&gt; "29", "name" =&gt; 
"addScriptToQuestion", "load_error" =&gt; null, "description" =&gt; "", 
...), array("id" =&gt; "30", "name" =&gt; "answersAsReadonly", 
"load_error" =&gt; null, "description" =&gt; "", ...), array("id" =&gt; 
"40", "name" =&gt; "arrayTextAdapt", "load_error" =&gt; null, 
"description" =&gt; "", ...), array("id" =&gt; "97", "name" =&gt; 
"ArrayWithOtherFreeText", "load_error" =&gt; null, "description" =&gt; 
"", ...), ...), "plugins" =&gt; array(Plugin, Plugin, Plugin, Plugin, 
...), "extraMenus" =&gt; array(), "pageTitle" =&gt; "Plugins", ...), 
true)				</div>

				<div class="code"><pre><span class="ln">867</span>      */
<span class="ln">868</span>     public function renderPartial($view,$data=null,$return=false,$processOutput=false)
<span class="ln">869</span>     {
<span class="ln">870</span>         if(($viewFile=$this-&gt;getViewFile($view))!==false)
<span class="ln">871</span>         {
<span class="error"><span class="ln error-ln">872</span>             $output=$this-&gt;renderFile($viewFile,$data,true);
</span><span class="ln">873</span>             if($processOutput)
<span class="ln">874</span>                 $output=$this-&gt;processOutput($output);
<span class="ln">875</span>             if($return)
<span class="ln">876</span>                 return $output;
<span class="ln">877</span>             else
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#21			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\application\controllers\AdminController.php(261): <strong>CController</strong>-&gt;<strong>renderPartial</strong>("/admin/pluginmanager/index",
 array("data" =&gt; array(array("id" =&gt; "29", "name" =&gt; 
"addScriptToQuestion", "load_error" =&gt; null, "description" =&gt; "", 
...), array("id" =&gt; "30", "name" =&gt; "answersAsReadonly", 
"load_error" =&gt; null, "description" =&gt; "", ...), array("id" =&gt; 
"40", "name" =&gt; "arrayTextAdapt", "load_error" =&gt; null, 
"description" =&gt; "", ...), array("id" =&gt; "97", "name" =&gt; 
"ArrayWithOtherFreeText", "load_error" =&gt; null, "description" =&gt; 
"", ...), ...), "plugins" =&gt; array(Plugin, Plugin, Plugin, Plugin, 
...), "extraMenus" =&gt; array(), "pageTitle" =&gt; "Plugins", ...), 
true, false)				</div>

				<div class="code"><pre><span class="ln">256</span>                     $view = $sModulePath;
<span class="ln">257</span>                 }
<span class="ln">258</span>             }
<span class="ln">259</span>         }
<span class="ln">260</span> 
<span class="error"><span class="ln error-ln">261</span>         return parent::renderPartial($view, $data, $return, $processOutput);
</span><span class="ln">262</span>     }
<span class="ln">263</span> 
<span class="ln">264</span>     /**
<span class="ln">265</span>      * Routes all the actions to their respective places
<span class="ln">266</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;E:\WebSite\limesurvey\application\core\SurveyCommonAction.php(273): <strong>AdminController</strong>-&gt;<strong>renderPartial</strong>("/admin/pluginmanager/index",
 array("data" =&gt; array(array("id" =&gt; "29", "name" =&gt; 
"addScriptToQuestion", "load_error" =&gt; null, "description" =&gt; "", 
...), array("id" =&gt; "30", "name" =&gt; "answersAsReadonly", 
"load_error" =&gt; null, "description" =&gt; "", ...), array("id" =&gt; 
"40", "name" =&gt; "arrayTextAdapt", "load_error" =&gt; null, 
"description" =&gt; "", ...), array("id" =&gt; "97", "name" =&gt; 
"ArrayWithOtherFreeText", "load_error" =&gt; null, "description" =&gt; 
"", ...), ...), "plugins" =&gt; array(Plugin, Plugin, Plugin, Plugin, 
...), "extraMenus" =&gt; array(), "pageTitle" =&gt; "Plugins", ...), 
true)				</div>

				<div class="code"><pre><span class="ln">268</span>         $content = "";
<span class="ln">269</span> 
<span class="ln">270</span>         foreach ($aViewUrls as $sViewKey =&gt; $viewUrl) {
<span class="ln">271</span>             if (empty($sViewKey) || !in_array($sViewKey, array('message', 'output'))) {
<span class="ln">272</span>                 if (is_numeric($sViewKey)) {
<span class="error"><span class="ln error-ln">273</span>                     $content .= Yii::app()-&gt;getController()-&gt;renderPartial($sViewPath . $viewUrl, $aData, true);
</span><span class="ln">274</span>                 } elseif (is_array($viewUrl)) {
<span class="ln">275</span>                     foreach ($viewUrl as $aSubData) {
<span class="ln">276</span>                         $aSubData = array_merge($aData, $aSubData);
<span class="ln">277</span>                         $content .= Yii::app()-&gt;getController()-&gt;renderPartial($sViewPath . $sViewKey, $aSubData, true);
<span class="ln">278</span>                     }
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#23			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\application\core\SurveyCommonAction.php(358): <strong>SurveyCommonAction</strong>-&gt;<strong>renderCentralContents</strong>("pluginmanager",
 array("index"), array("data" =&gt; array(array("id" =&gt; "29", "name" 
=&gt; "addScriptToQuestion", "load_error" =&gt; null, "description" 
=&gt; "", ...), array("id" =&gt; "30", "name" =&gt; "answersAsReadonly",
 "load_error" =&gt; null, "description" =&gt; "", ...), array("id" =&gt;
 "40", "name" =&gt; "arrayTextAdapt", "load_error" =&gt; null, 
"description" =&gt; "", ...), array("id" =&gt; "97", "name" =&gt; 
"ArrayWithOtherFreeText", "load_error" =&gt; null, "description" =&gt; 
"", ...), ...), "plugins" =&gt; array(Plugin, Plugin, Plugin, Plugin, 
...), "extraMenus" =&gt; array(), "pageTitle" =&gt; "Plugins", ...))				</div>

				<div class="code"><pre><span class="ln">353</span>                 $renderFile = $basePath . '/layout_main.php';
<span class="ln">354</span>             }
<span class="ln">355</span>         } else {
<span class="ln">356</span>             $renderFile = $basePath . '/' . $sRenderFile;
<span class="ln">357</span>         }
<span class="error"><span class="ln error-ln">358</span>         $content = $this-&gt;renderCentralContents($sAction, $aViewUrls, $aData);
</span><span class="ln">359</span>         $out = $this-&gt;renderInternal($renderFile, ['content' =&gt; $content, 'aData' =&gt; $aData], true);
<span class="ln">360</span> 
<span class="ln">361</span>         App()-&gt;getClientScript()-&gt;render($out);
<span class="ln">362</span>         echo $out;
<span class="ln">363</span>     }
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#24			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\application\controllers\admin\PluginManagerController.php(785): <strong>SurveyCommonAction</strong>-&gt;<strong>renderWrappedTemplate</strong>("pluginmanager",
 "index", array("data" =&gt; array(array("id" =&gt; "29", "name" =&gt; 
"addScriptToQuestion", "load_error" =&gt; null, "description" =&gt; "", 
...), array("id" =&gt; "30", "name" =&gt; "answersAsReadonly", 
"load_error" =&gt; null, "description" =&gt; "", ...), array("id" =&gt; 
"40", "name" =&gt; "arrayTextAdapt", "load_error" =&gt; null, 
"description" =&gt; "", ...), array("id" =&gt; "97", "name" =&gt; 
"ArrayWithOtherFreeText", "load_error" =&gt; null, "description" =&gt; 
"", ...), ...), "plugins" =&gt; array(Plugin, Plugin, Plugin, Plugin, 
...), "extraMenus" =&gt; array(), "pageTitle" =&gt; "Plugins", ...), 
false)				</div>

				<div class="code"><pre><span class="ln">780</span>      * @param string $aViewUrls View url(s)
<span class="ln">781</span>      * @param array $aData Data to be passed on. Optional.
<span class="ln">782</span>      */
<span class="ln">783</span>     protected function renderWrappedTemplate($sAction = 'pluginmanager', $aViewUrls = [], $aData = [], $sRenderFile = false)
<span class="ln">784</span>     {
<span class="error"><span class="ln error-ln">785</span>         parent::renderWrappedTemplate($sAction, $aViewUrls, $aData, $sRenderFile);
</span><span class="ln">786</span>     }
<span class="ln">787</span> }
<span class="ln">788</span> 
<span class="ln">789</span> /**
<span class="ln">790</span>  * PCLZip callback for plugin ZIP install.
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#25			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\application\controllers\admin\PluginManagerController.php(91): <strong>PluginManagerController</strong>-&gt;<strong>renderWrappedTemplate</strong>("pluginmanager",
 "index", array("data" =&gt; array(array("id" =&gt; "29", "name" =&gt; 
"addScriptToQuestion", "load_error" =&gt; null, "description" =&gt; "", 
...), array("id" =&gt; "30", "name" =&gt; "answersAsReadonly", 
"load_error" =&gt; null, "description" =&gt; "", ...), array("id" =&gt; 
"40", "name" =&gt; "arrayTextAdapt", "load_error" =&gt; null, 
"description" =&gt; "", ...), array("id" =&gt; "97", "name" =&gt; 
"ArrayWithOtherFreeText", "load_error" =&gt; null, "description" =&gt; 
"", ...), ...), "plugins" =&gt; array(Plugin, Plugin, Plugin, Plugin, 
...), "extraMenus" =&gt; array(), "pageTitle" =&gt; "Plugins", ...))				</div>

				<div class="code"><pre><span class="ln">86</span>                 'url' =&gt; $scanFilesUrl,
<span class="ln">87</span>             ],
<span class="ln">88</span>             'showUpload' =&gt; !Yii::app()-&gt;getConfig('demoMode') &amp;&amp; !Yii::app()-&gt;getConfig('disablePluginUpload'),
<span class="ln">89</span>         ];
<span class="ln">90</span> 
<span class="error"><span class="ln error-ln">91</span>         $this-&gt;renderWrappedTemplate('pluginmanager', 'index', $aData);
</span><span class="ln">92</span>     }
<span class="ln">93</span> 
<span class="ln">94</span>     /**
<span class="ln">95</span>      * @return Menu[]
<span class="ln">96</span>      */
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#26			</td>
			<td class="content">
				<div class="trace-file">
										&nbsp;unknown(0): <strong>PluginManagerController</strong>-&gt;<strong>index</strong>()				</div>

							</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#27			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\web\actions\CAction.php(115): <strong>ReflectionMethod</strong>-&gt;<strong>invokeArgs</strong>(PluginManagerController, array())				</div>

				<div class="code"><pre><span class="ln">110</span>             elseif($param-&gt;isDefaultValueAvailable())
<span class="ln">111</span>                 $ps[]=$param-&gt;getDefaultValue();
<span class="ln">112</span>             else
<span class="ln">113</span>                 return false;
<span class="ln">114</span>         }
<span class="error"><span class="ln error-ln">115</span>         $method-&gt;invokeArgs($object,$ps);
</span><span class="ln">116</span>         return true;
<span class="ln">117</span>     }
<span class="ln">118</span> }
</pre></div>			</td>
		</tr>
						<tr class="trace app collapsed">
			<td class="number">
				#28			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\application\core\SurveyCommonAction.php(83): <strong>CAction</strong>-&gt;<strong>runWithParamsInternal</strong>(PluginManagerController, ReflectionMethod, array("r" =&gt; "admin/pluginmanager/sa/index", "sa" =&gt; "index"))				</div>

				<div class="code"><pre><span class="ln">78</span>             $oMethod = new ReflectionMethod($this, $sDefault);
<span class="ln">79</span>         }
<span class="ln">80</span> 
<span class="ln">81</span>         // We're all good to go, let's execute it
<span class="ln">82</span>         // runWithParamsInternal would automatically get the parameters of the method and populate them as required with the params
<span class="error"><span class="ln error-ln">83</span>         return parent::runWithParamsInternal($this, $oMethod, $params);
</span><span class="ln">84</span>     }
<span class="ln">85</span> 
<span class="ln">86</span>     /**
<span class="ln">87</span>      * Some functions have different parameters, which are just an alias of the
<span class="ln">88</span>      * usual parameters we're getting in the url. This function just populates
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#29			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\web\CController.php(308): <strong>SurveyCommonAction</strong>-&gt;<strong>runWithParams</strong>(array("r" =&gt; "admin/pluginmanager/sa/index", "sa" =&gt; "index"))				</div>

				<div class="code"><pre><span class="ln">303</span>     {
<span class="ln">304</span>         $priorAction=$this-&gt;_action;
<span class="ln">305</span>         $this-&gt;_action=$action;
<span class="ln">306</span>         if($this-&gt;beforeAction($action))
<span class="ln">307</span>         {
<span class="error"><span class="ln error-ln">308</span>             if($action-&gt;runWithParams($this-&gt;getActionParams())===false)
</span><span class="ln">309</span>                 $this-&gt;invalidActionParams($action);
<span class="ln">310</span>             else
<span class="ln">311</span>                 $this-&gt;afterAction($action);
<span class="ln">312</span>         }
<span class="ln">313</span>         $this-&gt;_action=$priorAction;
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#30			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\web\CController.php(286): <strong>CController</strong>-&gt;<strong>runAction</strong>(PluginManagerController)				</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">
				#31			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\web\CController.php(265): <strong>CController</strong>-&gt;<strong>runActionWithFilters</strong>(PluginManagerController, 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">
				#32			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\application\controllers\AdminController.php(202): <strong>CController</strong>-&gt;<strong>run</strong>("pluginmanager")				</div>

				<div class="code"><pre><span class="ln">197</span>         }
<span class="ln">198</span> 
<span class="ln">199</span>         $this-&gt;runModuleController($action);
<span class="ln">200</span> 
<span class="ln">201</span> 
<span class="error"><span class="ln error-ln">202</span>         return parent::run($action);
</span><span class="ln">203</span>     }
<span class="ln">204</span> 
<span class="ln">205</span>     /**
<span class="ln">206</span>      * Starting with LS4, 3rd party developer can extends any of the LimeSurve controllers.
<span class="ln">207</span>      *
</pre></div>			</td>
		</tr>
						<tr class="trace core collapsed">
			<td class="number">
				#33			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\web\CWebApplication.php(282): <strong>AdminController</strong>-&gt;<strong>run</strong>("pluginmanager")				</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">
				#34			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\web\CWebApplication.php(141): <strong>CWebApplication</strong>-&gt;<strong>runController</strong>("admin/pluginmanager/sa/index")				</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">
				#35			</td>
			<td class="content">
				<div class="trace-file">
											<div class="plus">+</div>
						<div class="minus">–</div>
										&nbsp;E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\base\CApplication.php(185): <strong>CWebApplication</strong>-&gt;<strong>processRequest</strong>()				</div>

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

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

	<div class="version">
		2023-07-12 13:46:10 Microsoft-IIS/10.0 <a href="https://www.yiiframework.com/">Yii Framework</a>/1.1.28	</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 -pluginmanager.htm (51,115 bytes)   
Bug heat4
Complete LimeSurvey version number (& build)5.6.29
I will donate to the project if issue is resolvedNo
Browsernot releveant
Database type & versionMSSQL
Server OS (if known)windows
Webserver software & version (if known)IIS
PHP Version7.4

Relationships

related to 18955 new Feature requests Allow to mpove plugins from diretory without need to reinstall 

Users monitoring this issue

There are no users monitoring this issue.

Activities

DenisChenu

DenisChenu

2023-07-12 16:57

developer   ~76064

Still able to

  • uninstall + check directpry install again
    BUT : then loose all Plugins config : plugin id are resetted (i report an issue to allow 1. Update plugin without uninstall + 2. Move directory without uninstall)
DenisChenu

DenisChenu

2023-07-17 16:05

developer   ~76109

Oh … shit … seems OK on linux, maybe related to DIRECTORY_SEPARATOR

Need to find when is set and what's happen for my setup on windows.

ollehar

ollehar

2023-08-08 11:01

administrator   ~76477

Setting this to feedback for now.

Issue History

Date Modified Username Field Change
2023-07-12 16:56 DenisChenu New Issue
2023-07-12 16:56 DenisChenu File Added: image001.png
2023-07-12 16:56 DenisChenu File Added: PHP notice -pluginmanager.htm
2023-07-12 16:57 DenisChenu Note Added: 76064
2023-07-12 16:57 DenisChenu Bug heat 0 => 2
2023-07-13 18:43 DenisChenu Relationship added related to 18955
2023-07-17 16:04 DenisChenu Server OS (if known) IIS => windows
2023-07-17 16:05 DenisChenu Note Added: 76109
2023-08-08 11:01 ollehar Assigned To => ollehar
2023-08-08 11:01 ollehar Status new => feedback
2023-08-08 11:01 ollehar Note Added: 76477
2023-08-08 11:01 ollehar Bug heat 2 => 4