[ Index ]
 

Code source de Zen Cart E-Commerce Shopping Cart 1.3.7.1

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/includes/modules/ -> checkout_new_address.php (source)

   1  <?php
   2  /**

   3   * checkout_new_address.php

   4   *

   5   * @package modules

   6   * @copyright Copyright 2003-2006 Zen Cart Development Team

   7   * @copyright Portions Copyright 2003 osCommerce

   8   * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0

   9   * @version $Id: checkout_new_address.php 4824 2006-10-23 21:01:28Z drbyte $

  10   */
  11  // This should be first line of the script:

  12  $zco_notifier->notify('NOTIFY_MODULE_START_CHECKOUT_NEW_ADDRESS');
  13  
  14  if (!defined('IS_ADMIN_FLAG')) {
  15    die('Illegal Access');
  16  }
  17  /**

  18   * Set some defaults

  19   */
  20    $process = false;
  21    $zone_name = '';
  22    $entry_state_has_zones = '';
  23    $error_state_input = false;
  24    $state = '';
  25    $zone_id = 0;
  26    $error = false;
  27  
  28  if (isset($_POST['action']) && ($_POST['action'] == 'submit')) {
  29    // process a new address

  30    if (zen_not_null($_POST['firstname']) && zen_not_null($_POST['lastname']) && zen_not_null($_POST['street_address'])) {
  31      $process = true;
  32      if (ACCOUNT_GENDER == 'true') $gender = zen_db_prepare_input($_POST['gender']);
  33      if (ACCOUNT_COMPANY == 'true') $company = zen_db_prepare_input($_POST['company']);
  34      $firstname = zen_db_prepare_input($_POST['firstname']);
  35      $lastname = zen_db_prepare_input($_POST['lastname']);
  36      $street_address = zen_db_prepare_input($_POST['street_address']);
  37      if (ACCOUNT_SUBURB == 'true') $suburb = zen_db_prepare_input($_POST['suburb']);
  38      $postcode = zen_db_prepare_input($_POST['postcode']);
  39      $city = zen_db_prepare_input($_POST['city']);
  40      if (ACCOUNT_STATE == 'true') {
  41        $state = zen_db_prepare_input($_POST['state']);
  42        if (isset($_POST['zone_id'])) {
  43          $zone_id = zen_db_prepare_input($_POST['zone_id']);
  44        } else {
  45          $zone_id = false;
  46        }
  47      }
  48      $country = zen_db_prepare_input($_POST['zone_country_id']);
  49  //echo ' I SEE: country=' . $country . '&nbsp;&nbsp;&nbsp;state=' . $state . '&nbsp;&nbsp;&nbsp;zone_id=' . $zone_id;

  50      if (ACCOUNT_GENDER == 'true') {
  51        if ( ($gender != 'm') && ($gender != 'f') ) {
  52          $error = true;
  53          $messageStack->add('checkout_address', ENTRY_GENDER_ERROR);
  54        }
  55      }
  56  
  57      if (strlen($firstname) < ENTRY_FIRST_NAME_MIN_LENGTH) {
  58        $error = true;
  59        $messageStack->add('checkout_address', ENTRY_FIRST_NAME_ERROR);
  60      }
  61  
  62      if (strlen($lastname) < ENTRY_LAST_NAME_MIN_LENGTH) {
  63        $error = true;
  64        $messageStack->add('checkout_address', ENTRY_LAST_NAME_ERROR);
  65      }
  66  
  67      if (strlen($street_address) < ENTRY_STREET_ADDRESS_MIN_LENGTH) {
  68        $error = true;
  69        $messageStack->add('checkout_address', ENTRY_STREET_ADDRESS_ERROR);
  70      }
  71  
  72      if (strlen($city) < ENTRY_CITY_MIN_LENGTH) {
  73        $error = true;
  74        $messageStack->add('checkout_address', ENTRY_CITY_ERROR);
  75      }
  76  
  77      if (ACCOUNT_STATE == 'true') {
  78        $check_query = "SELECT count(*) AS total
  79                        FROM " . TABLE_ZONES . "
  80                        WHERE zone_country_id = :zoneCountryID";
  81        $check_query = $db->bindVars($check_query, ':zoneCountryID', $country, 'integer');
  82        $check = $db->Execute($check_query);
  83        $entry_state_has_zones = ($check->fields['total'] > 0);
  84        if ($entry_state_has_zones == true) {
  85        $zone_query = "SELECT distinct zone_id, zone_name, zone_code
  86                         FROM " . TABLE_ZONES . "
  87                         WHERE zone_country_id = :zoneCountryID
  88                         AND " . 
  89                       ((trim($state) != '' && $zone_id == 0) ? "(upper(zone_name) like ':zoneState%' OR upper(zone_code) like '%:zoneState%') OR " : "") .
  90                        "zone_id = :zoneID
  91                         ORDER BY zone_code ASC, zone_name";
  92  
  93          $zone_query = $db->bindVars($zone_query, ':zoneCountryID', $country, 'integer');
  94          $zone_query = $db->bindVars($zone_query, ':zoneState', strtoupper($state), 'noquotestring');
  95          $zone_query = $db->bindVars($zone_query, ':zoneID', $zone_id, 'integer');
  96          $zone = $db->Execute($zone_query);
  97  
  98        //look for an exact match on zone ISO code

  99        $found_exact_iso_match = ($zone->RecordCount() == 1);
 100        if ($zone->RecordCount() > 1) {
 101          while (!$zone->EOF && !$found_exact_iso_match) {
 102            if (strtoupper($zone->fields['zone_code']) == strtoupper($state) ) {
 103              $found_exact_iso_match = true;
 104              continue;
 105            }
 106            $zone->MoveNext();
 107          }
 108        }
 109  
 110        if ($found_exact_iso_match) {
 111          $zone_id = $zone->fields['zone_id'];
 112          $zone_name = $zone->fields['zone_name'];
 113        } else {
 114          $error = true;
 115          $error_state_input = true;
 116          $messageStack->add('checkout_address', ENTRY_STATE_ERROR_SELECT);
 117        }
 118      } else {
 119        if (strlen($state) < ENTRY_STATE_MIN_LENGTH) {
 120          $error = true;
 121          $error_state_input = true;
 122          $messageStack->add('checkout_address', ENTRY_STATE_ERROR);
 123        }
 124      }
 125    }
 126  
 127      if (strlen($postcode) < ENTRY_POSTCODE_MIN_LENGTH) {
 128        $error = true;
 129        $messageStack->add('checkout_address', ENTRY_POST_CODE_ERROR);
 130      }
 131  
 132      if ( (is_numeric($country) == false) || ($country < 1) ) {
 133        $error = true;
 134        $messageStack->add('checkout_address', ENTRY_COUNTRY_ERROR);
 135      }
 136  
 137      if ($error == false) {
 138        $sql_data_array = array(array('fieldName'=>'customers_id', 'value'=>$_SESSION['customer_id'], 'type'=>'integer'),
 139                                array('fieldName'=>'entry_firstname', 'value'=>$firstname, 'type'=>'string'),
 140                                array('fieldName'=>'entry_lastname','value'=>$lastname, 'type'=>'string'),
 141                                array('fieldName'=>'entry_street_address','value'=>$street_address, 'type'=>'string'),
 142                                array('fieldName'=>'entry_postcode', 'value'=>$postcode, 'type'=>'string'),
 143                                array('fieldName'=>'entry_city', 'value'=>$city, 'type'=>'string'),
 144                                array('fieldName'=>'entry_country_id', 'value'=>$country, 'type'=>'integer')
 145        );
 146  
 147        if (ACCOUNT_GENDER == 'true') $sql_data_array[] = array('fieldName'=>'entry_gender', 'value'=>$gender, 'type'=>'enum:m|f');
 148        if (ACCOUNT_COMPANY == 'true') $sql_data_array[] = array('fieldName'=>'entry_company', 'value'=>$company, 'type'=>'string');
 149        if (ACCOUNT_SUBURB == 'true') $sql_data_array[] = array('fieldName'=>'entry_suburb', 'value'=>$suburb, 'type'=>'string');
 150        if (ACCOUNT_STATE == 'true') {
 151          if ($zone_id > 0) {
 152            $sql_data_array[] = array('fieldName'=>'entry_zone_id', 'value'=>$zone_id, 'type'=>'integer');
 153            $sql_data_array[] = array('fieldName'=>'entry_state', 'value'=>'', 'type'=>'string');
 154          } else {
 155            $sql_data_array[] = array('fieldName'=>'entry_zone_id', 'value'=>0, 'type'=>'integer');
 156            $sql_data_array[] = array('fieldName'=>'entry_state', 'value'=>$state, 'type'=>'string');
 157          }
 158        }
 159        $db->perform(TABLE_ADDRESS_BOOK, $sql_data_array);
 160        switch($addressType) {
 161          case 'billto':
 162          $_SESSION['billto'] = $db->Insert_ID();
 163          $_SESSION['payment'] = '';
 164          zen_redirect(zen_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
 165          break;
 166          case 'shipto':
 167          $_SESSION['sendto'] = $db->Insert_ID();
 168          $_SESSION['shipping'] = '';
 169          zen_redirect(zen_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
 170          break;
 171        }
 172      }
 173    } elseif (isset($_POST['address'])) {
 174      switch($addressType) {
 175        case 'billto':
 176        $reset_payment = false;
 177        if ($_SESSION['billto']) {
 178          if ($_SESSION['billto'] != $_POST['address']) {
 179            if ($_SESSION['payment']) {
 180              $reset_payment = true;
 181            }
 182          }
 183        }
 184        $_SESSION['billto'] = $_POST['address'];
 185  
 186        $check_address_query = "SELECT count(*) AS total
 187                                FROM " . TABLE_ADDRESS_BOOK . "
 188                                WHERE customers_id = :customersID
 189                                AND address_book_id = :addressBookID";
 190  
 191        $check_address_query = $db->bindVars($check_address_query, ':customersID', $_SESSION['customer_id'], 'integer');
 192        $check_address_query = $db->bindVars($check_address_query, ':addressBookID', $_SESSION['billto'], 'integer');
 193        $check_address = $db->Execute($check_address_query);
 194  
 195        if ($check_address->fields['total'] == '1') {
 196          if ($reset_payment == true) $_SESSION['payment'] = '';
 197          zen_redirect(zen_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
 198        } else {
 199          $_SESSION['billto'] = '';
 200        }
 201        // no addresses to select from - customer decided to keep the current assigned address

 202        break;
 203        case 'shipto':
 204        $reset_shipping = false;
 205        if ($_SESSION['sendto']) {
 206          if ($_SESSION['sendto'] != $_POST['address']) {
 207            if ($_SESSION['shipping']) {
 208              $reset_shipping = true;
 209            }
 210          }
 211        }
 212       $_SESSION['sendto'] = $_POST['address'];
 213        $check_address_query = "SELECT count(*) AS total
 214                                FROM " . TABLE_ADDRESS_BOOK . "
 215                                WHERE customers_id = :customersID
 216                                AND address_book_id = :addressBookID";
 217  
 218        $check_address_query = $db->bindVars($check_address_query, ':customersID', $_SESSION['customer_id'], 'integer');
 219        $check_address_query = $db->bindVars($check_address_query, ':addressBookID', $_SESSION['sendto'], 'integer');
 220        $check_address = $db->Execute($check_address_query);
 221        if ($check_address->fields['total'] == '1') {
 222          if ($reset_shipping == true) $_SESSION['shipping'] = '';
 223          zen_redirect(zen_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
 224        } else {
 225          $_SESSION['sendto'] = '';
 226        }
 227        break;
 228      }
 229    } else {
 230      switch($addressType) {
 231        case 'billto':
 232        $_SESSION['billto'] = $_SESSION['customer_default_address_id'];
 233        zen_redirect(zen_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
 234        break;
 235        case 'shipto':
 236        $_SESSION['sendto'] = $_SESSION['customer_default_address_id'];
 237        zen_redirect(zen_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
 238        break;
 239      }
 240    }
 241  }
 242  
 243  
 244  /*

 245   * Set flags for template use:

 246   */
 247    $selected_country = (isset($_POST['zone_country_id']) && $_POST['zone_country_id'] != '') ? $country : SHOW_CREATE_ACCOUNT_DEFAULT_COUNTRY;
 248    $flag_show_pulldown_states = ((($process == true || $entry_state_has_zones == true) && $zone_name == '') || ACCOUNT_STATE_DRAW_INITIAL_DROPDOWN == 'true' || $error_state_input) ? true : false;
 249    $state = ($flag_show_pulldown_states) ? $state : $zone_name;
 250    $state_field_label = ($flag_show_pulldown_states) ? '' : ENTRY_STATE;
 251  
 252  // This should be last line of the script:

 253  $zco_notifier->notify('NOTIFY_MODULE_END_CHECKOUT_NEW_ADDRESS');
 254  ?>


Généré le : Mon Nov 26 16:45:43 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics