Page 1 of 2
Modifying the plugin to "insert file list in content" to show file size
Posted: 25 Jun 2018, 16:25
by chabi01
Hello !
First, i search and try a lot before posting here but i did not find a solution.
I would like to have the file size shown when i use the plugin button in content.
To do so, i could modify the plugin code if needed but there is something i don't understand...
In the plugin code, i can see the query (file list). In the database, in the table phocadownload, i can see a field "filesize".
But in the database, this field seems to be unused : all the filesize are on 0.
I search in the phoca download code and found the function "filesize" seems to be used to show the file size when the view is called from the component view from a menu.
My question is then :
Is there somebody who could help me and provide me a code to add in the plugin code to only show beside the name of the file the size of the file ? That is something asked often but i don't find a "right" way to achieve this.
Many thanks in advance for the help !
Xavier
Re: Modifying the plugin to "insert file list in content" to show file size
Posted: 26 Jun 2018, 14:07
by Jan
Hi, as you can see in the component, the filesize is set by function:
Code: Select all
$l = new PhocaDownloadLayout();
$fileSize = $l->getFilesize($v->filename);
administrator\components\com_phocadownload\libraries\phocadownload\render\layout.php (line cca 101)
It directly check the size of the original file stored on server.
Jan
Re: Modifying the plugin to "insert file list in content" to show file size
Posted: 26 Jun 2018, 14:53
by chabi01
Hi Jan,
I saw this line of code but i don't succeed to use it...
In the plugin code, i have added this :
Code: Select all
ADDED at line 295
if ($text !='') {
$textOutput = $text;
} else if (isset($item->title) && $item->title != '') {
$textOutput = $item->title;
} else {
$textOutput = JText::_('PLG_CONTENT_PHOCADOWNLOAD_DOWNLOAD_FILE');
}
/*show filesize */
//$l = new PhocaDownloadLayout(); Commented as already declared at the beginning of the script
$fileSize = $items->getFilesize($->filename);
// also tried with : $fileSize = $items->getFilesize($v->filename); -> error
$textOutput .= '('. $fileSize .')';
/*end show filesize */
I have obviously an error as i have a php error 0 raised.
Jan, can you help just for the line $fileSize = $items->getFilesize($v->filename); to help me to have the right thing ?
Thanks a lot,
Xavier
Re: Modifying the plugin to "insert file list in content" to show file size
Posted: 01 Jul 2018, 13:01
by Jan
Hi, which error do you exactly get?
Jan
Re: Modifying the plugin to "insert file list in content" to show file size
Posted: 02 Jul 2018, 12:09
by chabi01
Hi Jan,
I now have this code :
Code: Select all
$fileSize = $l->getFilesize($v->filename);
$textOutput .= '('. $fileSize .')';
The goal is to add the size of the file with something like (xxxxxx)
This give me : 0 - Call to a member function getFilesize() on array
Thanks for the help,
Xavier
Re: Modifying the plugin to "insert file list in content" to show file size
Posted: 05 Jul 2018, 13:06
by Jan
Hi, did you declare the $l variable?
$l = new PhocaDownloadLayout();
Jan
Re: Modifying the plugin to "insert file list in content" to show file size
Posted: 05 Jul 2018, 13:21
by chabi01
Hi Jan,
Yes i did...
Xavier
Re: Modifying the plugin to "insert file list in content" to show file size
Posted: 05 Jul 2018, 14:08
by Jan
Can you enable php error reporting:
https://www.phoca.cz/documents/16-jooml ... rs-on-site
and let me know the whole error message you get there:
Call to a member function getFilesize() on array
Re: Modifying the plugin to "insert file list in content" to show file size
Posted: 05 Jul 2018, 15:08
by chabi01
Here is the full debug message :
Code: Select all
Call to a member function getFilesize() on array
/home/xxxx/public_html/xxxx/plugins/content/phocadownload/phocadownload.php:297
Call stack
# Function Location
1 () JROOT/plugins/content/phocadownload/phocadownload.php:297
2 plgContentPhocaDownload->onContentPrepare() JROOT/libraries/joomla/event/event.php:70
3 JEvent->update() JROOT/components/com_flexicontent/helpers/dispatcher.php:172
4 FCDispatcher->trigger() JROOT/components/com_flexicontent/classes/flexicontent.fields.php:1064
5 FlexicontentFields::triggerContentPlugins() JROOT/components/com_flexicontent/classes/flexicontent.fields.php:889
6 FlexicontentFields::renderField() JROOT/components/com_flexicontent/classes/flexicontent.fields.php:1142
7 FlexicontentFields::renderPositions() JROOT/components/com_flexicontent/classes/flexicontent.fields.php:164
8 FlexicontentFields::getFields() JROOT/components/com_flexicontent/views/item/view.html.php:196
9 FlexicontentViewItem->display() JROOT/libraries/src/MVC/Controller/BaseController.php:672
10 Joomla\CMS\MVC\Controller\BaseController->display() JROOT/components/com_flexicontent/controller.php:1222
11 FlexicontentController->display() JROOT/libraries/src/MVC/Controller/BaseController.php:710
12 Joomla\CMS\MVC\Controller\BaseController->execute() JROOT/components/com_flexicontent/flexicontent.php:266
13 require_once() JROOT/libraries/src/Component/ComponentHelper.php:382
14 Joomla\CMS\Component\ComponentHelper::executeComponent() JROOT/libraries/src/Component/ComponentHelper.php:357
15 Joomla\CMS\Component\ComponentHelper::renderComponent() JROOT/libraries/src/Application/SiteApplication.php:194
16 Joomla\CMS\Application\SiteApplication->dispatch() JROOT/libraries/src/Application/SiteApplication.php:233
17 Joomla\CMS\Application\SiteApplication->doExecute() JROOT/libraries/src/Application/CMSApplication.php:195
18 Joomla\CMS\Application\CMSApplication->execute() JROOT/index.php:49
EDIT
I also get this in another console (removed the full path from the code) :
Code: Select all
#0 /libraries/joomla/event/event.php(70): plgContentPhocaDownload->onContentPrepare('com_content.art...', Object(stdClass), Object(Joomla\Registry\Registry), 0)
#1 /components/com_flexicontent/helpers/dispatcher.php(172): JEvent->update(Array)
#2 /components/com_flexicontent/classes/flexicontent.fields.php(1064): FCDispatcher->trigger('oncontentprepar...', Array, NULL)
#3 /components/com_flexicontent/classes/flexicontent.fields.php(889): FlexicontentFields::triggerContentPlugins(Object(stdClass), Object(stdClass), 'display', 'item', false)
#4 /components/com_flexicontent/classes/flexicontent.fields.php(1142): FlexicontentFields::renderField(Array, 'text', NULL, 'display', 'item')
#5 /components/com_flexicontent/classes/flexicontent.fields.php(164): FlexicontentFields::renderPositions(Array, 'item', Object(Joomla\Registry\Registry), true, Array)
#6 /components/com_flexicontent/views/item/view.html.php(196): FlexicontentFields::getFields(Array, 'item', Object(Joomla\Registry\Registry), Array)
#7 /libraries/src/MVC/Controller/BaseController.php(672): FlexicontentViewItem->display()
#8 /components/com_flexicontent/controller.php(1222): Joomla\CMS\MVC\Controller\BaseController->display(true, Array)
#9 /libraries/src/MVC/Controller/BaseController.php(710): FlexicontentController->display()
#10 /components/com_flexicontent/flexicontent.php(266): Joomla\CMS\MVC\Controller\BaseController->execute('')
#11 /libraries/src/Component/ComponentHelper.php(382): require_once('/home/mesjpofr/...')
#12 /libraries/src/Component/ComponentHelper.php(357): Joomla\CMS\Component\ComponentHelper::executeComponent('/home/mesjpofr/...')
#13 /libraries/src/Application/SiteApplication.php(194): Joomla\CMS\Component\ComponentHelper::renderComponent('com_flexiconten...')
#14 /libraries/src/Application/SiteApplication.php(233): Joomla\CMS\Application\SiteApplication->dispatch()
#15 /libraries/src/Application/CMSApplication.php(195): Joomla\CMS\Application\SiteApplication->doExecute()
#16 /index.php(49): Joomla\CMS\Application\CMSApplication->execute()
Re: Modifying the plugin to "insert file list in content" to show file size
Posted: 06 Jul 2018, 15:17
by Jan
Hi, the function:
public function getFileSize($filename)
gets string as parameter but seems it gets an array in your code.
Try to debug
$l->getFilesize($v->filename);
if the $v->filename is really a filename not some array
Jan