[ 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/pages/address_book_process/ -> header_php.php (source)

   1  <?php
   2  /**

   3   * Header code file for the Address Book Process page

   4   *

   5   * @package page

   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: header_php.php 4824 2006-10-23 21:01:28Z drbyte $

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

  12  $zco_notifier->notify('NOTIFY_HEADER_START_ADDRESS_BOOK_PROCESS');
  13  
  14  if (!$_SESSION['customer_id']) {
  15    $_SESSION['navigation']->set_snapshot();
  16    zen_redirect(zen_href_link(FILENAME_LOGIN, '', 'SSL'));
  17  }
  18  
  19  require(DIR_WS_MODULES . zen_get_module_directory('require_languages.php'));
  20  
  21  /**

  22   * Process deletes

  23   */
  24  if (isset($_GET['action']) && ($_GET['action'] == 'deleteconfirm') && isset($_GET['delete']) && is_numeric($_GET['delete'])) {
  25    $sql = "DELETE FROM " . TABLE_ADDRESS_BOOK . "
  26            WHERE  address_book_id = :delete 
  27            AND    customers_id = :customersID";
  28  
  29    $sql = $db->bindVars($sql, ':customersID', $_SESSION['customer_id'], 'integer');
  30    $sql = $db->bindVars($sql, ':delete', $_GET['delete'], 'integer');
  31    $db->Execute($sql);
  32  
  33    $zco_notifier->notify('NOTIFY_HEADER_ADDRESS_BOOK_DELETION_DONE');
  34  
  35    $messageStack->add_session('addressbook', SUCCESS_ADDRESS_BOOK_ENTRY_DELETED, 'success');
  36  
  37    zen_redirect(zen_href_link(FILENAME_ADDRESS_BOOK, '', 'SSL'));
  38  }
  39  
  40  /**

  41   * Set some defaults

  42   */
  43    $process = false;
  44    $zone_name = '';
  45    $entry_state_has_zones = '';
  46    $error_state_input = false;
  47    $state = '';
  48    $zone_id = 0;
  49    $error = false;
  50  /**

  51   * Process new/update actions

  52   */
  53  if (isset($_POST['action']) && (($_POST['action'] == 'process') || ($_POST['action'] == 'update'))) {
  54    $process = true;
  55  
  56    if (ACCOUNT_GENDER == 'true') $gender = zen_db_prepare_input($_POST['gender']);
  57    if (ACCOUNT_COMPANY == 'true') $company = zen_db_prepare_input($_POST['company']);
  58    $firstname = zen_db_prepare_input($_POST['firstname']);
  59    $lastname = zen_db_prepare_input($_POST['lastname']);
  60    $street_address = zen_db_prepare_input($_POST['street_address']);
  61    if (ACCOUNT_SUBURB == 'true') $suburb = zen_db_prepare_input($_POST['suburb']);
  62    $postcode = zen_db_prepare_input($_POST['postcode']);
  63    $city = zen_db_prepare_input($_POST['city']);
  64  
  65  
  66    /**

  67       * error checking when updating or adding an entry

  68       */
  69    if (ACCOUNT_STATE == 'true') {
  70      $state = zen_db_prepare_input($_POST['state']);
  71      if (isset($_POST['zone_id'])) {
  72        $zone_id = zen_db_prepare_input($_POST['zone_id']);
  73      } else {
  74        $zone_id = false;
  75      }
  76    }
  77    $country = zen_db_prepare_input($_POST['zone_country_id']);
  78    //echo ' I SEE: country=' . $country . '&nbsp;&nbsp;&nbsp;state=' . $state . '&nbsp;&nbsp;&nbsp;zone_id=' . $zone_id;

  79  
  80    if (ACCOUNT_GENDER == 'true') {
  81      if ( ($gender != 'm') && ($gender != 'f') ) {
  82        $error = true;
  83        $messageStack->add('addressbook', ENTRY_GENDER_ERROR);
  84      }
  85    }
  86  
  87    if (strlen($firstname) < ENTRY_FIRST_NAME_MIN_LENGTH) {
  88      $error = true;
  89      $messageStack->add('addressbook', ENTRY_FIRST_NAME_ERROR);
  90    }
  91  
  92    if (strlen($lastname) < ENTRY_LAST_NAME_MIN_LENGTH) {
  93      $error = true;
  94      $messageStack->add('addressbook', ENTRY_LAST_NAME_ERROR);
  95    }
  96  
  97    if (strlen($street_address) < ENTRY_STREET_ADDRESS_MIN_LENGTH) {
  98      $error = true;
  99      $messageStack->add('addressbook', ENTRY_STREET_ADDRESS_ERROR);
 100    }
 101  
 102    if (strlen($city) < ENTRY_CITY_MIN_LENGTH) {
 103      $error = true;
 104      $messageStack->add('addressbook', ENTRY_CITY_ERROR);
 105    }
 106  
 107    if (ACCOUNT_STATE == 'true') {
 108      $check_query = "SELECT count(*) AS total
 109                      FROM " . TABLE_ZONES . "
 110                      WHERE zone_country_id = :zoneCountryID";
 111      $check_query = $db->bindVars($check_query, ':zoneCountryID', $country, 'integer');
 112      $check = $db->Execute($check_query);
 113      $entry_state_has_zones = ($check->fields['total'] > 0);
 114      if ($entry_state_has_zones == true) {
 115        $zone_query = "SELECT distinct zone_id, zone_name, zone_code
 116                       FROM " . TABLE_ZONES . "
 117                       WHERE zone_country_id = :zoneCountryID
 118                       AND " . 
 119                       ((trim($state) != '' && $zone_id == 0) ? "(upper(zone_name) like ':zoneState%' OR upper(zone_code) like '%:zoneState%') OR " : "") .
 120                      "zone_id = :zoneID
 121                       ORDER BY zone_code ASC, zone_name";
 122  
 123        $zone_query = $db->bindVars($zone_query, ':zoneCountryID', $country, 'integer');
 124        $zone_query = $db->bindVars($zone_query, ':zoneState', strtoupper($state), 'noquotestring');
 125        $zone_query = $db->bindVars($zone_query, ':zoneID', $zone_id, 'integer');
 126        $zone = $db->Execute($zone_query);
 127  
 128        //look for an exact match on zone ISO code

 129        $found_exact_iso_match = ($zone->RecordCount() == 1);
 130        if ($zone->RecordCount() > 1) {
 131          while (!$zone->EOF && !$found_exact_iso_match) {
 132            if (strtoupper($zone->fields['zone_code']) == strtoupper($state) ) {
 133              $found_exact_iso_match = true;
 134              continue;
 135            }
 136            $zone->MoveNext();
 137          }
 138        }
 139  
 140        if ($found_exact_iso_match) {
 141          $zone_id = $zone->fields['zone_id'];
 142          $zone_name = $zone->fields['zone_name'];
 143        } else {
 144          $error = true;
 145          $error_state_input = true;
 146          $messageStack->add('addressbook', ENTRY_STATE_ERROR_SELECT);
 147        }
 148      } else {
 149        if (strlen($state) < ENTRY_STATE_MIN_LENGTH) {
 150          $error = true;
 151          $error_state_input = true;
 152          $messageStack->add('addressbook', ENTRY_STATE_ERROR);
 153        }
 154      }
 155    }
 156  
 157    if (strlen($postcode) < ENTRY_POSTCODE_MIN_LENGTH) {
 158      $error = true;
 159      $messageStack->add('addressbook', ENTRY_POST_CODE_ERROR);
 160    }
 161  
 162    if (!is_numeric($country)) {
 163      $error = true;
 164      $messageStack->add('addressbook', ENTRY_COUNTRY_ERROR);
 165    }
 166  
 167    if ($error == false) {
 168      $sql_data_array= array(array('fieldName'=>'entry_firstname', 'value'=>$firstname, 'type'=>'string'),
 169                             array('fieldName'=>'entry_lastname', 'value'=>$lastname, 'type'=>'string'),
 170                             array('fieldName'=>'entry_street_address', 'value'=>$street_address, 'type'=>'string'),
 171                             array('fieldName'=>'entry_postcode', 'value'=>$postcode, 'type'=>'string'),
 172                             array('fieldName'=>'entry_city', 'value'=>$city, 'type'=>'string'),
 173                             array('fieldName'=>'entry_country_id', 'value'=>$country, 'type'=>'integer'));
 174  
 175      if (ACCOUNT_GENDER == 'true') $sql_data_array[] = array('fieldName'=>'entry_gender', 'value'=>$gender, 'type'=>'enum:m|f');
 176      if (ACCOUNT_COMPANY == 'true') $sql_data_array[] = array('fieldName'=>'entry_company', 'value'=>$company, 'type'=>'string');
 177      if (ACCOUNT_SUBURB == 'true') $sql_data_array[] = array('fieldName'=>'entry_suburb', 'value'=>$suburb, 'type'=>'string');
 178      if (ACCOUNT_STATE == 'true') {
 179        if ($zone_id > 0) {
 180          $sql_data_array[] = array('fieldName'=>'entry_zone_id', 'value'=>$zone_id, 'type'=>'integer');
 181          $sql_data_array[] = array('fieldName'=>'entry_state', 'value'=>'', 'type'=>'string');
 182        } else {
 183          $sql_data_array[] = array('fieldName'=>'entry_zone_id', 'value'=>'0', 'type'=>'integer');
 184          $sql_data_array[] = array('fieldName'=>'entry_state', 'value'=>$state, 'type'=>'string');
 185        }
 186      }
 187  
 188      if ($_POST['action'] == 'update') {
 189        $where_clause = "address_book_id = :edit and customers_id = :customersID";
 190        $where_clause = $db->bindVars($where_clause, ':customersID', $_SESSION['customer_id'], 'integer');
 191        $where_clause = $db->bindVars($where_clause, ':edit', $_GET['edit'], 'integer');
 192        $db->perform(TABLE_ADDRESS_BOOK, $sql_data_array, 'update', $where_clause);
 193  
 194        $zco_notifier->notify('NOTIFY_HEADER_ADDRESS_BOOK_ENTRY_UPDATE_DONE');
 195  
 196        // re-register session variables

 197        if ( (isset($_POST['primary']) && ($_POST['primary'] == 'on')) || ($_GET['edit'] == $_SESSION['customer_default_address_id']) ) {
 198          $_SESSION['customer_first_name'] = $firstname;
 199          $_SESSION['customer_country_id'] = $country;
 200          $_SESSION['customer_zone_id'] = (($zone_id > 0) ? (int)$zone_id : '0');
 201          $_SESSION['customer_default_address_id'] = (int)$_GET['edit'];
 202  
 203          $sql_data_array = array(array('fieldName'=>'customers_firstname', 'value'=>$firstname, 'type'=>'string'),
 204                                  array('fieldName'=>'customers_lastname', 'value'=>$lastname, 'type'=>'string'),
 205                                  array('fieldName'=>'customers_default_address_id', 'value'=>$_GET['edit'], 'type'=>'integer'));
 206  
 207          if (ACCOUNT_GENDER == 'true') $sql_data_array[] = array('fieldName'=>'customers_gender', 'value'=>$gender, 'type'=>'enum:m|f');
 208          $where_clause = "customers_id = :customersID";
 209          $where_clause = $db->bindVars($where_clause, ':customersID', $_SESSION['customer_id'], 'integer');
 210          $db->perform(TABLE_CUSTOMERS, $sql_data_array, 'update', $where_clause);
 211        }
 212      } else {
 213  
 214        $sql_data_array[] = array('fieldName'=>'customers_id', 'value'=>$_SESSION['customer_id'], 'type'=>'integer');
 215  //      print_r($sql_data_array);

 216        $db->perform(TABLE_ADDRESS_BOOK, $sql_data_array);
 217  
 218        $new_address_book_id = $db->Insert_ID();
 219  
 220        $zco_notifier->notify('NOTIFY_HEADER_ADDRESS_BOOK_ADD_ENTRY_DONE');
 221  
 222        // reregister session variables

 223        if (isset($_POST['primary']) && ($_POST['primary'] == 'on')) {
 224          $_SESSION['customer_first_name'] = $firstname;
 225          $_SESSION['customer_country_id'] = $country;
 226          $_SESSION['customer_zone_id'] = (($zone_id > 0) ? (int)$zone_id : '0');
 227          if (isset($_POST['primary']) && ($_POST['primary'] == 'on')) $_SESSION['customer_default_address_id'] = $new_address_book_id;
 228  
 229          $sql_data_array = array(array('fieldName'=>'customers_firstname', 'value'=>$firstname, 'type'=>'string'),
 230                                  array('fieldName'=>'customers_lastname', 'value'=>$lastname, 'type'=>'string'));
 231  
 232          if (ACCOUNT_GENDER == 'true') $sql_data_array[] = array('fieldName'=>'customers_gender', 'value'=>$gender, 'type'=>'string');
 233          if (isset($_POST['primary']) && ($_POST['primary'] == 'on')) $sql_data_array[] = array('fieldName'=>'customers_default_address_id', 'value'=>$new_address_book_id, 'type'=>'integer');
 234  
 235          $where_clause = "customers_id = :customersID";
 236          $where_clause = $db->bindVars($where_clause, ':customersID', $_SESSION['customer_id'], 'integer');
 237          $db->perform(TABLE_CUSTOMERS, $sql_data_array, 'update', $where_clause);
 238        }
 239      }
 240  
 241      $messageStack->add_session('addressbook', SUCCESS_ADDRESS_BOOK_ENTRY_UPDATED, 'success');
 242  
 243      zen_redirect(zen_href_link(FILENAME_ADDRESS_BOOK, '', 'SSL'));
 244    }
 245  }
 246  
 247  if (isset($_GET['edit']) && is_numeric($_GET['edit'])) {
 248    $entry_query = "SELECT entry_gender, entry_company, entry_firstname, entry_lastname,
 249                           entry_street_address, entry_suburb, entry_postcode, entry_city,
 250                           entry_state, entry_zone_id, entry_country_id
 251                    FROM   " . TABLE_ADDRESS_BOOK . "
 252                    WHERE  customers_id = :customersID
 253                    AND    address_book_id = :addressBookID";
 254  
 255    $entry_query = $db->bindVars($entry_query, ':customersID', $_SESSION['customer_id'], 'integer');
 256    $entry_query = $db->bindVars($entry_query, ':addressBookID', $_GET['edit'], 'integer');
 257    $entry = $db->Execute($entry_query);
 258  
 259    if ($entry->RecordCount()<=0) {
 260      $messageStack->add_session('addressbook', ERROR_NONEXISTING_ADDRESS_BOOK_ENTRY);
 261  
 262      zen_redirect(zen_href_link(FILENAME_ADDRESS_BOOK, '', 'SSL'));
 263    }
 264    if (!isset($zone_name) || (int)$zone_name == 0) $zone_name = zen_get_zone_name($entry->fields['entry_country_id'], $entry->fields['entry_zone_id'], $entry->fields['entry_state']);
 265    if (!isset($zone_id) || (int)$zone_id == 0) $zone_id = $entry->fields['entry_zone_id'];
 266  
 267  } elseif (isset($_GET['delete']) && is_numeric($_GET['delete'])) {
 268    if ($_GET['delete'] == $_SESSION['customer_default_address_id']) {
 269      $messageStack->add_session('addressbook', WARNING_PRIMARY_ADDRESS_DELETION, 'warning');
 270  
 271      zen_redirect(zen_href_link(FILENAME_ADDRESS_BOOK, '', 'SSL'));
 272    } else {
 273      $check_query = "SELECT count(*) AS total
 274                      FROM " . TABLE_ADDRESS_BOOK . "
 275                      WHERE address_book_id = :addressBookID
 276                      AND customers_id = :customersID";
 277  
 278      $check_query = $db->bindVars($check_query, ':customersID', $_SESSION['customer_id'], 'integer');
 279      $check_query = $db->bindVars($check_query, ':addressBookID', $_GET['delete'], 'integer');
 280      $check = $db->Execute($check_query);
 281  
 282      if ($check->fields['total'] < 1) {
 283        $messageStack->add_session('addressbook', ERROR_NONEXISTING_ADDRESS_BOOK_ENTRY);
 284  
 285        zen_redirect(zen_href_link(FILENAME_ADDRESS_BOOK, '', 'SSL'));
 286      }
 287    }
 288  } else {
 289    $entry_query = "SELECT entry_country_id
 290                    FROM   " . TABLE_ADDRESS_BOOK . " a, " . TABLE_CUSTOMERS . " c
 291                    WHERE  a.customers_id = :customersID
 292                    AND  a.customers_id = c.customers_id
 293                    AND    a.address_book_id = c.customers_default_address_id";
 294  
 295    $entry_query = $db->bindVars($entry_query, ':customersID', $_SESSION['customer_id'], 'integer');
 296    $entry = $db->Execute($entry_query);
 297  }
 298  /*

 299   * Set flags for template use:

 300   */
 301    $selected_country = (isset($_POST['zone_country_id']) && $_POST['zone_country_id'] != '') ? $country : SHOW_CREATE_ACCOUNT_DEFAULT_COUNTRY;
 302    if ($process == true) $entry->fields['entry_country_id'] = $selected_country; 
 303    $flag_show_pulldown_states = ((($process == true || $entry_state_has_zones == true) && $zone_name == '') || ACCOUNT_STATE_DRAW_INITIAL_DROPDOWN == 'true' || $error_state_input) ? true : false;
 304    $state = ($flag_show_pulldown_states) ? $state : $zone_name;
 305    $state_field_label = ($flag_show_pulldown_states) ? '' : ENTRY_STATE;
 306  
 307  
 308  
 309  if (!isset($_GET['delete']) && !isset($_GET['edit'])) {
 310    if (zen_count_customer_address_book_entries() >= MAX_ADDRESS_BOOK_ENTRIES) {
 311      $messageStack->add_session('addressbook', ERROR_ADDRESS_BOOK_FULL);
 312      zen_redirect(zen_href_link(FILENAME_ADDRESS_BOOK, '', 'SSL'));
 313    }
 314  }
 315  
 316  $breadcrumb->add(NAVBAR_TITLE_1, zen_href_link(FILENAME_ACCOUNT, '', 'SSL'));
 317  $breadcrumb->add(NAVBAR_TITLE_2, zen_href_link(FILENAME_ADDRESS_BOOK, '', 'SSL'));
 318  
 319  if (isset($_GET['edit']) && is_numeric($_GET['edit'])) {
 320    $breadcrumb->add(NAVBAR_TITLE_MODIFY_ENTRY);
 321  } elseif (isset($_GET['delete']) && is_numeric($_GET['delete'])) {
 322    $breadcrumb->add(NAVBAR_TITLE_DELETE_ENTRY);
 323  } else {
 324    $breadcrumb->add(NAVBAR_TITLE_ADD_ENTRY);
 325  }
 326  
 327  // This should be last line of the script:

 328  $zco_notifier->notify('NOTIFY_HEADER_END_ADDRESS_BOOK_PROCESS');
 329  ?>


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