| @@ -7,20 +7,23 @@ | ||
| 7 | 7 | * |
| 8 | 8 | * This template can be overridden by copying it to <your_theme>/subscription/myaccount/subscriptions.php |
| 9 | 9 | */ |
| 10 | 10 | |
| 11 | -use SpringDevs\Subscription\Illuminate\Helper; | |
| 11 | +// Exit if accessed directly. | |
| 12 | +if ( ! defined( 'ABSPATH' ) ) { | |
| 13 | + exit; | |
| 14 | +} | |
| 12 | 15 | ?> |
| 13 | 16 | |
| 14 | 17 | <table class="woocommerce-orders-table woocommerce-MyAccount-orders shop_table shop_table_responsive my_account_orders account-orders-table my_account_subscrpt"> |
| 15 | 18 | <thead> |
| 16 | 19 | <tr> |
| 17 | - <th scope="col" class="subscrpt-id"><?php esc_html_e( 'Subscription', 'sdevs_subscrpt' ); ?></th> | |
| 18 | - <th scope="col" class="order-status"><?php esc_html_e( 'Status', 'sdevs_subscrpt' ); ?></th> | |
| 19 | - <th scope="col" class="order-product"><?php esc_html_e( 'Product', 'sdevs_subscrpt' ); ?></th> | |
| 20 | - <th scope="col" class="subscrpt-next-date"><?php esc_html_e( 'Next Payment', 'sdevs_subscrpt' ); ?></th> | |
| 21 | - <th scope="col" class="subscrpt-total"><?php esc_html_e( 'Total', 'sdevs_subscrpt' ); ?></th> | |
| 22 | - <th scope="col" class="subscrpt-action"></th> | |
| 20 | + <th scope="col" class="subscrpt-id"><?php esc_html_e( 'Subscription', 'subscription' ); ?></th> | |
| 21 | + <th scope="col" class="order-status"><?php esc_html_e( 'Status', 'subscription' ); ?></th> | |
| 22 | + <th scope="col" class="order-product"><?php esc_html_e( 'Product', 'subscription' ); ?></th> | |
| 23 | + <th scope="col" class="subscrpt-next-date"><?php esc_html_e( 'Next Payment', 'subscription' ); ?></th> | |
| 24 | + <th scope="col" class="subscrpt-total"><?php esc_html_e( 'Total', 'subscription' ); ?></th> | |
| 25 | + <th scope="col" class="subscrpt-action">Actions</th> | |
| 23 | 26 | </tr> |
| 24 | 27 | </thead> |
| 25 | 28 | <tbody> |
| 26 | 29 | <?php |
| @@ -26,36 +29,98 @@ | ||
| 26 | 29 | <?php |
| 27 | 30 | if ( $postslist->have_posts() ) : |
| 28 | 31 | while ( $postslist->have_posts() ) : |
| 29 | 32 | $postslist->the_post(); |
| 30 | - $product_id = get_post_meta( get_the_ID(), '_subscrpt_product_id', true ); | |
| 31 | - $order_id = get_post_meta( get_the_ID(), '_subscrpt_order_id', true ); | |
| 32 | - $order_item_id = get_post_meta( get_the_ID(), '_subscrpt_order_item_id', true ); | |
| 33 | - $trial = get_post_meta( get_the_ID(), '_subscrpt_trial', true ); | |
| 34 | - $trial_mode = get_post_meta( get_the_ID(), '_subscrpt_trial_mode', true ); | |
| 35 | - $trial_mode = empty( $trial_mode ) ? 'off' : $trial_mode; | |
| 36 | - $start_date = get_post_meta( get_the_ID(), '_subscrpt_start_date', true ); | |
| 37 | - $next_date = get_post_meta( get_the_ID(), '_subscrpt_next_date', true ); | |
| 38 | - $order = wc_get_order( $order_id ); | |
| 39 | - $order_item = $order->get_item( $order_item_id ); | |
| 40 | 33 | |
| 41 | - $post_status_object = get_post_status_object( get_post_status() ); | |
| 42 | - $product_name = $order_item->get_name(); | |
| 43 | - $product_link = get_the_permalink( $product_id ); | |
| 44 | - $product_price_html = Helper::format_price_with_order_item( get_post_meta( get_the_ID(), '_subscrpt_price', true ), $order_item->get_id() ); | |
| 34 | + $subscription_id = get_the_ID(); | |
| 35 | + $subscription_data = SpringDevs\Subscription\Illuminate\Helper::get_subscription_data( $subscription_id ); | |
| 36 | + | |
| 37 | + if ( ! $subscription_data ) { | |
| 38 | + continue; | |
| 39 | + } | |
| 40 | + | |
| 41 | + $subscrpt_status = $subscription_data['status'] ?? ''; | |
| 42 | + $verbose_status = SpringDevs\Subscription\Illuminate\Helper::get_verbose_status( $subscrpt_status ); | |
| 43 | + | |
| 44 | + $order_id = $subscription_data['order']['order_id'] ?? 0; | |
| 45 | + $order_item_id = $subscription_data['order']['order_item_id'] ?? 0; | |
| 46 | + | |
| 47 | + $order = wc_get_order( $order_id ); | |
| 48 | + $order_item = $order ? $order->get_item( $order_item_id ) : null; | |
| 49 | + | |
| 50 | + if ( ! $order || ! $order_item ) { | |
| 51 | + subscrpt_write_log( sprintf( 'Order or order item not found for subscription #%d', $subscription_id ) ); | |
| 52 | + continue; | |
| 53 | + } | |
| 54 | + | |
| 55 | + $product_id = $subscription_data['product']['product_id'] ?? 0; | |
| 56 | + $product_name = $order_item->get_name(); | |
| 57 | + | |
| 58 | + $start_date = $subscription_data['start_date'] ?? ''; | |
| 59 | + $start_date = ! empty( $start_date ) ? wp_date( 'F j, Y', strtotime( $start_date ) ) : '-'; | |
| 60 | + | |
| 61 | + $next_date = $subscription_data['next_date'] ?? ''; | |
| 62 | + $next_date = ! empty( $next_date ) ? wp_date( 'F j, Y', strtotime( $next_date ) ) : '-'; | |
| 63 | + | |
| 64 | + $trial = get_post_meta( get_the_ID(), '_subscrpt_trial', true ); | |
| 65 | + $trial_mode = get_post_meta( get_the_ID(), '_subscrpt_trial_mode', true ); | |
| 66 | + $trial_mode = empty( $trial_mode ) ? 'off' : $trial_mode; | |
| 67 | + | |
| 68 | + // Renewal total, already net of any discount that recurs. | |
| 69 | + $display_totals = SpringDevs\Subscription\Illuminate\Helper::get_subscription_display_totals( $subscription_id, $order_item ); | |
| 70 | + $price = $display_totals['total']; | |
| 71 | + | |
| 72 | + $product_price_html = SpringDevs\Subscription\Illuminate\Helper::format_price_with_order_item( $price, $order_item->get_id() ); | |
| 73 | + | |
| 74 | + $is_grace_period = isset( $subscription_data['grace_period'] ); | |
| 75 | + $grace_remaining = $subscription_data['grace_period']['remaining_days'] ?? 0; | |
| 76 | + | |
| 77 | + $my_account_page_id = get_option( 'woocommerce_myaccount_page_id' ); | |
| 78 | + $my_account_url = get_permalink( $my_account_page_id ); | |
| 79 | + $view_sub_endpoint = SpringDevs\Subscription\Illuminate\Subscription\Subscription::get_user_endpoint( 'view_subs' ); | |
| 80 | + $view_sub_url = wc_get_endpoint_url( $view_sub_endpoint, get_the_ID(), $my_account_url ); | |
| 45 | 81 | ?> |
| 82 | + | |
| 46 | 83 | <tr> |
| 47 | 84 | <td data-title="Subscription"><?php the_ID(); ?></td> |
| 48 | - <td data-title="Status"><span class="subscrpt-<?php echo esc_attr( $post_status_object->name ); ?>"><?php echo esc_html( strlen( $post_status_object->label ) > 9 ? substr( $post_status_object->label, 0, 6 ) . '...' : $post_status_object->label ); ?></span></td> | |
| 49 | - <td data-title="Product"><a href="<?php echo esc_html( $product_link ); ?>" target="_blank"><?php echo esc_html( $product_name ); ?></a></td> | |
| 85 | + | |
| 86 | + <td data-title="Status"> | |
| 87 | + <?php if ( $is_grace_period && $grace_remaining > 0 ) : ?> | |
| 88 | + <span class="subscrpt-legacy-status subscrpt-legacy-status--active grace-active"> | |
| 89 | + Active | |
| 90 | + | |
| 91 | + <?php | |
| 92 | + $grace_remaining_text = sprintf( | |
| 93 | + // translators: Number of days remaining in grace period. | |
| 94 | + __( '%d days remaining!', 'subscription' ), | |
| 95 | + $grace_remaining | |
| 96 | + ); | |
| 97 | + ?> | |
| 98 | + <span class="grace-icon" data-tooltip="<?php echo esc_attr( $grace_remaining_text ); ?>"> | |
| 99 | + <span class="dashicons dashicons-warning"></span> | |
| 100 | + </span> | |
| 101 | + </span> | |
| 102 | + <?php else : ?> | |
| 103 | + <span class="subscrpt-legacy-status subscrpt-legacy-status--<?php echo esc_attr( strtolower( $subscrpt_status ) ); ?>"> | |
| 104 | + <?php echo esc_html( strlen( $verbose_status ) > 9 ? substr( $verbose_status, 0, 9 ) . '...' : $verbose_status ); ?> | |
| 105 | + </span> | |
| 106 | + <?php endif; ?> | |
| 107 | + </td> | |
| 108 | + | |
| 109 | + <td data-title="Product"><?php echo esc_html( $product_name ); ?></td> | |
| 110 | + | |
| 50 | 111 | <?php if ( 'on' !== $trial_mode ) : ?> |
| 51 | - <td data-title="Next Payment"><?php echo esc_html( $next_date ? gmdate( 'F d, Y', $next_date ) : '-' ); ?></td> | |
| 112 | + <td data-title="Next Payment"><?php echo esc_html( $next_date ); ?></td> | |
| 52 | 113 | <?php else : ?> |
| 53 | - <td data-title="Next Payment"><small>First Billing : </small><?php echo esc_html( gmdate( 'F d, Y', $start_date ) ); ?></td> | |
| 114 | + <td data-title="Next Payment"><small>First Billing : </small><?php echo esc_html( $start_date ); ?></td> | |
| 54 | 115 | <?php endif; ?> |
| 116 | + | |
| 55 | 117 | <td data-title="Total"><?php echo wp_kses_post( $product_price_html ); ?></td> |
| 56 | - <td data-title="Actions"> | |
| 57 | - <a href="<?php echo esc_html( wc_get_endpoint_url( 'view-subscription', get_the_ID(), wc_get_page_permalink( 'myaccount' ) ) ); ?>" class="woocommerce-button <?php echo esc_attr( $wp_button_class ); ?> button view"><span class="dashicons dashicons-visibility"></span></a> | |
| 118 | + | |
| 119 | + <td data-title="Actions"> | |
| 120 | + <a href="<?php echo esc_url( $view_sub_url ); ?>" class="woocommerce-button <?php echo esc_attr( $wp_button_class ); ?> button view"> | |
| 121 | + <?php echo esc_html_e( 'View', 'subscription' ); ?> | |
| 122 | + </a> | |
| 58 | 123 | </td> |
| 59 | 124 | </tr> |
| 60 | 125 | <?php |
| 61 | 126 | endwhile; |
| @@ -64,9 +129,9 @@ | ||
| 64 | 129 | ?> |
| 65 | 130 | <tr> |
| 66 | 131 | <td colspan="6"> |
| 67 | 132 | <p style="text-align: center;"> |
| 68 | - <?php echo esc_html_e( 'No subscriptions available yet.', 'sdevs_subscrpt' ); ?> | |
| 133 | + <?php echo esc_html_e( 'No subscriptions available yet.', 'subscription' ); ?> | |
| 69 | 134 | </p> |
| 70 | 135 | </td> |
| 71 | 136 | </tr> |
| 72 | 137 | <?php |
| @@ -77,12 +142,12 @@ | ||
| 77 | 142 | |
| 78 | 143 | <?php if ( 1 < $postslist->max_num_pages ) : ?> |
| 79 | 144 | <div class="woocommerce-pagination woocommerce-pagination--without-numbers woocommerce-Pagination"> |
| 80 | 145 | <?php if ( 1 !== $current_page ) : ?> |
| 81 | - <a class="woocommerce-button woocommerce-button--previous woocommerce-Button woocommerce-Button--previous button<?php echo esc_attr( $wp_button_class ); ?>" href="<?php echo esc_url( wc_get_endpoint_url( 'subscriptions', $current_page - 1 ) ); ?>"><?php esc_html_e( 'Previous', 'sdevs_subscrpt' ); ?></a> | |
| 146 | + <a class="woocommerce-button woocommerce-button--previous woocommerce-Button woocommerce-Button--previous button<?php echo esc_attr( $wp_button_class ); ?>" href="<?php echo esc_url( wc_get_endpoint_url( 'subscriptions', $current_page - 1 ) ); ?>"><?php esc_html_e( 'Previous', 'subscription' ); ?></a> | |
| 82 | 147 | <?php endif; ?> |
| 83 | 148 | |
| 84 | 149 | <?php if ( intval( $postslist->max_num_pages ) !== $current_page ) : ?> |
| 85 | - <a class="woocommerce-button woocommerce-button--next woocommerce-Button woocommerce-Button--next button<?php echo esc_attr( $wp_button_class ); ?>" href="<?php echo esc_url( wc_get_endpoint_url( 'subscriptions', $current_page + 1 ) ); ?>"><?php esc_html_e( 'Next', 'sdevs_subscrpt' ); ?></a> | |
| 150 | + <a class="woocommerce-button woocommerce-button--next woocommerce-Button woocommerce-Button--next button<?php echo esc_attr( $wp_button_class ); ?>" href="<?php echo esc_url( wc_get_endpoint_url( 'subscriptions', $current_page + 1 ) ); ?>"><?php esc_html_e( 'Next', 'subscription' ); ?></a> | |
| 86 | 151 | <?php endif; ?> |
| 87 | 152 | </div> |
| 88 | 153 | <?php endif; ?> |