uawdijnntqw1x1x1
IP : 216.73.217.142
Hostname : localhost.localdomain
Kernel : Linux localhost.localdomain 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64
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_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
OS : Linux
PATH:
/
var
/
www
/
consult-e-syn
/
public_html
/
643de
/
..
/
plugins
/
ats
/
akeebasubs
/
akeebasubs.php
/
/
<?php /** * @package ats * @copyright Copyright (c)2011-2022 Nicholas K. Dionysopoulos / Akeeba Ltd * @license GNU General Public License version 3, or later */ defined('_JEXEC') or die(); use Akeeba\Subscriptions\Site\Model\JoomlaUsers; use FOF40\Container\Container; use FOF40\Date\Date; use Joomla\CMS\Filesystem\Folder; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\User\User; /** * Akeeba Subscriptions integration for Akeeba Ticket System * * Tip: You can fork this plugin to create integrations with other subscription components / services. */ class plgAtsAkeebasubs extends CMSPlugin { /** @var array Active and inactive subscriptions per user ID */ private static $subsPerUser = []; /** @var \Joomla\Database\DatabaseDriver|JDatabaseDriver */ public $db; /** @var null|bool Is Akeeba Subscriptions installed on this site? */ private $hasSubscriptionsComponent = null; public function __construct(&$subject, $config = []) { parent::__construct($subject, $config); if (!defined('FOF40_INCLUDED') && !@include_once(JPATH_LIBRARIES . '/fof40/include.php')) { throw new RuntimeException('This extension requires FOF 4.', 500); } } /** * Is the Akeeba Subscriptions component installed? * * @return bool True if Akeeba Subscriptions is installed */ public function onAtsHasSubscriptionsComponent() { if (is_null($this->hasSubscriptionsComponent)) { $this->hasSubscriptionsComponent = Folder::exists(JPATH_ADMINISTRATOR . '/components/com_akeebasubs'); if ($this->hasSubscriptionsComponent && !defined('AKEEBASUBS_VERSION')) { include_once JPATH_ADMINISTRATOR . '/components/com_akeebasubs/version.php'; } if ($this->hasSubscriptionsComponent) { $this->hasSubscriptionsComponent = Folder::exists(JPATH_ADMINISTRATOR . '/components/com_akeebasubs/View'); } } return $this->hasSubscriptionsComponent; } /** * Get a list of the subscription levels (IDs and names) for a particular user account. * * @param JUser $user The user to check * * @return object An object with arrays for active and inactive subscriptions */ public function onAtsGetSubscriptionsList(User $user = null) { // Sanity checks: please do not remove the following three if-blocks if you fork this plugin. $blankReturn = (object) [ 'active' => [], 'inactive' => [], ]; if ($user->guest) { return $blankReturn; } if ($user->username == 'system') { return $blankReturn; } if (!$this->onAtsHasSubscriptionsComponent()) { return $blankReturn; } if (!array_key_exists($user->id, self::$subsPerUser) && ($user->id <= 0)) { self::$subsPerUser[$user->id] = $blankReturn; } // Inside this if-block we fetch the actual data from the subscriptions component if (!array_key_exists($user->id, self::$subsPerUser)) { $db = $this->db; $query = $db->getQuery(true) ->select([ $db->qn('l.title'), $db->qn('s.state'), $db->qn('s.publish_up'), $db->qn('s.publish_down'), ])->from( $db->qn('#__akeebasubs_subscriptions', 's') )->leftJoin( $db->qn('#__akeebasubs_levels', 'l') . ' ON(' . $db->qn('l.akeebasubs_level_id') . ' = ' . $db->qn('s.akeebasubs_level_id') . ')' )->where( $db->qn('s.user_id') . ' = ' . (int) $user->id ); try { $rawSubs = $db->setQuery($query)->loadObjectList() ?? []; } catch (Exception $e) { $rawSubs = []; } if (empty($rawSubs)) { self::$subsPerUser[$user->id] = (object) $blankReturn; return self::$subsPerUser[$user->id]; } self::$subsPerUser[$user->id] = [ 'active' => [], 'inactive' => [], ]; $jNow = new Date(); foreach ($rawSubs as $sub) { $key = ($sub->state === 'C') ? 'active' : 'inactive'; if ($key === 'active') { $jStart = new Date($sub->publish_up); if ($jStart->getTimestamp() > $jNow->getTimestamp()) { $key = 'inactive'; } } if ($key === 'active') { $jEnd = new Date($sub->publish_down); if ($jEnd->getTimestamp() < $jNow->getTimestamp()) { $key = 'inactive'; } } self::$subsPerUser[$user->id][$key][] = $sub->title; } self::$subsPerUser[$user->id]['active'] = array_unique(self::$subsPerUser[$user->id]['active']); self::$subsPerUser[$user->id]['inactive'] = array_unique(self::$subsPerUser[$user->id]['inactive']); self::$subsPerUser[$user->id]['inactive'] = array_diff(self::$subsPerUser[$user->id]['inactive'], self::$subsPerUser[$user->id]['active']); self::$subsPerUser[$user->id] = (object) self::$subsPerUser[$user->id]; } // Return the subscriptions list for this user from the cache return self::$subsPerUser[$user->id]; } /** * Returns the country of the user from the data stored in Akeeba Subscriptions * * @param int $userid Joomla user id * @param bool $isManager Is the current user a manager? * * @return array|null An array with the country code and name, or null if we can't display it */ public function onAtsGetSubscriptionCountry($userid, $isManager) { static $cache = []; if (!$this->onAtsHasSubscriptionsComponent()) { return null; } // I don't want to display the flag if ($this->params->get('displayCountry', 2) == 0) { return null; } // Display it to managers only elseif ($this->params->get('displayCountry', 2) == 2 && !$isManager) { return null; } if (!isset($cache[$userid])) { if ($this->isComAkeebasubsFOF3() === false) { $container = Container::getInstance('com_akeebasubs'); } else { $container = \FOF30\Container\Container::getInstance('com_akeebasubs'); } if (class_exists('\\Akeeba\\Subscriptions\\Site\\Model\\Users')) { // Akeeba Subscriptions 5 & 6 $countryCode = $this->getCountryCodeAS5($userid, $container); } else { // Akeeba Subscriptions 7 $countryCode = $this->getCountryCodeAS7($userid, $container); } $cache[$userid] = null; if (!is_null($countryCode)) { $cache[$userid] = [ $countryCode, \Akeeba\Subscriptions\Admin\Helper\Select::decodeCountry($countryCode), ]; } } // The user is not registered inside Akeeba Subscriptions if (!$cache[$userid]) { return null; } return $cache[$userid]; } /** * Is Akeeba Subscriptions still using FOF3? * * @return bool|null NULL if it's not installed, TRUE for FOF3, FALSE otherwise */ function isComAkeebasubsFOF3(): ?bool { $path = JPATH_ADMINISTRATOR . '/components/com_akeebasubs/Model/Subscriptions.php'; if (!@file_exists($path)) { return null; } $contents = @file_get_contents($path); if ($contents === false) { return null; } return (strpos($contents, 'FOF30\Model\DataModel') !== false); } /** * Get the country code for a user, based on information from Akeeba Subscriptions 5 or 6. * * @param int $userid * @param Container|\FOF30\Container\Container $container * * @return string|null */ private function getCountryCodeAS5($userid, $container) { $kuser = $container->factory->model('Users')->tmpInstance(); $kuser->find(['user_id' => $userid]); $countryCode = $kuser->country; return $countryCode; } /** * Get the country code for a user, based on information from Akeeba Subscriptions 7 or 8. * * @param Container|\FOF30\Container\Container $container * * @return string|null */ private function getCountryCodeAS7($userid, $container) { /** @var Akeeba\Subscriptions\Site\Model\JoomlaUsers $juser */ $juser = $container->factory->model('JoomlaUsers')->tmpInstance(); $juser->find(['id' => $userid]); $canGetCountry = !is_null($juser) && is_object($juser) && method_exists($juser, 'getProfileField'); $countryCode = $canGetCountry ? $juser->getProfileField('akeebasubs.country') : null; return $countryCode; } }
/var/www/consult-e-syn/public_html/643de/../plugins/ats/akeebasubs/akeebasubs.php