View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
15940 | Bug reports | Import/Export | public | 2020-03-03 08:13 | 2020-07-06 13:21 |
Reporter | DenisChenu | Assigned To | ollehar | ||
Priority | normal | Severity | minor | ||
Status | closed | Resolution | fixed | ||
Product Version | 4.1.9 | ||||
Summary | 15940: Export as printable : PHP Notice wuth debug | ||||
Description | When try to export print survey with debug : throw a PHP notice | ||||
Steps To Reproduce | Set debug=2 | ||||
Additional Information | See Printabke survey (not HTML) didn't show this error. | ||||
Tags | No tags attached. | ||||
Attached Files | PHP notice.html (21,996 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 'folder' of non-object </p> <div class="source"> <p class="file">/mnt/data/shnoulle/nginx/www/master/application/models/Template.php(297)</p> <div class="code"><pre><span class="ln">285</span> public static function getTemplatePath($sTemplateName = "") <span class="ln">286</span> { <span class="ln">287</span> static $aTemplatePath = array(); <span class="ln">288</span> if (isset($aTemplatePath[$sTemplateName])) { <span class="ln">289</span> return $aTemplatePath[$sTemplateName]; <span class="ln">290</span> } <span class="ln">291</span> <span class="ln">292</span> $oTemplate = self::model()->findByPk($sTemplateName); <span class="ln">293</span> <span class="ln">294</span> if (self::isStandardTemplate($sTemplateName)) { <span class="ln">295</span> return $aTemplatePath[$sTemplateName] = Yii::app()->getConfig("standardthemerootdir").DIRECTORY_SEPARATOR.$oTemplate->folder; <span class="ln">296</span> } else { <span class="error"><span class="ln error-ln">297</span> return $aTemplatePath[$sTemplateName] = Yii::app()->getConfig("userthemerootdir").DIRECTORY_SEPARATOR.$oTemplate->folder; </span><span class="ln">298</span> } <span class="ln">299</span> } <span class="ln">300</span> <span class="ln">301</span> /** <span class="ln">302</span> * This method construct a template object, having all the needed configuration datas. <span class="ln">303</span> * It checks if the required template is a core one or a user one. <span class="ln">304</span> * If it's a user template, it will check if it's an old 2.0x template to provide default configuration values corresponding to the old template system <span class="ln">305</span> * If it's not an old template, it will check if it has a configuration file to load its datas. <span class="ln">306</span> * If it's not the case (template probably doesn't exist), it will load the default template configuration <span class="ln">307</span> * TODO : more tests should be done, with a call to private function _is_valid_template(), testing not only if it has a config.xml, but also id this file is correct, if the files refered in css exist, etc. <span class="ln">308</span> * <span class="ln">309</span> * @param string $sTemplateName the name of the template to load. The string come from the template selector in survey settings </pre></div> </div> <div class="traces"> <h2>Stack Trace</h2> <table style="width:100%;"> <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> /mnt/data/shnoulle/nginx/www/master/application/controllers/admin/export.php(1271): <strong>Template</strong>::<strong>getTemplatePath</strong>("inherit") </div> <div class="code"><pre><span class="ln">1266</span> */ <span class="ln">1267</span> private function _exportPrintableHtmls($iSurveyID, $readFile = true) <span class="ln">1268</span> { <span class="ln">1269</span> $oSurvey = Survey::model()->findByPk($iSurveyID); <span class="ln">1270</span> $assetsDir = substr(Template::getTemplateURL($oSurvey->template), 1); <span class="error"><span class="ln error-ln">1271</span> $fullAssetsDir = Template::getTemplatePath($oSurvey->template); </span><span class="ln">1272</span> $aLanguages = $oSurvey->getAllLanguages(); <span class="ln">1273</span> <span class="ln">1274</span> Yii::import('application.helpers.common_helper', true); <span class="ln">1275</span> $zipdir = createRandomTempDir(); <span class="ln">1276</span> </pre></div> </td> </tr> <tr class="trace app expanded"> <td class="number"> #1 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /mnt/data/shnoulle/nginx/www/master/application/controllers/admin/export.php(1094): <strong>export</strong>-><strong>_exportPrintableHtmls</strong>("484668") </div> <div class="code"><pre><span class="ln">1089</span> } elseif ($action == 'exportstructuretsv') { <span class="ln">1090</span> $this->_exporttsv($iSurveyID); <span class="ln">1091</span> } elseif ($action == "exportarchive") { <span class="ln">1092</span> $this->_exportarchive($iSurveyID); <span class="ln">1093</span> } elseif ($action == "exportprintables") { <span class="error"><span class="ln error-ln">1094</span> $this->_exportPrintableHtmls($iSurveyID); </span><span class="ln">1095</span> } <span class="ln">1096</span> } <span class="ln">1097</span> <span class="ln">1098</span> /** <span class="ln">1099</span> * Return a list of queXML settings </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> /mnt/data/shnoulle/nginx/www/master/application/controllers/admin/export.php(42): <strong>export</strong>-><strong>_surveyexport</strong>("exportprintables", "484668") </div> <div class="code"><pre><span class="ln">37</span> { <span class="ln">38</span> $action = Yii::app()->request->getParam('action'); <span class="ln">39</span> $iSurveyID = sanitize_int(Yii::app()->request->getParam('surveyid')); <span class="ln">40</span> <span class="ln">41</span> if (Permission::model()->hasSurveyPermission($iSurveyID, 'surveycontent', 'export')) { <span class="error"><span class="ln error-ln">42</span> $this->_surveyexport($action, $iSurveyID); </span><span class="ln">43</span> return; <span class="ln">44</span> } <span class="ln">45</span> } <span class="ln">46</span> <span class="ln">47</span> /** </pre></div> </td> </tr> <tr class="trace core collapsed"> <td class="number"> #3 </td> <td class="content"> <div class="trace-file"> unknown(0): <strong>export</strong>-><strong>survey</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> /mnt/data/shnoulle/nginx/www/master/framework/web/actions/CAction.php(109): <strong>ReflectionMethod</strong>-><strong>invokeArgs</strong>(export, array()) </div> <div class="code"><pre><span class="ln">104</span> elseif($param->isDefaultValueAvailable()) <span class="ln">105</span> $ps[]=$param->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->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"> #5 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /mnt/data/shnoulle/nginx/www/master/application/core/Survey_Common_Action.php(86): <strong>CAction</strong>-><strong>runWithParamsInternal</strong>(export, ReflectionMethod, array("action" => "exportprintables", "surveyid" => "484668", "sa" => "survey", "iSurveyId" => "484668", ...)) </div> <div class="code"><pre><span class="ln">81</span> $oMethod = new ReflectionMethod($this, $sDefault); <span class="ln">82</span> } <span class="ln">83</span> <span class="ln">84</span> // We're all good to go, let's execute it <span class="ln">85</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">86</span> return parent::runWithParamsInternal($this, $oMethod, $params); </span><span class="ln">87</span> } <span class="ln">88</span> <span class="ln">89</span> /** <span class="ln">90</span> * Some functions have different parameters, which are just an alias of the <span class="ln">91</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"> #6 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /mnt/data/shnoulle/nginx/www/master/framework/web/CController.php(308): <strong>Survey_Common_Action</strong>-><strong>runWithParams</strong>(array("action" => "exportprintables", "surveyid" => "484668", "sa" => "survey", "iSurveyId" => "484668", ...)) </div> <div class="code"><pre><span class="ln">303</span> { <span class="ln">304</span> $priorAction=$this->_action; <span class="ln">305</span> $this->_action=$action; <span class="ln">306</span> if($this->beforeAction($action)) <span class="ln">307</span> { <span class="error"><span class="ln error-ln">308</span> if($action->runWithParams($this->getActionParams())===false) </span><span class="ln">309</span> $this->invalidActionParams($action); <span class="ln">310</span> else <span class="ln">311</span> $this->afterAction($action); <span class="ln">312</span> } <span class="ln">313</span> $this->_action=$priorAction; </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> /mnt/data/shnoulle/nginx/www/master/framework/web/CController.php(286): <strong>CController</strong>-><strong>runAction</strong>(export) </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->runAction($action); </span><span class="ln">287</span> else <span class="ln">288</span> { <span class="ln">289</span> $priorAction=$this->_action; <span class="ln">290</span> $this->_action=$action; <span class="ln">291</span> CFilterChain::create($this,$action,$filters)->run(); </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> /mnt/data/shnoulle/nginx/www/master/framework/web/CController.php(265): <strong>CController</strong>-><strong>runActionWithFilters</strong>(export, array()) </div> <div class="code"><pre><span class="ln">260</span> { <span class="ln">261</span> if(($parent=$this->getModule())===null) <span class="ln">262</span> $parent=Yii::app(); <span class="ln">263</span> if($parent->beforeControllerAction($this,$action)) <span class="ln">264</span> { <span class="error"><span class="ln error-ln">265</span> $this->runActionWithFilters($action,$this->filters()); </span><span class="ln">266</span> $parent->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->missingAction($actionID); </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> /mnt/data/shnoulle/nginx/www/master/application/controllers/AdminController.php(165): <strong>CController</strong>-><strong>run</strong>("export") </div> <div class="code"><pre><span class="ln">160</span> } <span class="ln">161</span> <span class="ln">162</span> $this->runModuleController($action); <span class="ln">163</span> <span class="ln">164</span> <span class="error"><span class="ln error-ln">165</span> return parent::run($action); </span><span class="ln">166</span> } <span class="ln">167</span> <span class="ln">168</span> /** <span class="ln">169</span> * Starting with LS4, 3rd party developper can extends any of the LimeSurve controllers. <span class="ln">170</span> */ </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> /mnt/data/shnoulle/nginx/www/master/framework/web/CWebApplication.php(282): <strong>AdminController</strong>-><strong>run</strong>("export") </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->_controller; <span class="ln">280</span> $this->_controller=$controller; <span class="ln">281</span> $controller->init(); <span class="error"><span class="ln error-ln">282</span> $controller->run($actionID); </span><span class="ln">283</span> $this->_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}'=>$route===''?$this->defaultController:$route))); </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> /mnt/data/shnoulle/nginx/www/master/framework/web/CWebApplication.php(141): <strong>CWebApplication</strong>-><strong>runController</strong>("admin/export/sa/survey") </div> <div class="code"><pre><span class="ln">136</span> foreach(array_splice($this->catchAllRequest,1) as $name=>$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->getUrlManager()->parseUrl($this->getRequest()); <span class="error"><span class="ln error-ln">141</span> $this->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"> #12 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /mnt/data/shnoulle/nginx/www/master/framework/base/CApplication.php(185): <strong>CWebApplication</strong>-><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->hasEventHandler('onBeginRequest')) <span class="ln">183</span> $this->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->processRequest(); </span><span class="ln">186</span> if($this->hasEventHandler('onEndRequest')) <span class="ln">187</span> $this->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"> #13 </td> <td class="content"> <div class="trace-file"> <div class="plus">+</div> <div class="minus">–</div> /mnt/data/shnoulle/nginx/www/master/index.php(195): <strong>CApplication</strong>-><strong>run</strong>() </div> <div class="code"><pre><span class="ln">190</span> require_once APPPATH . 'core/LSYii_Application' . EXT; <span class="ln">191</span> <span class="ln">192</span> $config = require_once(APPPATH . 'config/internal' . EXT); <span class="ln">193</span> <span class="ln">194</span> Yii::$enableIncludePath = false; <span class="error"><span class="ln error-ln">195</span> Yii::createApplication('LSYii_Application', $config)->run(); </span><span class="ln">196</span> <span class="ln">197</span> /* End of file index.php */ <span class="ln">198</span> /* Location: ./index.php */ </pre></div> </td> </tr> </table> </div> <div class="version"> 2020-03-03 07:00:06 nginx/1.16.1 <a href="http://www.yiiframework.com/">Yii Framework</a>/1.1.22-dev </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> | ||||
Bug heat | 10 | ||||
Complete LimeSurvey version number (& build) | 4.1.8 github | ||||
I will donate to the project if issue is resolved | No | ||||
Browser | ff | ||||
Database type & version | not relevant? | ||||
Server OS (if known) | not relevant ? | ||||
Webserver software & version (if known) | not relevant ? | ||||
PHP Version | not relevant ? | ||||
related to | 15939 | closed | gabrieljenik | Update to 4x seems to have changed the Display/Export |
PR: https://github.com/LimeSurvey/LimeSurvey/pull/1449 When using global template on a survey, the template name saved on DB is "inherit". "inherit" template is now converted to the proper template name, set at global level. BTW, maybe we should avoid templates being named "inherit" |
|
Yes
This must be checked before (in my opinion) here :seems a call is not done, then maybe some plugins event or something else ? |
|
Still, one more thing to notice, the PHP printable doesn't seem to have references to the theme... but is for a nother bug I believe |
|
In 2.6 : you can manage partially printable via theme. |
|
Fix committed to master branch: http://bugs.limesurvey.org/plugin.php?page=Source/view&id=30236 |
|
Fix committed to master branch: http://bugs.limesurvey.org/plugin.php?page=Source/view&id=30237 |
|
Fix committed to master branch: http://bugs.limesurvey.org/plugin.php?page=Source/view&id=30238 |
|
Fixed in Release 4.3.3+200707 |
|
LimeSurvey: master 04851637 2020-07-01 14:47 Committer: GitHub Details Diff |
Fixed issue 15940: Export as printable : PHP Notice wuth debug (#1449) Dev: Added method/attribute on survey model for getting the effective template name (handling survey group inheritance). Dev: Used that method/attribute while exporting printable surveys. Dev: Added some existence checkings on getTemplateUrl() and getTemplatePath() |
Affected Issues 15940 |
|
mod - application/controllers/admin/export.php | Diff File | ||
mod - application/models/Survey.php | Diff File | ||
mod - application/models/Template.php | Diff File | ||
LimeSurvey: master 8a55cbc9 2020-07-01 14:47 Committer: ollehar Details Diff |
Fixed issue 15940: Export as printable : PHP Notice with debug (#1449) Dev: Added method/attribute on survey model for getting the effective template name (handling survey group inheritance). Dev: Used that method/attribute while exporting printable surveys. Dev: Added some existence checkings on getTemplateUrl() and getTemplatePath() |
Affected Issues 15940 |
|
mod - application/controllers/admin/export.php | Diff File | ||
mod - application/models/Survey.php | Diff File | ||
mod - application/models/Template.php | Diff File | ||
LimeSurvey: master f16b90e0 2020-07-01 14:47 Committer: ollehar Details Diff |
Fixed issue 15940: Export as printable - PHP Notice with debug mode on (#1449) Dev: Added method/attribute on survey model for getting the effective template name (handling survey group inheritance). Dev: Used that method/attribute while exporting printable surveys. Dev: Added some existence checkings on getTemplateUrl() and getTemplatePath() |
Affected Issues 15940 |
|
mod - application/controllers/admin/export.php | Diff File | ||
mod - application/models/Survey.php | Diff File | ||
mod - application/models/Template.php | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2020-03-03 08:13 | DenisChenu | New Issue | |
2020-03-03 08:13 | DenisChenu | File Added: limesurvey_survey_printError.lss | |
2020-03-03 08:13 | DenisChenu | File Added: PHP notice.html | |
2020-03-03 08:14 | DenisChenu | Relationship added | related to 15939 |
2020-03-18 15:28 | cdorin | Priority | none => normal |
2020-03-18 15:28 | cdorin | Status | new => confirmed |
2020-04-01 16:55 | cdorin | Zoho Sprints | => |Yes| |
2020-04-01 16:55 |
|
Zoho Sprints ID | => 14469000000018157 |
2020-06-26 16:00 | gabrieljenik | Note Added: 58524 | |
2020-06-26 16:04 | DenisChenu | Note Added: 58525 | |
2020-06-26 16:49 | gabrieljenik | Note Added: 58527 | |
2020-06-27 16:51 | DenisChenu | Note Added: 58533 | |
2020-07-01 12:48 | gabrieljenik | Changeset attached | => LimeSurvey master 04851637 |
2020-07-01 12:48 | guest | Note Added: 58610 | |
2020-07-01 12:49 | ollehar | Changeset attached | => LimeSurvey master 8a55cbc9 |
2020-07-01 12:49 | ollehar | Note Added: 58611 | |
2020-07-01 12:49 | ollehar | Assigned To | => ollehar |
2020-07-01 12:49 | ollehar | Resolution | open => fixed |
2020-07-01 12:54 | ollehar | Changeset attached | => LimeSurvey master f16b90e0 |
2020-07-01 12:54 | ollehar | Note Added: 58612 | |
2020-07-02 12:58 |
|
Zoho Sprints | Yes => |Yes| |
2020-07-02 12:58 |
|
Status | confirmed => resolved |
2020-07-06 13:21 | lime_release_bot | Zoho Sprints | Yes => |Yes| |
2020-07-06 13:21 | lime_release_bot | Note Added: 58717 | |
2020-07-06 13:21 | lime_release_bot | Status | resolved => closed |