Re: Thanks for that, bendiy.

Posts: 302
Joined: 08/28/2007
Early adopter... addicted to alphas.Not KulvikTheminator

Okay, now I have the address saved to the uc_addresses table in the database. Also, I have added the delete query to delete the addresses associated with a uid. Posting here to get feedback. Gong to see if I can implement the saved addresses in checkout form bit posted above next.

<?php
/**
* Implementation of hook_user().
*/
function uc_addresses_user($op, &$edit, &$account, $category = null){
  global
$user;
  switch (
$op){
    case
'view':
      if (
user_access('edit and view addresses') || $user->uid == $account->uid) {
       
$link = l('here', 'user/'. $account->uid .'/addresses');
       
$items = array();
       
$items['addresses'] = array('title' => t('Manage Addresses'),
         
'value' => 'Click ' . $link . ' to manage your addresses.',
         
'class' => 'member',
        );
        return array(
t('Addresses') => $items);
      }
      else {
        return
NULL;
      }
    case
'register':
     
$form['address'] = array(
       
'#type' => 'fieldset',
       
'#title' => t("Address"),
       
'#collapsible' => TRUE,
       
'#collapsed' => FALSE,
      );
     
$form['address']['label'] = uc_textfield('Save Address As', $arg1->label, TRUE);
      if (
uc_address_field_enabled('first_name')) {
       
$form['address']['first_name'] = uc_textfield(uc_get_field_name('first_name'), $arg1->first_name, uc_address_field_required('first_name'));
      }
      if (
uc_address_field_enabled('last_name')) {
       
$form['address']['last_name'] = uc_textfield(uc_get_field_name('last_name'), $arg1->last_name, uc_address_field_required('last_name'));
      }
      if (
uc_address_field_enabled('phone')) {
       
$form['address']['phone'] = uc_textfield(uc_get_field_name('phone'), $arg1->phone, uc_address_field_required('phone'), NULL, 32, 16);
      }
      if (
uc_address_field_enabled('company')) {
       
$form['address']['company'] = uc_textfield(uc_get_field_name('company'), $arg1->company, uc_address_field_required('company'), NULL, 64);
      }
      if (
uc_address_field_enabled('street1')) {
       
$form['address']['street1'] = uc_textfield(uc_get_field_name('street1'), $arg1->street1, uc_address_field_required('street1'), NULL, 64);
      }
      if (
uc_address_field_enabled('street2')) {
       
$form['address']['street2'] = uc_textfield(uc_get_field_name('street2'), $arg1->street2, uc_address_field_required('street2'), NULL, 64);
      }
      if (
uc_address_field_enabled('city')) {
       
$form['address']['city'] = uc_textfield(uc_get_field_name('city'), $arg1->city, uc_address_field_required('city'));
      }
      if (
uc_address_field_enabled('country')) {
       
$form['address']['country'] = uc_country_select(uc_get_field_name('country'), $arg1->country, NULL, 'name', uc_address_field_required('country'));
      }
      if (
uc_address_field_enabled('zone')) {
        if (isset(
$_POST['country'])) {
         
$country_id = intval($_POST['country']);
        }
        else {
         
$country_id = $arg1->country;
        }
       
$form['address']['zone'] = uc_zone_select(uc_get_field_name('zone'), $arg1->zone, NULL, $country_id, 'name', uc_address_field_required('zone'));
      }
      if (
uc_address_field_enabled('postal_code')) {
       
$form['address']['postal_code'] = uc_textfield(uc_get_field_name('postal_code'), $arg1->postal_code, uc_address_field_required('postal_code'), NULL, 10, 10);
      }
      return
$form; // address form isn't themed
   
case 'insert':
     
db_query("INSERT INTO {uc_addresses} (uid, label, first_name, last_name, "
           
."phone, company, street1, street2, city, zone, postal_code, country, "
           
."created, modified) VALUES (%d, '%s', "
             
."'%s', '%s', '%s', "
             
."'%s', '%s', '%s', "
             
."'%s', %d, '%s', %d, "
             
."%d, %d)", $edit['uid'], $edit['label'],
              
$edit['first_name'], $edit['last_name'], $edit['phone'],
              
$edit['company'], $edit['street1'], $edit['street2'],
              
$edit['city'], $edit['zone'], $edit['postal_code'],
               ((
is_null($edit['country']) || $edit['country'] == 0) ? variable_get('uc_store_country', 840) : $edit['country']),
              
time(), time());
      return;
    case
'delete':
     
db_query("DELETE FROM {uc_addresses} where uid = %d", $account->uid);
      return;
  }
}
?>

Storing Address information in User Profile By: bendiy (74 replies) Thu, 10/25/2007 - 19:04