Current Path :
/
home
/
develito
/
www
/
components
/
com_jevents
/
libraries
/
filters
/
Or
Select Your Path :
Upload File :
New :
File
Dir
/home/develito/www/components/com_jevents/libraries/filters/Category.php
<?php /** * JEvents Component for Joomla! 3.x * * @version $Id: Category.php 3542 2012-04-20 08:17:05Z geraintedwards $ * @package JEvents * @copyright Copyright (C) 2008-2025 GWESystems Ltd * @license GNU/GPLv2, see http://www.gnu.org/licenses/gpl-2.0.html * @link http://www.jevents.net */ // ensure this file is being included by a parent file defined('_JEXEC') or die('Direct Access to this location is not allowed.'); use Joomla\CMS\Language\Text; use Joomla\CMS\Factory; use Joomla\CMS\Component\ComponentHelper; class jevCategoryFilter extends jevFilter { const filterType = "category"; function __construct($tablename, $filterfield, $isstring = true) { $this->filterType = self::filterType; // setup for all required function and classes $file = JPATH_SITE . '/components/com_jevents/mod.defines.php'; if (file_exists($file)) { include_once($file); } $reg = JevRegistry::getInstanceWithReferences("jevents"); $this->datamodel = $reg->getReference("jevents.datamodel", false); if (!$this->datamodel) { $this->datamodel = new JEventsDataModel(); $this->datamodel->setupComponentCatids(); } $this->filterLabel = Text::_('CATEGORY'); $this->filterNullValue = "0"; parent::__construct($tablename, "catid", true); $catid = $this->filter_value; // NO filtering of the list att all $this->allAccessibleCategories = $this->datamodel->accessibleCategoryList(null, $this->datamodel->mmcatids, $this->datamodel->mmcatidList); if ($this->filter_value == $this->filterNullValue || $this->filter_value == "") { $this->accessibleCategories = $this->allAccessibleCategories; } else { $this->accessibleCategories = $this->datamodel->accessibleCategoryList(null, array($catid), $catid); } } function _createFilter($prefix = "") { if (!$this->filterField) return ""; if ($this->filter_value == $this->filterNullValue || $this->filter_value == "") { return ""; } /* * code to allow filter to force events to be in ALL selected categories */ $params = ComponentHelper::getParams(JEV_COM_COMPONENT); if ($this->filter_value == $this->filterNullValue || $this->filter_value == "") { $input = Factory::getApplication()->input; $catidsIn = $input->getString('catids', 'NONE'); if ($catidsIn == "NONE" || $catidsIn == 0) { $catidsIn = $input->getString('category_fv', 'NONE'); } $separator = $params->get("catseparator", "|"); $catids = explode($separator, $catidsIn); //$catids= $this->datamodel->catids; if (count($catids) && $params->get("multicategory", 0)) { // Ths is 'Relational Division' $filter = " ev.ev_id in ( " . " SELECT catmaprd.evid " . " FROM #__jevents_catmap as catmaprd " . " WHERE catmaprd.catid IN(" . implode(",", $catids) . ") " . " AND catmaprd.catid IN(" . $this->accessibleCategories . ")" . " GROUP BY catmaprd.evid " . " HAVING COUNT(catmaprd.catid) = " . count($catids) . ")"; } else { $filter = " ev.catid IN (" . $this->accessibleCategories . ")"; } return $filter; } /* $sectionname = JEV_COM_COMPONENT; $db = Factory::getDbo(); $q_published = Factory::getApplication()->isClient('administrator') ? "\n WHERE c.published >= 0" : "\n WHERE c.published = 1"; $where = ' AND (c.id =' . $this->filter_value .' OR p.id =' . $this->filter_value .' OR gp.id =' . $this->filter_value .' OR ggp.id =' . $this->filter_value .')'; $query = "SELECT c.id" . "\n FROM #__categories AS c" . ' LEFT JOIN #__categories AS p ON p.id=c.parent_id' . ' LEFT JOIN #__categories AS gp ON gp.id=p.parent_id ' . ' LEFT JOIN #__categories AS ggp ON ggp.id=gp.parent_id ' . $q_published . "\n AND c.section = '".$sectionname."'" . "\n " . $where; ; $db->setQuery($query); $catlist = $db->loadColumn(); array_unshift($catlist,-1); $filter = " ev.catid IN (".implode(",",$catlist).")"; */ $filter = " ev.catid IN (" . $this->accessibleCategories . ")"; $user = Factory::getUser(); if ($params->get("multicategory", 0)) { // access will already be checked $filter = " catmap.catid IN(" . $this->accessibleCategories . ")"; $this->needsgroupby = true; } return $filter; } // Ths join to catmap tables should already be done! /* function _createJoinFilter($prefix=""){ if (!$this->filterField ) return ""; if (intval($this->filter_value)==$this->filterNullValue) return ""; $filter = ""; $params = ComponentHelper::getParams(JEV_COM_COMPONENT); if ($params->get("multicategory",0)){ $filter .= "\n #__jevents_catmap as catmap ON catmap.evid = rpt.eventid"; $filter .= "\n LEFT JOIN #__categories AS catmapcat ON catmap.catid = catmapcat.id"; } return $filter; } */ function _createfilterHTML() { return $this->createfilterHTML(true); } function createfilterHTML($allowAutoSubmit = true) { if (!$this->filterField) return ""; $filter_value = $this->filter_value; $input = Factory::getApplication()->input; // if catids come from the URL then use this if filter is blank if ($filter_value == $this->filterNullValue || $filter_value == "") { if ($input->getInt("catids", 0) > 0) { $filter_value = $input->getInt("catids", 0); } } $filterList = array(); $filterList["title"] = "<label class='evcategory_label' for='" . $this->filterType . "_fv'>" . Text::_("JEV_SELECT_CATEGORY") . "</label>"; if ($allowAutoSubmit) { $filterList["html"] = JEventsHTML::buildCategorySelect($filter_value, 'onchange="if (document.getElementById(\'catidsfv\')) document.getElementById(\'catidsfv\').value=this.value;submit(this.form)" ', $this->allAccessibleCategories, false, false, 0, $this->filterType . '_fv', // Use this to allow multi-category filtering // JEV_COM_COMPONENT, false, "ordering", false, true ); JEV_COM_COMPONENT, false, "ordering", false, false ); } else { $filterList["html"] = JEventsHTML::buildCategorySelect($filter_value, 'onchange="if (document.getElementById(\'catidsfv\')) document.getElementById(\'catidsfv\').value=this.value;" ', $this->allAccessibleCategories, false, false, 0, $this->filterType . '_fv', // Use this to allow multi-category filtering // JEV_COM_COMPONENT, false, "ordering", false, true ); JEV_COM_COMPONENT, false, "ordering", false, false ); } // if there is only one category then do not show the filter if (strpos($filterList["html"], "<select") === false) { return ""; } // try/catch incase this is called without a filter module! $script = <<<SCRIPT try { JeventsFilters.filters.push( { id:'{$this->filterType}_fv', value:0 } ); } catch (e) {} function reset{$this->filterType}_fvs(){ if (document.getElementById('catidsfv')) { document.getElementById('catidsfv').value=0; } jQuery('#{$this->filterType}_fv option').each(function(idx, item){ item.selected=(item.value==0)?true:false; }) }; try { JeventsFilters.filters.push( { action:'reset{$this->filterType}_fvs()', id:'{$this->filterType}_fv', value:{$this->filterNullValue} } ); } catch (e) {} SCRIPT; $document = Factory::getDocument(); $document->addScriptDeclaration($script); return $filterList; } function createfilterHtmlUIkit($allowAutoSubmit = true) { if (!$this->filterField) return ""; $filter_value = $this->filter_value; $input = Factory::getApplication()->input; // if catids come from the URL then use this if filter is blank if ($filter_value == $this->filterNullValue || $filter_value == "") { if ($input->getInt("catids", 0) > 0) { $filter_value = $input->getInt("catids", 0); } } $filterList = array(); $filterList["title"] = "<label for='" . $this->filterType . "_fv'>" . Text::_("JEV_SELECT_CATEGORY") . "</label>"; if ($allowAutoSubmit) { $filterList["html"] = JEventsHTML::buildCategorySelect($filter_value, 'onchange="if (document.getElementById(\'catidsfv\')) document.getElementById(\'catidsfv\').value=this.value;submit(this.form)" ', $this->allAccessibleCategories, false, false, 0, $this->filterType . '_fv', // Use this to allow multi-category filtering // JEV_COM_COMPONENT, false, "ordering", false, true ); JEV_COM_COMPONENT, false, "ordering", false, false ); } else { $filterList["html"] = JEventsHTML::buildCategorySelect($filter_value, 'onchange="if (document.getElementById(\'catidsfv\')) document.getElementById(\'catidsfv\').value=this.value;" ', $this->allAccessibleCategories, false, false, 0, $this->filterType . '_fv', // Use this to allow multi-category filtering // JEV_COM_COMPONENT, false, "ordering", false, true ); JEV_COM_COMPONENT, false, "ordering", false, false ); } // if there is only one category then do not show the filter if (strpos($filterList["html"], "<select") === false) { return ""; } $filterList["html"] = str_replace("gsl-select", "gsl-select uk-select uk-form-medium uk-form-width-medium", $filterList["html"]) ; // try/catch incase this is called without a filter module! $script = <<<SCRIPT try { JeventsFilters.filters.push( { id:'{$this->filterType}_fv', value:0 } ); } catch (e) {} function reset{$this->filterType}_fvs(){ if (document.getElementById('catidsfv')) { document.getElementById('catidsfv').value=0; } jQuery('#{$this->filterType}_fv option').each(function(idx, item){ item.selected=(item.value==0)?true:false; }) }; try { JeventsFilters.filters.push( { action:'reset{$this->filterType}_fvs()', id:'{$this->filterType}_fv', value:{$this->filterNullValue} } ); } catch (e) {} SCRIPT; $document = Factory::getDocument(); $document->addScriptDeclaration($script); return $filterList; } }