script.installer.php 2.31 KB
<?php
/**
 * @package   OSSystem
 * @contact   www.joomlashack.com, help@joomlashack.com
 * @copyright 2016 Open Source Training, LLC. All rights reserved
 * @license   http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

use Alledia\Installer;

defined('_JEXEC') or die();

require_once 'library/Installer/include.php';

jimport('joomla.filesystem.folder');


/**
 * Custom installer script
 */
if (!class_exists('PlgSystemOSSystemInstallerScript')) {
    class PlgSystemOSSystemInstallerScript extends Installer\AbstractScript
    {
        /**
         * @param string                     $type
         * @param JInstallerAdapterComponent $parent
         *
         * @return bool
         */
        public function preFlight($type, $parent)
        {
            if (!parent::preFlight($type, $parent)) {
                return false;
            }

            /* Uninstall the depracated plugin OSCARootCertificates.
             * The parent method can't be used because the old plugin
             * has a bug that doesn't allow to use the native uninstall method.
             */
            $success = false;

            // Remove the files
            $path = JPATH_SITE . '/plugins/system/oscarootcertificates';
            if (JFolder::exists($path)) {
                $success = JFolder::delete($path);
            }

            // Remove the database row
            $db = JFactory::getDbo();

            $queryWhere = array(
                $db->qn('type') . ' = ' . $db->q('plugin'),
                $db->qn('element') . ' = ' . $db->q('oscarootcertificates'),
                $db->qn('folder') . ' = ' . $db->q('system'),
            );
            $query = $db->getQuery(true)
                ->select('COUNT(*)')
                ->from('#__extensions')
                ->where($queryWhere);
            $db->setQuery($query);

            if ((int) $db->loadResult() > 0) {
                $query = $db->getQuery(true)
                    ->delete('#__extensions')
                    ->where($queryWhere);
                $db->setQuery($query);
                $success = $db->execute();
            }

            // Displays the success message
            if ((bool) $success) {
                $this->setMessage('OSSystem OSCARootCertificates uninstalled successfully');
            }

            return true;
        }
    }
}