/**
     * Display shipping details in the View Details popup
     *
     * @since 1.0
     *
     * @access public
     * @return void
     */
    public function show_shipping_details($payment_id = 0)
    {
        if (empty($payment_id)) {
            $payment_id = isset($_GET['id']) ? absint($_GET['id']) : 0;
        }
        $user_info = edd_get_payment_meta_user_info($payment_id);
        $address = !empty($user_info['shipping_info']) ? $user_info['shipping_info'] : false;
        if (!$address) {
            return;
        }
        $status = get_post_meta($payment_id, '_edd_payment_shipping_status', true);
        $shipped = $status == '2' ? true : false;
        ?>
		<div id="edd-shipping-details" class="postbox">
			<h3 class="hndle">
				<span><?php 
        _e('Shipping Address', 'edd');
        ?>
</span>
			</h3>
			<div class="inside edd-clearfix">

				<div id="edd-order-shipping-address">

					<div class="order-data-address">
						<div class="data column-container">
							<div class="column">
								<p>
									<strong class="order-data-address-line"><?php 
        _e('Street Address Line 1:', 'edd');
        ?>
</strong><br/>
									<input type="text" name="edd-payment-shipping-address[0][address]" value="<?php 
        esc_attr_e($address['address']);
        ?>
" class="medium-text" />
								</p>
								<p>
									<strong class="order-data-address-line"><?php 
        _e('Street Address Line 2:', 'edd');
        ?>
</strong><br/>
									<input type="text" name="edd-payment-shipping-address[0][address2]" value="<?php 
        esc_attr_e($address['address2']);
        ?>
" class="medium-text" />
								</p>

							</div>
							<div class="column">
								<p>
									<strong class="order-data-address-line"><?php 
        echo _x('City:', 'Address City', 'edd');
        ?>
</strong><br/>
									<input type="text" name="edd-payment-shipping-address[0][city]" value="<?php 
        esc_attr_e($address['city']);
        ?>
" class="medium-text"/>

								</p>
								<p>
									<strong class="order-data-address-line"><?php 
        echo _x('Zip / Postal Code:', 'Zip / Postal code of address', 'edd');
        ?>
</strong><br/>
									<input type="text" name="edd-payment-shipping-address[0][zip]" value="<?php 
        esc_attr_e($address['zip']);
        ?>
" class="medium-text"/>

								</p>
							</div>
							<div class="column">
								<p id="edd-order-address-country-wrap">
									<strong class="order-data-address-line"><?php 
        echo _x('Country:', 'Address country', 'edd');
        ?>
</strong><br/>
									<?php 
        echo EDD()->html->select(array('options' => edd_get_country_list(), 'name' => 'edd-payment-shipping-address[0][country]', 'selected' => $address['country'], 'show_option_all' => false, 'show_option_none' => false));
        ?>
								</p>
								<p id="edd-order-address-state-wrap">
									<strong class="order-data-address-line"><?php 
        echo _x('State / Province:', 'State / province of address', 'edd');
        ?>
</strong><br/>
									<?php 
        $states = edd_get_shop_states($address['country']);
        if (!empty($states)) {
            echo EDD()->html->select(array('options' => $states, 'name' => 'edd-payment-shipping-address[0][state]', 'selected' => $address['state'], 'show_option_all' => false, 'show_option_none' => false));
        } else {
            ?>
										<input type="text" name="edd-payment-shipping-address[0][state]" value="<?php 
            esc_attr_e($address['state']);
            ?>
" class="medium-text"/>
										<?php 
        }
        ?>
								</p>
							</div>
						</div>
						<label for="edd-payment-shipped">
							<input type="checkbox" id="edd-payment-shipped" name="edd-payment-shipped" value="1"<?php 
        checked($shipped, true);
        ?>
/>
							<?php 
        _e('Check if this purchase has been shipped.', 'edd-simple-shipping');
        ?>
						</label>
					</div>
				</div><!-- /#edd-order-address -->

				<?php 
        do_action('edd_payment_shipping_details', $payment_id);
        ?>

			</div><!-- /.inside -->
		</div><!-- /#edd-shipping-details -->
<?php 
    }
													<p id="edd-order-address-country-wrap">
														<strong class="order-data-address-line"><?php 
echo _x('Country:', 'Address country', 'edd');
?>
</strong><br/>
														<?php 
echo EDD()->html->select(array('options' => edd_get_country_list(), 'name' => 'edd-payment-address[0][country]', 'selected' => $address['country'], 'show_option_all' => false, 'show_option_none' => false, 'chosen' => true, 'placeholder' => __('Select a country', 'edd')));
?>
													</p>
													<p id="edd-order-address-state-wrap">
														<strong class="order-data-address-line"><?php 
echo _x('State / Province:', 'State / province of address', 'edd');
?>
</strong><br/>
														<?php 
$states = edd_get_shop_states($address['country']);
if (!empty($states)) {
    echo EDD()->html->select(array('options' => $states, 'name' => 'edd-payment-address[0][state]', 'selected' => $address['state'], 'show_option_all' => false, 'show_option_none' => false, 'chosen' => true, 'placeholder' => __('Select a state', 'edd')));
} else {
    ?>
															<input type="text" name="edd-payment-address[0][state]" value="<?php 
    echo esc_attr($address['state']);
    ?>
" class="medium-text"/>
															<?php 
}
?>
													</p>
												</div>
											</div>
										</div>
Exemplo n.º 3
0
/**
 * View a customer
 *
 * @since  2.3
 * @param  $customer The Customer object being displayed
 * @return void
 */
function edd_customers_view($customer)
{
    $customer_edit_role = apply_filters('edd_edit_customers_role', 'edit_shop_payments');
    ?>

	<?php 
    do_action('edd_customer_card_top', $customer);
    ?>

	<div class="info-wrapper customer-section">

		<form id="edit-customer-info" method="post" action="<?php 
    echo admin_url('edit.php?post_type=download&page=edd-customers&view=overview&id=' . $customer->id);
    ?>
">

			<div class="customer-info">

				<div class="avatar-wrap left" id="customer-avatar">
					<?php 
    echo get_avatar($customer->email);
    ?>
<br />
					<?php 
    if (current_user_can($customer_edit_role)) {
        ?>
						<span class="info-item editable customer-edit-link"><a title="<?php 
        _e('Edit Customer', 'edd');
        ?>
" href="#" id="edit-customer"><?php 
        _e('Edit Customer', 'edd');
        ?>
</a></span>
					<?php 
    }
    ?>
				</div>

				<div class="customer-id right">
					#<?php 
    echo $customer->id;
    ?>
				</div>

				<div class="customer-address-wrapper right">
				<?php 
    if (isset($customer->user_id) && $customer->user_id > 0) {
        ?>

					<?php 
        $address = get_user_meta($customer->user_id, '_edd_user_address', true);
        $defaults = array('line1' => '', 'line2' => '', 'city' => '', 'state' => '', 'country' => '', 'zip' => '');
        $address = wp_parse_args($address, $defaults);
        ?>

					<?php 
        if (!empty($address)) {
            ?>
					<strong><?php 
            _e('Customer Address', 'edd');
            ?>
</strong>
					<span class="customer-address info-item editable">
						<span class="info-item" data-key="line1"><?php 
            echo $address['line1'];
            ?>
</span>
						<span class="info-item" data-key="line2"><?php 
            echo $address['line2'];
            ?>
</span>
						<span class="info-item" data-key="city"><?php 
            echo $address['city'];
            ?>
</span>
						<span class="info-item" data-key="state"><?php 
            echo $address['state'];
            ?>
</span>
						<span class="info-item" data-key="country"><?php 
            echo $address['country'];
            ?>
</span>
						<span class="info-item" data-key="zip"><?php 
            echo $address['zip'];
            ?>
</span>
					</span>
					<?php 
        }
        ?>
					<span class="customer-address info-item edit-item">
						<input class="info-item" type="text" data-key="line1" name="customerinfo[line1]" placeholder="<?php 
        _e('Address 1', 'edd');
        ?>
" value="<?php 
        echo $address['line1'];
        ?>
" />
						<input class="info-item" type="text" data-key="line2" name="customerinfo[line2]" placeholder="<?php 
        _e('Address 2', 'edd');
        ?>
" value="<?php 
        echo $address['line2'];
        ?>
" />
						<input class="info-item" type="text" data-key="city" name="customerinfo[city]" placeholder="<?php 
        _e('City', 'edd');
        ?>
" value="<?php 
        echo $address['city'];
        ?>
" />
						<select data-key="country" name="customerinfo[country]" id="billing_country" class="billing_country edd-select edit-item">
							<?php 
        $selected_country = $address['country'];
        $countries = edd_get_country_list();
        foreach ($countries as $country_code => $country) {
            echo '<option value="' . esc_attr($country_code) . '"' . selected($country_code, $selected_country, false) . '>' . $country . '</option>';
        }
        ?>
						</select>
						<?php 
        $selected_state = edd_get_shop_state();
        $states = edd_get_shop_states($selected_country);
        $selected_state = isset($address['state']) ? $address['state'] : $selected_state;
        if (!empty($states)) {
            ?>
						<select data-key="state" name="customerinfo[state]" id="card_state" class="card_state edd-select info-item">
							<?php 
            foreach ($states as $state_code => $state) {
                echo '<option value="' . $state_code . '"' . selected($state_code, $selected_state, false) . '>' . $state . '</option>';
            }
            ?>
						</select>
						<?php 
        } else {
            ?>
						<input type="text" size="6" data-key="state" name="customerinfo[state]" id="card_state" class="card_state edd-input info-item" placeholder="<?php 
            _e('State / Province', 'edd');
            ?>
"/>
						<?php 
        }
        ?>
						<input class="info-item" type="text" data-key="zip" name="customerinfo[zip]" placeholder="<?php 
        _e('Postal', 'edd');
        ?>
" value="<?php 
        echo $address['zip'];
        ?>
" />
					</span>
				<?php 
    }
    ?>
				</div>

				<div class="customer-main-wrapper left">

					<span class="customer-name info-item edit-item"><input size="15" data-key="name" name="customerinfo[name]" type="text" value="<?php 
    echo esc_attr($customer->name);
    ?>
" placeholder="<?php 
    _e('Customer Name', 'edd');
    ?>
" /></span>
					<span class="customer-name info-item editable"><span data-key="name"><?php 
    echo $customer->name;
    ?>
</span></span>
					<span class="customer-name info-item edit-item"><input size="20" data-key="email" name="customerinfo[email]" type="text" value="<?php 
    echo $customer->email;
    ?>
" placeholder="<?php 
    _e('Customer Email', 'edd');
    ?>
" /></span>
					<span class="customer-email info-item editable" data-key="email"><?php 
    echo $customer->email;
    ?>
</span>
					<span class="customer-since info-item">
						<?php 
    _e('Customer since', 'edd');
    ?>
						<?php 
    echo date_i18n(get_option('date_format'), strtotime($customer->date_created));
    ?>
					</span>
					<span class="customer-user-id info-item edit-item">
						<?php 
    $user_id = $customer->user_id > 0 ? $customer->user_id : '';
    $data_atts = array('key' => 'user_login', 'exclude' => $user_id);
    $user_args = array('name' => 'customerinfo[user_login]', 'class' => 'edd-user-dropdown', 'data' => $data_atts);
    if (!empty($user_id)) {
        $userdata = get_userdata($user_id);
        $user_args['value'] = $userdata->user_login;
    }
    echo EDD()->html->ajax_user_search($user_args);
    ?>
						<input type="hidden" name="customerinfo[user_id]" data-key="user_id" value="<?php 
    echo $customer->user_id;
    ?>
" />
					</span>

					<span class="customer-user-id info-item editable">
						<?php 
    _e('User ID', 'edd');
    ?>
:&nbsp;
						<?php 
    if (intval($customer->user_id) > 0) {
        ?>
							<span data-key="user_id"><?php 
        echo $customer->user_id;
        ?>
</span>
						<?php 
    } else {
        ?>
							<span data-key="user_id"><?php 
        _e('none', 'edd');
        ?>
</span>
						<?php 
    }
    ?>
						<?php 
    if (current_user_can($customer_edit_role) && intval($customer->user_id) > 0) {
        ?>
							<span class="disconnect-user"> - <a id="disconnect-customer" href="#disconnect" title="<?php 
        _e('Disconnects the current user ID from this customer record', 'edd');
        ?>
"><?php 
        _e('Disconnect User', 'edd');
        ?>
</a></span>
						<?php 
    }
    ?>
					</span>

				</div>

			</div>

			<span id="customer-edit-actions" class="edit-item">
				<input type="hidden" data-key="id" name="customerinfo[id]" value="<?php 
    echo $customer->id;
    ?>
" />
				<?php 
    wp_nonce_field('edit-customer', '_wpnonce', false, true);
    ?>
				<input type="hidden" name="edd_action" value="edit-customer" />
				<input type="submit" id="edd-edit-customer-save" class="button-secondary" value="<?php 
    _e('Update Customer', 'edd');
    ?>
" />
				<a id="edd-edit-customer-cancel" href="" class="delete"><?php 
    _e('Cancel', 'edd');
    ?>
</a>
			</span>

		</form>
	</div>

	<?php 
    do_action('edd_customer_before_stats', $customer);
    ?>

	<div id="customer-stats-wrapper" class="customer-section">
		<ul>
			<li>
				<a title="<?php 
    _e('View All Purchases', 'edd');
    ?>
" href="<?php 
    echo admin_url('edit.php?post_type=download&page=edd-payment-history&user='******'%d Completed Sale', '%d Completed Sales', $customer->purchase_count, 'edd'), $customer->purchase_count);
    ?>
				</a>
			</li>
			<li>
				<span class="dashicons dashicons-chart-area"></span>
				<?php 
    echo edd_currency_filter(edd_format_amount($customer->purchase_value));
    ?>
 <?php 
    _e('Lifetime Value', 'edd');
    ?>
			</li>
			<?php 
    do_action('edd_customer_stats_list', $customer);
    ?>
		</ul>
	</div>

	<?php 
    do_action('edd_customer_before_tables_wrapper', $customer);
    ?>

	<div id="customer-tables-wrapper" class="customer-section">

		<?php 
    do_action('edd_customer_before_tables', $customer);
    ?>

		<h3><?php 
    _e('Recent Payments', 'edd');
    ?>
</h3>
		<?php 
    $payment_ids = explode(',', $customer->payment_ids);
    $payments = edd_get_payments(array('post__in' => $payment_ids));
    $payments = array_slice($payments, 0, 10);
    ?>
		<table class="wp-list-table widefat striped payments">
			<thead>
				<tr>
					<th><?php 
    _e('ID', 'edd');
    ?>
</th>
					<th><?php 
    _e('Amount', 'edd');
    ?>
</th>
					<th><?php 
    _e('Date', 'edd');
    ?>
</th>
					<th><?php 
    _e('Status', 'edd');
    ?>
</th>
					<th><?php 
    _e('Actions', 'edd');
    ?>
</th>
				</tr>
			</thead>
			<tbody>
				<?php 
    if (!empty($payments)) {
        ?>
					<?php 
        foreach ($payments as $payment) {
            ?>
						<tr>
							<td><?php 
            echo $payment->ID;
            ?>
</td>
							<td><?php 
            echo edd_payment_amount($payment->ID);
            ?>
</td>
							<td><?php 
            echo date_i18n(get_option('date_format'), strtotime($payment->post_date));
            ?>
</td>
							<td><?php 
            echo edd_get_payment_status($payment, true);
            ?>
</td>
							<td>
								<a title="<?php 
            _e('View Details for Payment', 'edd');
            echo ' ' . $payment->ID;
            ?>
" href="<?php 
            echo admin_url('edit.php?post_type=download&page=edd-payment-history&view=view-order-details&id=' . $payment->ID);
            ?>
">
									<?php 
            _e('View Details', 'edd');
            ?>
								</a>
								<?php 
            do_action('edd_customer_recent_purcahses_actions', $customer, $payment);
            ?>
							</td>
						</tr>
					<?php 
        }
        ?>
				<?php 
    } else {
        ?>
					<tr><td colspan="5"><?php 
        _e('No Payments Found', 'edd');
        ?>
</td></tr>
				<?php 
    }
    ?>
			</tbody>
		</table>

		<h3><?php 
    printf(__('Purchased %s', 'edd'), edd_get_label_plural());
    ?>
</h3>
		<?php 
    $downloads = edd_get_users_purchased_products($customer->email);
    ?>
		<table class="wp-list-table widefat striped downloads">
			<thead>
				<tr>
					<th><?php 
    echo edd_get_label_singular();
    ?>
</th>
					<th width="120px"><?php 
    _e('Actions', 'edd');
    ?>
</th>
				</tr>
			</thead>
			<tbody>
				<?php 
    if (!empty($downloads)) {
        ?>
					<?php 
        foreach ($downloads as $download) {
            ?>
						<tr>
							<td><?php 
            echo $download->post_title;
            ?>
</td>
							<td>
								<a title="<?php 
            echo esc_attr(sprintf(__('View %s', 'edd'), $download->post_title));
            ?>
" href="<?php 
            echo esc_url(admin_url('post.php?action=edit&post=' . $download->ID));
            ?>
">
									<?php 
            printf(__('View %s', 'edd'), edd_get_label_singular());
            ?>
								</a>
							</td>
						</tr>
					<?php 
        }
        ?>
				<?php 
    } else {
        ?>
					<tr><td colspan="2"><?php 
        printf(__('No %s Found', 'edd'), edd_get_label_plural());
        ?>
</td></tr>
				<?php 
    }
    ?>
			</tbody>
		</table>

		<?php 
    do_action('edd_customer_after_tables', $customer);
    ?>

	</div>

	<?php 
    do_action('edd_customer_card_bottom', $customer);
    ?>

	<?php 
}
/**
 * Outputs the default credit card address fields
 *
 * @since 1.0
 * @return void
 */
function edd_default_cc_address_fields()
{
    $logged_in = is_user_logged_in();
    $customer = EDD()->session->get('customer');
    $customer = wp_parse_args($customer, array('address' => array('line1' => '', 'line2' => '', 'city' => '', 'zip' => '', 'state' => '', 'country' => '')));
    $customer['address'] = array_map('sanitize_text_field', $customer['address']);
    if ($logged_in) {
        $user_address = get_user_meta(get_current_user_id(), '_edd_user_address', true);
        foreach ($customer['address'] as $key => $field) {
            if (empty($field) && !empty($user_address[$key])) {
                $customer['address'][$key] = $user_address[$key];
            } else {
                $customer['address'][$key] = '';
            }
        }
    }
    ob_start();
    ?>
	<fieldset id="edd_cc_address" class="cc-address">
		<span><legend><?php 
    _e('Billing Details', 'edd');
    ?>
</legend></span>
		<?php 
    do_action('edd_cc_billing_top');
    ?>
		<p id="edd-card-address-wrap">
			<label for="card_address" class="edd-label">
				<?php 
    _e('Billing Address', 'edd');
    ?>
				<?php 
    if (edd_field_is_required('card_address')) {
        ?>
					<span class="edd-required-indicator">*</span>
				<?php 
    }
    ?>
			</label>
			<span class="edd-description"><?php 
    _e('The primary billing address for your credit card.', 'edd');
    ?>
</span>
			<input type="text" id="card_address" name="card_address" class="card-address edd-input<?php 
    if (edd_field_is_required('card_address')) {
        echo ' required';
    }
    ?>
" placeholder="<?php 
    _e('Address line 1', 'edd');
    ?>
" value="<?php 
    echo $customer['address']['line1'];
    ?>
"/>
		</p>
		<p id="edd-card-address-2-wrap">
			<label for="card_address_2" class="edd-label">
				<?php 
    _e('Billing Address Line 2 (optional)', 'edd');
    ?>
				<?php 
    if (edd_field_is_required('card_address_2')) {
        ?>
					<span class="edd-required-indicator">*</span>
				<?php 
    }
    ?>
			</label>
			<span class="edd-description"><?php 
    _e('The suite, apt no, PO box, etc, associated with your billing address.', 'edd');
    ?>
</span>
			<input type="text" id="card_address_2" name="card_address_2" class="card-address-2 edd-input<?php 
    if (edd_field_is_required('card_address_2')) {
        echo ' required';
    }
    ?>
" placeholder="<?php 
    _e('Address line 2', 'edd');
    ?>
" value="<?php 
    echo $customer['address']['line2'];
    ?>
"/>
		</p>
		<p id="edd-card-city-wrap">
			<label for="card_city" class="edd-label">
				<?php 
    _e('Billing City', 'edd');
    ?>
				<?php 
    if (edd_field_is_required('card_city')) {
        ?>
					<span class="edd-required-indicator">*</span>
				<?php 
    }
    ?>
			</label>
			<span class="edd-description"><?php 
    _e('The city for your billing address.', 'edd');
    ?>
</span>
			<input type="text" id="card_city" name="card_city" class="card-city edd-input<?php 
    if (edd_field_is_required('card_city')) {
        echo ' required';
    }
    ?>
" placeholder="<?php 
    _e('City', 'edd');
    ?>
" value="<?php 
    echo $customer['address']['city'];
    ?>
"/>
		</p>
		<p id="edd-card-zip-wrap">
			<label for="card_zip" class="edd-label">
				<?php 
    _e('Billing Zip / Postal Code', 'edd');
    ?>
				<?php 
    if (edd_field_is_required('card_zip')) {
        ?>
					<span class="edd-required-indicator">*</span>
				<?php 
    }
    ?>
			</label>
			<span class="edd-description"><?php 
    _e('The zip or postal code for your billing address.', 'edd');
    ?>
</span>
			<input type="text" size="4" name="card_zip" class="card-zip edd-input<?php 
    if (edd_field_is_required('card_zip')) {
        echo ' required';
    }
    ?>
" placeholder="<?php 
    _e('Zip / Postal code', 'edd');
    ?>
" value="<?php 
    echo $customer['address']['zip'];
    ?>
"/>
		</p>
		<p id="edd-card-country-wrap">
			<label for="billing_country" class="edd-label">
				<?php 
    _e('Billing Country', 'edd');
    ?>
				<?php 
    if (edd_field_is_required('billing_country')) {
        ?>
					<span class="edd-required-indicator">*</span>
				<?php 
    }
    ?>
			</label>
			<span class="edd-description"><?php 
    _e('The country for your billing address.', 'edd');
    ?>
</span>
			<select name="billing_country" id="billing_country" class="billing_country edd-select<?php 
    if (edd_field_is_required('billing_country')) {
        echo ' required';
    }
    ?>
">
				<?php 
    $selected_country = edd_get_shop_country();
    if (!empty($customer['address']['country']) && '*' !== $customer['address']['country']) {
        $selected_country = $customer['address']['country'];
    }
    $countries = edd_get_country_list();
    foreach ($countries as $country_code => $country) {
        echo '<option value="' . esc_attr($country_code) . '"' . selected($country_code, $selected_country, false) . '>' . $country . '</option>';
    }
    ?>
			</select>
		</p>
		<p id="edd-card-state-wrap">
			<label for="card_state" class="edd-label">
				<?php 
    _e('Billing State / Province', 'edd');
    ?>
				<?php 
    if (edd_field_is_required('card_state')) {
        ?>
					<span class="edd-required-indicator">*</span>
				<?php 
    }
    ?>
			</label>
			<span class="edd-description"><?php 
    _e('The state or province for your billing address.', 'edd');
    ?>
</span>
            <?php 
    $selected_state = edd_get_shop_state();
    $states = edd_get_shop_states($selected_country);
    if (!empty($customer['address']['state'])) {
        $selected_state = $customer['address']['state'];
    }
    if (!empty($states)) {
        ?>
            <select name="card_state" id="card_state" class="card_state edd-select<?php 
        if (edd_field_is_required('card_state')) {
            echo ' required';
        }
        ?>
">
                <?php 
        foreach ($states as $state_code => $state) {
            echo '<option value="' . $state_code . '"' . selected($state_code, $selected_state, false) . '>' . $state . '</option>';
        }
        ?>
            </select>
        	<?php 
    } else {
        ?>
			<input type="text" size="6" name="card_state" id="card_state" class="card_state edd-input" placeholder="<?php 
        _e('State / Province', 'edd');
        ?>
"/>
			<?php 
    }
    ?>
		</p>
		<?php 
    do_action('edd_cc_billing_bottom');
    ?>
	</fieldset>
	<?php 
    echo ob_get_clean();
}
Exemplo n.º 5
0
/**
 * Tax Rates Callback
 *
 * Renders tax rates table
 *
 * @since 1.6
 * @param array $args Arguments passed by the setting
 * @global $edd_options Array of all the EDD Options
 * @return void
 */
function edd_tax_rates_callback($args)
{
    global $edd_options;
    $rates = edd_get_tax_rates();
    ob_start();
    ?>
	<p><?php 
    echo $args['desc'];
    ?>
</p>
	<table id="edd_tax_rates" class="wp-list-table widefat fixed posts">
		<thead>
			<tr>
				<th scope="col" class="edd_tax_country"><?php 
    _e('Country', 'easy-digital-downloads');
    ?>
</th>
				<th scope="col" class="edd_tax_state"><?php 
    _e('State / Province', 'easy-digital-downloads');
    ?>
</th>
				<th scope="col" class="edd_tax_global" title="<?php 
    _e('Apply rate to whole country, regardless of state / province', 'easy-digital-downloads');
    ?>
"><?php 
    _e('Country Wide', 'easy-digital-downloads');
    ?>
</th>
				<th scope="col" class="edd_tax_rate"><?php 
    _e('Rate', 'easy-digital-downloads');
    ?>
</th>
				<th scope="col"><?php 
    _e('Remove', 'easy-digital-downloads');
    ?>
</th>
			</tr>
		</thead>
		<?php 
    if (!empty($rates)) {
        ?>
			<?php 
        foreach ($rates as $key => $rate) {
            ?>
			<tr>
				<td class="edd_tax_country">
					<?php 
            echo EDD()->html->select(array('options' => edd_get_country_list(), 'name' => 'tax_rates[' . $key . '][country]', 'selected' => $rate['country'], 'show_option_all' => false, 'show_option_none' => false, 'class' => 'edd-select edd-tax-country', 'chosen' => false, 'placeholder' => __('Choose a country', 'easy-digital-downloads')));
            ?>
				</td>
				<td class="edd_tax_state">
					<?php 
            $states = edd_get_shop_states($rate['country']);
            if (!empty($states)) {
                echo EDD()->html->select(array('options' => $states, 'name' => 'tax_rates[' . $key . '][state]', 'selected' => $rate['state'], 'show_option_all' => false, 'show_option_none' => false, 'chosen' => false, 'placeholder' => __('Choose a state', 'easy-digital-downloads')));
            } else {
                echo EDD()->html->text(array('name' => 'tax_rates[' . $key . '][state]', $rate['state'], 'value' => !empty($rate['state']) ? $rate['state'] : ''));
            }
            ?>
				</td>
				<td class="edd_tax_global">
					<input type="checkbox" name="tax_rates[<?php 
            echo $key;
            ?>
][global]" id="tax_rates[<?php 
            echo $key;
            ?>
][global]" value="1"<?php 
            checked(true, !empty($rate['global']));
            ?>
/>
					<label for="tax_rates[<?php 
            echo $key;
            ?>
][global]"><?php 
            _e('Apply to whole country', 'easy-digital-downloads');
            ?>
</label>
				</td>
				<td class="edd_tax_rate"><input type="number" class="small-text" step="0.0001" min="0.0" max="99" name="tax_rates[<?php 
            echo $key;
            ?>
][rate]" value="<?php 
            echo $rate['rate'];
            ?>
"/></td>
				<td><span class="edd_remove_tax_rate button-secondary"><?php 
            _e('Remove Rate', 'easy-digital-downloads');
            ?>
</span></td>
			</tr>
			<?php 
        }
        ?>
		<?php 
    } else {
        ?>
			<tr>
				<td class="edd_tax_country">
					<?php 
        echo EDD()->html->select(array('options' => edd_get_country_list(), 'name' => 'tax_rates[0][country]', 'show_option_all' => false, 'show_option_none' => false, 'class' => 'edd-select edd-tax-country', 'chosen' => false, 'placeholder' => __('Choose a country', 'easy-digital-downloads')));
        ?>
				</td>
				<td class="edd_tax_state">
					<?php 
        echo EDD()->html->text(array('name' => 'tax_rates[0][state]'));
        ?>
				</td>
				<td class="edd_tax_global">
					<input type="checkbox" name="tax_rates[0][global]" value="1"/>
					<label for="tax_rates[0][global]"><?php 
        _e('Apply to whole country', 'easy-digital-downloads');
        ?>
</label>
				</td>
				<td class="edd_tax_rate"><input type="number" class="small-text" step="0.0001" min="0.0" name="tax_rates[0][rate]" value=""/></td>
				<td><span class="edd_remove_tax_rate button-secondary"><?php 
        _e('Remove Rate', 'easy-digital-downloads');
        ?>
</span></td>
			</tr>
		<?php 
    }
    ?>
	</table>
	<p>
		<span class="button-secondary" id="edd_add_tax_rate"><?php 
    _e('Add Tax Rate', 'easy-digital-downloads');
    ?>
</span>
	</p>
	<?php 
    echo ob_get_clean();
}
/**
 * Retrieve a states drop down
 *
 * @since 1.6
 * @return void
 */
function edd_ajax_get_states_field()
{
    if (empty($_POST['country'])) {
        $_POST['country'] = edd_get_shop_country();
    }
    $states = edd_get_shop_states($_POST['country']);
    if (!empty($states)) {
        $args = array('name' => $_POST['field_name'], 'id' => $_POST['field_name'], 'class' => $_POST['field_name'] . '  edd-select', 'options' => $states, 'show_option_all' => false, 'show_option_none' => false);
        $response = EDD()->html->select($args);
    } else {
        $response = 'nostates';
    }
    echo $response;
    edd_die();
}
/**
 * Purchase Form Required Fields
 *
 * @access      private
 * @since       1.5
 * @return      array
 */
function edd_purchase_form_required_fields()
{
    $required_fields = array('edd_email' => array('error_id' => 'invalid_email', 'error_message' => __('Please enter a valid email address', 'easy-digital-downloads')), 'edd_first' => array('error_id' => 'invalid_first_name', 'error_message' => __('Please enter your first name', 'easy-digital-downloads')));
    // Let payment gateways and other extensions determine if address fields should be required
    $require_address = apply_filters('edd_require_billing_address', edd_use_taxes() && edd_get_cart_total());
    if ($require_address) {
        $required_fields['card_zip'] = array('error_id' => 'invalid_zip_code', 'error_message' => __('Please enter your zip / postal code', 'easy-digital-downloads'));
        $required_fields['card_city'] = array('error_id' => 'invalid_city', 'error_message' => __('Please enter your billing city', 'easy-digital-downloads'));
        $required_fields['billing_country'] = array('error_id' => 'invalid_country', 'error_message' => __('Please select your billing country', 'easy-digital-downloads'));
        $required_fields['card_state'] = array('error_id' => 'invalid_state', 'error_message' => __('Please enter billing state / province', 'easy-digital-downloads'));
        // Check if the Customer's Country has been passed in and if it has no states.
        if (isset($_POST['billing_country']) && isset($required_fields['card_state'])) {
            $customer_billing_country = sanitize_text_field($_POST['billing_country']);
            $states = edd_get_shop_states($customer_billing_country);
            // If this country has no states, remove the requirement of a card_state.
            if (empty($states)) {
                unset($required_fields['card_state']);
            }
        }
    }
    return apply_filters('edd_purchase_form_required_fields', $required_fields);
}
<?php

/**
 * @package Yoast\YoastCom
 */
namespace Yoast\YoastCom\Theme;

$customer = get_customer_address();
$states = edd_get_shop_states($customer['address']['country']);
?>
<fieldset id="edd_cc_address" class="cc-address">
	<?php 
if ('stripe' === $_GET['payment-mode']) {
    ?>
		<span><legend><?php 
    _e('Credit Card Billing Details', 'yoast-theme');
    ?>
</legend></span>
		<p><?php 
    _e('Your billing address details are used for verification of your credit card, so please use your credit card\'s billing address.', 'yoast-theme');
    ?>
</p>
	<?php 
} else {
    ?>
		<span><legend><?php 
    _e('Billing Details', 'yoast-theme');
    ?>
</legend></span>
		<p><?php 
    _e('Your billing address details are required for tax purposes.', 'yoast-theme');