You are here

function uc_shipping_zones_get in Ubercart Global Quote 6

Same name and namespace in other branches
  1. 7 uc_shipping_zones/uc_shipping_zones.module \uc_shipping_zones_get()

Get shipping zones

Parameters

$country: country name or code (optional)

Return value

an array containing the shipping zones.

2 calls to uc_shipping_zones_get()
uc_global_quote_quote in ./uc_global_quote.module
Standard callback to return a shipping rate via the flat rate method.
uc_shipping_zones_admin_validate in uc_shipping_zones/uc_shipping_zones_admin.inc

File

uc_shipping_zones/uc_shipping_zones.module, line 48
Provides zone definitions for uc_global_quote

Code

function uc_shipping_zones_get($country = NULL, $region = NULL) {
  if (!$country) {
    $r = db_query("SELECT * FROM {uc_shipping_zones} ORDER BY name");
  }
  else {
    if (is_int($country)) {
      $c->name = uc_country_get_by_id($country);
      $c->id = $country;
    }
    else {
      $c->name = $country;
      $c->id = db_result(db_query("SELECT country_name FROM {uc_countries} WHERE country_name = '%s'", $country));
    }
    if (is_int($region)) {
      $r->name = uc_zone_get_by_id($region);
      $r->id = $region;
    }
    else {
      $r->name = $region;
      $r->id = db_result(db_query("SELECT zone_name FROM {uc_zones} WHERE zone_name = '%s'", $region));
    }

    // Willcard countries without regions
    if ($region < 1 && !db_result(db_query("SELECT zone_id FROM {uc_zones} WHERE zone_country_id = %d", $c->id))) {
      $row = db_query("SELECT * FROM {uc_shipping_zones} WHERE countries LIKE '%%%s%%'", $c->name . ',' . $c->id);
    }
    else {
      $row = db_query("SELECT * FROM {uc_shipping_zones} WHERE countries LIKE '%%%s%%' AND (regions LIKE '%%%s%%' OR (regions IS NULL OR regions = '')) ORDER BY name", $c->name . ',' . $c->id, $r->name . ',' . $r->id);
    }
    return db_fetch_object($row);
  }
  $rows = array();
  while ($row = db_fetch_object($r)) {
    $rows[] = $row;
  }
  return $rows;
}