File manager - Edit - /home/ferretapmx/public_html/com_banners.zip
Back
PK =��\VX�� � joomla.asset.jsonnu �[��� { "$schema": "https://developer.joomla.org/schemas/json-schema/web_assets.json", "name": "com_banners", "version": "4.0.0", "description": "Joomla CMS", "license": "GPL-2.0-or-later", "assets": [ { "name": "com_banners.admin-banner-edit", "type": "script", "uri": "com_banners/admin-banner-edit.min.js", "dependencies": [ "core" ], "attributes": { "type": "module" }, "version": "c414d8" } ] }PK =��\H��D/ / js/admin-banner-edit.min.jsnu �[��� /** * @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */(s=>{const d=e=>{const t=s.getElementById("image"),a=s.getElementById("custom");switch(e){case"0":t.classList.remove("hidden"),a.classList.add("hidden");break;case"1":t.classList.add("hidden"),a.classList.remove("hidden");break}};s.addEventListener("DOMContentLoaded",()=>{const e=s.getElementById("jform_type");e&&(d(e.value),e.addEventListener("change",({target:t})=>{d(t.value)}))})})(document); PK =��\�!�3A A js/admin-banner-edit.jsnu �[��� /** * @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ (document => { const updateBannerFields = value => { const imgWrapper = document.getElementById('image'); const custom = document.getElementById('custom'); switch (value) { case '0': // Image imgWrapper.classList.remove('hidden'); custom.classList.add('hidden'); break; case '1': // Custom imgWrapper.classList.add('hidden'); custom.classList.remove('hidden'); break; // Do nothing } }; document.addEventListener('DOMContentLoaded', () => { const jformType = document.getElementById('jform_type'); if (jformType) { // Hide/show parameters initially updateBannerFields(jformType.value); // Hide/show parameters when the type has been selected jformType.addEventListener('change', ({ target }) => { updateBannerFields(target.value); }); } }); })(document); PK =��\G�Z_ _ js/admin-banner-edit.min.js.gznu �[��� � m�Ok�@��~�a�+!QO�T)�A����N��d7�N�"��%Vl-ކy�3Q�ׁ<)[]�f������+4���SKI��07*�nj��(:��ڲ��u��*r��# �l�34�d����,.��ϭ�!X�$t1xDX̧�j���E�E''e�'�c��4�a��X����\s��2E&yGS�'[2�CN*�(NJzd}6�P�E�)tX�=r��Z�iYD���o���Bn|7���H�ľ %{4�ڇq��^N��vg�F�.���w֕�t����]�9�{Y�(�S�2iRd?�t)҈��@s��!�����w�H��D/ PK =��\�Sʉ� � js/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK =��\�Sʉ� � .htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\c�MD D src/Service/Category.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_banners * * @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Banners\Site\Service; use Joomla\CMS\Categories\Categories; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Banners Component Category Tree * * @since 1.6 */ class Category extends Categories { /** * Constructor * * @param array $options Array of options * * @since 1.6 */ public function __construct($options = []) { $options['table'] = '#__banners'; $options['extension'] = 'com_banners'; parent::__construct($options); } } PK ��\ǝ�G� � src/Service/Router.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_banners * * @copyright (C) 2006 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Banners\Site\Service; use Joomla\CMS\Component\Router\RouterBase; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Routing class from com_banners * * @since 3.3 */ class Router extends RouterBase { /** * Build the route for the com_banners component * * @param array $query An array of URL arguments * * @return array The URL arguments to use to assemble the subsequent URL. * * @since 3.3 */ public function build(&$query) { $segments = []; if (isset($query['task'])) { $segments[] = $query['task']; unset($query['task']); } if (isset($query['id'])) { $segments[] = $query['id']; unset($query['id']); } foreach ($segments as &$segment) { $segment = str_replace(':', '-', $segment); } return $segments; } /** * Parse the segments of a URL. * * @param array $segments The segments of the URL to parse. * * @return array The URL attributes to be used by the application. * * @since 3.3 */ public function parse(&$segments) { $vars = []; foreach ($segments as &$segment) { $segment = preg_replace('/-/', ':', $segment, 1); } unset($segment); // View is always the first element of the array $count = \count($segments); if ($count) { $count--; $segment = array_shift($segments); if (is_numeric($segment)) { $vars['id'] = $segment; } else { $vars['task'] = $segment; } } if ($count) { $segment = array_shift($segments); if (is_numeric($segment)) { $vars['id'] = $segment; } } return $vars; } } PK ��\�Sʉ� � src/Service/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\��3]� � src/Helper/BannerHelper.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_banners * * @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Banners\Site\Helper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Banner Helper Class * * @since 1.6 * * @deprecated 5.1 will be removed in 7.0 */ abstract class BannerHelper { /** * Checks if a URL is an image * * @param string $url The URL path to the potential image * * @return boolean True if an image of type bmp, gif, jp(e)g, png or webp, false otherwise * * @since 1.6 * * @deprecated 5.1 will be removed in 7.0 * When testing the image file, use Joomla\CMS\Helper\MediaHelper::isImage($url) for pixel-based image files * in combination with Joomla\CMS\Helper\MediaHelper::getMimeType($url) === 'image/svg+xml' for vector based image files * Be aware that the image url should first be sanitized with the helper function Joomla\CMS\HTML\HTMLHelper::cleanImageURL($imageurl) */ public static function isImage($url) { $urlCheck = explode('?', $url); if (preg_match('#\.(?:bmp|gif|jpe?g|png|webp)$#i', $urlCheck[0])) { return true; } return false; } } PK ��\�Sʉ� � src/Helper/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\�dH H src/Model/BannerModel.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_banners * * @copyright (C) 2006 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Banners\Site\Model; use Joomla\CMS\Cache\Exception\CacheExceptionInterface; use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\Model\BaseDatabaseModel; use Joomla\Database\ParameterType; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Banner model for the Joomla Banners component. * * @since 1.5 */ class BannerModel extends BaseDatabaseModel { /** * Cached item object * * @var object * @since 1.6 */ protected $_item; /** * Clicks the URL, incrementing the counter * * @return void * * @since 1.5 * @throws \Exception */ public function click() { $item = $this->getItem(); if (empty($item)) { throw new \Exception(Text::_('JERROR_PAGE_NOT_FOUND'), 404); } $id = (int) $this->getState('banner.id'); // Update click count $db = $this->getDatabase(); $query = $db->getQuery(true); $query->update($db->quoteName('#__banners')) ->set($db->quoteName('clicks') . ' = ' . $db->quoteName('clicks') . ' + 1') ->where($db->quoteName('id') . ' = :id') ->bind(':id', $id, ParameterType::INTEGER); $db->setQuery($query); try { $db->execute(); } catch (\RuntimeException $e) { throw new \Exception($e->getMessage(), 500); } // Track clicks $trackClicks = $item->track_clicks; if ($trackClicks < 0 && $item->cid) { $trackClicks = $item->client_track_clicks; } if ($trackClicks < 0) { $config = ComponentHelper::getParams('com_banners'); $trackClicks = $config->get('track_clicks'); } if ($trackClicks > 0) { $trackDate = Factory::getDate()->format('Y-m-d H:00:00'); $trackDate = Factory::getDate($trackDate)->toSql(); $query = $db->getQuery(true); $query->select($db->quoteName('count')) ->from($db->quoteName('#__banner_tracks')) ->where( [ $db->quoteName('track_type') . ' = 2', $db->quoteName('banner_id') . ' = :id', $db->quoteName('track_date') . ' = :trackDate', ] ) ->bind(':id', $id, ParameterType::INTEGER) ->bind(':trackDate', $trackDate); $db->setQuery($query); try { $db->execute(); } catch (\RuntimeException $e) { throw new \Exception($e->getMessage(), 500); } $count = $db->loadResult(); $query = $db->getQuery(true); if ($count) { // Update count $query->update($db->quoteName('#__banner_tracks')) ->set($db->quoteName('count') . ' = ' . $db->quoteName('count') . ' + 1') ->where( [ $db->quoteName('track_type') . ' = 2', $db->quoteName('banner_id') . ' = :id', $db->quoteName('track_date') . ' = :trackDate', ] ) ->bind(':id', $id, ParameterType::INTEGER) ->bind(':trackDate', $trackDate); } else { // Insert new count $query->insert($db->quoteName('#__banner_tracks')) ->columns( [ $db->quoteName('count'), $db->quoteName('track_type'), $db->quoteName('banner_id'), $db->quoteName('track_date'), ] ) ->values('1, 2 , :id, :trackDate') ->bind(':id', $id, ParameterType::INTEGER) ->bind(':trackDate', $trackDate); } $db->setQuery($query); try { $db->execute(); } catch (\RuntimeException $e) { throw new \Exception($e->getMessage(), 500); } } } /** * Get the data for a banner. * * @return object * * @since 1.6 */ public function &getItem() { if (!isset($this->_item)) { /** @var \Joomla\CMS\Cache\Controller\CallbackController $cache */ $cache = Factory::getCache('com_banners', 'callback'); $id = (int) $this->getState('banner.id'); // For PHP 5.3 compat we can't use $this in the lambda function below, so grab the database driver now to use it $db = $this->getDatabase(); $loader = function ($id) use ($db) { $nowDate = Factory::getDate()->toSql(); $query = $db->getQuery(true); $query->select( [ $db->quoteName('a.clickurl'), $db->quoteName('a.cid'), $db->quoteName('a.track_clicks'), $db->quoteName('cl.track_clicks', 'client_track_clicks'), ] ) ->from($db->quoteName('#__banners', 'a')) ->join('LEFT', $db->quoteName('#__banner_clients', 'cl'), $db->quoteName('cl.id') . ' = ' . $db->quoteName('a.cid')) ->where($db->quoteName('a.id') . ' = :id') ->where($db->quoteName('a.state') . ' = 1') ->extendWhere( 'AND', [ $db->quoteName('a.publish_up') . ' IS NULL', $db->quoteName('a.publish_up') . ' <= :nowDate', ], 'OR' ) ->extendWhere( 'AND', [ $db->quoteName('a.publish_down') . ' IS NULL', $db->quoteName('a.publish_down') . ' >= :nowDate', ], 'OR' ) ->bind(':id', $id, ParameterType::INTEGER) ->bind(':nowDate', $nowDate); $db->setQuery($query); return $db->loadObject(); }; try { $this->_item = $cache->get($loader, [$id], md5(__METHOD__ . $id)); } catch (CacheExceptionInterface) { $this->_item = $loader($id); } } return $this->_item; } /** * Get the URL for a banner * * @return string * * @since 1.5 */ public function getUrl() { $item = $this->getItem(); $url = $item->clickurl; // Check for links if (!preg_match('#http[s]?://|index[2]?\.php#', $url)) { $url = "http://$url"; } return $url; } } PK ��\�i)��8 �8 src/Model/BannersModel.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_banners * * @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Banners\Site\Model; use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; use Joomla\CMS\MVC\Model\ListModel; use Joomla\Database\Exception\ExecutionFailureException; use Joomla\Database\ParameterType; use Joomla\Database\QueryInterface; use Joomla\Registry\Registry; use Joomla\Utilities\ArrayHelper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Banners model for the Joomla Banners component. * * @since 1.6 */ class BannersModel extends ListModel { /** * Method to get a store id based on model configuration state. * * This is necessary because the model is used by the component and * different modules that might need different sets of data or different * ordering requirements. * * @param string $id A prefix for the store id. * * @return string A store id. * * @since 1.6 */ protected function getStoreId($id = '') { // Compile the store id. $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.tag_search'); $id .= ':' . $this->getState('filter.client_id'); $id .= ':' . serialize($this->getState('filter.category_id')); $id .= ':' . serialize($this->getState('filter.keywords')); return parent::getStoreId($id); } /** * Method to get a QueryInterface object for retrieving the data set from a database. * * @return QueryInterface An object implementing QueryInterface to retrieve the data set. * * @since 1.6 */ protected function getListQuery() { $db = $this->getDatabase(); $query = $db->getQuery(true); $ordering = $this->getState('filter.ordering'); $tagSearch = $this->getState('filter.tag_search'); $cid = (int) $this->getState('filter.client_id'); $categoryId = $this->getState('filter.category_id'); $keywords = $this->getState('filter.keywords'); $randomise = ($ordering === 'random'); $nowDate = Factory::getDate()->toSql(); $query->select( [ $db->quoteName('a.id'), $db->quoteName('a.type'), $db->quoteName('a.name'), $db->quoteName('a.clickurl'), $db->quoteName('a.sticky'), $db->quoteName('a.cid'), $db->quoteName('a.description'), $db->quoteName('a.params'), $db->quoteName('a.custombannercode'), $db->quoteName('a.track_impressions'), $db->quoteName('cl.track_impressions', 'client_track_impressions'), ] ) ->from($db->quoteName('#__banners', 'a')) ->join('LEFT', $db->quoteName('#__banner_clients', 'cl'), $db->quoteName('cl.id') . ' = ' . $db->quoteName('a.cid')) ->where($db->quoteName('a.state') . ' = 1') ->extendWhere( 'AND', [ $db->quoteName('a.publish_up') . ' IS NULL', $db->quoteName('a.publish_up') . ' <= :nowDate1', ], 'OR' ) ->extendWhere( 'AND', [ $db->quoteName('a.publish_down') . ' IS NULL', $db->quoteName('a.publish_down') . ' >= :nowDate2', ], 'OR' ) ->extendWhere( 'AND', [ $db->quoteName('a.imptotal') . ' = 0', $db->quoteName('a.impmade') . ' < ' . $db->quoteName('a.imptotal'), ], 'OR' ) ->bind([':nowDate1', ':nowDate2'], $nowDate); if ($cid) { $query->where( [ $db->quoteName('a.cid') . ' = :clientId', $db->quoteName('cl.state') . ' = 1', ] ) ->bind(':clientId', $cid, ParameterType::INTEGER); } // Filter by a single or group of categories if (is_numeric($categoryId)) { $categoryId = (int) $categoryId; $type = $this->getState('filter.category_id.include', true) ? ' = ' : ' <> '; // Add subcategory check if ($this->getState('filter.subcategories', false)) { $levels = (int) $this->getState('filter.max_category_levels', '1'); // Create a subquery for the subcategory list $subQuery = $db->getQuery(true); $subQuery->select($db->quoteName('sub.id')) ->from($db->quoteName('#__categories', 'sub')) ->join( 'INNER', $db->quoteName('#__categories', 'this'), $db->quoteName('sub.lft') . ' > ' . $db->quoteName('this.lft') . ' AND ' . $db->quoteName('sub.rgt') . ' < ' . $db->quoteName('this.rgt') ) ->where( [ $db->quoteName('this.id') . ' = :categoryId1', $db->quoteName('sub.level') . ' <= ' . $db->quoteName('this.level') . ' + :levels', ] ); // Add the subquery to the main query $query->extendWhere( 'AND', [ $db->quoteName('a.catid') . $type . ':categoryId2', $db->quoteName('a.catid') . ' IN (' . $subQuery . ')', ], 'OR' ) ->bind([':categoryId1', ':categoryId2'], $categoryId, ParameterType::INTEGER) ->bind(':levels', $levels, ParameterType::INTEGER); } else { $query->where($db->quoteName('a.catid') . $type . ':categoryId') ->bind(':categoryId', $categoryId, ParameterType::INTEGER); } } elseif (\is_array($categoryId) && (\count($categoryId) > 0)) { $categoryId = ArrayHelper::toInteger($categoryId); if ($this->getState('filter.category_id.include', true)) { $query->whereIn($db->quoteName('a.catid'), $categoryId); } else { $query->whereNotIn($db->quoteName('a.catid'), $categoryId); } } if ($tagSearch) { if (!$keywords) { // No keywords, select nothing. $query->where('0 != 0'); } else { $temp = []; $config = ComponentHelper::getParams('com_banners'); $prefix = $config->get('metakey_prefix', ''); if ($categoryId) { $query->join('LEFT', $db->quoteName('#__categories', 'cat'), $db->quoteName('a.catid') . ' = ' . $db->quoteName('cat.id')); } foreach ($keywords as $key => $keyword) { $regexp = $db->getServerType() === 'mysql' ? '\\b' . $keyword . '\\b' : '[[:<:]]' . $keyword . '[[:>:]]'; $valuesToBind = [$keyword, $keyword, $regexp]; if ($cid) { $valuesToBind[] = $regexp; } if ($categoryId) { $valuesToBind[] = $regexp; } // Because values to $query->bind() are passed by reference, using $query->bindArray() here instead to prevent overwriting. $bounded = $query->bindArray($valuesToBind, ParameterType::STRING); $condition1 = $db->quoteName('a.own_prefix') . ' = 1' . ' AND ' . $db->quoteName('a.metakey_prefix') . ' = SUBSTRING(' . $bounded[0] . ',1,LENGTH(' . $db->quoteName('a.metakey_prefix') . '))' . ' OR ' . $db->quoteName('a.own_prefix') . ' = 0' . ' AND ' . $db->quoteName('cl.own_prefix') . ' = 1' . ' AND ' . $db->quoteName('cl.metakey_prefix') . ' = SUBSTRING(' . $bounded[1] . ',1,LENGTH(' . $db->quoteName('cl.metakey_prefix') . '))' . ' OR ' . $db->quoteName('a.own_prefix') . ' = 0' . ' AND ' . $db->quoteName('cl.own_prefix') . ' = 0' . ' AND ' . (str_starts_with($keyword, $prefix) ? '0 = 0' : '0 != 0'); $condition2 = $db->quoteName('a.metakey') . ' ' . $query->regexp($bounded[2]); if ($cid) { $condition2 .= ' OR ' . $db->quoteName('cl.metakey') . ' ' . $query->regexp($bounded[3]) . ' '; } if ($categoryId) { $condition2 .= ' OR ' . $db->quoteName('cat.metakey') . ' ' . $query->regexp($bounded[4]) . ' '; } $temp[] = "($condition1) AND ($condition2)"; } $query->where('(' . implode(' OR ', $temp) . ')'); } } // Filter by language if ($this->getState('filter.language')) { $query->whereIn($db->quoteName('a.language'), [Factory::getLanguage()->getTag(), '*'], ParameterType::STRING); } $query->order($db->quoteName('a.sticky') . ' DESC, ' . ($randomise ? $query->rand() : $db->quoteName('a.ordering'))); return $query; } /** * Get a list of banners. * * @return array * * @since 1.6 */ public function getItems() { if ($this->getState('filter.tag_search')) { // Filter out empty keywords. $keywords = array_values(array_filter(array_map('trim', $this->getState('filter.keywords')), 'strlen')); // Re-set state before running the query. $this->setState('filter.keywords', $keywords); // If no keywords are provided, avoid running the query. if (!$keywords) { $this->cache['items'] = []; return $this->cache['items']; } } if (!isset($this->cache['items'])) { $this->cache['items'] = parent::getItems(); if (\is_array($this->cache['items'])) { foreach ($this->cache['items'] as &$item) { $item->params = new Registry($item->params); } } } return $this->cache['items']; } /** * Makes impressions on a list of banners * * @return void * * @since 1.6 * @throws \Exception */ public function impress() { $trackDate = Factory::getDate()->format('Y-m-d H:00:00'); $trackDate = Factory::getDate($trackDate)->toSql(); $items = $this->getItems(); $db = $this->getDatabase(); $bid = []; if (!\count($items)) { return; } foreach ($items as $item) { $bid[] = (int) $item->id; } // Increment impression made $query = $db->getQuery(true); $query->update($db->quoteName('#__banners')) ->set($db->quoteName('impmade') . ' = ' . $db->quoteName('impmade') . ' + 1') ->whereIn($db->quoteName('id'), $bid); $db->setQuery($query); try { $db->execute(); } catch (ExecutionFailureException $e) { throw new \Exception($e->getMessage(), 500); } foreach ($items as $item) { // Track impressions $trackImpressions = $item->track_impressions; if ($trackImpressions < 0 && $item->cid) { $trackImpressions = $item->client_track_impressions; } if ($trackImpressions < 0) { $config = ComponentHelper::getParams('com_banners'); $trackImpressions = $config->get('track_impressions'); } if ($trackImpressions > 0) { // Is track already created? // Update count $query = $db->getQuery(true); $query->update($db->quoteName('#__banner_tracks')) ->set($db->quoteName('count') . ' = ' . $db->quoteName('count') . ' + 1') ->where( [ $db->quoteName('track_type') . ' = 1', $db->quoteName('banner_id') . ' = :id', $db->quoteName('track_date') . ' = :trackDate', ] ) ->bind(':id', $item->id, ParameterType::INTEGER) ->bind(':trackDate', $trackDate); $db->setQuery($query); try { $db->execute(); } catch (ExecutionFailureException $e) { throw new \Exception($e->getMessage(), 500); } if ($db->getAffectedRows() === 0) { // Insert new count $query = $db->getQuery(true); $query->insert($db->quoteName('#__banner_tracks')) ->columns( [ $db->quoteName('count'), $db->quoteName('track_type'), $db->quoteName('banner_id'), $db->quoteName('track_date'), ] ) ->values('1, 1, :id, :trackDate') ->bind(':id', $item->id, ParameterType::INTEGER) ->bind(':trackDate', $trackDate); $db->setQuery($query); try { $db->execute(); } catch (ExecutionFailureException $e) { throw new \Exception($e->getMessage(), 500); } } } } } } PK ��\�Sʉ� � src/Model/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\��5H $ src/Controller/DisplayController.phpnu �[��� <?php /** * @package Joomla.Site * @subpackage com_banners * * @copyright (C) 2006 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Component\Banners\Site\Controller; use Joomla\CMS\MVC\Controller\BaseController; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Banners Controller * * @since 1.5 */ class DisplayController extends BaseController { /** * Method when a banner is clicked on. * * @return void * * @since 1.5 */ public function click() { $id = $this->input->getInt('id', 0); if ($id) { /** @var \Joomla\Component\Banners\Site\Model\BannerModel $model */ $model = $this->getModel('Banner', 'Site', ['ignore_request' => true]); $model->setState('banner.id', $id); $model->click(); $this->setRedirect($model->getUrl()); } } } PK ��\�Sʉ� � src/Controller/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\�Sʉ� � src/.htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK =��\VX�� � joomla.asset.jsonnu �[��� PK =��\H��D/ / js/admin-banner-edit.min.jsnu �[��� PK =��\�!�3A A � js/admin-banner-edit.jsnu �[��� PK =��\G�Z_ _ " js/admin-banner-edit.min.js.gznu �[��� PK =��\�Sʉ� � � js/.htaccessnu �7��m PK =��\�Sʉ� � � .htaccessnu �7��m PK ��\c�MD D src/Service/Category.phpnu �[��� PK ��\ǝ�G� � � src/Service/Router.phpnu �[��� PK ��\�Sʉ� � � src/Service/.htaccessnu �7��m PK ��\��3]� � � src/Helper/BannerHelper.phpnu �[��� PK ��\�Sʉ� � � src/Helper/.htaccessnu �7��m PK ��\�dH H "