AnonSec Shell
Server IP : 54.36.91.62  /  Your IP : 216.73.217.112
Web Server : Apache
System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User : coopiak ( 151928)
PHP Version : 8.3.23
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/coopiak/amisdesseniors-fr/nimes/administrator/components/com_rsfeedback/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/coopiak/amisdesseniors-fr/nimes/administrator/components/com_rsfeedback/script.php
<?php
/**
* @package RSFeedback!
* @copyright (C) 2010-2018 www.rsjoomla.com
* @license GPL, http://www.gnu.org/copyleft/gpl.html
*/

defined( '_JEXEC' ) or die( 'Restricted access' );

use Joomla\CMS\Installer\Installer;
use Joomla\CMS\Language\Text;
use Joomla\Registry\Registry;
use Joomla\Filesystem\File;
use Joomla\CMS\Uri\Uri;
use Joomla\CMS\Factory;

class com_rsfeedbackInstallerScript 
{
	protected $defaultConfigJson = '{"global_register_code":"","global_dateformat":"d.m.Y H:i","load_bootstrap":"1","load_fontawesome":"1","enable_html":"0","enable_html_buttons":"0","enable_rss":"1","advanced_sef":"1","store_ip":"1","allow_self_anonymisation":"1","anonymise_joomla_data":"1","feedback_titlemaxlength":"120","user_maxvotes":"12","user_reset_period":"0","display_reset_my_votes":"0","reset_my_votes_condition":"all","permission_show_facebook":"1","permission_show_twitter":"1","permission_show_blogger":"1","permission_show_reddit":"1","permission_show_linkedin":"1","permission_show_pinterest":"1","feedback_commenting":"1","permission_show_subscriptions":"1","permission_show_gravatar":"1","captcha":"0","captcha_chars":5,"captcha_cases":"0","rec_public":"","rec_private":"","rec_themes":"red","recv2_theme":"light","recv2_type":"image","feedback_moderation_emails":"","category_moderation_emails":"","user_display":"0"}';
	
	public function preflight($type, $parent)
	{
		try
		{
			$minJoomla = '3.9.0';

			if (!class_exists('\\Joomla\\CMS\\Version'))
			{
				throw new Exception(sprintf('Please upgrade to at least Joomla! %s before continuing!', $minJoomla));
			}

			$jversion = new \Joomla\CMS\Version;
			if (!$jversion->isCompatible($minJoomla))
			{
				throw new Exception(sprintf('Please upgrade to at least Joomla! %s before continuing!', $minJoomla));
			}
		}
		catch (Exception $e)
		{
			if (class_exists('\Joomla\CMS\Factory'))
			{
				$app = \Joomla\CMS\Factory::getApplication();
			}
            elseif (class_exists('JFactory'))
			{
				$app = JFactory::getApplication();
			}

			if (!empty($app))
			{
				$app->enqueueMessage($e->getMessage(), 'error');
			}
			return false;
		}

		return true;
	}

	public function postflight($type, $parent) {
		$db 	= Factory::getDbo();
		$query  = $db->getQuery(true);
		$source = $parent->getParent()->getPath('source');

		$lang 		= Factory::getLanguage();
		$lang->load('com_rsfeedback');

        $plugins = array(
            'plg_system' => array(
                'name'      => 'System - RSFeedback!',
                'core'      => true,
                'group'     => 'system',
                'element'   => 'rsfeedback',
                'result'    => false
            ),
            'plg_installer' => array(
                'name'      => 'Installer - RSFeedback!',
                'core'      => true,
                'group'     => 'installer',
                'element'   => 'rsfeedback',
                'result'    => false
            ),
            'plg_privacy' => array(
                'name'      => 'Privacy - RSFeedback!',
                'core'      => true,
                'group'     => 'privacy',
                'element'   => 'rsfeedback',
                'result'    => false
            )
        );

        foreach ($plugins as $plugin => $data)
        {
            $installer = new Installer();

            if ($installer->install($source.'/other/' . $plugin))
            {
                if ($data['core'])
                {
                    $query->clear();
                    $query->update($db->qn('#__extensions'))
                        ->set($db->qn('enabled').'='.$db->q(1))
                        ->where($db->qn('element').'='.$db->q($data['element']))
                        ->where($db->qn('type').'='.$db->q('plugin'))
                        ->where($db->qn('folder').'='.$db->q($data['group']));
                    $db->setQuery($query);
                    $db->execute();
                }

                $plugins[$plugin]['result'] = true;
            }
        }

		if ($type == 'install') {
			$default = $this->defaultConfigJson;
			
			$this->UpdateParamsColumn($default);
		}

        if ($type == 'install' || $type == 'update') {
	        // show message
	        $this->showInstallMessage($plugins);
        }
	}

	public function update($parent) {
		$db 		= Factory::getDbo();
		$query 		= $db->getQuery(true);
		$installer 	= new Installer();
		$source 	= $parent->getParent()->getPath('source');
		$tables		= $db->getTableList();
		
		/* 
		// Rev. 5 
		// delete old configuration table and move parameters to #__extensions->params 
		// renaming column names
		// changing the translastion values of statuses and flags (from RSFE_ to COM_RSFEEDBACK_)
		// #__rsfeedback_groups_acl and #__rsfeedback_group_permissions integrated in #__rsfeedback_groups 
		// the Feedback Button is transformed from system plugin to module
		*/

		
		if (in_array($db->getPrefix().'rsfeedback_config', $tables)) {
			$default_configuration = $this->defaultConfigJson;

			// render the default configuration to an array so it can be merged
			$registry = new Registry;
			$registry->loadString($default_configuration);
			$default_configuration = $registry->toArray();

			// get current configuration
			$query->select('*')->from($db->qn('#__rsfeedback_config'));
			$db->setQuery($query);
			$current_configuration = $db->loadObjectList();
			$query->clear();

			// renaming the paramaters names
			$rsfeedback_params = array();
			foreach ($current_configuration as $param) {
				if ($param->ConfigName == 'feedback.moderation') 				$rsfeedback_params['feedback_moderation_emails'] = $param->ConfigValue;
				elseif ($param->ConfigName == 'category.moderation') 			$rsfeedback_params['category_moderation_emails'] = $param->ConfigValue;
				elseif ($param->ConfigName == 'permission.showtwitter') 		$rsfeedback_params['permission_show_twitter'] = $param->ConfigValue;
				elseif ($param->ConfigName == 'permission.showfacebook') 		$rsfeedback_params['permission_show_facebook'] = $param->ConfigValue;
				elseif ($param->ConfigName == 'permission.showsubscriptions') 	$rsfeedback_params['permission_show_subscriptions'] = $param->ConfigValue;
				elseif ($param->ConfigName == 'category.nrvotes' || $param->ConfigName == 'feedback.layout' || $param->ConfigName == 'permission.feedbackcaptcha' || $param->ConfigName == 'permission.anonymousfeedbacks' || $param->ConfigName == 'permission.anonymousvoting' || $param->ConfigName == 'captcha_group' || $param->ConfigName == 'enable.popup' || $param->ConfigName == 'popup.limit' || $param->ConfigName == 'popup.modal' || $param->ConfigName == 'popup.position' || $param->ConfigName == 'popup.color' || $param->ConfigName == 'popup.text' || $param->ConfigName == 'popup.color.hover') 
					continue;
				else 
					$rsfeedback_params[str_replace('.','_',$param->ConfigName)] = $param->ConfigValue;
			}

			// merge the default settings with the current settings
			$params = array_merge($default_configuration, $rsfeedback_params);

			// transform array to string
			$registry->loadArray($default_configuration);
			$rsfeedback_config = $registry->toString();

			// update extensions-> params
			$this->UpdateParamsColumn($rsfeedback_config);

			// Remove the config table
			$db->setQuery("DROP TABLE IF EXISTS `#__rsfeedback_config`");
			$db->execute();
		}

		// update column names 
		// rsfeedback_auto_moderation table

		$moderation_columns = $db->getTableColumns('#__rsfeedback_auto_moderation');
		if (isset($moderation_columns['IdRule'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_auto_moderation').' CHANGE '.$db->qn('IdRule').' '.$db->qn('id').' INT( 11 ) NOT NULL AUTO_INCREMENT');
			$db->execute();
		}
		if (isset($moderation_columns['RuleName'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_auto_moderation').' CHANGE '.$db->qn('RuleName').' '.$db->qn('name').' VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL');
			$db->execute();
		}
		if (isset($moderation_columns['RuleLabel'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_auto_moderation').' CHANGE '.$db->qn('RuleLabel').' '.$db->qn('label').' TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL');
			$db->execute();
		}
		if (isset($moderation_columns['IdFlag'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_auto_moderation').' CHANGE '.$db->qn('IdFlag').' '.$db->qn('flag_id').' INT( 11 ) NOT NULL');
			$db->execute();
		}
		if (isset($moderation_columns['Limit'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_auto_moderation').' CHANGE '.$db->qn('Limit').' '.$db->qn('limit').' INT( 11 ) NOT NULL');
			$db->execute();
		}
		if (isset($moderation_columns['Action'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_auto_moderation').' CHANGE '.$db->qn('Action').' '.$db->qn('action').' INT( 4 ) NOT NULL');
			$db->execute();
		}
		if (isset($moderation_columns['Target'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_auto_moderation').' CHANGE '.$db->qn('Target').' '.$db->qn('target').' INT( 4 ) NOT NULL');
			$db->execute();
		}
		
		// rsfeedback_categories table
		
		$categories_columns = $db->getTableColumns('#__rsfeedback_categories');
		if (isset($categories_columns['IdCategory'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_categories').' CHANGE '.$db->qn('IdCategory').' '.$db->qn('id').' INT( 11 ) NOT NULL AUTO_INCREMENT');
			$db->execute();
		}
		if (isset($categories_columns['CategoryTitle'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_categories').' CHANGE '.$db->qn('CategoryTitle').' '.$db->qn('name').' VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL');
			$db->execute();
		}
		if (isset($categories_columns['CategoryDescription'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_categories').' CHANGE '.$db->qn('CategoryDescription').' '.$db->qn('description').' TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL');
			$db->execute();
		}
		if (isset($categories_columns['MaxAllowedVotes'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_categories').' CHANGE '.$db->qn('MaxAllowedVotes').' '.$db->qn('max_votes_allowed').' INT( 11 ) NOT NULL');
			$db->execute();
		}
		if (isset($categories_columns['AnonymousVoting'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_categories').' CHANGE '.$db->qn('AnonymousVoting').' '.$db->qn('anonymous_voting').' TINYINT( 1 ) NOT NULL');
			$db->execute();
		}
		if (isset($categories_columns['AnonymousFeedbacks'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_categories').' CHANGE '.$db->qn('AnonymousFeedbacks').' '.$db->qn('anonymous_feedbacks').' tinyint( 1 ) NOT NULL');
			$db->execute();
		}
		if (isset($categories_columns['VotingCaptcha'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_categories').' DROP `VotingCaptcha`');
			$db->execute();
		}
		if (isset($categories_columns['FeedbackCaptcha'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_categories').' DROP `FeedbackCaptcha`');
			$db->execute();
		}

		// rsfeedback_comments table 
		$comments_columns = $db->getTableColumns('#__rsfeedback_comments');
		if (isset($comments_columns['IdComment'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_comments').' CHANGE '.$db->qn('IdComment').' '.$db->qn('id').' INT( 11 ) NOT NULL AUTO_INCREMENT');
			$db->execute();
		}
		if (isset($comments_columns['IdFeedback'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_comments').' CHANGE '.$db->qn('IdFeedback').' '.$db->qn('feedback_id').' INT( 11 ) NOT NULL');
			$db->execute();
		}
		if (isset($comments_columns['CommentName'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_comments').' CHANGE '.$db->qn('CommentName').' '.$db->qn('name').' VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL');
			$db->execute();
		}
		if (isset($comments_columns['CommentEmail'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_comments').' CHANGE '.$db->qn('CommentEmail').' '.$db->qn('email').' VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL');
			$db->execute();
		}
		if (isset($comments_columns['CommentText'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_comments').' CHANGE '.$db->qn('CommentText').' '.$db->qn('text').' TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL');
			$db->execute();
		}
		
		if (isset($comments_columns['CommentDate'])) {
			$db->setQuery("ALTER TABLE ".$db->qn('#__rsfeedback_comments')." CHANGE ".$db->qn('CommentDate')." ".$db->qn('date')." VARCHAR(255) NOT NULL");
			$db->execute();
			
			// convert the date
			$query = $db->getQuery(true);
			$query->update('#__rsfeedback_comments')
				  ->set($db->qn('date')."=FROM_UNIXTIME(".$db->qn('date').")");
			$db->setQuery($query);
			$db->execute();
			
			$db->setQuery("UPDATE #__rsfeedback_comments SET `date` = '0000-00-00 00:00:00' WHERE `date` = '1970-01-01 02:00:00'");
			$db->execute(); 
			
			// change the column type
			$db->setQuery("ALTER TABLE ".$db->qn('#__rsfeedback_comments')." CHANGE ".$db->qn('date')." ".$db->qn('date')." DATETIME NOT NULL");
			$db->execute();
		}

		// rsfeedback_feedbacks table

		$feedback_columns = $db->getTableColumns('#__rsfeedback_feedbacks');
		if(!isset($feedback_columns['hits'])) {
			$db->setQuery("ALTER TABLE ".$db->qn('#__rsfeedback_feedbacks')." ADD ".$db->qn('hits')." INT(11) NOT NULL DEFAULT '0'");
			$db->execute();
		}
		
		if(!isset($feedback_columns['name'])) {
			$db->setQuery("ALTER TABLE ".$db->qn('#__rsfeedback_feedbacks')." ADD ".$db->qn('name')." VARCHAR(255) NOT NULL DEFAULT ''");
			$db->execute();
		}

		if (isset($feedback_columns['IdFeedback'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_feedbacks').' CHANGE '.$db->qn('IdFeedback').' '.$db->qn('id').' INT( 11 ) NOT NULL AUTO_INCREMENT');
			$db->execute();
		}
		if (isset($feedback_columns['IdCategory'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_feedbacks').' CHANGE '.$db->qn('IdCategory').' '.$db->qn('cat_id').' INT( 11 ) NOT NULL');
			$db->execute();
		}
		if (isset($feedback_columns['IdStatus'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_feedbacks').' CHANGE '.$db->qn('IdStatus').' '.$db->qn('status_id').' INT( 11 ) NOT NULL');
			$db->execute();
		}
		if (isset($feedback_columns['IdUser'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_feedbacks').' CHANGE '.$db->qn('IdUser').' '.$db->qn('user_id').' INT( 11 ) NOT NULL');
			$db->execute();
		}
		if (isset($feedback_columns['FeedbackTitle'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_feedbacks').' CHANGE '.$db->qn('FeedbackTitle').' '.$db->qn('title').' VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL');
			$db->execute();
		}
		if (isset($feedback_columns['FeedbackText'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_feedbacks').' CHANGE '.$db->qn('FeedbackText').' '.$db->qn('text').' TEXT NOT NULL');
			$db->execute();
		}
		if (isset($feedback_columns['FeedbackDate'])) {
			$db->setQuery("ALTER TABLE ".$db->qn('#__rsfeedback_feedbacks')." CHANGE ".$db->qn('FeedbackDate')." ".$db->qn('created')." VARCHAR(255) NOT NULL");
			$db->execute();
			
			// convert the date
			$query = $db->getQuery(true);
			$query->update('#__rsfeedback_feedbacks')
				  ->set($db->qn('created')."=FROM_UNIXTIME(".$db->qn('created').")");
			$db->setQuery($query);
			$db->execute();
			
			$db->setQuery("UPDATE #__rsfeedback_feedbacks SET `created` = '0000-00-00 00:00:00' WHERE `created` = '1970-01-01 02:00:00'");
			$db->execute(); 
			
			// change the column type
			$db->setQuery("ALTER TABLE ".$db->qn('#__rsfeedback_feedbacks')." CHANGE ".$db->qn('created')." ".$db->qn('created')." DATETIME NOT NULL");
			$db->execute();
		}
		if (isset($feedback_columns['FeedbackArchive'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_feedbacks').' DROP `FeedbackArchive`');
			$db->execute();
		}

		// rsfeedback_flags table
		
		$flags_columns = $db->getTableColumns('#__rsfeedback_flags');
		if (isset($flags_columns['IdFlag'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_flags').' CHANGE '.$db->qn('IdFlag').' '.$db->qn('id').' INT( 11 ) NOT NULL AUTO_INCREMENT');
			$db->execute();
		}
		if (isset($flags_columns['FlagName'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_flags').' CHANGE '.$db->qn('FlagName').' '.$db->qn('name').' VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL');
			$db->execute();
		}
		if (isset($flags_columns['Default'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_flags').' CHANGE '.$db->qn('Default').' '.$db->qn('default').' TINYINT(4) NOT NULL');
			$db->execute();
		}

		// rsfeedback_statuses table

		$statuses_columns = $db->getTableColumns('#__rsfeedback_statuses');
		if (isset($statuses_columns['IdStatus'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_statuses').' CHANGE '.$db->qn('IdStatus').' '.$db->qn('id').' INT( 11 ) NOT NULL AUTO_INCREMENT');
			$db->execute();
		}
		if (isset($statuses_columns['StatusName'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_statuses').' CHANGE '.$db->qn('StatusName').' '.$db->qn('name').' VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL');
			$db->execute();
		}
		if (isset($statuses_columns['Default'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_statuses').' CHANGE '.$db->qn('Default').' '.$db->qn('default').' TINYINT(4) NOT NULL');
			$db->execute();
		}
		if (!isset($statuses_columns['permissions'])) {
			$db->setQuery("ALTER TABLE ".$db->qn('#__rsfeedback_statuses')." ADD ".$db->qn('permissions')." TEXT NOT NULL AFTER ".$db->qn('name'));
			$db->execute();

			// update status permissions
			$query->clear();
			$query->select('*')->from($db->qn('#__rsfeedback_statuses'))->order($db->qn('id').' ASC');
			$db->setQuery($query);
			$statuses = $db->loadObjectList();
			foreach ($statuses as $status) {
				if ( in_array($status->id, array(3,4)) ) 
					$allow_voting = 0;
				else 
					$allow_voting = 1;

				$query->clear()->update($db->qn('#__rsfeedback_statuses'))->set($db->qn('permissions').'='.$db->q('{"allow_voting":"'.$allow_voting.'","allow_commenting":"1", "automatically_remove_votes":"0"}'))->where($db->qn('id').'='.$db->q($status->id));
				$db->setQuery($query);
				$db->execute();
			}
		}
        if (!isset($statuses_columns['icon'])) {
            $db->setQuery("ALTER TABLE ".$db->qn('#__rsfeedback_statuses')." ADD ".$db->qn('icon')." VARCHAR(32) NOT NULL AFTER ".$db->qn('name'));
            $db->execute();

            $query->clear();
            $query->select('*')->from($db->qn('#__rsfeedback_statuses'))->order($db->qn('id').' ASC');
            $db->setQuery($query);
            $statuses = $db->loadObjectList();
            $status_icons = ['None' => 'clock-o', 'Accepted' => 'thumbs-o-up', 'Declined' => 'thumbs-o-down', 'Completed' => 'check'];
            foreach ($statuses as $status) {
                $query->clear()->update($db->qn('#__rsfeedback_statuses'))->set($db->qn('icon').'='.$db->q($status_icons[$status->name]))->where($db->qn('id').'='.$db->q($status->id));
                $db->setQuery($query);
                $db->execute();
            }
        }

		// rsfeedback_subscriptions table

		$subscriptions_columns = $db->getTableColumns('#__rsfeedback_subscriptions');
		if (isset($subscriptions_columns['IdSubscription'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_subscriptions').' CHANGE '.$db->qn('IdSubscription').' '.$db->qn('id').' INT(11) NOT NULL AUTO_INCREMENT');
			$db->execute();
		}
		if (isset($subscriptions_columns['IdFeedback'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_subscriptions').' CHANGE '.$db->qn('IdFeedback').' '.$db->qn('feedback_id').' INT(11) NOT NULL');
			$db->execute();
		}

		// rsfeedback_user_flags table
		
		$user_flags_columns = $db->getTableColumns('#__rsfeedback_user_flags');
		if (isset($user_flags_columns['IdUserFlag'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_user_flags').' CHANGE '.$db->qn('IdUserFlag').' '.$db->qn('id').' INT(11) NOT NULL AUTO_INCREMENT');
			$db->execute();
		}
		if (isset($user_flags_columns['IdFeedback'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_user_flags').' CHANGE '.$db->qn('IdFeedback').' '.$db->qn('feedback_id').' INT(11) NOT NULL');
			$db->execute();
		}
		if (isset($user_flags_columns['IdUser'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_user_flags').' CHANGE '.$db->qn('IdUser').' '.$db->qn('user_id').' INT(11) NOT NULL');
			$db->execute();
		}
		if (isset($user_flags_columns['IdFlag'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_user_flags').' CHANGE '.$db->qn('IdFlag').' '.$db->qn('flag_id').' INT(11) NOT NULL');
			$db->execute();
		}
		if (isset($user_flags_columns['Comment'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_user_flags').' CHANGE '.$db->qn('Comment').' '.$db->qn('comment').' TEXT NOT NULL');
			$db->execute();
		}

		// rsfeedback_user_votes table
		
		$user_votes_columns = $db->getTableColumns('#__rsfeedback_user_votes');
		if (isset($user_votes_columns['IdVote'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_user_votes').' CHANGE '.$db->qn('IdVote').' '.$db->qn('id').' INT(11) NOT NULL AUTO_INCREMENT');
			$db->execute();
		}
		if (isset($user_votes_columns['IdFeedback'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_user_votes').' CHANGE '.$db->qn('IdFeedback').' '.$db->qn('feedback_id').' INT(11) NOT NULL');
			$db->execute();
		}
		if (isset($user_votes_columns['IdUser'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_user_votes').' CHANGE '.$db->qn('IdUser').' '.$db->qn('user_id').' INT(11) NOT NULL');
			$db->execute();
		}
		if (isset($user_votes_columns['NumberPoints'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_user_votes').' CHANGE '.$db->qn('NumberPoints').' '.$db->qn('number_points').' INT(11) NOT NULL');
			$db->execute();
		}
		if (isset($user_votes_columns['VoteDate'])) {
			$db->setQuery("ALTER TABLE ".$db->qn('#__rsfeedback_user_votes')." CHANGE ".$db->qn('VoteDate')." ".$db->qn('date_voted')." VARCHAR(255) NOT NULL");
			$db->execute();
			
			// convert the date
			$query = $db->getQuery(true);
			$query->update('#__rsfeedback_user_votes')
				  ->set($db->qn('date_voted')."=FROM_UNIXTIME(".$db->qn('date_voted').")");
			$db->setQuery($query);
			$db->execute();
			
			$db->setQuery("UPDATE #__rsfeedback_user_votes SET `date_voted` = '0000-00-00 00:00:00' WHERE `date_voted` = '1970-01-01 02:00:00'");
			$db->execute(); 
			
			// change the column type
			$db->setQuery("ALTER TABLE ".$db->qn('#__rsfeedback_user_votes')." CHANGE ".$db->qn('date_voted')." ".$db->qn('date_voted')." DATETIME NOT NULL");
			$db->execute();
		}
		if (isset($user_votes_columns['IpAddress'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_user_votes').' CHANGE '.$db->qn('IpAddress').' '.$db->qn('ip').' VARCHAR(50) NOT NULL ');
			$db->execute();
		}
		if (!isset($user_votes_columns['hash'])) {
			$db->setQuery("ALTER TABLE ".$db->qn('#__rsfeedback_user_votes')." ADD ".$db->qn('hash')." VARCHAR(32) NOT NULL DEFAULT '' ");
			$db->execute();
			$db->setQuery("UPDATE ".$db->qn('#__rsfeedback_user_votes')." SET ".$db->qn('hash')." = MD5(".$db->qn('ip').")");
			$db->execute();
		}

		// rsfeedback_groups table
		$groups_columns = $db->getTableColumns('#__rsfeedback_groups');
		if (isset($groups_columns['IdGroup'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_groups').' CHANGE '.$db->qn('IdGroup').' '.$db->qn('id').' INT( 11 ) NOT NULL AUTO_INCREMENT');
			$db->execute();
		}
		if (isset($groups_columns['GroupName'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_groups').' CHANGE '.$db->qn('GroupName').' '.$db->qn('name').' VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL');
			$db->execute();
		}
		
		// changing column names
		if (!isset($groups_columns['group_acl'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_groups').' 
			ADD '.$db->qn('group_acl').' VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER '.$db->qn('name').', 
			ADD '.$db->qn('feedback_add').' TINYINT(4) NOT NULL AFTER '.$db->qn('group_acl').', 
			ADD '.$db->qn('feedback_moderation').' TINYINT(4) NOT NULL AFTER '.$db->qn('feedback_add').', 
			ADD '.$db->qn('feedback_edit').' TINYINT(4) NOT NULL AFTER '.$db->qn('feedback_moderation').', 
			ADD '.$db->qn('feedback_move').' TINYINT(4) NOT NULL AFTER '.$db->qn('feedback_edit').', 
			ADD '.$db->qn('feedback_delete').' TINYINT(4) NOT NULL AFTER '.$db->qn('feedback_move').', 
			ADD '.$db->qn('feedback_moderate_flags').' TINYINT(4) NOT NULL AFTER '.$db->qn('feedback_delete').', 
			ADD '.$db->qn('feedback_update_status').' TINYINT(4) NOT NULL AFTER '.$db->qn('feedback_moderate_flags').', 
			ADD '.$db->qn('feedback_comment').' TINYINT(4) NOT NULL AFTER '.$db->qn('feedback_update_status').', 
			ADD '.$db->qn('feedback_share').' TINYINT(4) NOT NULL AFTER '.$db->qn('feedback_comment').', 
			ADD '.$db->qn('feedback_post_flags').' TINYINT(4) NOT NULL AFTER '.$db->qn('category_delete').',
			ADD '.$db->qn('category_moderation').' TINYINT(4) NOT NULL AFTER '.$db->qn('feedback_share').', 
			ADD '.$db->qn('category_add').' TINYINT(4) NOT NULL AFTER '.$db->qn('category_moderation').', 
			ADD '.$db->qn('category_edit').' TINYINT(4) NOT NULL AFTER '.$db->qn('category_add').', 
			ADD '.$db->qn('category_delete').' TINYINT(4) NOT NULL AFTER '.$db->qn('category_edit').', 
			ADD '.$db->qn('captcha_feedback').' TINYINT(4) NOT NULL AFTER '.$db->qn('feedback_post_flags').',
			ADD '.$db->qn('captcha_category').' TINYINT(4) NOT NULL AFTER '.$db->qn('captcha_feedback').',
			ADD '.$db->qn('captcha_flag').' TINYINT(4) NOT NULL AFTER '.$db->qn('captcha_category').',
			ADD '.$db->qn('captcha_comment').' TINYINT(4) NOT NULL AFTER '.$db->qn('captcha_flag'));
			
			$db->execute();

			// select all groups
			$query->clear();
			$query->select('*')->from($db->qn('#__rsfeedback_groups'))->order($db->qn('id').' ASC');
			$db->setQuery($query);
			$groups = $db->loadObjectList();
			foreach ($groups as $group) {
				// get the group_acl array
				$query->clear();
				$query->select($db->qn('GroupAcl'))->from($db->qn('#__rsfeedback_groups_acl'))->where($db->qn('IdGroup').' = '.$db->q($group->id));
				$db->setQuery($query);
				$group_acl = $db->loadColumn();

				// group_acl transform from array to param object 
				$registry 		= new Registry;
				$registry->loadArray($group_acl);
				$group_acl 	 	= $registry->toString();

				// get permissions
				$query->clear();
				$query->select('*')->from($db->qn('#__rsfeedback_group_permissions'))->where($db->qn('IdGroup').' = '.$db->q($group->id));
				$db->setQuery($query);
				$group_permissions = $db->loadObjectList();

				// update permissions columns where id = $group->id
				$query->clear();
				$query->update($db->qn('#__rsfeedback_groups'));
				if(!empty($group_permissions)) {
					foreach ($group_permissions as $permission) {
						if 		($permission->PermissionName == 'enableFeedbacks') 		$query->set($db->qn('feedback_add').' = '.$db->q($permission->PermissionValue));
						elseif 	($permission->PermissionName == 'feedbackModeration') 	$query->set($db->qn('feedback_moderation').' = '.$db->q($permission->PermissionValue));
						elseif 	($permission->PermissionName == 'deleteFeedback') 		$query->set($db->qn('feedback_delete').' = '.$db->q($permission->PermissionValue));
						elseif 	($permission->PermissionName == 'updateStatus') 		$query->set($db->qn('feedback_update_status').' = '.$db->q($permission->PermissionValue));
						elseif 	($permission->PermissionName == 'moveFeedback') 		$query->set($db->qn('feedback_move').' = '.$db->q($permission->PermissionValue));
						elseif 	($permission->PermissionName == 'editFeedback') 		$query->set($db->qn('feedback_edit').' = '.$db->q($permission->PermissionValue));
						elseif 	($permission->PermissionName == 'moderateFlags') 		$query->set($db->qn('feedback_moderate_flags').' = '.$db->q($permission->PermissionValue));
						elseif 	($permission->PermissionName == 'captchaGroup') 		$query->set($db->qn('captcha_feedback').' = '.$db->q($permission->PermissionValue));
						elseif 	($permission->PermissionName == 'createCategory') 		$query->set($db->qn('category_add').' = '.$db->q($permission->PermissionValue));
						elseif 	($permission->PermissionName == 'categoryModeration') 	$query->set($db->qn('category_moderation').' = '.$db->q($permission->PermissionValue));
						elseif 	($permission->PermissionName == 'deleteCategory') 		$query->set($db->qn('category_delete').' = '.$db->q($permission->PermissionValue));
						elseif 	($permission->PermissionName == 'editCategory') 		$query->set($db->qn('category_edit').' = '.$db->q($permission->PermissionValue));
					}
				}
				// update group_acl
				$query->set($db->qn('group_acl').' = '.$db->q($group_acl));

				$query->where($db->qn('id').' = '.$db->q($group->id));
				$db->setQuery($query);
				$db->execute();
			}

			// Remove the groups_acl table
			$db->setQuery("DROP TABLE IF EXISTS `#__rsfeedback_groups_acl`");
			$db->execute();

			// Remove the group_permissions table
			$db->setQuery("DROP TABLE IF EXISTS `#__rsfeedback_group_permissions`");
			$db->execute();
		}

		// change translation RSFE_ to COM_RSFEEDBACK for statuses, flags 
		$query->clear();
		$query->select('*')->from($db->qn('#__rsfeedback_statuses'));
		$db->setQuery($query);
		$statuses = $db->loadObjectList();

		foreach ($statuses as $status) 
			if (substr($status->name,0,5) == 'RSFE_') {
				$status_name = ucfirst(strtolower(str_replace('RSFE_STATUS_','', $status->name)));
				$query->clear();
				$query->update($db->qn('#__rsfeedback_statuses'))->set($db->qn('name').' = '.$db->q($status_name))->where($db->qn('id').' = '.$db->q($status->id));
				$db->setQuery($query);
				$db->execute();
			}

		$query->clear();
		$query->select('*')->from($db->qn('#__rsfeedback_flags'));
		$db->setQuery($query);
		$flags = $db->loadObjectList();
		foreach ($flags as $flag) 
			if (substr($flag->name,0,5) == 'RSFE_') {
				$flag_name = ($flag->name != 'RSFE_FLAG_INNAPROPRIATE' ? ucfirst(strtolower(str_replace('RSFE_FLAG_','', $flag->name))) : 'Inappropriate');
				$query->clear();
				$query->update($db->qn('#__rsfeedback_flags'))->set($db->qn('name').' = '.$db->q($flag_name))->where($db->qn('id').' = '.$db->q($flag->id));
				$db->setQuery($query);
				$db->execute();
			}

		// delete files old files in administrator
		if (file_exists(JPATH_ROOT.'/administrator/components/com_rsfeedback/install.rsfeedback.php')) 
			File::delete(JPATH_ROOT.'/administrator/components/com_rsfeedback/install.rsfeedback.php');
		
		if (file_exists(JPATH_ROOT.'/administrator/components/com_rsfeedback/install.rsfeedback.php')) 
			File::delete(JPATH_ROOT.'/administrator/components/com_rsfeedback/install.rsfeedback.php');

		if (file_exists(JPATH_ROOT.'/administrator/components/com_rsfeedback/install.xml')) 
			File::delete(JPATH_ROOT.'/administrator/components/com_rsfeedback/install.xml');

		if (file_exists(JPATH_ROOT.'/administrator/components/com_rsfeedback/install.rsfeedback.php')) 
			File::delete(JPATH_ROOT.'/administrator/components/com_rsfeedback/install.rsfeedback.php');

		if (file_exists(JPATH_ROOT.'/administrator/components/com_rsfeedback/script.rsfeedback.php')) 
			File::delete(JPATH_ROOT.'/administrator/components/com_rsfeedback/script.rsfeedback.php');
		
		if (file_exists(JPATH_ROOT.'/administrator/components/com_rsfeedback/uninstall.rsfeedback.php')) 
			File::delete(JPATH_ROOT.'/administrator/components/com_rsfeedback/uninstall.rsfeedback.php');

		if (file_exists(JPATH_ROOT.'/administrator/language/en-GB/en-GB.com_rsfeedback.menu.ini')) 
			File::delete(JPATH_ROOT.'/administrator/language/en-GB/en-GB.com_rsfeedback.menu.ini');

		// delete files old files in front-end 
		if (file_exists(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/addedit.php')) {
			// advise to update menu items links
			Factory::getApplication()->enqueueMessage(Text::sprintf('COM_RSFEEDBACK_UPDATE_MENU_ITEMS', 'http://www.rsjoomla.com/'));

			File::delete(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/addedit.php');
			File::delete(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/addedit.xml');
		}
		if (file_exists(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/addeditcateg.php')) {
			File::delete(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/addeditcateg.php');
			File::delete(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/addeditcateg.xml');
		}
		if (file_exists(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/allfeedbacks.php')) {
			File::delete(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/allfeedbacks.php');
			File::delete(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/allfeedbacks.xml');
		}
		if (file_exists(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/editflags.php')) {
			File::delete(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/editflags.php');
			File::delete(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/editflags.xml');
		}
		if (file_exists(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/feedback.php')) {
			File::delete(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/feedback.php');
			File::delete(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/feedback.xml');
		}
		if (file_exists(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/singlecategory.php')) {
			File::delete(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/singlecategory.php');
			File::delete(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/singlecategory.xml');
		}
		if (file_exists(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/subscriptionform.php')) {
			File::delete(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/subscriptionform.php');
			File::delete(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/subscriptionform.xml');
		}
		if (file_exists(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/top.php')) {
			File::delete(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/top.php');
			File::delete(JPATH_ROOT.'/components/com_rsfeedback/views/feedbacks/tmpl/top.xml');
		}
		if (file_exists(JPATH_ROOT.'/components/com_rsfeedback/helpers/feedbacks/common.php')) {
			File::delete(JPATH_ROOT.'/components/com_rsfeedback/helpers/feedbacks/common.php');
		}
		if (file_exists(JPATH_ROOT.'/components/com_rsfeedback/models/rules/rsfeedbackcaptcha.php')) {
			File::delete(JPATH_ROOT.'/components/com_rsfeedback/models/rules/rsfeedbackcaptcha.php');
		}

		// installing the system plugin
		if ($installer->install($source.'/other/plg_system')) {
			$query->clear();
			$query->update($db->qn('#__extensions'))
				  ->set($db->qn('enabled').' = '.$db->q(1))
				  ->where($db->qn('element').' = '.$db->q('rsfeedback'))
				  ->where($db->qn('type').' = '.$db->q('plugin'))
				  ->where($db->qn('folder').' = '.$db->q('system'));
			$db->setQuery($query);
			$db->execute();
		}
		
		$groups_columns = $db->getTableColumns('#__rsfeedback_groups');
		if (isset($groups_columns['captcha_enabled'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_groups').' CHANGE '.$db->qn('captcha_enabled').' '.$db->qn('captcha_feedback').' TINYINT( 1 ) NOT NULL');
			$db->execute();
		}
		if (!isset($groups_columns['feedback_post_flags'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_groups').' ADD '.$db->qn('feedback_post_flags').' TINYINT(1) NOT NULL');
			$db->execute();

			$query->clear();
			$query->update($db->qn('#__rsfeedback_groups'))->set($db->qn('feedback_post_flags').' = '.$db->q(1));
			$db->setQuery($query);
			$db->execute();
		}
		if (!isset($groups_columns['feedback_comment'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_groups').' ADD '.$db->qn('feedback_comment').' TINYINT(1) NOT NULL');
			$db->execute();
		}
		if (!isset($groups_columns['feedback_share'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_groups').' ADD '.$db->qn('feedback_share').' TINYINT(1) NOT NULL');
			$db->execute();

            $query->clear();
            $query->update($db->qn('#__rsfeedback_groups'))->set($db->qn('feedback_share').' = '.$db->q(1));
            $db->setQuery($query);
            $db->execute();
		}
		if (!isset($groups_columns['captcha_category'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_groups').' ADD '.$db->qn('captcha_category').' TINYINT(1) NOT NULL');
			$db->execute();
		}
		if (!isset($groups_columns['captcha_flag'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_groups').' ADD '.$db->qn('captcha_flag').' TINYINT(1) NOT NULL');
			$db->execute();
		}
		if (!isset($groups_columns['captcha_comment'])) {
			$db->setQuery('ALTER TABLE '.$db->qn('#__rsfeedback_groups').' ADD '.$db->qn('captcha_comment').' TINYINT(1) NOT NULL');
			$db->execute();
		}
		
		// Update the configuration
		$query->clear();
		$query->select('`params`')->from('`#__extensions`')->where($db->qn('element').' = '.$db->q('com_rsfeedback'))->where($db->qn('type').' = '.$db->q('component'));
		$db->setQuery($query);
		$componentParams = $db->loadResult();
		$registry = new Registry;
		$registry->loadString($componentParams);

		$new_params = (array) json_decode($this->defaultConfigJson);

		foreach ($new_params as $name => $value) 
			if (is_null($registry->get($name, null)))
				$registry->set($name,$value);
		
		$query->clear();
		$query->update($db->qn('#__extensions'))->set($db->qn('params').' = '.$db->q($registry->toString()))->where('`element` = '.$db->q('com_rsfeedback'))->where('`type` = '.$db->q('component'));
		$db->setQuery($query);
		$db->execute();
		
		// INDEX
		$db->setQuery("SHOW INDEX FROM #__rsfeedback_feedbacks WHERE Key_name = 'cat_id'");
		if (!$db->loadObject()) {
			$db->setQuery("ALTER TABLE `#__rsfeedback_feedbacks` ADD INDEX (`cat_id`)");
			$db->execute();
		}
		
		$db->setQuery("SHOW INDEX FROM #__rsfeedback_feedbacks WHERE Key_name = 'status_id'");
		if (!$db->loadObject()) {
			$db->setQuery("ALTER TABLE `#__rsfeedback_feedbacks` ADD INDEX (`status_id`)");
			$db->execute();
		}
		
		$db->setQuery("SHOW INDEX FROM #__rsfeedback_feedbacks WHERE Key_name = 'user_id'");
		if (!$db->loadObject()) {
			$db->setQuery("ALTER TABLE `#__rsfeedback_feedbacks` ADD INDEX (`user_id`)");
			$db->execute();
		}
		
		$db->setQuery("SHOW INDEX FROM #__rsfeedback_user_flags WHERE Key_name = 'feedback_id'");
		if (!$db->loadObject()) {
			$db->setQuery("ALTER TABLE `#__rsfeedback_user_flags` ADD INDEX (`feedback_id`)");
			$db->execute();
		}
		
		$db->setQuery("SHOW INDEX FROM #__rsfeedback_user_flags WHERE Key_name = 'user_id'");
		if (!$db->loadObject()) {
			$db->setQuery("ALTER TABLE `#__rsfeedback_user_flags` ADD INDEX (`user_id`)");
			$db->execute();
		}
		
		$db->setQuery("SHOW INDEX FROM #__rsfeedback_user_flags WHERE Key_name = 'flag_id'");
		if (!$db->loadObject()) {
			$db->setQuery("ALTER TABLE `#__rsfeedback_user_flags` ADD INDEX (`flag_id`)");
			$db->execute();
		}
		
		$db->setQuery("SHOW INDEX FROM #__rsfeedback_user_votes WHERE Key_name = 'feedback_id'");
		if (!$db->loadObject()) {
			$db->setQuery("ALTER TABLE `#__rsfeedback_user_votes` ADD INDEX (`feedback_id`)");
			$db->execute();
		}
		
		$db->setQuery("SHOW INDEX FROM #__rsfeedback_user_votes WHERE Key_name = 'user_id'");
		if (!$db->loadObject()) {
			$db->setQuery("ALTER TABLE `#__rsfeedback_user_votes` ADD INDEX (`user_id`)");
			$db->execute();
		}
	}

	public function uninstall($parent) {
		$db 			= Factory::getDbo();
		$query			= $db->getQuery(true);
		$plg_installer	= new Installer();

		// Uninstall System Plugin
		$query->select($db->qn('extension_id'))
			->from($db->qn('#__extensions'))
			->where($db->qn('element').'='.$db->q('rsfeedback'))
			->where($db->qn('folder').'='.$db->q('system'))
			->where($db->qn('type').'='.$db->q('plugin'));
		$db->setQuery($query);
		if ($extension_id = $db->loadResult()) {
			$plg_installer->uninstall('plugin', $extension_id);
		}
		
		// Uninstall Installer Plugin
		$query->clear()->select($db->qn('extension_id'))
			->from($db->qn('#__extensions'))
			->where($db->qn('element').'='.$db->q('rsfeedback'))
			->where($db->qn('folder').'='.$db->q('installer'))
			->where($db->qn('type').'='.$db->q('plugin'));
		$db->setQuery($query);
		if ($extension_id = $db->loadResult()) {
			$plg_installer->uninstall('plugin', $extension_id);
		}
		
		// Uninstall Privacy Plugin
		$query->clear()->select($db->qn('extension_id'))
			->from($db->qn('#__extensions'))
			->where($db->qn('element').'='.$db->q('rsfeedback'))
			->where($db->qn('folder').'='.$db->q('privacy'))
			->where($db->qn('type').'='.$db->q('plugin'));
		$db->setQuery($query);
		if ($extension_id = $db->loadResult()) {
			$plg_installer->uninstall('plugin', $extension_id);
		}

		// uninstall testimonials module 
		$query->clear();
		$query->select($db->qn('extension_id'))->from($db->qn('#__extensions'))->where($db->qn('element').'='.$db->q('mod_rsfe_testimonials'))->where($db->qn('client_id').'='.$db->q('0'))->where($db->qn('type').'='.$db->q('module'));
		$db->setQuery($query);
		if ($extension_id = $db->loadResult()) {
			$plg_installer->uninstall('module', $extension_id);
		}

		// uninstall button module
		$query->clear();
		$query->select($db->qn('extension_id'))->from($db->qn('#__extensions'))->where($db->qn('element').'='.$db->q('mod_rsfeedback_button'))->where($db->qn('client_id').'='.$db->q('0'))->where($db->qn('type').'='.$db->q('module'));
		$db->setQuery($query);
		if ($extension_id = $db->loadResult()) {
			$plg_installer->uninstall('module', $extension_id);
		}
	}

	public function UpdateParamsColumn($default_params) {
		$db 	= Factory::getDbo();
		$query 	= $db->getQuery(true);

		$query->clear();
		$query->select('`extension_id`')->from('`#__extensions`')->where('`element` = '.$db->q('com_rsfeedback'))->where('`type` = '.$db->q('component'));
		$db->setQuery($query);
		$extension_id = $db->loadResult();

		if ($extension_id) {
			$query->clear();
			$query->update('`#__extensions`')->set('`params` = '.$db->q($default_params))->where('`extension_id` = '.(int) $extension_id);
			$db->setQuery($query);
			$db->execute();
		}
	}

	protected function showInstallMessage($plugins=array()) {
?>
<style type="text/css">
#rsfed-installer-left {
	float: left;
	width: 18%;
	padding: 5px;
}

#rsfed-installer-right {
	float: left;
	padding: 5px;
	width: 70%;
}

.version-history {
	margin: 0 0 2em 0;
	padding: 0;
	list-style-type: none;
}
.version-history > li {
	margin: 0 0 0.5em 0;
	padding: 0 0 0 4em;
}
.version-new,
.version-fixed,
.version-upgraded {
	float: left;
	font-size: 0.8em;
	margin-left: -4.9em;
	width: 4.5em;
	color: white;
	text-align: center;
	font-weight: bold;
	text-transform: uppercase;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
}

.version-new {
	background: #7dc35b;
}
.version-fixed {
	background: #e9a130;
}
.version-upgraded {
	background: #61b3de;
}

.install-ok {
	background: #7dc35b;
	color: #fff;
	padding: 3px;
}

.install-not-ok {
	background: #E9452F;
	color: #fff;
	padding: 3px;
}

.com-rsfeedback-button {
	display: inline-block;
	background: #459300 none repeat scroll 0 0;
	color: #fff !important;
	cursor: pointer;
	margin-bottom: 10px;
    padding: 7px;
	text-decoration: none !important;
}
</style>
	
<div id="rsfed-installer-left">
	<img src="<?php echo Uri::root(); ?>media/com_rsfeedback/images/admin/rsfeedback_vertical.png" alt="RSFeedback!" />
</div>
<div id="rsfed-installer-right">
	<?php foreach ($plugins as $plugin => $data) { ?>
	<p><?php echo $data['name']; ?> ...
		<?php if ($data['result']) { ?>
			<b class="install-ok">Installed</b>
			<?php if ($data['core']) { ?>
				<b class="install-ok">Published</b>
			<?php } ?>
		<?php } else { ?>
			<b class="install-not-ok">Error installing!</b>
		<?php } ?>
	</p>
	<?php } ?>
	
	<h2>Changelog v1.8.12</h2>
	<ul class="version-history">
		<li><span class="version-new">Add</span> Native support for Joomla! 5.</li>
	</ul>
	<a class="com-rsfeedback-button" href="index.php?option=com_rsfeedback">Start using RSFeedback!</a>
	<a class="com-rsfeedback-button" href="https://www.rsjoomla.com/support/documentation/rsfeedback.html" target="_blank">Read the RSFeedback! User Guide</a>
	<a class="com-rsfeedback-button" href="https://www.rsjoomla.com/support.html" target="_blank">Get Support!</a>
</div>
<div style="clear: both;"></div>
<?php
	}
}

Anon7 - 2022
AnonSec Team