Let me give something back. This works for me. Do you have any other suggestions or comments?
<?php
/**
* @package HikaShop Order Shipping Filter Plugin
* @version 1.0.1
* @author Custom
* @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
*/
defined('_JEXEC') or die('Restricted access');
class plgHikashopOrder_shipping_filter extends JPlugin
{
public function __construct(&$subject, $config) {
parent::__construct($subject, $config);
$lang = JFactory::getLanguage();
$lang->load('plg_hikashop_order_shipping_filter', JPATH_ADMINISTRATOR);
}
public function onBeforeOrderListing($paramBase, &$extrafilters, &$pageInfo, &$filters, &$tables, &$searchMap, &$select) {
$extrafilters['shipping'] = $this;
$app = JFactory::getApplication();
$db = JFactory::getDbo();
$pageInfo->filter->filter_shipping_id = $app->getUserStateFromRequest(
$paramBase . ".filter_shipping_id",
'filter_shipping_id',
'',
'int'
);
if (!empty($pageInfo->filter->filter_shipping_id)) {
$filters[] = "b.order_shipping_id = " . (int)$pageInfo->filter->filter_shipping_id;
}
}
public function displayFilter($name, $info) {
$html = '';
switch($name) {
case 'shipping':
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('shipping_id, shipping_name')
->from(hikashop_table('shipping'))
->where('shipping_published = 1')
->order('shipping_name ASC');
$db->setQuery($query);
$methods = $db->loadObjectList();
$html .= '<select name="filter_shipping_id" id="filter_shipping_id" class="custom-select" onchange="document.adminForm.submit();">';
$html .= '<option value="">' . JText::_('FILTER_BY_SHIPPING_METHOD') . '</option>';
foreach($methods as $method) {
$selected = ($info->filter_shipping_id == $method->shipping_id) ? 'selected="selected"' : '';
$label = $method->shipping_id . ' : ' . $method->shipping_name;
$html .= '<option value="' . (int)$method->shipping_id . '" ' . $selected . '>' . htmlspecialchars($label, ENT_COMPAT, 'UTF-8') . '</option>';
}
$html .= '</select>';
if(!defined('HIKASHOP_J40') || !HIKASHOP_J40) {
$html .= "
<style>
#filter_shipping_id {
width: 250px;
display: inline-block;
margin-bottom: -9px;
}
</style>";
}
break;
}
return $html;
}
}