public static function getAllRegions($order = 'id')
{
$db = Factory::getDBO();
/*$query = 'SELECT a.id AS value, a.title AS text'
.' FROM #__phocacart_countries AS a'
. ' ORDER BY '. $order;
$query = 'SELECT a.id AS value, a.title AS text, a.country_id as countrid'
.' FROM #__phocacart_regions AS a'
. ' ORDER BY '. $order;*/
$query = 'SELECT a.id AS value, a.title AS text, a.country_id as cid, c.title as countrytext' . ' FROM #__phocacart_regions AS a' . ' LEFT JOIN #__phocacart_countries AS c ON c.id = a.country_id' . ' ORDER BY c.id, a.' . $order;
$db->setQuery($query);
$regions = $db->loadObjectList();
foreach ($regions as $k => $v) {
$v->text = $v->countrytext . ' - ' . $v->text;
}
return $regions;
/*
//$regionsO = JHtml::_('select.genericlist', $regions, $name, 'class="form-control" size="4" multiple="multiple"'. $javascript, 'value', 'text', $activeArray, $id);
// Try to do 1 SQL Query and 1 Foreach
$prev = 0;// the id of previous item
$usedFirst = 0;// first time opened the optgroup, so we can close it next time when cid is differnt to prev
$open = 0;// if we reach the end of foreach, we discover if the tag is open, if yet, close it.
$countRegions = count($regions);
$regionsO = '';
$regionsO .= '<select id="'.$id.'" name="'.$name.'" class="form-control" size="4" multiple="multiple">';
$i = 0;
foreach($regions as $k => $v) {
$selected = '';
if (in_array((int)$v->value, $activeArray)) {
$selected = 'selected="selected"';
}
// Groups
if ((int)$v->cid > 0 && $v->cid != $prev) {
if ($usedFirst == 1) {
$regionsO .= '</optgroup>';
$open = 0;
}
$regionsO .= '<optgroup label="'.$v->countrytext.'">';
$prev = (int)$v->cid;// we prepare previous version
$usedFirst = 1;// we have used the optgroup first time
$open = 1;
}
$regionsO .= '<option value="'.(int)$v->value.'" '.$selected.'>'.$v->text.'</option>';
$i++;
if ((int)$v->cid > 0 && $i == $countRegions && $open == 1) {
$regionsO .= '</optgroup>';
}
}
$regionsO .= '</select>';
return $regionsO;*/
}