You are here

function uc_extra_fields_pane_order in Extra Fields Checkout Pane 6

Same name and namespace in other branches
  1. 6.2 uc_extra_fields_pane.module \uc_extra_fields_pane_order()

File

./uc_extra_fields_pane.module, line 518

Code

function uc_extra_fields_pane_order($op, &$arg1, $arg2) {
  switch ($op) {
    case 'new':

      // do nothing, extra field cannot be handled here
      break;
    case 'save':
      if (is_array($arg1->extra_fields) && count($arg1->extra_fields)) {
        $fields = uc_extra_fields_pane_load_fields_from_db();
        $sql_field_names = array();
        $sql_field_values = array();
        foreach ($arg1->extra_fields as $key => $value) {
          $sql_field_names[] = $key;
          $sql_field_values[] = $value;
        }
        $sql_field_values[] = $arg1->order_id;
        db_query("update {uc_extra_fields_values} set " . implode("='%s',", $sql_field_names) . "='%s' where order_id=%d", $sql_field_values);
        if (!db_affected_rows()) {
          $placeholders = "";
          for ($i = 0; $i < count($sql_field_names); $i++) {
            $placeholders .= "'%s',";
          }
          db_query("insert into {uc_extra_fields_values}(" . implode(',', $sql_field_names) . ",order_id) values (" . $placeholders . "%d)", $sql_field_values);
        }
      }
      break;
    case 'load':
      $arg1->extra_fields = array();
      $values = db_fetch_array(db_query("select * from {uc_extra_fields_values} where order_id=%d", $arg1->order_id));
      if ($values && count($values)) {
        foreach ($values as $key => $value) {
          if ($value && $key != 'order_id') {
            $arg1->extra_fields[$key] = $value;
          }
        }
      }
      break;
  }
}