Kunena 6.2.5 & module Kunena Latest 6.0.7 released

The Kunena team has announce the arrival of Kunena 6.2.5 [K 6.2.5] which is now available for download as a native Joomla extension for J! 4.3.x/4.4.x/5.0.x. This version addresses most of the issues that were discovered in K 6.1 / K 6.2 and issues discovered during the last development stages of K 6.2

Solved Plugin 'Smart Search - Kunena Forum' SQL error in Maintenance - Optimise

More
1 year 6 months ago - 1 year 6 months ago #1 by toivo
Expected behaviour
Smart Search - Maintenance - Optimise runs normally.

Actual behaviour
1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 5

Workaround
Disable  the  'Smart Search - Kunena Forum' and Maintenance - Optimise runs normally.

Environment
Kunena 6.0.2 2022-08-15
Joomla 4.2.3-dev
PHP 8.1.9
MySQL 8.0.27
Wampserver 3.2.9
Windows 11
Last edit: 1 year 6 months ago by toivo. Reason: typo
The following user(s) said Thank You: xillibit

Please Log in or Create an account to join the conversation.

More
1 year 6 months ago #2 by xillibit
Hello,

Thanks for the report i will take a look

I don't provide support by PM, because this can be useful for someone else.

Please Log in or Create an account to join the conversation.

More
1 year 6 months ago #3 by toivo
Here is the call stack, if that helps:


An error has occurred.
1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 5
Call stack
# Function Location
1 () JROOT\libraries\vendor\joomla\database\src\Mysqli\:137
2 mysqli->prepare() JROOT\libraries\vendor\joomla\database\src\Mysqli\:137
3 Joomla\Database\Mysqli\MysqliStatement->__construct() JROOT\libraries\vendor\joomla\database\src\Mysqli\:1048
4 Joomla\Database\Mysqli\MysqliDriver->prepareStatement() JROOT\libraries\vendor\joomla\database\src\:1900
5 Joomla\Database\DatabaseDriver->setQuery() JROOT\administrator\components\com_finder\src\Indexer\:281
6 Joomla\Component\Finder\Administrator\Indexer\Adapter->onFinderGarbageCollection() JROOT\libraries\src\Plugin\:279
7 Joomla\CMS\Plugin\CMSPlugin->Joomla\CMS\Plugin\{closure}() JROOT\libraries\vendor\joomla\event\src\:486
8 Joomla\Event\Dispatcher->dispatch() JROOT\libraries\src\Application\:107
9 Joomla\CMS\Application\WebApplication->triggerEvent() JROOT\administrator\components\com_finder\src\Controller\:58
10 Joomla\Component\Finder\Administrator\Controller\IndexController->optimise() JROOT\libraries\src\MVC\Controller\:672
11 Joomla\CMS\MVC\Controller\BaseController->execute() JROOT\libraries\src\Dispatcher\:143
12 Joomla\CMS\Dispatcher\ComponentDispatcher->dispatch() JROOT\libraries\src\Component\:355
13 Joomla\CMS\Component\ComponentHelper::renderComponent() JROOT\libraries\src\Application\:143
14 Joomla\CMS\Application\AdministratorApplication->dispatch() JROOT\libraries\src\Application\:186
15 Joomla\CMS\Application\AdministratorApplication->doExecute() JROOT\libraries\src\Application\:294
16 Joomla\CMS\Application\CMSApplication->execute() JROOT\administrator\includes\:61
17 require_once() JROOT\administrator\:32

Please Log in or Create an account to join the conversation.

More
1 year 6 months ago #4 by xillibit
Can-you confirm that you have just enabled the smart search plugins for Kunena and Joomla!, but not others plugins ?

I don't provide support by PM, because this can be useful for someone else.

Please Log in or Create an account to join the conversation.

More
1 year 6 months ago #5 by toivo
All the six (6) standard Joomla Smart Search plugins plus Smart Search - Kunena Forum were enabled. All the Kunena plugins were enabled, except Jomsocial, Community Builder, EasySocial and Gravatar integration plugins.

Please Log in or Create an account to join the conversation.

More
1 year 6 months ago #6 by xillibit
I'am not able to reproduce it, so to try to get the query open the file : /libraries/vendor/joomla/database/src/DatabaseDriver.php and at line 1857 add :
Code:
echo 'query '.$query;

Then re-try the optimise

I don't provide support by PM, because this can be useful for someone else.

Please Log in or Create an account to join the conversation.

More
1 year 6 months ago - 1 year 6 months ago #7 by carnalimr
I have the same issue, I disabled the Kunena Smart Search Plugin and was able to optimize. When it is enabled I get:
Code:
1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 5
Last edit: 1 year 6 months ago by carnalimr.

Please Log in or Create an account to join the conversation.

More
1 year 6 months ago - 1 year 6 months ago #8 by toivo
I added the following lines instead:
Code:
$file = 'c:\www\joomla4test\administrator\logs\querylog.txt'; $logfile = fopen($file, 'a') or die('Unable to open file!'); fwrite($logfile, $query . "\r\n");

Here is the outcome:
Code:
SELECT @@SESSION.sql_mode; SELECT `data` FROM `#__session` WHERE `session_id` = ? SHOW FULL COLUMNS FROM `#__users` SELECT * FROM `#__users` WHERE `id` = :userid SELECT `g`.`id`,`g`.`title` FROM `#__usergroups` AS `g` INNER JOIN `#__user_usergroup_map` AS `m` ON `m`.`group_id` = `g`.`id` WHERE `m`.`user_id` = :muserid SELECT `session_id` FROM `#__session` WHERE `session_id` = :session_id LIMIT 1 UPDATE `#__session` SET `guest` = :guest     , `time` = :time     , `userid` = :user_id     , `username` = :username     , `client_id` = :client_id WHERE `session_id` = :session_id SELECT `extension_id` AS `id`,`element` AS `option`,`params`,`enabled` FROM `#__extensions` WHERE `type` = 'component' AND `state` = 0 AND `enabled` = 1 SELECT `id`,`rules` FROM `#__viewlevels` SELECT `b`.`id` FROM `#__user_usergroup_map` AS `map` LEFT JOIN `#__usergroups` AS `a` ON `a`.`id` = `map`.`group_id` LEFT JOIN `#__usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `map`.`user_id` = :userId SELECT `folder` AS `type`,`element` AS `name`,`params` AS `params`,`extension_id` AS `id` FROM `#__extensions` WHERE `enabled` = 1 AND `type` = 'plugin' AND `state` IN (0,1) AND `access` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4) ORDER BY `ordering` SELECT * FROM `#__kunena_configuration` WHERE `id` = 1 SELECT `id`,`name`,`rules`,`parent_id` FROM `#__assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39,:preparedArray40,:preparedArray41,:preparedArray42) SELECT `s`.`template`,`s`.`params`,`s`.`inheritable`,`s`.`parent` FROM `#__template_styles` AS `s` LEFT JOIN `#__extensions` AS `e` ON `e`.`type` = 'template' AND `e`.`element` = `s`.`template` AND `e`.`client_id` = `s`.`client_id` WHERE `s`.`client_id` = 1 AND `s`.`home` = '1' ORDER BY `s`.`home` SELECT `name`,`element` FROM `#__extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1 SELECT l.*,`t`.`title` AS `t_title`,la.title AS language_title, la.image AS language_image FROM `#__finder_links` AS `l` INNER JOIN `#__finder_types` AS `t` ON `t`.`id` = `l`.`type_id` LEFT JOIN `#__languages` AS la ON la.lang_code = l.language ORDER BY l.title asc LIMIT 100 SELECT COUNT(*) FROM `#__finder_links` AS `l` INNER JOIN `#__finder_types` AS `t` ON `t`.`id` = `l`.`type_id` LEFT JOIN `#__languages` AS la ON la.lang_code = l.language SELECT name, enabled FROM `#__extensions` WHERE `type` = 'plugin' AND `folder` IN ('system','content') AND `element` = 'finder' SELECT * FROM #__wf_profiles WHERE published = 1 ORDER BY ordering ASC SELECT * FROM #__wf_profiles WHERE published = 1 ORDER BY ordering ASC SELECT `enabled` FROM `#__extensions` WHERE `type` = 'plugin' AND `folder` = 'system' AND `element` = 'languagefilter' SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM #__fields AS a LEFT JOIN `#__languages` AS l ON l.lang_code = a.language LEFT JOIN #__users AS uc ON uc.id=a.checked_out LEFT JOIN #__viewlevels AS ag ON ag.id = a.access LEFT JOIN #__users AS ua ON ua.id = a.created_user_id LEFT JOIN #__fields_groups AS g ON g.id = a.group_id WHERE  (`a`.`context` = :context AND `a`.`state` = :state) AND  (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC SELECT COUNT(link_id) FROM `#__finder_links` SELECT `id` AS `value`,`title` AS `text` FROM `#__finder_types` SELECT `a`.`title` AS `text`,`a`.`id` AS `value`,`a`.`parent_id`,`a`.`level` FROM `#__finder_taxonomy` AS `a` WHERE `a`.`parent_id` <> 0 ORDER BY a.title ASC SELECT `element`,`name`,`client_id`,`extension_id` FROM `#__extensions` WHERE `type` = 'language' AND `state` = 0 AND `enabled` = 1 SELECT `m`.`id`,`m`.`title`,`m`.`module`,`m`.`position`,`m`.`content`,`m`.`showtitle`,`m`.`params`,`mm`.`menuid` FROM `#__modules` AS `m` LEFT JOIN `#__modules_menu` AS `mm` ON `mm`.`moduleid` = `m`.`id` LEFT JOIN `#__extensions` AS `e` ON `e`.`element` = `m`.`module` AND `e`.`client_id` = `m`.`client_id` WHERE  ( ( (`m`.`published` = 1 AND `e`.`enabled` = 1 AND `m`.`client_id` = :clientId AND `m`.`access` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4)) AND  (`m`.`publish_up` IS NULL OR `m`.`publish_up` <= :publishUp)) AND  (`m`.`publish_down` IS NULL OR `m`.`publish_down` >= :publishDown)) AND  (`mm`.`menuid` = :itemId OR `mm`.`menuid` <= 0) ORDER BY `m`.`position`,`m`.`ordering` SELECT `language_extension`,`language_client_id`,`condition_file`,`condition_method` FROM `#__postinstall_messages` WHERE `enabled` = 1 SELECT * FROM `#__extensions` WHERE `element` = :element AND `type` = :type LIMIT 1 SELECT `a`.*,`u`.`name` AS `user_from` FROM `#__messages` AS `a` INNER JOIN `#__users` AS `u` ON `u`.`id` = `a`.`user_id_from` WHERE `a`.`user_id_to` = :id AND `a`.`state` = :state ORDER BY a.date_time DESC SELECT a.id, a.title, a.menutype, CASE COALESCE(SUM(m.home), 0) WHEN 0 THEN '' WHEN 1 THEN CASE m.language WHEN '*' THEN 'class:icon-home' ELSE CONCAT('image:', l.lang_code) END ELSE 'image:mod_languages/icon-16-language.png' END AS icon FROM #__menu_types AS a LEFT JOIN #__menu AS m ON m.menutype = a.menutype AND m.home = 1 LEFT JOIN #__languages AS l ON l.lang_code = m.language WHERE a.client_id = 0 GROUP BY a.id, a.title, a.menutype, m.language, l.lang_code ORDER BY a.id DESC SELECT title, menutype FROM #__menu_types WHERE client_id = 1 ORDER BY id DESC SELECT `m`.*,`e`.`element` FROM `#__menu` AS `m` LEFT JOIN `#__extensions` AS `e` ON `m`.`component_id` = `e`.`extension_id` WHERE  (`m`.`menutype` = :menutype AND `m`.`client_id` = 1 AND `m`.`id` > 1) AND  (`e`.`enabled` = 1 OR `e`.`enabled` IS NULL) ORDER BY `m`.`lft` SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`type`,`a`.`execution_rules`,`a`.`state`,`a`.`last_exit_code`,`a`.`locked`,`a`.`last_execution`,`a`.`next_execution`,`a`.`times_executed`,`a`.`times_failed`,`a`.`priority`,`a`.`ordering`,`a`.`note`,`a`.`checked_out`,`a`.`checked_out_time`,`uc`.`name` AS `editor` FROM `#__scheduler_tasks` AS `a` LEFT JOIN `#__users` AS `uc` ON `uc`.`id` = `a`.`checked_out` WHERE `a`.`state` = :state AND `a`.`next_execution` <= :now ORDER BY `a`.`title` asc SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`type`,`a`.`execution_rules`,`a`.`state`,`a`.`last_exit_code`,`a`.`locked`,`a`.`last_execution`,`a`.`next_execution`,`a`.`times_executed`,`a`.`times_failed`,`a`.`priority`,`a`.`ordering`,`a`.`note`,`a`.`checked_out`,`a`.`checked_out_time`,`uc`.`name` AS `editor` FROM `#__scheduler_tasks` AS `a` LEFT JOIN `#__users` AS `uc` ON `uc`.`id` = `a`.`checked_out` WHERE `a`.`state` = :state AND `a`.`locked` IS NOT NULL ORDER BY `a`.`title` asc SELECT @@SESSION.sql_mode; SELECT @@collation_database; SELECT @@collation_connection; SHOW SESSION STATUS WHERE `Variable_name` IN ('Ssl_version', 'Ssl_cipher') SHOW SESSION VARIABLES WHERE `Variable_name` IN ('have_ssl') SELECT * FROM `#__users` WHERE `id` = :userid SELECT `g`.`id`,`g`.`title` FROM `#__usergroups` AS `g` INNER JOIN `#__user_usergroup_map` AS `m` ON `m`.`group_id` = `g`.`id` WHERE `m`.`user_id` = :muserid SELECT `session_id` FROM `#__session` WHERE `session_id` = ? UPDATE `#__session` SET `data` = ?     , `time` = ? WHERE `session_id` = ? SELECT @@SESSION.sql_mode; SELECT `data` FROM `#__session` WHERE `session_id` = ? SHOW FULL COLUMNS FROM `#__users` SELECT * FROM `#__users` WHERE `id` = :userid SELECT `g`.`id`,`g`.`title` FROM `#__usergroups` AS `g` INNER JOIN `#__user_usergroup_map` AS `m` ON `m`.`group_id` = `g`.`id` WHERE `m`.`user_id` = :muserid SELECT `session_id` FROM `#__session` WHERE `session_id` = :session_id LIMIT 1 UPDATE `#__session` SET `guest` = :guest     , `time` = :time     , `userid` = :user_id     , `username` = :username     , `client_id` = :client_id WHERE `session_id` = :session_id SELECT `extension_id` AS `id`,`element` AS `option`,`params`,`enabled` FROM `#__extensions` WHERE `type` = 'component' AND `state` = 0 AND `enabled` = 1 SELECT `id`,`rules` FROM `#__viewlevels` SELECT `b`.`id` FROM `#__user_usergroup_map` AS `map` LEFT JOIN `#__usergroups` AS `a` ON `a`.`id` = `map`.`group_id` LEFT JOIN `#__usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `map`.`user_id` = :userId SELECT `folder` AS `type`,`element` AS `name`,`params` AS `params`,`extension_id` AS `id` FROM `#__extensions` WHERE `enabled` = 1 AND `type` = 'plugin' AND `state` IN (0,1) AND `access` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4) ORDER BY `ordering` SELECT * FROM `#__kunena_configuration` WHERE `id` = 1 SELECT `id`,`name`,`rules`,`parent_id` FROM `#__assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39,:preparedArray40,:preparedArray41,:preparedArray42) SELECT `s`.`template`,`s`.`params`,`s`.`inheritable`,`s`.`parent` FROM `#__template_styles` AS `s` LEFT JOIN `#__extensions` AS `e` ON `e`.`type` = 'template' AND `e`.`element` = `s`.`template` AND `e`.`client_id` = `s`.`client_id` WHERE `s`.`client_id` = 1 AND `s`.`home` = '1' ORDER BY `s`.`home` SELECT `id` FROM `#__finder_types` WHERE `title` = 'Forum Post' SELECT `id` FROM `#__finder_types` WHERE `title` = 'Category' SELECT `id` FROM `#__finder_types` WHERE `title` = 'Contact' SELECT `id` FROM `#__finder_types` WHERE `title` = 'Article' SELECT `id` FROM `#__finder_types` WHERE `title` = 'News Feed' SELECT `id` FROM `#__finder_types` WHERE `title` = 'Tag' SELECT `id` FROM `#__finder_types` WHERE `title` = 'Forum Post' SHOW FULL COLUMNS FROM `#__kunena_messages` SELECT `l`.`link_id` FROM `#__finder_links` AS `l` WHERE `l`.`type_id` = 6 AND `l`.`url` LIKE 'index.php?option=com_kunena&view=topic&catid=&id=&mesid=' AND `l`.`url` NOT IN ( SELECT CONCAT('index.php?option=com_kunena&view=topic&catid=&id=&mesid=', id) FROM ) SELECT `element`,`name`,`client_id`,`extension_id` FROM `#__extensions` WHERE `type` = 'language' AND `state` = 0 AND `enabled` = 1 SELECT `m`.`id`,`m`.`title`,`m`.`module`,`m`.`position`,`m`.`content`,`m`.`showtitle`,`m`.`params`,`mm`.`menuid` FROM `#__modules` AS `m` LEFT JOIN `#__modules_menu` AS `mm` ON `mm`.`moduleid` = `m`.`id` LEFT JOIN `#__extensions` AS `e` ON `e`.`element` = `m`.`module` AND `e`.`client_id` = `m`.`client_id` WHERE  ( ( (`m`.`published` = 1 AND `e`.`enabled` = 1 AND `m`.`client_id` = :clientId AND `m`.`access` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4)) AND  (`m`.`publish_up` IS NULL OR `m`.`publish_up` <= :publishUp)) AND  (`m`.`publish_down` IS NULL OR `m`.`publish_down` >= :publishDown)) AND  (`mm`.`menuid` = :itemId OR `mm`.`menuid` <= 0) ORDER BY `m`.`position`,`m`.`ordering` SELECT `enabled` FROM `#__extensions` WHERE `type` = 'plugin' AND `folder` = 'system' AND `element` = 'languagefilter' SELECT `language_extension`,`language_client_id`,`condition_file`,`condition_method` FROM `#__postinstall_messages` WHERE `enabled` = 1 SELECT * FROM `#__extensions` WHERE `element` = :element AND `type` = :type LIMIT 1 SELECT `a`.*,`u`.`name` AS `user_from` FROM `#__messages` AS `a` INNER JOIN `#__users` AS `u` ON `u`.`id` = `a`.`user_id_from` WHERE `a`.`user_id_to` = :id AND `a`.`state` = :state ORDER BY a.date_time DESC SELECT a.id, a.title, a.menutype, CASE COALESCE(SUM(m.home), 0) WHEN 0 THEN '' WHEN 1 THEN CASE m.language WHEN '*' THEN 'class:icon-home' ELSE CONCAT('image:', l.lang_code) END ELSE 'image:mod_languages/icon-16-language.png' END AS icon FROM #__menu_types AS a LEFT JOIN #__menu AS m ON m.menutype = a.menutype AND m.home = 1 LEFT JOIN #__languages AS l ON l.lang_code = m.language WHERE a.client_id = 0 GROUP BY a.id, a.title, a.menutype, m.language, l.lang_code ORDER BY a.id DESC SELECT title, menutype FROM #__menu_types WHERE client_id = 1 ORDER BY id DESC SELECT `m`.*,`e`.`element` FROM `#__menu` AS `m` LEFT JOIN `#__extensions` AS `e` ON `m`.`component_id` = `e`.`extension_id` WHERE  (`m`.`menutype` = :menutype AND `m`.`client_id` = 1 AND `m`.`id` > 1) AND  (`e`.`enabled` = 1 OR `e`.`enabled` IS NULL) ORDER BY `m`.`lft` SELECT @@SESSION.sql_mode; SELECT @@collation_database; SELECT @@collation_connection; SHOW SESSION STATUS WHERE `Variable_name` IN ('Ssl_version', 'Ssl_cipher') SHOW SESSION VARIABLES WHERE `Variable_name` IN ('have_ssl') SELECT * FROM `#__users` WHERE `id` = :userid SELECT `g`.`id`,`g`.`title` FROM `#__usergroups` AS `g` INNER JOIN `#__user_usergroup_map` AS `m` ON `m`.`group_id` = `g`.`id` WHERE `m`.`user_id` = :muserid SELECT `session_id` FROM `#__session` WHERE `session_id` = ? UPDATE `#__session` SET `data` = ?     , `time` = ? WHERE `session_id` = ?
Last edit: 1 year 6 months ago by toivo.

Please Log in or Create an account to join the conversation.

More
1 year 6 months ago #9 by toivo
This query must be the culprit but its location is a mystery at the moment:
Code:
SELECT `l`.`link_id` FROM `#__finder_links` AS `l` WHERE `l`.`type_id` = 6 AND `l`.`url` LIKE 'index.php?option=com_kunena&view=topic&catid=&id=&mesid=' AND `l`.`url` NOT IN ( SELECT CONCAT('index.php?option=com_kunena&view=topic&catid=&id=&mesid=', id) FROM )

Please Log in or Create an account to join the conversation.

More
1 year 6 months ago - 1 year 6 months ago #10 by toivo
The SQL query is generated in Adapter::onFinderGarbageCollection() in administrator/components/com_finder/src/Indexer/Adapter.php.

The variable $this->table was not set:
Code:
 $subquery->select('CONCAT(' . $db->quote($this->getUrl('', $this->extension, $this->layout)) . ', id)')             ->from($db->quoteName($this->table));
Last edit: 1 year 6 months ago by toivo. Reason: code

Please Log in or Create an account to join the conversation.

Time to create page: 0.398 seconds