);
}
+ /**
+ * getCityIdByName
+ *
+ * Find the name of the city with a given id.
+ *
+ * @param int $city_id The city id
+ *
+ * @return string Name of the city.
+ */
+ public function getCityIdByName( $city_id )
+ {
+ return $this->wpdb->get_var(
+ $this->wpdb->prepare(
+ "SELECT name
+ FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "cities
+ WHERE id = %d",
+ $city_id
+ )
+ );
+ }
+
+ /**
+ * saveContactBillingData
+ *
+ * @param int $ref_dest Member Id.
+ *
+ * @return mixed Boolean or Array for an error.
+ */
public function saveContactBillingData( $ref_dest )
{
$required_fields = $errors = array();
+ $city_name = '';
$billingAccount = new GlmDataAccounts( $this->wpdb, $this->config );
$billingFields = $billingAccount->fields;
if ( $billingFields ) {
}
}
}
- // echo '<pre>$billingFields: ' . print_r( $billingFields, true ) . '</pre>';
- // echo '<pre>$required_fields: ' . print_r( $required_fields, true ) . '</pre>';
- // echo '<pre>$ref_dest: ' . print_r( $ref_dest, true ) . '</pre>';
- // echo '<pre>$_REQUEST: ' . print_r( $_REQUEST, true ) . '</pre>';
- // Check the given $ref_dest
- $member_id = filter_var( $ref_dest, FILTER_VALIDATE_INT );
- if ( $member_id ) {
- // Get the members account
- $account = $this->getAccountByRefDest( $member_id );
- // echo '<pre>$account: ' . print_r( $account, true ) . '</pre>';
-
- // New Billing Data If using Billing Fields
+ // Check to see if using contact or business address for billing
+ $contact_use_billing = filter_var( $_REQUEST['contact_use_billing'], FILTER_VALIDATE_BOOLEAN );
+ $business_use_billing = filter_var( $_REQUEST['business_use_billing'], FILTER_VALIDATE_BOOLEAN );
+ if ( $contact_use_billing ) {
+ // Need to convert city to String
+ $city_id = filter_var( $_REQUEST['city'], FILTER_VALIDATE_INT );
+ if ( $city_id ) {
+ $city_name = $this->getCityIdByName( $city_id );
+ }
+ $billing_updated = array(
+ 'email' => filter_var( $_REQUEST['alt_email'] ),
+ 'billing_fname' => filter_var( $_REQUEST['fname'] ),
+ 'billing_lname' => filter_var( $_REQUEST['lname'] ),
+ 'billing_addr1' => filter_var( $_REQUEST['addr1'] ),
+ 'billing_addr2' => filter_var( $_REQUEST['addr2'] ),
+ 'billing_city' => $city_name,
+ 'billing_state' => filter_var( $_REQUEST['state'] ),
+ 'billing_country' => filter_var( $_REQUEST['country'] ),
+ 'billing_zip' => filter_var( $_REQUEST['zip'] ),
+ );
+ $billing_updated_format = array(
+ '%s', // email
+ '%s', // fname
+ '%s', // lname
+ '%s', // addr1
+ '%s', // addr2
+ '%s', // city
+ '%s', // state
+ '%s', // country
+ '%s', // zip
+ );
+ } else if ( $business_use_billing ) {
+ // Need to convert city to String
+ $city_id = filter_var( $_REQUEST['business_city'], FILTER_VALIDATE_INT );
+ if ( $city_id ) {
+ $city_name = $this->getCityIdByName( $city_id );
+ }
+ $billing_updated = array(
+ 'email' => filter_var( $_REQUEST['business_email'] ),
+ 'billing_company' => filter_var( $_REQUEST['org'] ),
+ 'billing_position' => filter_var( $_REQUEST['title'] ),
+ 'billing_fname' => filter_var( $_REQUEST['business_fname'] ),
+ 'billing_lname' => filter_var( $_REQUEST['business_lname'] ),
+ 'billing_addr1' => filter_var( $_REQUEST['business_addr1'] ),
+ 'billing_addr2' => filter_var( $_REQUEST['business_addr2'] ),
+ 'billing_city' => $city_name,
+ 'billing_state' => filter_var( $_REQUEST['business_state'] ),
+ 'billing_country' => filter_var( $_REQUEST['business_country'] ),
+ 'billing_zip' => filter_var( $_REQUEST['business_zip'] ),
+ );
+ $billing_updated_format = array(
+ '%s', // email
+ '%s', // company
+ '%s', // position
+ '%s', // fname
+ '%s', // lname
+ '%s', // addr1
+ '%s', // addr2
+ '%s', // city
+ '%s', // state
+ '%s', // country
+ '%s', // zip
+ );
+ } else if ( !$contact_use_billing && !$business_use_billing ) {
$billing_updated = array(
'email' => filter_var( $_REQUEST['billing_email'] ),
'billing_company' => filter_var( $_REQUEST['billing_company'] ),
'%s', // phone
'%s', // fax
);
+ }
+ // Check the given $ref_dest
+ $member_id = filter_var( $ref_dest, FILTER_VALIDATE_INT );
+ if ( $member_id && $billing_updated && $billing_updated_format ) {
+ // Get the members account
+ $account = $this->getAccountByRefDest( $member_id );
+
+ // New Billing Data If using Billing Fields
// echo '<pre>$billing_updated: ' . print_r( $billing_updated, true ) . '</pre>';
// Check for required fields
foreach ( $billing_updated as $field_name => $field_value ) {
-<table class="glm-admin-table glm-admin-table-inner">
+<table id="billing-contact-data" class="glm-admin-table glm-admin-table-inner">
<tbody>
<tr>
<th class="{if $account.fieldRequired.email} glm-required{/if}">Billing Email</th>
</tbody>
</table>
+<script>
+jQuery(document).ready(function($){
+
+ // If the Contact Use for Billing is checked then require address
+ function checkContactRequired()
+ {
+ var contact_use_billing = $('input[name=contact_use_billing]');
+ if ( contact_use_billing.attr('checked') ) {
+ // Require the address fields for Contact Info
+ $('input[name=alt_email]').attr('required', true);
+ $('input[name=alt_email]').parent('td').prev().addClass('glm-required');
+ $('#addr1').attr('required', true);
+ $('#addr1').parent('td').prev().addClass('glm-required');
+ $('#city').attr('required', true);
+ $('#city').parent('td').prev().addClass('glm-required');
+ $('#state').attr('required', true);
+ $('#state').parent('td').prev().addClass('glm-required');
+ $('#zip').attr('required', true);
+ $('#zip').parent('td').prev().addClass('glm-required');
+ // Turn off the business_use_billing
+ var business_use_billing = $('input[name=business_use_billing]');
+ business_use_billing.prop('checked', false);
+ checkBusinessRequired();
+ disableBillingForm();
+ } else {
+ // Un Require the address fields for Contact Info
+ $('input[name=alt_email]').attr('required', false);
+ $('input[name=alt_email]').parent('td').prev().removeClass('glm-required');
+ $('#addr1').attr('required', false);
+ $('#addr1').parent('td').prev().removeClass('glm-required');
+ $('#city').attr('required', false);
+ $('#city').parent('td').prev().removeClass('glm-required');
+ $('#state').attr('required', false)
+ $('#state').parent('td').prev().removeClass('glm-required');
+ $('#zip').attr('required', false);
+ $('#zip').parent('td').prev().removeClass('glm-required');
+ enableBillingForm();
+ }
+ }
+ $('input[name=contact_use_billing]').click( function(){
+ checkContactRequired();
+ });
+ checkContactRequired();
+
+ // If the Company Use for Billing is checked then require address
+ function checkBusinessRequired() {
+ var business_use_billing = $('input[name=business_use_billing]');
+ if ( business_use_billing.attr('checked') ) {
+ // Require the address fields for Contact
+ $('input[name=business_email]').attr('required', true);
+ $('input[name=business_email]').parent('td').prev().addClass('glm-required');
+ $('input[name=business_fname]').attr('required', true);
+ $('input[name=business_fname]').parent('td').prev().addClass('glm-required');
+ $('input[name=business_lname]').attr('required', true);
+ $('input[name=business_lname]').parent('td').prev().addClass('glm-required');
+ $('#business_addr1').attr('required', true);
+ $('#business_addr1').parent('td').prev().addClass('glm-required');
+ $('#businessCity').attr('required', true);
+ $('#businessCity').parent('td').prev().addClass('glm-required');
+ $('#business_state').attr('required', true);
+ $('#business_state').parent('td').prev().addClass('glm-required');
+ $('#business_zip').attr('required', true);
+ $('#business_zip').parent('td').prev().addClass('glm-required');
+ // Turn off the contact_use_billing
+ var contact_use_billing = $('input[name=contact_use_billing]');
+ contact_use_billing.prop('checked', false);
+ checkContactRequired();
+ disableBillingForm();
+ } else {
+ $('input[name=business_email]').attr('required', false);
+ $('input[name=business_email]').parent('td').prev().removeClass('glm-required');
+ $('input[name=business_fname]').attr('required', false);
+ $('input[name=business_fname]').parent('td').prev().removeClass('glm-required');
+ $('input[name=business_lname]').attr('required', false);
+ $('input[name=business_lname]').parent('td').prev().removeClass('glm-required');
+ $('#business_addr1').attr('required', false);
+ $('#business_addr1').parent('td').prev().removeClass('glm-required');
+ $('#businessCity').attr('required', false);
+ $('#businessCity').parent('td').prev().removeClass('glm-required');
+ $('#business_state').attr('required', false)
+ $('#business_state').parent('td').prev().removeClass('glm-required');
+ $('#business_zip').attr('required', false);
+ $('#business_zip').parent('td').prev().removeClass('glm-required');
+ enableBillingForm();
+ }
+ }
+ $('input[name=business_use_billing]').click( function(){
+ checkBusinessRequired();
+ });
+ checkBusinessRequired();
+
+ // Disable the billing form
+ function disableBillingForm()
+ {
+ $('input[name=billing_email]').prop('disabled', true);
+ $('input[name=billing_company]').prop('disabled', true);
+ $('input[name=billing_position]').prop('disabled', true);
+ $('input[name=billing_fname]').prop('disabled', true);
+ $('input[name=billing_lname]').prop('disabled', true);
+ $('input[name=billing_addr1]').prop('disabled', true);
+ $('input[name=billing_addr2]').prop('disabled', true);
+ $('input[name=billing_city]').prop('disabled', true);
+ $('select[name=billing_state]').prop('disabled', true);
+ $('input[name=billing_zip]').prop('disabled', true);
+ $('input[name=billing_country]').prop('disabled', true);
+ $('input[name=billing_phone]').prop('disabled', true);
+ $('input[name=billing_fax]').prop('disabled', true);
+ console.log( 'billing form disabled' );
+ }
+ // Enable the billing form
+ function enableBillingForm()
+ {
+ $('input[name=billing_email]').prop('disabled', false);
+ $('input[name=billing_company]').prop('disabled', false);
+ $('input[name=billing_position]').prop('disabled', false);
+ $('input[name=billing_fname]').prop('disabled', false);
+ $('input[name=billing_lname]').prop('disabled', false);
+ $('input[name=billing_addr1]').prop('disabled', false);
+ $('input[name=billing_addr2]').prop('disabled', false);
+ $('input[name=billing_city]').prop('disabled', false);
+ $('select[name=billing_state]').prop('disabled', false);
+ $('input[name=billing_zip]').prop('disabled', false);
+ $('input[name=billing_country]').prop('disabled', false);
+ $('input[name=billing_phone]').prop('disabled', false);
+ $('input[name=billing_fax]').prop('disabled', false);
+ }
+});
+</script>