%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
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 : |
<?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); } } }