function postInstall()
 {
     global $mainframe;
     $db =& JCommentsFactory::getDBO();
     $installer = new HTML_JCommentsInstaller();
     JCommentsInstallerHelper::extractJCommentsPlugins();
     JCommentsInstallerHelper::setPermissions(JCOMMENTS_BASE . DS . 'tpl', '0644');
     // create database tables
     if (JCOMMENTS_JVERSION == '1.0') {
         $installSQL = dirname(__FILE__) . DS . 'install' . DS . 'sql' . DS . 'install.mysql.nonutf8.sql';
         JCommentsInstaller::executeSQL($installSQL);
     } else {
         if (JCOMMENTS_JVERSION == '1.5') {
             require_once JCOMMENTS_LIBRARIES . DS . 'joomlatune' . DS . 'filesystem.php';
             $config =& JFactory::getConfig();
             $mainframe =& JFactory::getApplication();
             if ($config->getValue('config.legacy')) {
                 $installSQL = dirname(__FILE__) . DS . 'install' . DS . 'sql' . DS . 'install.mysql.utf8.sql';
                 JCommentsInstaller::executeSQL($installSQL);
                 // path to languages directory
                 $path = JCOMMENTS_BASE . DS . 'languages';
                 $jpath = JPATH_ROOT . DS . 'language';
                 $languages = JoomlaTuneFS::readDirectory($path);
                 if (!is_writable($jpath)) {
                     @chmod($jpath, 0755);
                 }
                 foreach ($languages as $language) {
                     if (preg_match('#[a-z]{2}\\-[A-Z]{2}\\.com_jcomments.ini#is', (string) $language)) {
                         $languageCode = substr((string) $language, 0, 5);
                         $languageDir = $jpath . DS . $languageCode;
                         if (!is_dir($languageDir)) {
                             if (!JFolder::create($languageDir)) {
                                 continue;
                             }
                         }
                         if (is_dir($languageDir)) {
                             @chmod($languageDir, 0755);
                             $languageSrc = $path . DS . $language;
                             $languageDestination = $languageDir . DS . $language;
                             if (!@copy($languageSrc, $languageDestination)) {
                                 $errorMessage = JText::sprintf('Unable to copy file %s to language folder. Please set write persmission to language folder (%s) and press the Refresh/Reload button of your browser.', $language, $languageDir);
                                 $installer->addError($errorMessage);
                                 continue;
                             }
                         }
                     }
                 }
                 unset($languages);
                 $language =& JFactory::getLanguage();
                 $language->load('com_jcomments', JPATH_SITE, null, true);
             }
             @ob_start();
             // install JomSocial Rule
             $jomSocialRuleSrc = dirname(__FILE__) . DS . 'install' . DS . 'xml' . DS . 'jomsocial_rule.xm';
             $jomSocialRuleDst = JCOMMENTS_BASE . DS . 'jomsocial_rule.xml';
             if (!is_file($jomSocialRuleDst)) {
                 JCommentsInstallerHelper::copyFile($jomSocialRuleSrc, $jomSocialRuleDst);
                 JCommentsInstallerHelper::setPermissions($jomSocialRuleDst, 0755);
             }
             // remove language files
             $path = JCOMMENTS_BASE . DS . 'languages';
             $filter = '\\.ini';
             $files = JoomlaTuneFS::readDirectory($path, $filter, false, true);
             foreach ($files as $file) {
                 JCommentsInstallerHelper::deleteFile($file);
             }
             if (is_dir($path)) {
                 JCommentsInstallerHelper::deleteFolder($path);
             }
             // remove plugins.zip
             if (is_file(JCOMMENTS_BASE . DS . 'plugins' . DS . 'plugins.zip')) {
                 JCommentsInstallerHelper::deleteFile(JCOMMENTS_BASE . DS . 'plugins' . DS . 'plugins.zip');
             }
             @ob_end_clean();
         }
     }
     $jxml10 = dirname(__FILE__) . DS . 'jcomments10.xml';
     $jxml15 = dirname(__FILE__) . DS . 'jcomments15.xml';
     $jxml = dirname(__FILE__) . DS . 'jcomments.xml';
     if (is_file($jxml10)) {
         @rename($jxml10, $jxml);
     } else {
         if (is_file($jxml15)) {
             @rename($jxml15, $jxml);
         }
     }
     unset($jxml10, $jxml15, $jxml);
     // small stuff for future update system
     $db->setQuery('SELECT `version` FROM `#__jcomments_version`');
     $version = $db->loadResult();
     $versionInfo = JCommentsInstallerHelper::getVersionInfo('jcomments');
     $currentVersion = $versionInfo->releaseVersion;
     $currentDate = date('Y-m-d H:i:s');
     if (empty($version)) {
         $db->setQuery("INSERT IGNORE INTO `#__jcomments_version` (`version`,`installed`) VALUES ('{$currentVersion}', '{$currentDate}')");
         @$db->query();
         // if version isn't specified - we think that it was 1.4.0.9 or earlier...
         $version = '1.4.0.9';
     } else {
         $db->setQuery("UPDATE `#__jcomments_version` SET `version` = '{$currentVersion}', `updated` = '{$currentDate}';");
         @$db->query();
     }
     if (version_compare($version, '2.1.0.0') < 0) {
         JCommentsInstallerHelper::uninstallPlugin('jcomments.content', 'content');
         JCommentsInstallerHelper::uninstallPlugin('jcomments.search', 'search');
         JCommentsInstallerHelper::uninstallPlugin('jcomments.system', 'system');
     }
     // install content plugin
     JCommentsInstallerHelper::installPlugin('Content - JComments', 'jcomments', 'content', array(), 'AI_INSTALL_CONTENTBOT', 'AI_INSTALL_CONTENTBOT_WARNING', 1, $installer);
     // install search plugin
     JCommentsInstallerHelper::installPlugin('Search - JComments', 'jcomments', 'search', array(), 'AI_INSTALL_CONTENTSEARCHBOT', 'AI_INSTALL_CONTENTSEARCHBOT_WARNING', 1, $installer);
     // install system plugin
     JCommentsInstallerHelper::installPlugin('System - JComments', 'jcomments', 'system', array(), 'AI_INSTALL_SYSTEMBOT', 'AI_INSTALL_SYSTEMBOT_WARNING', 1, $installer);
     // install editor buttons
     JCommentsInstallerHelper::installPlugin('Editor Button - JComments ON', 'jcommentson', 'editors-xtd', array('jcommentson.gif'), '', '', 1, $installer);
     JCommentsInstallerHelper::installPlugin('Editor Button - JComments OFF', 'jcommentsoff', 'editors-xtd', array('jcommentsoff.gif'), '', '', 1, $installer);
     if (JCOMMENTS_JVERSION == '1.5') {
         // install user plugin
         JCommentsInstallerHelper::installPlugin('User - JComments', 'jcomments', 'user', array(), '', '', 1, $installer);
     }
     // Fix component menu icon
     if (JCOMMENTS_JVERSION == '1.0') {
         $menuiconpath = $mainframe->getCfg('absolute_path') . DS . 'includes' . DS . 'js' . DS . 'ThemeOffice';
         $adminIconsPath = '../administrator/components/com_jcomments/assets';
         if (is_writable($menuiconpath)) {
             $currentIconsPath = dirname(__FILE__) . DS . 'images';
             ob_start();
             $res1 = $res2 = $res3 = $res4 = $res5 = false;
             $res1 = @copy($currentIconsPath . DS . 'jcomments16x16.png', $menuiconpath . DS . 'jcomments16x16.png');
             $res2 = @copy($currentIconsPath . DS . 'import16x16.png', $menuiconpath . DS . 'import16x16.png');
             $res3 = @copy($currentIconsPath . DS . 'settings16x16.png', $menuiconpath . DS . 'settings16x16.png');
             $res4 = @copy($currentIconsPath . DS . 'smiles16x16.png', $menuiconpath . DS . 'smiles16x16.png');
             $res5 = @copy($currentIconsPath . DS . 'comments16x16.png', $menuiconpath . DS . 'comments16x16.png');
             $res6 = @copy($currentIconsPath . DS . 'subscriptions16x16.png', $menuiconpath . DS . 'subscriptions16x16.png');
             $res7 = @copy($currentIconsPath . DS . 'custombbcodes16x16.png', $menuiconpath . DS . 'custombbcodes16x16.png');
             ob_end_clean();
             $result = $res1 && $res2 && $res3 && $res4 && $res5 && $res6 && $res7;
             if ($result && is_file($menuiconpath . DS . 'jcomments16x16.png')) {
                 $adminIconsPath = 'js/ThemeOffice';
             }
         }
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/jcomments16x16.png' " . "\n WHERE admin_menu_link='option=com_jcomments'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/comments16x16.png', name='" . JText::_('AI_MENU_COMMENTS') . "'" . "\n WHERE admin_menu_link='option=com_jcomments&task=comments'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/settings16x16.png', name='" . JText::_('AI_MENU_SETTINGS') . "'" . "\n WHERE admin_menu_link='option=com_jcomments&task=settings'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/smiles16x16.png', name='" . JText::_('AI_MENU_SMILES') . "'" . "\n WHERE admin_menu_link='option=com_jcomments&task=smiles'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/subscriptions16x16.png', name='" . JText::_('AI_MENU_SUBSCRIPTIONS') . "'" . "\n WHERE admin_menu_link='option=com_jcomments&task=subscriptions'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/custombbcodes16x16.png', name='" . JText::_('Custom BBCode') . "'" . "\n WHERE admin_menu_link='option=com_jcomments&task=custombbcodes'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/import16x16.png', name='" . JText::_('AI_MENU_IMPORT') . "'" . "\n WHERE admin_menu_link='option=com_jcomments&task=import'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/jcomments16x16.png', name='" . JText::_('AI_MENU_ABOUT') . "'" . "\n WHERE admin_menu_link='option=com_jcomments&task=about'");
         @$db->query();
         // clear Joostina administrative menu cache
         if (function_exists('js_menu_cache_clear')) {
             @js_menu_cache_clear();
         }
     } else {
         $adminIconsPath = 'components/com_jcomments/assets';
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/jcomments16x16.png' WHERE admin_menu_link='option=com_jcomments' OR admin_menu_link='option=com_jcomments&task=about'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/comments16x16.png' WHERE admin_menu_link='option=com_jcomments&task=comments'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/settings16x16.png' WHERE admin_menu_link='option=com_jcomments&task=settings'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/smiles16x16.png' WHERE admin_menu_link='option=com_jcomments&task=smiles'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/subscriptions16x16.png' WHERE admin_menu_link='option=com_jcomments&task=subscriptions'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/custombbcodes16x16.png' WHERE admin_menu_link='option=com_jcomments&task=custombbcodes'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/import16x16.png' WHERE admin_menu_link='option=com_jcomments&task=import'");
         @$db->query();
     }
     $installer->addMessage(JText::_('AI_UPDATE_MENU_ICONS'), true);
     // update db tables
     $dbStructureChanged = version_compare($version, '2.2.0.0') <= 0;
     if ($dbStructureChanged) {
         require_once dirname(__FILE__) . DS . 'install' . DS . 'helpers' . DS . 'database.php';
         $upgradeStructure2000 = false;
         if (version_compare($version, '2.0.0.0') < 0) {
             // auto upgrade old table structure
             $upgradeStructure2000 = JCommentsInstallerDatabaseHelper::upgradeStructure();
         }
         $upgradeStructure2200 = JCommentsInstallerDatabaseHelper::upgradeStructure2200();
         if ($upgradeStructure2200) {
             // TODO upgrade tree structure during installation process
             // JCommentsInstallerDatabaseHelper::updateCommentsLevel();
             // JCommentsInstallerDatabaseHelper::updateCommentsPath();
         }
         if ($upgradeStructure2000 || $upgradeStructure2200) {
             $installer->addMessage(JText::_('AI_UPGRADE_TABLES'), true);
         }
     }
     // upgrade subscriptions to new comments
     $subscriptionsChanged = version_compare($version, '2.1.0.0') < 0;
     if ($subscriptionsChanged) {
         $upgradeSubs = JCommentsInstaller::upgradeSubscriptions($version);
         if ($upgradeSubs) {
             $installer->addMessage(JText::_('Upgrade subscriptions'), true);
         }
     }
     // collation synchronization (for MySQL 4.1.2 or higher)
     if (version_compare(preg_replace('~\\-.+?$~', '', $db->getVersion()), '4.1.2') >= 0) {
         require_once dirname(__FILE__) . DS . 'install' . DS . 'helpers' . DS . 'database.php';
         JCommentsInstallerDatabaseHelper::setupCollation();
     }
     $db->setQuery("SELECT `name`, `value` FROM `#__jcomments_settings`");
     $paramsList = $db->loadObjectList('name');
     if (count($paramsList) == 0) {
         $defaultSettings = dirname(__FILE__) . DS . 'install' . DS . 'sql' . DS . 'settings.sql';
         JCommentsInstaller::executeSQL($defaultSettings);
     } else {
         JCommentsInstaller::checkParam($paramsList, 'comment_title', '0');
         JCommentsInstaller::checkParam($paramsList, 'enable_custom_bbcode', '0');
         JCommentsInstaller::checkParam($paramsList, 'enable_bbcode_quote', 'Unregistered,Registered,Author,Editor,Publisher,Manager,Administrator,Super Administrator');
         JCommentsInstaller::checkParam($paramsList, 'notification_type', '1,2');
         JCommentsInstaller::checkParam($paramsList, 'captcha_engine', 'kcaptcha');
         JCommentsInstaller::checkParam($paramsList, 'comment_minlength', '0');
     }
     unset($paramsList);
     $joomfish = $mainframe->getCfg('absolute_path') . DS . 'components' . DS . 'com_joomfish' . DS . 'joomfish.php';
     if (is_file($joomfish)) {
         JCommentsInstaller::upgradeLanguages();
     }
     if (JCOMMENTS_JVERSION == '1.0') {
         // Update Artio JoomSEF configuration (add option to skip JComments urls)
         JCommentsInstaller::updateArtio();
     }
     $db->setQuery("SELECT COUNT(*) FROM `#__jcomments_custom_bbcodes`;");
     $cnt = $db->loadResult();
     if ($cnt == 0) {
         $sql = dirname(__FILE__) . DS . 'install' . DS . 'sql' . DS . 'custom_bbcodes.sql';
         JCommentsInstaller::executeSQL($sql);
     }
     $installer->showInstallLog();
     JCommentsCache::cleanCache('com_jcomments');
 }
 public static function postInstall()
 {
     $app = JCommentsFactory::getApplication('administrator');
     $db = JCommentsFactory::getDBO();
     $installer = new HTML_JCommentsInstaller();
     JCommentsInstallerHelper::extractJCommentsPlugins();
     // create database tables
     if (JCOMMENTS_JVERSION == '1.0') {
         $sql = dirname(__FILE__) . DS . 'install' . DS . 'sql' . DS . 'install.mysql.nonutf8.sql';
         JCommentsInstaller::executeSQL($sql);
         // collation synchronization (for MySQL 4.1.2 or higher)
         if (version_compare(preg_replace('~\\-.+?$~', '', $db->getVersion()), '4.1.2') >= 0) {
             JCommentsInstallerDatabaseHelper::setupCollation();
         }
     } else {
         $config = JFactory::getConfig();
         $app = JFactory::getApplication();
         @ob_start();
         if ($config->getValue('config.legacy')) {
             $installSQL = dirname(__FILE__) . DS . 'install' . DS . 'sql' . DS . 'install.mysql.utf8.sql';
             JCommentsInstaller::executeSQL($installSQL);
         }
         jimport('joomla.filesystem.folder');
         jimport('joomla.filesystem.file');
         $jomSocialRuleSrc = dirname(__FILE__) . DS . 'install' . DS . 'xml' . DS . 'jomsocial_rule.xm';
         $jomSocialRuleDst = JCOMMENTS_BASE . DS . 'jomsocial_rule.xml';
         if (!is_file($jomSocialRuleDst)) {
             JFile::copy($jomSocialRuleSrc, $jomSocialRuleDst);
         }
         if (is_dir(JCOMMENTS_BASE . DS . 'languages')) {
             JFolder::delete(JCOMMENTS_BASE . DS . 'languages');
         }
         if (is_file(JCOMMENTS_BASE . DS . 'plugins' . DS . 'plugins.zip')) {
             JFile::delete(JCOMMENTS_BASE . DS . 'plugins' . DS . 'plugins.zip');
         }
         @ob_end_clean();
         $app->setUserState('com_installer.message', '');
         $app->setUserState('com_installer.extension_message', '');
         $app->setUserState('com_installer.redirect_url', '');
     }
     $jxml10 = dirname(__FILE__) . DS . 'jcomments10.xml';
     $jxml15 = dirname(__FILE__) . DS . 'jcomments15.xml';
     $jxml = dirname(__FILE__) . DS . 'jcomments.xml';
     if (is_file($jxml10)) {
         @rename($jxml10, $jxml);
     } else {
         if (is_file($jxml15)) {
             @rename($jxml15, $jxml);
             // fix version in xml manifest file
             if (JCOMMENTS_JVERSION == '1.7') {
                 $contents = str_replace('1.5.0', '1.7.0', implode('', file($jxml)));
                 $fh = fopen($jxml, 'w');
                 if ($fh) {
                     fputs($fh, $contents);
                     fclose($fh);
                 }
             }
         }
     }
     unset($jxml10, $jxml15, $jxml);
     if (JCOMMENTS_JVERSION != '1.7') {
         // remove files from previous version
         $files = array(dirname(__FILE__) . DS . 'admin.jcomments.subcription.php', dirname(__FILE__) . DS . 'table' . DS . 'custombbcodes.php', JCOMMENTS_BASE . DS . 'model' . DS . 'index.html', JCOMMENTS_BASE . DS . 'model' . DS . 'jcomments.php', JCOMMENTS_BASE . DS . 'model');
         foreach ($files as $file) {
             if (is_file($file)) {
                 @unlink($file);
             } else {
                 if (is_dir($file)) {
                     @rmdir($file);
                 }
             }
         }
     }
     // small stuff for future update system
     $db->setQuery('SELECT `version` FROM `#__jcomments_version`');
     $version = $db->loadResult();
     require_once dirname(__FILE__) . DS . 'version.php';
     $jcommentsVersion = new JCommentsVersion();
     $currentVersion = $jcommentsVersion->getVersion();
     $currentDate = date('Y-m-d H:i:s');
     if (empty($version)) {
         $db->setQuery("INSERT IGNORE INTO `#__jcomments_version` (`version`,`installed`) VALUES ('{$currentVersion}', '{$currentDate}')");
         @$db->query();
         // if version isn't specified - we think that it was 2.2.0.0 or earlier...
         $version = '2.2.0.0';
     } else {
         $db->setQuery("UPDATE `#__jcomments_version` SET `version` = '{$currentVersion}', `updated` = '{$currentDate}';");
         @$db->query();
     }
     // install content plugin
     $result = JCommentsInstallerHelper::installPlugin('Content - JComments', 'jcomments', 'content');
     $installer->addMessage(JText::_('A_INSTALL_PLUGIN_CONTENT'), $result);
     // install search plugin
     $result = JCommentsInstallerHelper::installPlugin('Search - JComments', 'jcomments', 'search');
     $installer->addMessage(JText::_('A_INSTALL_PLUGIN_SEARCH'), $result);
     // install system plugin
     $result = JCommentsInstallerHelper::installPlugin('System - JComments', 'jcomments', 'system');
     $installer->addMessage(JText::_('A_INSTALL_PLUGIN_SYSTEM'), $result);
     // install editor buttons
     $result = JCommentsInstallerHelper::installPlugin('Editor Button - JComments ON', 'jcommentson', 'editors-xtd', array('jcommentson.gif'));
     $result = $result && JCommentsInstallerHelper::installPlugin('Editor Button - JComments OFF', 'jcommentsoff', 'editors-xtd', array('jcommentsoff.gif'));
     $installer->addMessage(JText::_('A_INSTALL_PLUGIN_EDITORS_XTD'), $result);
     if (JCOMMENTS_JVERSION != '1.0') {
         // install user plugin
         $result = JCommentsInstallerHelper::installPlugin('User - JComments', 'jcomments', 'user');
         $installer->addMessage(JText::_('A_INSTALL_PLUGIN_USER'), $result);
     }
     // Fix component menu icon
     if (JCOMMENTS_JVERSION == '1.0') {
         $menuiconpath = $app->getCfg('absolute_path') . DS . 'includes' . DS . 'js' . DS . 'ThemeOffice';
         $adminIconsPath = '../administrator/components/com_jcomments/assets';
         if (is_writable($menuiconpath)) {
             $currentIconsPath = dirname(__FILE__) . DS . 'images';
             ob_start();
             $res1 = @copy($currentIconsPath . DS . 'icon-16-jcomments.png', $menuiconpath . DS . 'icon-16-jcomments.png');
             $res2 = @copy($currentIconsPath . DS . 'icon-16-import.png', $menuiconpath . DS . 'icon-16-import.png');
             $res3 = @copy($currentIconsPath . DS . 'icon-16-settings.png', $menuiconpath . DS . 'icon-16-settings.png');
             $res4 = @copy($currentIconsPath . DS . 'icon-16-smiles.png', $menuiconpath . DS . 'icon-16-smiles.png');
             $res5 = @copy($currentIconsPath . DS . 'icon-16-comments.png', $menuiconpath . DS . 'icon-16-comments.png');
             $res6 = @copy($currentIconsPath . DS . 'icon-16-subscriptions.png', $menuiconpath . DS . 'icon-16-subscriptions.png');
             $res7 = @copy($currentIconsPath . DS . 'icon-16-custombbcodes.png', $menuiconpath . DS . 'icon-16-custombbcodes.png');
             $res8 = @copy($currentIconsPath . DS . 'icon-16-blacklist.png', $menuiconpath . DS . 'icon-16-blacklist.png');
             ob_end_clean();
             $result = $res1 && $res2 && $res3 && $res4 && $res5 && $res6 && $res7 && $res8;
             if ($result && is_file($menuiconpath . DS . 'jcomments16x16.png')) {
                 $adminIconsPath = 'js/ThemeOffice';
             }
         }
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/icon-16-jcomments.png' " . "\n WHERE admin_menu_link='option=com_jcomments'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/icon-16-comments.png', name='" . JText::_('A_SUBMENU_COMMENTS') . "'" . "\n WHERE admin_menu_link='option=com_jcomments&task=comments'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/icon-16-settings.png', name='" . JText::_('A_SUBMENU_SETTINGS') . "'" . "\n WHERE admin_menu_link='option=com_jcomments&task=settings'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/icon-16-smiles.png', name='" . JText::_('A_SUBMENU_SMILES') . "'" . "\n WHERE admin_menu_link='option=com_jcomments&task=smiles'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/icon-16-subscriptions.png', name='" . JText::_('A_SUBMENU_SUBSCRIPTIONS') . "'" . "\n WHERE admin_menu_link='option=com_jcomments&task=subscriptions'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/icon-16-custombbcodes.png', name='" . JText::_('A_SUBMENU_CUSTOM_BBCODE') . "'" . "\n WHERE admin_menu_link='option=com_jcomments&task=custombbcodes'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/icon-16-blacklist.png', name='" . JText::_('A_SUBMENU_BLACKLIST') . "'" . "\n WHERE admin_menu_link='option=com_jcomments&task=blacklist'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/icon-16-import.png', name='" . JText::_('A_SUBMENU_IMPORT') . "'" . "\n WHERE admin_menu_link='option=com_jcomments&task=import'");
         @$db->query();
         $db->setQuery("UPDATE #__components SET admin_menu_img='{$adminIconsPath}/icon-16-jcomments.png', name='" . JText::_('A_SUBMENU_ABOUT') . "'" . "\n WHERE admin_menu_link='option=com_jcomments&task=about'");
         @$db->query();
     }
     if (version_compare($version, '2.3.0', 'le')) {
         // update db tables
         if (JCommentsInstallerDatabaseHelper::upgradeStructure()) {
             $installer->addMessage(JText::_('A_INSTALL_UPGRADE_TABLES'), true);
         }
         JCommentsInstallerDatabaseHelper::updateJoomGallery();
         if (JCOMMENTS_JVERSION != '1.7') {
             $db->setQuery("UPDATE `#__jcomments_settings` SET `value` = REPLACE(`value`, 'Unregistered', 'Public') ");
             $db->query();
             $db->setQuery("UPDATE `#__jcomments_settings` SET `value` = REPLACE(`value`, 'Super Administrator', 'Super Users') ");
             $db->query();
             $db->setQuery("UPDATE `#__jcomments_custom_bbcodes` SET `button_acl` = REPLACE(`button_acl`, 'Unregistered', 'Public') ");
             $db->query();
             $db->setQuery("UPDATE `#__jcomments_custom_bbcodes` SET `button_acl` = REPLACE(`button_acl`, 'Super Administrator', 'Super Users') ");
             $db->query();
         }
     }
     if (isset($_COOKIE['jcommentsadmin_group'])) {
         if (!headers_sent()) {
             setcookie('jcommentsadmin_group', '', time() - 3600, '/');
         }
         unset($_COOKIE['jcommentsadmin_group']);
     }
     $db->setQuery("SELECT `name`, `value` FROM `#__jcomments_settings`");
     $paramsList = $db->loadObjectList('name');
     if (count($paramsList) == 0) {
         $defaultSettings = dirname(__FILE__) . DS . 'install' . DS . 'sql' . DS . 'settings.sql';
         JCommentsInstaller::executeSQL($defaultSettings);
     } else {
         JCommentsInstaller::checkParam($paramsList, 'delete_mode', '0');
         JCommentsInstaller::checkParam($paramsList, 'can_publish_for_my_object', '');
         JCommentsInstaller::checkParam($paramsList, 'can_edit_for_my_object', '');
         JCommentsInstaller::checkParam($paramsList, 'can_delete_for_my_object', '');
         JCommentsInstaller::checkParam($paramsList, 'enable_blacklist', '0');
         JCommentsInstaller::checkParam($paramsList, 'can_ban', 'Administrator,Super Administrator');
         JCommentsInstaller::checkParam($paramsList, 'feed_limit', '100');
         JCommentsInstaller::checkParam($paramsList, 'report_reason_required', '1');
         if (version_compare($version, '2.2.0.0') <= 0) {
             $smilesPath = DS . 'components' . DS . 'com_jcomments' . DS . 'images' . DS . 'smiles' . DS;
             JCommentsInstaller::checkParam($paramsList, 'smiles_path', $smilesPath, true);
         }
     }
     unset($paramsList);
     if (JCOMMENTS_JVERSION == '1.7') {
         // TODO remove this hack
         JCommentsInstallerHelper::fixComponentName();
     }
     JCommentsInstallerHelper::fixUsergroups();
     $joomfish = $app->getCfg('absolute_path') . DS . 'components' . DS . 'com_joomfish' . DS . 'joomfish.php';
     if (is_file($joomfish) || JCommentsMultilingual::isEnabled()) {
         JCommentsInstaller::upgradeLanguages();
     }
     $db->setQuery("SELECT COUNT(*) FROM `#__jcomments_custom_bbcodes`;");
     $cnt = $db->loadResult();
     if ($cnt == 0) {
         $sql = dirname(__FILE__) . DS . 'install' . DS . 'sql' . DS . 'custom_bbcodes.sql';
         JCommentsInstaller::executeSQL($sql);
     }
     JCommentsInstallerHelper::fixCustomBBCodeACL();
     $installer->showInstallLog();
     $cache = JCommentsFactory::getCache('com_jcomments');
     $cache->clean();
 }