You are here

function uc_flatrate_nodeapi in Ubercart 6.2

Same name and namespace in other branches
  1. 5 shipping/uc_flatrate/uc_flatrate.module \uc_flatrate_nodeapi()

Implements hook_nodeapi().

File

shipping/uc_flatrate/uc_flatrate.module, line 90
Shipping quote module that defines a flat shipping rate for each product.

Code

function uc_flatrate_nodeapi(&$node, $op) {
  if (uc_product_is_product($node->type)) {
    switch ($op) {
      case 'insert':
      case 'update':
        if (isset($node->flatrate) && is_array($node->flatrate)) {
          if (!$node->revision) {
            db_query("DELETE FROM {uc_flatrate_products} WHERE vid = %d", $node->vid);
          }
          foreach ($node->flatrate as $mid => $rate) {
            if (is_numeric($rate) && $rate >= 0) {
              db_query("INSERT INTO {uc_flatrate_products} (vid, nid, mid, rate) VALUES (%d, %d, %d, %f)", $node->vid, $node->nid, $mid, $rate);
            }
          }
        }
        break;
      case 'load':
        $return = array(
          'flatrate' => array(),
        );
        $result = db_query("SELECT mid, rate FROM {uc_flatrate_products} WHERE vid = %d", $node->vid);
        while ($rate = db_fetch_object($result)) {
          $return['flatrate'][$rate->mid] = $rate->rate;
        }
        return $return;
        break;
      case 'delete':
        db_query("DELETE FROM {uc_flatrate_products} WHERE nid = %d", $node->nid);
        break;
      case 'delete revision':
        db_query("DELETE FROM {uc_flatrate_products} WHERE vid = %d", $node->vid);
        break;
    }
  }
}