E:\WebSite\limesurvey\application\models\Plugin.php(345)
333 } 334 335 /** 336 * Get installation folder of this plugin. 337 * Installation folder is different for core and 338 * user plugins. 339 * @return string 340 * @throws Exception 341 */ 342 protected function getDir() 343 { 344 $pluginManager = App()->getPluginManager(); 345 $alias = $pluginManager->pluginDirs[$this->plugin_type]; 346 347 if (empty($alias)) { 348 throw new \Exception('Unknown plugin type: ' . json_encode($this->plugin_type)); 349 } 350 351 $folder = Yii::getPathOfAlias($alias); 352 353 if (empty($folder)) { 354 throw new \Exception('Alias has no folder: ' . json_encode($alias)); 355 } 356 357 // NB: Name is same as plugin folder and plugin main class.
#0 |
+
–
E:\WebSite\limesurvey\application\models\Plugin.php(100): Plugin->getDir() 095 * @return ExtensionConfig 096 * @throws Exception if file does not exist. 097 */ 098 public function getExtensionConfig() 099 { 100 $file = $this->getDir() . DIRECTORY_SEPARATOR . 'config.xml'; 101 if (file_exists($file)) { 102 if (\PHP_VERSION_ID < 80000) { 103 libxml_disable_entity_loader(false); 104 } 105 $config = simplexml_load_file(realpath($file)); |
#1 |
+
–
E:\WebSite\limesurvey\application\models\Plugin.php(171): Plugin->getExtensionConfig() 166 * @return string 167 * @throws Exception 168 */ 169 public function getDescription() 170 { 171 $config = $this->getExtensionConfig(); 172 // Harden for XSS 173 $filter = LSYii_HtmlPurifier::getXssPurifier(); 174 return $filter->purify($config->getDescription()); 175 } 176 |
#2 |
+
–
E:\WebSite\limesurvey\application\models\Plugin.php(185): Plugin->getDescription() 180 * @return string 181 */ 182 public function getPossibleDescription() 183 { 184 try { 185 return $this->getDescription(); 186 } catch (\Throwable $ex) { 187 return sprintf(gT('Error: Could not get plugin description: %s'), $ex->getMessage()); 188 } 189 } 190 |
#3 |
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\base\CComponent.php(614) : eval()'d code(1): Plugin->getPossibleDescription()
|
#4 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\base\CComponent.php(614): eval() 609 if(is_string($_expression_)) 610 { 611 extract($_data_); 612 try 613 { 614 return eval('return ' . $_expression_ . ';'); 615 } 616 catch (ParseError $e) 617 { 618 return false; 619 } |
#5 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\zii\widgets\grid\CDataColumn.php(148): CComponent->evaluateExpression("$data->getPossibleDescription()", array("data" => Plugin, "row" => 0)) 143 */ 144 public function getDataCellContent($row) 145 { 146 $data=$this->grid->dataProvider->data[$row]; 147 if($this->value!==null) 148 $value=$this->evaluateExpression($this->value,array('data'=>$data,'row'=>$row)); 149 elseif($this->name!==null) 150 $value=CHtml::value($data,$this->name); 151 return $value===null ? $this->grid->nullDisplay : $this->grid->getFormatter()->format($value,$this->type); 152 } 153 } |
#6 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\zii\widgets\grid\CGridColumn.php(237): CDataColumn->getDataCellContent(0) 232 * @param mixed $data the data associated with the row 233 * @deprecated since 1.1.16. Use {@link getDataCellContent()} instead. 234 */ 235 protected function renderDataCellContent($row,$data) 236 { 237 echo $this->getDataCellContent($row); 238 } 239 240 /** 241 * Returns the filter cell content. 242 * The default implementation simply returns an empty column. |
#7 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\zii\widgets\grid\CGridColumn.php(160): CGridColumn->renderDataCellContent(0, Plugin) 155 else 156 $options['class']=$class; 157 } 158 } 159 echo CHtml::openTag('td',$options); 160 $this->renderDataCellContent($row,$data); 161 echo '</td>'; 162 } 163 164 /** 165 * Renders the footer cell. |
#8 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\zii\widgets\grid\CGridView.php(655): CGridColumn->renderDataCell(0) 650 * @param integer $row 651 * @since 1.1.16 652 */ 653 protected function renderDataCell($column, $row) 654 { 655 $column->renderDataCell($row); 656 } 657 658 /** 659 * @return boolean whether the table should render a footer. 660 * This is true if any of the {@link columns} has a true {@link CGridColumn::hasFooter} value. |
#9 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\zii\widgets\grid\CGridView.php(639): CGridView->renderDataCell(TbDataColumn, 0) 634 $htmlOptions['class']=$class; 635 } 636 637 echo CHtml::openTag('tr', $htmlOptions)."\n"; 638 foreach($this->columns as $column) 639 $this->renderDataCell($column, $row); 640 echo "</tr>\n"; 641 } 642 643 /** 644 * A seam for people extending CGridView to be able to hook onto the data cell rendering process. |
#10 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\zii\widgets\grid\CGridView.php(595): CGridView->renderTableRow(0) 590 echo "<tbody>\n"; 591 592 if($n>0) 593 { 594 for($row=0;$row<$n;++$row) 595 $this->renderTableRow($row); 596 } 597 else 598 { 599 echo '<tr><td colspan="'.count($this->columns).'" class="empty">'; 600 $this->renderEmptyText(); |
#11 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\zii\widgets\grid\CGridView.php(505): CGridView->renderTableBody() 500 if($this->dataProvider->getItemCount()>0 || $this->showTableOnEmpty) 501 { 502 echo "<table class=\"{$this->itemsCssClass}\">\n"; 503 $this->renderTableHeader(); 504 ob_start(); 505 $this->renderTableBody(); 506 $body=ob_get_clean(); 507 $this->renderTableFooter(); 508 echo $body; // TFOOT must appear before TBODY according to the standard. 509 echo "</table>"; 510 } |
#12 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\zii\widgets\CBaseListView.php(181): CGridView->renderItems() 176 protected function renderSection($matches) 177 { 178 $method='render'.$matches[1]; 179 if(method_exists($this,$method)) 180 { 181 $this->$method(); 182 $html=ob_get_contents(); 183 ob_clean(); 184 return $html; 185 } 186 else |
#13 |
unknown(0): CBaseListView->renderSection(array("{items}", "items"))
|
#14 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\zii\widgets\CBaseListView.php(164): preg_replace_callback("/{(\w+)}/", array(TbGridView, "renderSection"), "{items}
<div id='pluginsListPager'><div class="col-sm-4" id="mas...") 159 * The rendering results will replace the corresponding placeholders in {@link template}. 160 */ 161 public function renderContent() 162 { 163 ob_start(); 164 echo preg_replace_callback("/{(\w+)}/",array($this,'renderSection'),$this->template); 165 ob_end_flush(); 166 } 167 168 /** 169 * Renders a section. |
#15 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\zii\widgets\CBaseListView.php(149): CBaseListView->renderContent() 144 { 145 $this->registerClientScript(); 146 147 echo CHtml::openTag($this->tagName,$this->htmlOptions)."\n"; 148 149 $this->renderContent(); 150 $this->renderKeys(); 151 152 echo CHtml::closeTag($this->tagName); 153 } 154 |
#16 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\web\CBaseController.php(182): CBaseListView->run() 177 return ob_get_clean(); 178 } 179 else 180 { 181 $widget=$this->createWidget($className,$properties); 182 $widget->run(); 183 return $widget; 184 } 185 } 186 187 /** |
#17 |
+
–
E:\WebSite\limesurvey\application\views\admin\pluginmanager\index.php(133): CBaseController->widget("bootstrap.widgets.TbGridView",
array("id" => "plugins-grid", "dataProvider" =>
CArrayDataProvider, "htmlOptions" => array("class" =>
"table-responsive grid-view-ls"), "template" => "{items}
<div id='pluginsListPager'><div class="col-sm-4" id="mas...",
...)) 128 ] 129 ) 130 ), 131 'columns' => $gridColumns, 132 'rowHtmlOptionsExpression' => 'array("data-id" => $data["id"])', 133 'ajaxUpdate' => 'plugins-grid' 134 ] 135 ); 136 137 $this->renderPartial('./pluginmanager/uploadModal', []); 138 ?> |
#18 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\web\CBaseController.php(126): require("E:\WebSite\limesurvey\application\views\admin\pluginmanager\inde...") 121 $data=$_data_; 122 if($_return_) 123 { 124 ob_start(); 125 ob_implicit_flush(false); 126 require($_viewFile_); 127 return ob_get_clean(); 128 } 129 else 130 require($_viewFile_); 131 } |
#19 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\web\CBaseController.php(95): CBaseController->renderInternal("E:\WebSite\limesurvey\application\views/admin/pluginmanager/inde...",
array("data" => array(array("id" => "29", "name" =>
"addScriptToQuestion", "load_error" => null, "description" => "",
...), array("id" => "30", "name" => "answersAsReadonly",
"load_error" => null, "description" => "", ...), array("id" =>
"40", "name" => "arrayTextAdapt", "load_error" => null,
"description" => "", ...), array("id" => "97", "name" =>
"ArrayWithOtherFreeText", "load_error" => null, "description" =>
"", ...), ...), "plugins" => array(Plugin, Plugin, Plugin, Plugin,
...), "extraMenus" => array(), "pageTitle" => "Plugins", ...),
true) 090 { 091 $widgetCount=count($this->_widgetStack); 092 if(($renderer=Yii::app()->getViewRenderer())!==null && $renderer->fileExtension==='.'.CFileHelper::getExtension($viewFile)) 093 $content=$renderer->renderFile($this,$viewFile,$data,$return); 094 else 095 $content=$this->renderInternal($viewFile,$data,$return); 096 if(count($this->_widgetStack)===$widgetCount) 097 return $content; 098 else 099 { 100 $widget=end($this->_widgetStack); |
#20 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\web\CController.php(872): CBaseController->renderFile("E:\WebSite\limesurvey\application\views/admin/pluginmanager/inde...",
array("data" => array(array("id" => "29", "name" =>
"addScriptToQuestion", "load_error" => null, "description" => "",
...), array("id" => "30", "name" => "answersAsReadonly",
"load_error" => null, "description" => "", ...), array("id" =>
"40", "name" => "arrayTextAdapt", "load_error" => null,
"description" => "", ...), array("id" => "97", "name" =>
"ArrayWithOtherFreeText", "load_error" => null, "description" =>
"", ...), ...), "plugins" => array(Plugin, Plugin, Plugin, Plugin,
...), "extraMenus" => array(), "pageTitle" => "Plugins", ...),
true) 867 */ 868 public function renderPartial($view,$data=null,$return=false,$processOutput=false) 869 { 870 if(($viewFile=$this->getViewFile($view))!==false) 871 { 872 $output=$this->renderFile($viewFile,$data,true); 873 if($processOutput) 874 $output=$this->processOutput($output); 875 if($return) 876 return $output; 877 else |
#21 |
+
–
E:\WebSite\limesurvey\application\controllers\AdminController.php(261): CController->renderPartial("/admin/pluginmanager/index",
array("data" => array(array("id" => "29", "name" =>
"addScriptToQuestion", "load_error" => null, "description" => "",
...), array("id" => "30", "name" => "answersAsReadonly",
"load_error" => null, "description" => "", ...), array("id" =>
"40", "name" => "arrayTextAdapt", "load_error" => null,
"description" => "", ...), array("id" => "97", "name" =>
"ArrayWithOtherFreeText", "load_error" => null, "description" =>
"", ...), ...), "plugins" => array(Plugin, Plugin, Plugin, Plugin,
...), "extraMenus" => array(), "pageTitle" => "Plugins", ...),
true, false) 256 $view = $sModulePath; 257 } 258 } 259 } 260 261 return parent::renderPartial($view, $data, $return, $processOutput); 262 } 263 264 /** 265 * Routes all the actions to their respective places 266 * |
#22 |
+
–
E:\WebSite\limesurvey\application\core\SurveyCommonAction.php(273): AdminController->renderPartial("/admin/pluginmanager/index",
array("data" => array(array("id" => "29", "name" =>
"addScriptToQuestion", "load_error" => null, "description" => "",
...), array("id" => "30", "name" => "answersAsReadonly",
"load_error" => null, "description" => "", ...), array("id" =>
"40", "name" => "arrayTextAdapt", "load_error" => null,
"description" => "", ...), array("id" => "97", "name" =>
"ArrayWithOtherFreeText", "load_error" => null, "description" =>
"", ...), ...), "plugins" => array(Plugin, Plugin, Plugin, Plugin,
...), "extraMenus" => array(), "pageTitle" => "Plugins", ...),
true) 268 $content = ""; 269 270 foreach ($aViewUrls as $sViewKey => $viewUrl) { 271 if (empty($sViewKey) || !in_array($sViewKey, array('message', 'output'))) { 272 if (is_numeric($sViewKey)) { 273 $content .= Yii::app()->getController()->renderPartial($sViewPath . $viewUrl, $aData, true); 274 } elseif (is_array($viewUrl)) { 275 foreach ($viewUrl as $aSubData) { 276 $aSubData = array_merge($aData, $aSubData); 277 $content .= Yii::app()->getController()->renderPartial($sViewPath . $sViewKey, $aSubData, true); 278 } |
#23 |
+
–
E:\WebSite\limesurvey\application\core\SurveyCommonAction.php(358): SurveyCommonAction->renderCentralContents("pluginmanager",
array("index"), array("data" => array(array("id" => "29", "name"
=> "addScriptToQuestion", "load_error" => null, "description"
=> "", ...), array("id" => "30", "name" => "answersAsReadonly",
"load_error" => null, "description" => "", ...), array("id" =>
"40", "name" => "arrayTextAdapt", "load_error" => null,
"description" => "", ...), array("id" => "97", "name" =>
"ArrayWithOtherFreeText", "load_error" => null, "description" =>
"", ...), ...), "plugins" => array(Plugin, Plugin, Plugin, Plugin,
...), "extraMenus" => array(), "pageTitle" => "Plugins", ...)) 353 $renderFile = $basePath . '/layout_main.php'; 354 } 355 } else { 356 $renderFile = $basePath . '/' . $sRenderFile; 357 } 358 $content = $this->renderCentralContents($sAction, $aViewUrls, $aData); 359 $out = $this->renderInternal($renderFile, ['content' => $content, 'aData' => $aData], true); 360 361 App()->getClientScript()->render($out); 362 echo $out; 363 } |
#24 |
+
–
E:\WebSite\limesurvey\application\controllers\admin\PluginManagerController.php(785): SurveyCommonAction->renderWrappedTemplate("pluginmanager",
"index", array("data" => array(array("id" => "29", "name" =>
"addScriptToQuestion", "load_error" => null, "description" => "",
...), array("id" => "30", "name" => "answersAsReadonly",
"load_error" => null, "description" => "", ...), array("id" =>
"40", "name" => "arrayTextAdapt", "load_error" => null,
"description" => "", ...), array("id" => "97", "name" =>
"ArrayWithOtherFreeText", "load_error" => null, "description" =>
"", ...), ...), "plugins" => array(Plugin, Plugin, Plugin, Plugin,
...), "extraMenus" => array(), "pageTitle" => "Plugins", ...),
false) 780 * @param string $aViewUrls View url(s) 781 * @param array $aData Data to be passed on. Optional. 782 */ 783 protected function renderWrappedTemplate($sAction = 'pluginmanager', $aViewUrls = [], $aData = [], $sRenderFile = false) 784 { 785 parent::renderWrappedTemplate($sAction, $aViewUrls, $aData, $sRenderFile); 786 } 787 } 788 789 /** 790 * PCLZip callback for plugin ZIP install. |
#25 |
+
–
E:\WebSite\limesurvey\application\controllers\admin\PluginManagerController.php(91): PluginManagerController->renderWrappedTemplate("pluginmanager",
"index", array("data" => array(array("id" => "29", "name" =>
"addScriptToQuestion", "load_error" => null, "description" => "",
...), array("id" => "30", "name" => "answersAsReadonly",
"load_error" => null, "description" => "", ...), array("id" =>
"40", "name" => "arrayTextAdapt", "load_error" => null,
"description" => "", ...), array("id" => "97", "name" =>
"ArrayWithOtherFreeText", "load_error" => null, "description" =>
"", ...), ...), "plugins" => array(Plugin, Plugin, Plugin, Plugin,
...), "extraMenus" => array(), "pageTitle" => "Plugins", ...)) 86 'url' => $scanFilesUrl, 87 ], 88 'showUpload' => !Yii::app()->getConfig('demoMode') && !Yii::app()->getConfig('disablePluginUpload'), 89 ]; 90 91 $this->renderWrappedTemplate('pluginmanager', 'index', $aData); 92 } 93 94 /** 95 * @return Menu[] 96 */ |
#26 |
unknown(0): PluginManagerController->index()
|
#27 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\web\actions\CAction.php(115): ReflectionMethod->invokeArgs(PluginManagerController, array()) 110 elseif($param->isDefaultValueAvailable()) 111 $ps[]=$param->getDefaultValue(); 112 else 113 return false; 114 } 115 $method->invokeArgs($object,$ps); 116 return true; 117 } 118 } |
#28 |
+
–
E:\WebSite\limesurvey\application\core\SurveyCommonAction.php(83): CAction->runWithParamsInternal(PluginManagerController, ReflectionMethod, array("r" => "admin/pluginmanager/sa/index", "sa" => "index")) 78 $oMethod = new ReflectionMethod($this, $sDefault); 79 } 80 81 // We're all good to go, let's execute it 82 // runWithParamsInternal would automatically get the parameters of the method and populate them as required with the params 83 return parent::runWithParamsInternal($this, $oMethod, $params); 84 } 85 86 /** 87 * Some functions have different parameters, which are just an alias of the 88 * usual parameters we're getting in the url. This function just populates |
#29 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\web\CController.php(308): SurveyCommonAction->runWithParams(array("r" => "admin/pluginmanager/sa/index", "sa" => "index")) 303 { 304 $priorAction=$this->_action; 305 $this->_action=$action; 306 if($this->beforeAction($action)) 307 { 308 if($action->runWithParams($this->getActionParams())===false) 309 $this->invalidActionParams($action); 310 else 311 $this->afterAction($action); 312 } 313 $this->_action=$priorAction; |
#30 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\web\CController.php(286): CController->runAction(PluginManagerController) 281 * @see runAction 282 */ 283 public function runActionWithFilters($action,$filters) 284 { 285 if(empty($filters)) 286 $this->runAction($action); 287 else 288 { 289 $priorAction=$this->_action; 290 $this->_action=$action; 291 CFilterChain::create($this,$action,$filters)->run(); |
#31 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\web\CController.php(265): CController->runActionWithFilters(PluginManagerController, array()) 260 { 261 if(($parent=$this->getModule())===null) 262 $parent=Yii::app(); 263 if($parent->beforeControllerAction($this,$action)) 264 { 265 $this->runActionWithFilters($action,$this->filters()); 266 $parent->afterControllerAction($this,$action); 267 } 268 } 269 else 270 $this->missingAction($actionID); |
#32 |
+
–
E:\WebSite\limesurvey\application\controllers\AdminController.php(202): CController->run("pluginmanager") 197 } 198 199 $this->runModuleController($action); 200 201 202 return parent::run($action); 203 } 204 205 /** 206 * Starting with LS4, 3rd party developer can extends any of the LimeSurve controllers. 207 * |
#33 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\web\CWebApplication.php(282): AdminController->run("pluginmanager") 277 { 278 list($controller,$actionID)=$ca; 279 $oldController=$this->_controller; 280 $this->_controller=$controller; 281 $controller->init(); 282 $controller->run($actionID); 283 $this->_controller=$oldController; 284 } 285 else 286 throw new CHttpException(404,Yii::t('yii','Unable to resolve the request "{route}".', 287 array('{route}'=>$route===''?$this->defaultController:$route))); |
#34 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\web\CWebApplication.php(141): CWebApplication->runController("admin/pluginmanager/sa/index") 136 foreach(array_splice($this->catchAllRequest,1) as $name=>$value) 137 $_GET[$name]=$value; 138 } 139 else 140 $route=$this->getUrlManager()->parseUrl($this->getRequest()); 141 $this->runController($route); 142 } 143 144 /** 145 * Registers the core application components. 146 * This method overrides the parent implementation by registering additional core components. |
#35 |
+
–
E:\WebSite\limesurvey\vendor\yiisoft\yii\framework\base\CApplication.php(185): CWebApplication->processRequest() 180 public function run() 181 { 182 if($this->hasEventHandler('onBeginRequest')) 183 $this->onBeginRequest(new CEvent($this)); 184 register_shutdown_function(array($this,'end'),0,false); 185 $this->processRequest(); 186 if($this->hasEventHandler('onEndRequest')) 187 $this->onEndRequest(new CEvent($this)); 188 } 189 190 /** |
#36 |
+
–
E:\WebSite\limesurvey\index.php(161): CApplication->run() 156 require_once APPPATH . 'core/LSYii_Application' . EXT; 157 158 $config = require_once(APPPATH . 'config/internal' . EXT); 159 160 Yii::$enableIncludePath = false; 161 Yii::createApplication('LSYii_Application', $config)->run(); 162 163 /* End of file index.php */ 164 /* Location: ./index.php */ |