@@ -13,725 +13,725 @@ discard block |
||
| 13 | 13 | class GetPaid_Post_Types_Admin { |
| 14 | 14 | |
| 15 | 15 | /** |
| 16 | - * Hook in methods. |
|
| 17 | - */ |
|
| 18 | - public static function init() { |
|
| 19 | - |
|
| 20 | - // Init metaboxes. |
|
| 21 | - GetPaid_Metaboxes::init(); |
|
| 22 | - |
|
| 23 | - // Filter the post updated messages. |
|
| 24 | - add_filter( 'post_updated_messages', 'GetPaid_Post_Types_Admin::post_updated_messages' ); |
|
| 25 | - |
|
| 26 | - // Filter post actions. |
|
| 27 | - add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::post_row_actions', 10, 2 ); |
|
| 28 | - add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::filter_invoice_row_actions', 90, 2 ); |
|
| 29 | - |
|
| 30 | - // Invoice table columns. |
|
| 31 | - add_filter( 'manage_wpi_invoice_posts_columns', array( __CLASS__, 'invoice_columns' ), 100 ); |
|
| 32 | - add_action( 'manage_wpi_invoice_posts_custom_column', array( __CLASS__, 'display_invoice_columns' ), 10, 2 ); |
|
| 33 | - add_filter( 'bulk_actions-edit-wpi_invoice', array( __CLASS__, 'invoice_bulk_actions' ) ); |
|
| 34 | - add_filter( 'handle_bulk_actions-edit-wpi_invoice', array( __CLASS__, 'handle_invoice_bulk_actions' ), 10, 3 ); |
|
| 35 | - |
|
| 36 | - // Items table columns. |
|
| 37 | - add_filter( 'manage_wpi_item_posts_columns', array( __CLASS__, 'item_columns' ), 100 ); |
|
| 38 | - add_filter( 'manage_edit-wpi_item_sortable_columns', array( __CLASS__, 'sortable_item_columns' ), 20 ); |
|
| 39 | - add_action( 'manage_wpi_item_posts_custom_column', array( __CLASS__, 'display_item_columns' ), 10, 2 ); |
|
| 40 | - add_action( 'restrict_manage_posts', array( __CLASS__, 'add_item_filters' ), 100 ); |
|
| 41 | - add_action( 'parse_query', array( __CLASS__, 'filter_item_query' ), 100 ); |
|
| 42 | - add_action( 'request', array( __CLASS__, 'reorder_items' ), 100 ); |
|
| 43 | - |
|
| 44 | - // Payment forms columns. |
|
| 45 | - add_filter( 'manage_wpi_payment_form_posts_columns', array( __CLASS__, 'payment_form_columns' ), 100 ); |
|
| 46 | - add_action( 'manage_wpi_payment_form_posts_custom_column', array( __CLASS__, 'display_payment_form_columns' ), 10, 2 ); |
|
| 47 | - add_filter( 'display_post_states', array( __CLASS__, 'filter_payment_form_state' ), 10, 2 ); |
|
| 48 | - |
|
| 49 | - // Discount table columns. |
|
| 50 | - add_filter( 'manage_wpi_discount_posts_columns', array( __CLASS__, 'discount_columns' ), 100 ); |
|
| 51 | - add_filter( 'bulk_actions-edit-wpi_discount', '__return_empty_array', 100 ); |
|
| 52 | - |
|
| 53 | - // Deleting posts. |
|
| 54 | - add_action( 'delete_post', array( __CLASS__, 'delete_post' ) ); |
|
| 55 | - add_filter( 'display_post_states', array( __CLASS__, 'filter_discount_state' ), 10, 2 ); |
|
| 56 | - |
|
| 57 | - add_filter( 'display_post_states', array( __CLASS__, 'add_display_post_states' ), 10, 2 ); |
|
| 58 | - } |
|
| 59 | - |
|
| 60 | - /** |
|
| 61 | - * Post updated messages. |
|
| 62 | - */ |
|
| 63 | - public static function post_updated_messages( $messages ) { |
|
| 64 | - global $post; |
|
| 65 | - |
|
| 66 | - $messages['wpi_discount'] = array( |
|
| 67 | - 0 => '', |
|
| 68 | - 1 => __( 'Discount updated.', 'invoicing' ), |
|
| 69 | - 2 => __( 'Custom field updated.', 'invoicing' ), |
|
| 70 | - 3 => __( 'Custom field deleted.', 'invoicing' ), |
|
| 71 | - 4 => __( 'Discount updated.', 'invoicing' ), |
|
| 72 | - 5 => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Discount restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, |
|
| 73 | - 6 => __( 'Discount updated.', 'invoicing' ), |
|
| 74 | - 7 => __( 'Discount saved.', 'invoicing' ), |
|
| 75 | - 8 => __( 'Discount submitted.', 'invoicing' ), |
|
| 76 | - 9 => wp_sprintf( __( 'Discount scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ), |
|
| 77 | - 10 => __( 'Discount draft updated.', 'invoicing' ), |
|
| 78 | - ); |
|
| 79 | - |
|
| 80 | - $messages['wpi_payment_form'] = array( |
|
| 81 | - 0 => '', |
|
| 82 | - 1 => __( 'Payment Form updated.', 'invoicing' ), |
|
| 83 | - 2 => __( 'Custom field updated.', 'invoicing' ), |
|
| 84 | - 3 => __( 'Custom field deleted.', 'invoicing' ), |
|
| 85 | - 4 => __( 'Payment Form updated.', 'invoicing' ), |
|
| 86 | - 5 => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Payment Form restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, |
|
| 87 | - 6 => __( 'Payment Form updated.', 'invoicing' ), |
|
| 88 | - 7 => __( 'Payment Form saved.', 'invoicing' ), |
|
| 89 | - 8 => __( 'Payment Form submitted.', 'invoicing' ), |
|
| 90 | - 9 => wp_sprintf( __( 'Payment Form scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ), |
|
| 91 | - 10 => __( 'Payment Form draft updated.', 'invoicing' ), |
|
| 92 | - ); |
|
| 93 | - |
|
| 94 | - return $messages; |
|
| 95 | - |
|
| 96 | - } |
|
| 97 | - |
|
| 98 | - /** |
|
| 99 | - * Post row actions. |
|
| 100 | - */ |
|
| 101 | - public static function post_row_actions( $actions, $post ) { |
|
| 102 | - |
|
| 103 | - $post = get_post( $post ); |
|
| 104 | - |
|
| 105 | - // We do not want to edit the default payment form. |
|
| 106 | - if ( 'wpi_payment_form' == $post->post_type ) { |
|
| 107 | - |
|
| 108 | - if ( wpinv_get_default_payment_form() === $post->ID ) { |
|
| 109 | - unset( $actions['trash'] ); |
|
| 110 | - unset( $actions['inline hide-if-no-js'] ); |
|
| 111 | - } |
|
| 112 | - |
|
| 113 | - $actions['duplicate'] = sprintf( |
|
| 114 | - '<a href="%1$s">%2$s</a>', |
|
| 115 | - esc_url( |
|
| 116 | - wp_nonce_url( |
|
| 117 | - add_query_arg( |
|
| 118 | - array( |
|
| 119 | - 'getpaid-admin-action' => 'duplicate_form', |
|
| 120 | - 'form_id' => $post->ID, |
|
| 121 | - ) |
|
| 122 | - ), |
|
| 123 | - 'getpaid-nonce', |
|
| 124 | - 'getpaid-nonce' |
|
| 125 | - ) |
|
| 126 | - ), |
|
| 127 | - esc_html( __( 'Duplicate', 'invoicing' ) ) |
|
| 128 | - ); |
|
| 129 | - |
|
| 130 | - } |
|
| 131 | - |
|
| 132 | - // Link to item payment form. |
|
| 133 | - if ( 'wpi_item' == $post->post_type ) { |
|
| 134 | - |
|
| 135 | - if ( in_array( get_post_meta( $post->ID, '_wpinv_type', true ), array( '', 'fee', 'custom' ), true ) ) { |
|
| 136 | - |
|
| 137 | - $actions['buy'] = sprintf( |
|
| 138 | - '<a href="%1$s">%2$s</a>', |
|
| 139 | - esc_url( getpaid_embed_url( false, $post->ID . '|0' ) ), |
|
| 140 | - esc_html( __( 'Buy', 'invoicing' ) ) |
|
| 141 | - ); |
|
| 142 | - |
|
| 143 | - } |
|
| 16 | + * Hook in methods. |
|
| 17 | + */ |
|
| 18 | + public static function init() { |
|
| 19 | + |
|
| 20 | + // Init metaboxes. |
|
| 21 | + GetPaid_Metaboxes::init(); |
|
| 22 | + |
|
| 23 | + // Filter the post updated messages. |
|
| 24 | + add_filter( 'post_updated_messages', 'GetPaid_Post_Types_Admin::post_updated_messages' ); |
|
| 25 | + |
|
| 26 | + // Filter post actions. |
|
| 27 | + add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::post_row_actions', 10, 2 ); |
|
| 28 | + add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::filter_invoice_row_actions', 90, 2 ); |
|
| 29 | + |
|
| 30 | + // Invoice table columns. |
|
| 31 | + add_filter( 'manage_wpi_invoice_posts_columns', array( __CLASS__, 'invoice_columns' ), 100 ); |
|
| 32 | + add_action( 'manage_wpi_invoice_posts_custom_column', array( __CLASS__, 'display_invoice_columns' ), 10, 2 ); |
|
| 33 | + add_filter( 'bulk_actions-edit-wpi_invoice', array( __CLASS__, 'invoice_bulk_actions' ) ); |
|
| 34 | + add_filter( 'handle_bulk_actions-edit-wpi_invoice', array( __CLASS__, 'handle_invoice_bulk_actions' ), 10, 3 ); |
|
| 35 | + |
|
| 36 | + // Items table columns. |
|
| 37 | + add_filter( 'manage_wpi_item_posts_columns', array( __CLASS__, 'item_columns' ), 100 ); |
|
| 38 | + add_filter( 'manage_edit-wpi_item_sortable_columns', array( __CLASS__, 'sortable_item_columns' ), 20 ); |
|
| 39 | + add_action( 'manage_wpi_item_posts_custom_column', array( __CLASS__, 'display_item_columns' ), 10, 2 ); |
|
| 40 | + add_action( 'restrict_manage_posts', array( __CLASS__, 'add_item_filters' ), 100 ); |
|
| 41 | + add_action( 'parse_query', array( __CLASS__, 'filter_item_query' ), 100 ); |
|
| 42 | + add_action( 'request', array( __CLASS__, 'reorder_items' ), 100 ); |
|
| 43 | + |
|
| 44 | + // Payment forms columns. |
|
| 45 | + add_filter( 'manage_wpi_payment_form_posts_columns', array( __CLASS__, 'payment_form_columns' ), 100 ); |
|
| 46 | + add_action( 'manage_wpi_payment_form_posts_custom_column', array( __CLASS__, 'display_payment_form_columns' ), 10, 2 ); |
|
| 47 | + add_filter( 'display_post_states', array( __CLASS__, 'filter_payment_form_state' ), 10, 2 ); |
|
| 48 | + |
|
| 49 | + // Discount table columns. |
|
| 50 | + add_filter( 'manage_wpi_discount_posts_columns', array( __CLASS__, 'discount_columns' ), 100 ); |
|
| 51 | + add_filter( 'bulk_actions-edit-wpi_discount', '__return_empty_array', 100 ); |
|
| 52 | + |
|
| 53 | + // Deleting posts. |
|
| 54 | + add_action( 'delete_post', array( __CLASS__, 'delete_post' ) ); |
|
| 55 | + add_filter( 'display_post_states', array( __CLASS__, 'filter_discount_state' ), 10, 2 ); |
|
| 56 | + |
|
| 57 | + add_filter( 'display_post_states', array( __CLASS__, 'add_display_post_states' ), 10, 2 ); |
|
| 58 | + } |
|
| 59 | + |
|
| 60 | + /** |
|
| 61 | + * Post updated messages. |
|
| 62 | + */ |
|
| 63 | + public static function post_updated_messages( $messages ) { |
|
| 64 | + global $post; |
|
| 65 | + |
|
| 66 | + $messages['wpi_discount'] = array( |
|
| 67 | + 0 => '', |
|
| 68 | + 1 => __( 'Discount updated.', 'invoicing' ), |
|
| 69 | + 2 => __( 'Custom field updated.', 'invoicing' ), |
|
| 70 | + 3 => __( 'Custom field deleted.', 'invoicing' ), |
|
| 71 | + 4 => __( 'Discount updated.', 'invoicing' ), |
|
| 72 | + 5 => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Discount restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, |
|
| 73 | + 6 => __( 'Discount updated.', 'invoicing' ), |
|
| 74 | + 7 => __( 'Discount saved.', 'invoicing' ), |
|
| 75 | + 8 => __( 'Discount submitted.', 'invoicing' ), |
|
| 76 | + 9 => wp_sprintf( __( 'Discount scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ), |
|
| 77 | + 10 => __( 'Discount draft updated.', 'invoicing' ), |
|
| 78 | + ); |
|
| 79 | + |
|
| 80 | + $messages['wpi_payment_form'] = array( |
|
| 81 | + 0 => '', |
|
| 82 | + 1 => __( 'Payment Form updated.', 'invoicing' ), |
|
| 83 | + 2 => __( 'Custom field updated.', 'invoicing' ), |
|
| 84 | + 3 => __( 'Custom field deleted.', 'invoicing' ), |
|
| 85 | + 4 => __( 'Payment Form updated.', 'invoicing' ), |
|
| 86 | + 5 => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Payment Form restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, |
|
| 87 | + 6 => __( 'Payment Form updated.', 'invoicing' ), |
|
| 88 | + 7 => __( 'Payment Form saved.', 'invoicing' ), |
|
| 89 | + 8 => __( 'Payment Form submitted.', 'invoicing' ), |
|
| 90 | + 9 => wp_sprintf( __( 'Payment Form scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ), |
|
| 91 | + 10 => __( 'Payment Form draft updated.', 'invoicing' ), |
|
| 92 | + ); |
|
| 93 | + |
|
| 94 | + return $messages; |
|
| 95 | + |
|
| 96 | + } |
|
| 97 | + |
|
| 98 | + /** |
|
| 99 | + * Post row actions. |
|
| 100 | + */ |
|
| 101 | + public static function post_row_actions( $actions, $post ) { |
|
| 102 | + |
|
| 103 | + $post = get_post( $post ); |
|
| 104 | + |
|
| 105 | + // We do not want to edit the default payment form. |
|
| 106 | + if ( 'wpi_payment_form' == $post->post_type ) { |
|
| 107 | + |
|
| 108 | + if ( wpinv_get_default_payment_form() === $post->ID ) { |
|
| 109 | + unset( $actions['trash'] ); |
|
| 110 | + unset( $actions['inline hide-if-no-js'] ); |
|
| 111 | + } |
|
| 112 | + |
|
| 113 | + $actions['duplicate'] = sprintf( |
|
| 114 | + '<a href="%1$s">%2$s</a>', |
|
| 115 | + esc_url( |
|
| 116 | + wp_nonce_url( |
|
| 117 | + add_query_arg( |
|
| 118 | + array( |
|
| 119 | + 'getpaid-admin-action' => 'duplicate_form', |
|
| 120 | + 'form_id' => $post->ID, |
|
| 121 | + ) |
|
| 122 | + ), |
|
| 123 | + 'getpaid-nonce', |
|
| 124 | + 'getpaid-nonce' |
|
| 125 | + ) |
|
| 126 | + ), |
|
| 127 | + esc_html( __( 'Duplicate', 'invoicing' ) ) |
|
| 128 | + ); |
|
| 129 | + |
|
| 130 | + } |
|
| 131 | + |
|
| 132 | + // Link to item payment form. |
|
| 133 | + if ( 'wpi_item' == $post->post_type ) { |
|
| 134 | + |
|
| 135 | + if ( in_array( get_post_meta( $post->ID, '_wpinv_type', true ), array( '', 'fee', 'custom' ), true ) ) { |
|
| 136 | + |
|
| 137 | + $actions['buy'] = sprintf( |
|
| 138 | + '<a href="%1$s">%2$s</a>', |
|
| 139 | + esc_url( getpaid_embed_url( false, $post->ID . '|0' ) ), |
|
| 140 | + esc_html( __( 'Buy', 'invoicing' ) ) |
|
| 141 | + ); |
|
| 142 | + |
|
| 143 | + } |
|
| 144 | 144 | } |
| 145 | 145 | |
| 146 | - return $actions; |
|
| 147 | - } |
|
| 146 | + return $actions; |
|
| 147 | + } |
|
| 148 | 148 | |
| 149 | - /** |
|
| 149 | + /** |
|
| 150 | 150 | * Remove bulk edit option from admin side quote listing |
| 151 | 151 | * |
| 152 | 152 | * @since 1.0.0 |
| 153 | 153 | * @param array $actions post actions |
| 154 | - * @param WP_Post $post |
|
| 154 | + * @param WP_Post $post |
|
| 155 | 155 | * @return array $actions actions without edit option |
| 156 | 156 | */ |
| 157 | 157 | public static function filter_invoice_row_actions( $actions, $post ) { |
| 158 | 158 | |
| 159 | 159 | if ( getpaid_is_invoice_post_type( $post->post_type ) ) { |
| 160 | 160 | |
| 161 | - $actions = array(); |
|
| 162 | - $invoice = new WPInv_Invoice( $post ); |
|
| 163 | - |
|
| 164 | - $actions['edit'] = sprintf( |
|
| 165 | - '<a href="%1$s">%2$s</a>', |
|
| 166 | - esc_url( get_edit_post_link( $invoice->get_id() ) ), |
|
| 167 | - esc_html( __( 'Edit', 'invoicing' ) ) |
|
| 168 | - ); |
|
| 169 | - |
|
| 170 | - if ( ! $invoice->is_draft() ) { |
|
| 171 | - |
|
| 172 | - $actions['view'] = sprintf( |
|
| 173 | - '<a href="%1$s">%2$s</a>', |
|
| 174 | - esc_url( $invoice->get_view_url() ), |
|
| 175 | - sprintf( |
|
| 176 | - // translators: %s is the invoice type |
|
| 177 | - esc_html__( 'View %s', 'invoicing' ), |
|
| 178 | - getpaid_get_post_type_label( $invoice->get_post_type(), false ) |
|
| 179 | - ) |
|
| 180 | - ); |
|
| 181 | - |
|
| 182 | - $actions['send'] = sprintf( |
|
| 183 | - '<a href="%1$s">%2$s</a>', |
|
| 184 | - esc_url( |
|
| 185 | - wp_nonce_url( |
|
| 186 | - add_query_arg( |
|
| 187 | - array( |
|
| 188 | - 'getpaid-admin-action' => 'send_invoice', |
|
| 189 | - 'invoice_id' => $invoice->get_id(), |
|
| 190 | - ) |
|
| 191 | - ), |
|
| 192 | - 'getpaid-nonce', |
|
| 193 | - 'getpaid-nonce' |
|
| 194 | - ) |
|
| 195 | - ), |
|
| 196 | - esc_html( __( 'Send to Customer', 'invoicing' ) ) |
|
| 197 | - ); |
|
| 198 | - |
|
| 199 | - } |
|
| 200 | - |
|
| 201 | - $actions['duplicate'] = sprintf( |
|
| 202 | - '<a href="%1$s">%2$s</a>', |
|
| 203 | - esc_url( |
|
| 204 | - wp_nonce_url( |
|
| 205 | - add_query_arg( |
|
| 206 | - array( |
|
| 207 | - 'getpaid-admin-action' => 'duplicate_invoice', |
|
| 208 | - 'invoice_id' => $post->ID, |
|
| 209 | - ) |
|
| 210 | - ), |
|
| 211 | - 'getpaid-nonce', |
|
| 212 | - 'getpaid-nonce' |
|
| 213 | - ) |
|
| 214 | - ), |
|
| 215 | - esc_html( __( 'Duplicate', 'invoicing' ) ) |
|
| 216 | - ); |
|
| 161 | + $actions = array(); |
|
| 162 | + $invoice = new WPInv_Invoice( $post ); |
|
| 163 | + |
|
| 164 | + $actions['edit'] = sprintf( |
|
| 165 | + '<a href="%1$s">%2$s</a>', |
|
| 166 | + esc_url( get_edit_post_link( $invoice->get_id() ) ), |
|
| 167 | + esc_html( __( 'Edit', 'invoicing' ) ) |
|
| 168 | + ); |
|
| 169 | + |
|
| 170 | + if ( ! $invoice->is_draft() ) { |
|
| 171 | + |
|
| 172 | + $actions['view'] = sprintf( |
|
| 173 | + '<a href="%1$s">%2$s</a>', |
|
| 174 | + esc_url( $invoice->get_view_url() ), |
|
| 175 | + sprintf( |
|
| 176 | + // translators: %s is the invoice type |
|
| 177 | + esc_html__( 'View %s', 'invoicing' ), |
|
| 178 | + getpaid_get_post_type_label( $invoice->get_post_type(), false ) |
|
| 179 | + ) |
|
| 180 | + ); |
|
| 181 | + |
|
| 182 | + $actions['send'] = sprintf( |
|
| 183 | + '<a href="%1$s">%2$s</a>', |
|
| 184 | + esc_url( |
|
| 185 | + wp_nonce_url( |
|
| 186 | + add_query_arg( |
|
| 187 | + array( |
|
| 188 | + 'getpaid-admin-action' => 'send_invoice', |
|
| 189 | + 'invoice_id' => $invoice->get_id(), |
|
| 190 | + ) |
|
| 191 | + ), |
|
| 192 | + 'getpaid-nonce', |
|
| 193 | + 'getpaid-nonce' |
|
| 194 | + ) |
|
| 195 | + ), |
|
| 196 | + esc_html( __( 'Send to Customer', 'invoicing' ) ) |
|
| 197 | + ); |
|
| 198 | + |
|
| 199 | + } |
|
| 200 | + |
|
| 201 | + $actions['duplicate'] = sprintf( |
|
| 202 | + '<a href="%1$s">%2$s</a>', |
|
| 203 | + esc_url( |
|
| 204 | + wp_nonce_url( |
|
| 205 | + add_query_arg( |
|
| 206 | + array( |
|
| 207 | + 'getpaid-admin-action' => 'duplicate_invoice', |
|
| 208 | + 'invoice_id' => $post->ID, |
|
| 209 | + ) |
|
| 210 | + ), |
|
| 211 | + 'getpaid-nonce', |
|
| 212 | + 'getpaid-nonce' |
|
| 213 | + ) |
|
| 214 | + ), |
|
| 215 | + esc_html( __( 'Duplicate', 'invoicing' ) ) |
|
| 216 | + ); |
|
| 217 | 217 | |
| 218 | 218 | } |
| 219 | 219 | |
| 220 | 220 | return $actions; |
| 221 | - } |
|
| 222 | - |
|
| 223 | - /** |
|
| 224 | - * Returns an array of invoice table columns. |
|
| 225 | - */ |
|
| 226 | - public static function invoice_columns( $columns ) { |
|
| 227 | - |
|
| 228 | - $columns = array( |
|
| 229 | - 'cb' => $columns['cb'], |
|
| 230 | - 'number' => __( 'Invoice', 'invoicing' ), |
|
| 231 | - 'customer' => __( 'Customer', 'invoicing' ), |
|
| 232 | - 'invoice_date' => __( 'Created', 'invoicing' ), |
|
| 233 | - 'payment_date' => __( 'Completed', 'invoicing' ), |
|
| 234 | - 'amount' => __( 'Amount', 'invoicing' ), |
|
| 235 | - 'recurring' => __( 'Recurring', 'invoicing' ), |
|
| 236 | - 'status' => __( 'Status', 'invoicing' ), |
|
| 237 | - ); |
|
| 238 | - |
|
| 239 | - return apply_filters( 'wpi_invoice_table_columns', $columns ); |
|
| 240 | - } |
|
| 241 | - |
|
| 242 | - /** |
|
| 243 | - * Displays invoice table columns. |
|
| 244 | - */ |
|
| 245 | - public static function display_invoice_columns( $column_name, $post_id ) { |
|
| 246 | - |
|
| 247 | - $invoice = new WPInv_Invoice( $post_id ); |
|
| 248 | - |
|
| 249 | - switch ( $column_name ) { |
|
| 250 | - |
|
| 251 | - case 'invoice_date': |
|
| 252 | - $date_time = esc_attr( $invoice->get_created_date() ); |
|
| 253 | - $date = esc_html( getpaid_format_date_value( $date_time, '—', true ) ); |
|
| 254 | - echo wp_kses_post( "<span title='$date_time'>$date</span>" ); |
|
| 255 | - break; |
|
| 256 | - |
|
| 257 | - case 'payment_date': |
|
| 258 | - if ( $invoice->is_paid() ) { |
|
| 259 | - $date_time = esc_attr( $invoice->get_completed_date() ); |
|
| 260 | - $date = esc_html( getpaid_format_date_value( $date_time, '—', true ) ); |
|
| 261 | - echo wp_kses_post( "<span title='$date_time'>$date</span>" ); |
|
| 262 | - } else { |
|
| 263 | - echo '—'; |
|
| 264 | - } |
|
| 265 | - |
|
| 266 | - break; |
|
| 267 | - |
|
| 268 | - case 'amount': |
|
| 269 | - $amount = $invoice->get_total(); |
|
| 270 | - $formated_amount = wp_kses_post( wpinv_price( $amount, $invoice->get_currency() ) ); |
|
| 271 | - |
|
| 272 | - if ( $invoice->is_refunded() ) { |
|
| 273 | - $refunded_amount = wpinv_price( 0, $invoice->get_currency() ); |
|
| 274 | - echo wp_kses_post( "<del>$formated_amount</del> <ins>$refunded_amount</ins>" ); |
|
| 275 | - } else { |
|
| 276 | - |
|
| 277 | - $discount = $invoice->get_total_discount(); |
|
| 278 | - |
|
| 279 | - if ( ! empty( $discount ) ) { |
|
| 280 | - $new_amount = wpinv_price( $amount + $discount, $invoice->get_currency() ); |
|
| 281 | - echo wp_kses_post( "<del>$new_amount</del> <ins>$formated_amount</ins>" ); |
|
| 282 | - } else { |
|
| 283 | - echo wp_kses_post( $formated_amount ); |
|
| 284 | - } |
|
| 285 | - } |
|
| 286 | - |
|
| 287 | - break; |
|
| 288 | - |
|
| 289 | - case 'status': |
|
| 290 | - $status = esc_html( $invoice->get_status() ); |
|
| 291 | - $status_label = esc_html( $invoice->get_status_nicename() ); |
|
| 292 | - |
|
| 293 | - // If it is paid, show the gateway title. |
|
| 294 | - if ( $invoice->is_paid() ) { |
|
| 295 | - $gateway = esc_html( $invoice->get_gateway_title() ); |
|
| 296 | - $gateway = wp_sprintf( esc_attr__( 'Paid via %s', 'invoicing' ), esc_html( $gateway ) ); |
|
| 297 | - |
|
| 298 | - echo wp_kses_post( "<mark class='wpi-help-tip getpaid-invoice-status $status' title='$gateway'><span>$status_label</span></mark>" ); |
|
| 299 | - } else { |
|
| 300 | - echo wp_kses_post( "<mark class='getpaid-invoice-status $status'><span>$status_label</span></mark>" ); |
|
| 301 | - } |
|
| 302 | - |
|
| 303 | - // If it is not paid, display the overdue and view status. |
|
| 304 | - if ( ! $invoice->is_paid() && ! $invoice->is_refunded() ) { |
|
| 305 | - |
|
| 306 | - // Invoice view status. |
|
| 307 | - if ( wpinv_is_invoice_viewed( $invoice->get_id() ) ) { |
|
| 308 | - echo ' <i class="fa fa-eye wpi-help-tip" title="' . esc_attr__( 'Viewed by Customer', 'invoicing' ) . '"></i>'; |
|
| 309 | - } else { |
|
| 310 | - echo ' <i class="fa fa-eye-slash wpi-help-tip" title="' . esc_attr__( 'Not Viewed by Customer', 'invoicing' ) . '"></i>'; |
|
| 311 | - } |
|
| 312 | - |
|
| 313 | - // Display the overview status. |
|
| 314 | - if ( wpinv_get_option( 'overdue_active' ) ) { |
|
| 315 | - $due_date = $invoice->get_due_date(); |
|
| 316 | - $fomatted = getpaid_format_date( $due_date ); |
|
| 317 | - |
|
| 318 | - if ( ! empty( $fomatted ) ) { |
|
| 319 | - $date = wp_sprintf( |
|
| 320 | - // translators: %s is the due date. |
|
| 321 | - __( 'Due %s', 'invoicing' ), |
|
| 322 | - $fomatted |
|
| 323 | - ); |
|
| 324 | - echo wp_kses_post( "<p class='description' style='color: #888;' title='$due_date'>$fomatted</p>" ); |
|
| 325 | - } |
|
| 326 | - } |
|
| 327 | - } |
|
| 328 | - |
|
| 329 | - break; |
|
| 330 | - |
|
| 331 | - case 'recurring': |
|
| 332 | - if ( $invoice->is_recurring() ) { |
|
| 333 | - echo '<i class="fa fa-check" style="color:#43850a;"></i>'; |
|
| 334 | - } else { |
|
| 335 | - echo '<i class="fa fa-times" style="color:#616161;"></i>'; |
|
| 336 | - } |
|
| 337 | - break; |
|
| 338 | - |
|
| 339 | - case 'number': |
|
| 340 | - $edit_link = esc_url( get_edit_post_link( $invoice->get_id() ) ); |
|
| 341 | - $invoice_number = esc_html( $invoice->get_number() ); |
|
| 342 | - $invoice_details = esc_attr__( 'View Invoice Details', 'invoicing' ); |
|
| 343 | - |
|
| 344 | - echo wp_kses_post( "<a href='$edit_link' title='$invoice_details'><strong>$invoice_number</strong></a>" ); |
|
| 345 | - |
|
| 346 | - do_action( 'getpaid_admin_table_invoice_number_column', $invoice ); |
|
| 347 | - break; |
|
| 348 | - |
|
| 349 | - case 'customer': |
|
| 350 | - $customer_name = $invoice->get_user_full_name(); |
|
| 351 | - |
|
| 352 | - if ( empty( $customer_name ) ) { |
|
| 353 | - $customer_name = $invoice->get_email(); |
|
| 354 | - } |
|
| 355 | - |
|
| 356 | - if ( ! empty( $customer_name ) ) { |
|
| 357 | - $customer_details = esc_attr__( 'View Customer Details', 'invoicing' ); |
|
| 358 | - $view_link = esc_url( add_query_arg( 'user_id', $invoice->get_user_id(), admin_url( 'user-edit.php' ) ) ); |
|
| 359 | - echo wp_kses_post( "<a href='$view_link' title='$customer_details'><span>$customer_name</span></a>" ); |
|
| 360 | - } else { |
|
| 361 | - echo '<div>—</div>'; |
|
| 362 | - } |
|
| 363 | - |
|
| 364 | - break; |
|
| 365 | - |
|
| 366 | - } |
|
| 367 | - |
|
| 368 | - } |
|
| 369 | - |
|
| 370 | - /** |
|
| 371 | - * Displays invoice bulk actions. |
|
| 372 | - */ |
|
| 373 | - public static function invoice_bulk_actions( $actions ) { |
|
| 374 | - $actions['resend-invoice'] = __( 'Send to Customer', 'invoicing' ); |
|
| 375 | - return $actions; |
|
| 376 | - } |
|
| 377 | - |
|
| 378 | - /** |
|
| 379 | - * Processes invoice bulk actions. |
|
| 380 | - */ |
|
| 381 | - public static function handle_invoice_bulk_actions( $redirect_url, $action, $post_ids ) { |
|
| 382 | - |
|
| 383 | - if ( 'resend-invoice' === $action ) { |
|
| 384 | - foreach ( $post_ids as $post_id ) { |
|
| 385 | - getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $post_id ), true ); |
|
| 386 | - } |
|
| 387 | - } |
|
| 388 | - |
|
| 389 | - return $redirect_url; |
|
| 390 | - |
|
| 391 | - } |
|
| 392 | - |
|
| 393 | - /** |
|
| 394 | - * Returns an array of payment forms table columns. |
|
| 395 | - */ |
|
| 396 | - public static function payment_form_columns( $columns ) { |
|
| 397 | - |
|
| 398 | - $columns = array( |
|
| 399 | - 'cb' => $columns['cb'], |
|
| 400 | - 'title' => __( 'Name', 'invoicing' ), |
|
| 401 | - 'shortcode' => __( 'Shortcode', 'invoicing' ), |
|
| 402 | - 'earnings' => __( 'Revenue', 'invoicing' ), |
|
| 403 | - 'refunds' => __( 'Refunded', 'invoicing' ), |
|
| 404 | - 'items' => __( 'Items', 'invoicing' ), |
|
| 405 | - 'date' => __( 'Date', 'invoicing' ), |
|
| 406 | - ); |
|
| 407 | - |
|
| 408 | - return apply_filters( 'wpi_payment_form_table_columns', $columns ); |
|
| 409 | - |
|
| 410 | - } |
|
| 411 | - |
|
| 412 | - /** |
|
| 413 | - * Displays payment form table columns. |
|
| 414 | - */ |
|
| 415 | - public static function display_payment_form_columns( $column_name, $post_id ) { |
|
| 416 | - |
|
| 417 | - // Retrieve the payment form. |
|
| 418 | - $form = new GetPaid_Payment_Form( $post_id ); |
|
| 419 | - |
|
| 420 | - switch ( $column_name ) { |
|
| 421 | - |
|
| 422 | - case 'earnings': |
|
| 423 | - echo wp_kses_post( wpinv_price( $form->get_earned() ) ); |
|
| 424 | - break; |
|
| 425 | - |
|
| 426 | - case 'refunds': |
|
| 427 | - echo wp_kses_post( wpinv_price( $form->get_refunded() ) ); |
|
| 428 | - break; |
|
| 429 | - |
|
| 430 | - case 'refunds': |
|
| 431 | - echo wp_kses_post( wpinv_price( $form->get_refunded() ) ); |
|
| 432 | - break; |
|
| 433 | - |
|
| 434 | - case 'shortcode': |
|
| 435 | - if ( $form->is_default() ) { |
|
| 436 | - echo '—'; |
|
| 437 | - } else { |
|
| 438 | - echo '<input onClick="this.select()" type="text" value="[getpaid form=' . esc_attr( $form->get_id() ) . ']" style="width: 100%;" readonly/>'; |
|
| 439 | - } |
|
| 440 | - |
|
| 441 | - break; |
|
| 221 | + } |
|
| 442 | 222 | |
| 443 | - case 'items': |
|
| 444 | - $items = $form->get_items(); |
|
| 445 | - |
|
| 446 | - if ( $form->is_default() || empty( $items ) ) { |
|
| 447 | - echo '—'; |
|
| 448 | - return; |
|
| 449 | - } |
|
| 450 | - |
|
| 451 | - $_items = array(); |
|
| 452 | - |
|
| 453 | - foreach ( $items as $item ) { |
|
| 454 | - $url = $item->get_edit_url(); |
|
| 455 | - |
|
| 456 | - if ( empty( $url ) ) { |
|
| 457 | - $_items[] = esc_html( $item->get_name() ); |
|
| 458 | - } else { |
|
| 459 | - $_items[] = sprintf( |
|
| 460 | - '<a href="%s">%s</a>', |
|
| 461 | - esc_url( $url ), |
|
| 462 | - esc_html( $item->get_name() ) |
|
| 463 | - ); |
|
| 464 | - } |
|
| 223 | + /** |
|
| 224 | + * Returns an array of invoice table columns. |
|
| 225 | + */ |
|
| 226 | + public static function invoice_columns( $columns ) { |
|
| 227 | + |
|
| 228 | + $columns = array( |
|
| 229 | + 'cb' => $columns['cb'], |
|
| 230 | + 'number' => __( 'Invoice', 'invoicing' ), |
|
| 231 | + 'customer' => __( 'Customer', 'invoicing' ), |
|
| 232 | + 'invoice_date' => __( 'Created', 'invoicing' ), |
|
| 233 | + 'payment_date' => __( 'Completed', 'invoicing' ), |
|
| 234 | + 'amount' => __( 'Amount', 'invoicing' ), |
|
| 235 | + 'recurring' => __( 'Recurring', 'invoicing' ), |
|
| 236 | + 'status' => __( 'Status', 'invoicing' ), |
|
| 237 | + ); |
|
| 238 | + |
|
| 239 | + return apply_filters( 'wpi_invoice_table_columns', $columns ); |
|
| 240 | + } |
|
| 241 | + |
|
| 242 | + /** |
|
| 243 | + * Displays invoice table columns. |
|
| 244 | + */ |
|
| 245 | + public static function display_invoice_columns( $column_name, $post_id ) { |
|
| 246 | + |
|
| 247 | + $invoice = new WPInv_Invoice( $post_id ); |
|
| 248 | + |
|
| 249 | + switch ( $column_name ) { |
|
| 250 | + |
|
| 251 | + case 'invoice_date': |
|
| 252 | + $date_time = esc_attr( $invoice->get_created_date() ); |
|
| 253 | + $date = esc_html( getpaid_format_date_value( $date_time, '—', true ) ); |
|
| 254 | + echo wp_kses_post( "<span title='$date_time'>$date</span>" ); |
|
| 255 | + break; |
|
| 256 | + |
|
| 257 | + case 'payment_date': |
|
| 258 | + if ( $invoice->is_paid() ) { |
|
| 259 | + $date_time = esc_attr( $invoice->get_completed_date() ); |
|
| 260 | + $date = esc_html( getpaid_format_date_value( $date_time, '—', true ) ); |
|
| 261 | + echo wp_kses_post( "<span title='$date_time'>$date</span>" ); |
|
| 262 | + } else { |
|
| 263 | + echo '—'; |
|
| 264 | + } |
|
| 265 | + |
|
| 266 | + break; |
|
| 267 | + |
|
| 268 | + case 'amount': |
|
| 269 | + $amount = $invoice->get_total(); |
|
| 270 | + $formated_amount = wp_kses_post( wpinv_price( $amount, $invoice->get_currency() ) ); |
|
| 271 | + |
|
| 272 | + if ( $invoice->is_refunded() ) { |
|
| 273 | + $refunded_amount = wpinv_price( 0, $invoice->get_currency() ); |
|
| 274 | + echo wp_kses_post( "<del>$formated_amount</del> <ins>$refunded_amount</ins>" ); |
|
| 275 | + } else { |
|
| 276 | + |
|
| 277 | + $discount = $invoice->get_total_discount(); |
|
| 278 | + |
|
| 279 | + if ( ! empty( $discount ) ) { |
|
| 280 | + $new_amount = wpinv_price( $amount + $discount, $invoice->get_currency() ); |
|
| 281 | + echo wp_kses_post( "<del>$new_amount</del> <ins>$formated_amount</ins>" ); |
|
| 282 | + } else { |
|
| 283 | + echo wp_kses_post( $formated_amount ); |
|
| 284 | + } |
|
| 285 | + } |
|
| 286 | + |
|
| 287 | + break; |
|
| 288 | + |
|
| 289 | + case 'status': |
|
| 290 | + $status = esc_html( $invoice->get_status() ); |
|
| 291 | + $status_label = esc_html( $invoice->get_status_nicename() ); |
|
| 292 | + |
|
| 293 | + // If it is paid, show the gateway title. |
|
| 294 | + if ( $invoice->is_paid() ) { |
|
| 295 | + $gateway = esc_html( $invoice->get_gateway_title() ); |
|
| 296 | + $gateway = wp_sprintf( esc_attr__( 'Paid via %s', 'invoicing' ), esc_html( $gateway ) ); |
|
| 297 | + |
|
| 298 | + echo wp_kses_post( "<mark class='wpi-help-tip getpaid-invoice-status $status' title='$gateway'><span>$status_label</span></mark>" ); |
|
| 299 | + } else { |
|
| 300 | + echo wp_kses_post( "<mark class='getpaid-invoice-status $status'><span>$status_label</span></mark>" ); |
|
| 301 | + } |
|
| 302 | + |
|
| 303 | + // If it is not paid, display the overdue and view status. |
|
| 304 | + if ( ! $invoice->is_paid() && ! $invoice->is_refunded() ) { |
|
| 305 | + |
|
| 306 | + // Invoice view status. |
|
| 307 | + if ( wpinv_is_invoice_viewed( $invoice->get_id() ) ) { |
|
| 308 | + echo ' <i class="fa fa-eye wpi-help-tip" title="' . esc_attr__( 'Viewed by Customer', 'invoicing' ) . '"></i>'; |
|
| 309 | + } else { |
|
| 310 | + echo ' <i class="fa fa-eye-slash wpi-help-tip" title="' . esc_attr__( 'Not Viewed by Customer', 'invoicing' ) . '"></i>'; |
|
| 311 | + } |
|
| 312 | + |
|
| 313 | + // Display the overview status. |
|
| 314 | + if ( wpinv_get_option( 'overdue_active' ) ) { |
|
| 315 | + $due_date = $invoice->get_due_date(); |
|
| 316 | + $fomatted = getpaid_format_date( $due_date ); |
|
| 317 | + |
|
| 318 | + if ( ! empty( $fomatted ) ) { |
|
| 319 | + $date = wp_sprintf( |
|
| 320 | + // translators: %s is the due date. |
|
| 321 | + __( 'Due %s', 'invoicing' ), |
|
| 322 | + $fomatted |
|
| 323 | + ); |
|
| 324 | + echo wp_kses_post( "<p class='description' style='color: #888;' title='$due_date'>$fomatted</p>" ); |
|
| 325 | + } |
|
| 326 | + } |
|
| 327 | + } |
|
| 328 | + |
|
| 329 | + break; |
|
| 330 | + |
|
| 331 | + case 'recurring': |
|
| 332 | + if ( $invoice->is_recurring() ) { |
|
| 333 | + echo '<i class="fa fa-check" style="color:#43850a;"></i>'; |
|
| 334 | + } else { |
|
| 335 | + echo '<i class="fa fa-times" style="color:#616161;"></i>'; |
|
| 336 | + } |
|
| 337 | + break; |
|
| 338 | + |
|
| 339 | + case 'number': |
|
| 340 | + $edit_link = esc_url( get_edit_post_link( $invoice->get_id() ) ); |
|
| 341 | + $invoice_number = esc_html( $invoice->get_number() ); |
|
| 342 | + $invoice_details = esc_attr__( 'View Invoice Details', 'invoicing' ); |
|
| 343 | + |
|
| 344 | + echo wp_kses_post( "<a href='$edit_link' title='$invoice_details'><strong>$invoice_number</strong></a>" ); |
|
| 345 | + |
|
| 346 | + do_action( 'getpaid_admin_table_invoice_number_column', $invoice ); |
|
| 347 | + break; |
|
| 348 | + |
|
| 349 | + case 'customer': |
|
| 350 | + $customer_name = $invoice->get_user_full_name(); |
|
| 351 | + |
|
| 352 | + if ( empty( $customer_name ) ) { |
|
| 353 | + $customer_name = $invoice->get_email(); |
|
| 354 | + } |
|
| 355 | + |
|
| 356 | + if ( ! empty( $customer_name ) ) { |
|
| 357 | + $customer_details = esc_attr__( 'View Customer Details', 'invoicing' ); |
|
| 358 | + $view_link = esc_url( add_query_arg( 'user_id', $invoice->get_user_id(), admin_url( 'user-edit.php' ) ) ); |
|
| 359 | + echo wp_kses_post( "<a href='$view_link' title='$customer_details'><span>$customer_name</span></a>" ); |
|
| 360 | + } else { |
|
| 361 | + echo '<div>—</div>'; |
|
| 362 | + } |
|
| 363 | + |
|
| 364 | + break; |
|
| 365 | + |
|
| 366 | + } |
|
| 367 | + |
|
| 368 | + } |
|
| 369 | + |
|
| 370 | + /** |
|
| 371 | + * Displays invoice bulk actions. |
|
| 372 | + */ |
|
| 373 | + public static function invoice_bulk_actions( $actions ) { |
|
| 374 | + $actions['resend-invoice'] = __( 'Send to Customer', 'invoicing' ); |
|
| 375 | + return $actions; |
|
| 376 | + } |
|
| 377 | + |
|
| 378 | + /** |
|
| 379 | + * Processes invoice bulk actions. |
|
| 380 | + */ |
|
| 381 | + public static function handle_invoice_bulk_actions( $redirect_url, $action, $post_ids ) { |
|
| 382 | + |
|
| 383 | + if ( 'resend-invoice' === $action ) { |
|
| 384 | + foreach ( $post_ids as $post_id ) { |
|
| 385 | + getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $post_id ), true ); |
|
| 386 | + } |
|
| 387 | + } |
|
| 388 | + |
|
| 389 | + return $redirect_url; |
|
| 390 | + |
|
| 391 | + } |
|
| 392 | + |
|
| 393 | + /** |
|
| 394 | + * Returns an array of payment forms table columns. |
|
| 395 | + */ |
|
| 396 | + public static function payment_form_columns( $columns ) { |
|
| 397 | + |
|
| 398 | + $columns = array( |
|
| 399 | + 'cb' => $columns['cb'], |
|
| 400 | + 'title' => __( 'Name', 'invoicing' ), |
|
| 401 | + 'shortcode' => __( 'Shortcode', 'invoicing' ), |
|
| 402 | + 'earnings' => __( 'Revenue', 'invoicing' ), |
|
| 403 | + 'refunds' => __( 'Refunded', 'invoicing' ), |
|
| 404 | + 'items' => __( 'Items', 'invoicing' ), |
|
| 405 | + 'date' => __( 'Date', 'invoicing' ), |
|
| 406 | + ); |
|
| 407 | + |
|
| 408 | + return apply_filters( 'wpi_payment_form_table_columns', $columns ); |
|
| 409 | + |
|
| 410 | + } |
|
| 411 | + |
|
| 412 | + /** |
|
| 413 | + * Displays payment form table columns. |
|
| 414 | + */ |
|
| 415 | + public static function display_payment_form_columns( $column_name, $post_id ) { |
|
| 416 | + |
|
| 417 | + // Retrieve the payment form. |
|
| 418 | + $form = new GetPaid_Payment_Form( $post_id ); |
|
| 419 | + |
|
| 420 | + switch ( $column_name ) { |
|
| 421 | + |
|
| 422 | + case 'earnings': |
|
| 423 | + echo wp_kses_post( wpinv_price( $form->get_earned() ) ); |
|
| 424 | + break; |
|
| 425 | + |
|
| 426 | + case 'refunds': |
|
| 427 | + echo wp_kses_post( wpinv_price( $form->get_refunded() ) ); |
|
| 428 | + break; |
|
| 429 | + |
|
| 430 | + case 'refunds': |
|
| 431 | + echo wp_kses_post( wpinv_price( $form->get_refunded() ) ); |
|
| 432 | + break; |
|
| 433 | + |
|
| 434 | + case 'shortcode': |
|
| 435 | + if ( $form->is_default() ) { |
|
| 436 | + echo '—'; |
|
| 437 | + } else { |
|
| 438 | + echo '<input onClick="this.select()" type="text" value="[getpaid form=' . esc_attr( $form->get_id() ) . ']" style="width: 100%;" readonly/>'; |
|
| 439 | + } |
|
| 440 | + |
|
| 441 | + break; |
|
| 442 | + |
|
| 443 | + case 'items': |
|
| 444 | + $items = $form->get_items(); |
|
| 445 | + |
|
| 446 | + if ( $form->is_default() || empty( $items ) ) { |
|
| 447 | + echo '—'; |
|
| 448 | + return; |
|
| 449 | + } |
|
| 450 | + |
|
| 451 | + $_items = array(); |
|
| 452 | + |
|
| 453 | + foreach ( $items as $item ) { |
|
| 454 | + $url = $item->get_edit_url(); |
|
| 455 | + |
|
| 456 | + if ( empty( $url ) ) { |
|
| 457 | + $_items[] = esc_html( $item->get_name() ); |
|
| 458 | + } else { |
|
| 459 | + $_items[] = sprintf( |
|
| 460 | + '<a href="%s">%s</a>', |
|
| 461 | + esc_url( $url ), |
|
| 462 | + esc_html( $item->get_name() ) |
|
| 463 | + ); |
|
| 464 | + } |
|
| 465 | 465 | } |
| 466 | 466 | |
| 467 | - echo wp_kses_post( implode( '<br>', $_items ) ); |
|
| 467 | + echo wp_kses_post( implode( '<br>', $_items ) ); |
|
| 468 | 468 | |
| 469 | - break; |
|
| 469 | + break; |
|
| 470 | 470 | |
| 471 | - } |
|
| 471 | + } |
|
| 472 | 472 | |
| 473 | - } |
|
| 473 | + } |
|
| 474 | 474 | |
| 475 | - /** |
|
| 476 | - * Filters post states. |
|
| 477 | - */ |
|
| 478 | - public static function filter_payment_form_state( $post_states, $post ) { |
|
| 475 | + /** |
|
| 476 | + * Filters post states. |
|
| 477 | + */ |
|
| 478 | + public static function filter_payment_form_state( $post_states, $post ) { |
|
| 479 | 479 | |
| 480 | - if ( 'wpi_payment_form' === $post->post_type && wpinv_get_default_payment_form() === $post->ID ) { |
|
| 481 | - $post_states['default_form'] = __( 'Default Payment Form', 'invoicing' ); |
|
| 482 | - } |
|
| 480 | + if ( 'wpi_payment_form' === $post->post_type && wpinv_get_default_payment_form() === $post->ID ) { |
|
| 481 | + $post_states['default_form'] = __( 'Default Payment Form', 'invoicing' ); |
|
| 482 | + } |
|
| 483 | 483 | |
| 484 | - return $post_states; |
|
| 484 | + return $post_states; |
|
| 485 | 485 | |
| 486 | - } |
|
| 486 | + } |
|
| 487 | 487 | |
| 488 | - /** |
|
| 489 | - * Returns an array of coupon table columns. |
|
| 490 | - */ |
|
| 491 | - public static function discount_columns( $columns ) { |
|
| 488 | + /** |
|
| 489 | + * Returns an array of coupon table columns. |
|
| 490 | + */ |
|
| 491 | + public static function discount_columns( $columns ) { |
|
| 492 | + |
|
| 493 | + $columns = array( |
|
| 494 | + 'cb' => $columns['cb'], |
|
| 495 | + 'title' => __( 'Name', 'invoicing' ), |
|
| 496 | + 'code' => __( 'Code', 'invoicing' ), |
|
| 497 | + 'amount' => __( 'Amount', 'invoicing' ), |
|
| 498 | + 'usage' => __( 'Usage / Limit', 'invoicing' ), |
|
| 499 | + 'start_date' => __( 'Start Date', 'invoicing' ), |
|
| 500 | + 'expiry_date' => __( 'Expiry Date', 'invoicing' ), |
|
| 501 | + ); |
|
| 502 | + |
|
| 503 | + return apply_filters( 'wpi_discount_table_columns', $columns ); |
|
| 504 | + } |
|
| 492 | 505 | |
| 493 | - $columns = array( |
|
| 494 | - 'cb' => $columns['cb'], |
|
| 495 | - 'title' => __( 'Name', 'invoicing' ), |
|
| 496 | - 'code' => __( 'Code', 'invoicing' ), |
|
| 497 | - 'amount' => __( 'Amount', 'invoicing' ), |
|
| 498 | - 'usage' => __( 'Usage / Limit', 'invoicing' ), |
|
| 499 | - 'start_date' => __( 'Start Date', 'invoicing' ), |
|
| 500 | - 'expiry_date' => __( 'Expiry Date', 'invoicing' ), |
|
| 501 | - ); |
|
| 506 | + /** |
|
| 507 | + * Filters post states. |
|
| 508 | + */ |
|
| 509 | + public static function filter_discount_state( $post_states, $post ) { |
|
| 502 | 510 | |
| 503 | - return apply_filters( 'wpi_discount_table_columns', $columns ); |
|
| 504 | - } |
|
| 511 | + if ( 'wpi_discount' === $post->post_type ) { |
|
| 505 | 512 | |
| 506 | - /** |
|
| 507 | - * Filters post states. |
|
| 508 | - */ |
|
| 509 | - public static function filter_discount_state( $post_states, $post ) { |
|
| 513 | + $discount = new WPInv_Discount( $post ); |
|
| 510 | 514 | |
| 511 | - if ( 'wpi_discount' === $post->post_type ) { |
|
| 515 | + $status = $discount->is_expired() ? 'expired' : $discount->get_status(); |
|
| 512 | 516 | |
| 513 | - $discount = new WPInv_Discount( $post ); |
|
| 517 | + if ( 'publish' !== $status ) { |
|
| 518 | + return array( |
|
| 519 | + 'discount_status' => wpinv_discount_status( $status ), |
|
| 520 | + ); |
|
| 521 | + } |
|
| 514 | 522 | |
| 515 | - $status = $discount->is_expired() ? 'expired' : $discount->get_status(); |
|
| 523 | + return array(); |
|
| 516 | 524 | |
| 517 | - if ( 'publish' !== $status ) { |
|
| 518 | - return array( |
|
| 519 | - 'discount_status' => wpinv_discount_status( $status ), |
|
| 520 | - ); |
|
| 521 | - } |
|
| 525 | + } |
|
| 522 | 526 | |
| 523 | - return array(); |
|
| 527 | + return $post_states; |
|
| 524 | 528 | |
| 525 | - } |
|
| 529 | + } |
|
| 526 | 530 | |
| 527 | - return $post_states; |
|
| 531 | + /** |
|
| 532 | + * Returns an array of items table columns. |
|
| 533 | + */ |
|
| 534 | + public static function item_columns( $columns ) { |
|
| 535 | + |
|
| 536 | + $columns = array( |
|
| 537 | + 'cb' => $columns['cb'], |
|
| 538 | + 'title' => __( 'Name', 'invoicing' ), |
|
| 539 | + 'price' => __( 'Price', 'invoicing' ), |
|
| 540 | + 'vat_rule' => __( 'Tax Rule', 'invoicing' ), |
|
| 541 | + 'vat_class' => __( 'Tax Class', 'invoicing' ), |
|
| 542 | + 'type' => __( 'Type', 'invoicing' ), |
|
| 543 | + 'shortcode' => __( 'Shortcode', 'invoicing' ), |
|
| 544 | + ); |
|
| 545 | + |
|
| 546 | + if ( ! wpinv_use_taxes() ) { |
|
| 547 | + unset( $columns['vat_rule'] ); |
|
| 548 | + unset( $columns['vat_class'] ); |
|
| 549 | + } |
|
| 550 | + |
|
| 551 | + return apply_filters( 'wpi_item_table_columns', $columns ); |
|
| 552 | + } |
|
| 553 | + |
|
| 554 | + /** |
|
| 555 | + * Returns an array of sortable items table columns. |
|
| 556 | + */ |
|
| 557 | + public static function sortable_item_columns( $columns ) { |
|
| 558 | + |
|
| 559 | + return array_merge( |
|
| 560 | + $columns, |
|
| 561 | + array( |
|
| 562 | + 'price' => 'price', |
|
| 563 | + 'vat_rule' => 'vat_rule', |
|
| 564 | + 'vat_class' => 'vat_class', |
|
| 565 | + 'type' => 'type', |
|
| 566 | + ) |
|
| 567 | + ); |
|
| 568 | + |
|
| 569 | + } |
|
| 570 | + |
|
| 571 | + /** |
|
| 572 | + * Displays items table columns. |
|
| 573 | + */ |
|
| 574 | + public static function display_item_columns( $column_name, $post_id ) { |
|
| 575 | + |
|
| 576 | + $item = new WPInv_Item( $post_id ); |
|
| 577 | + |
|
| 578 | + switch ( $column_name ) { |
|
| 579 | + |
|
| 580 | + case 'price': |
|
| 581 | + if ( ! $item->is_recurring() ) { |
|
| 582 | + echo wp_kses_post( $item->get_the_price() ); |
|
| 583 | + break; |
|
| 584 | + } |
|
| 585 | + |
|
| 586 | + $price = wp_sprintf( |
|
| 587 | + __( '%1$s / %2$s', 'invoicing' ), |
|
| 588 | + $item->get_the_price(), |
|
| 589 | + getpaid_get_subscription_period_label( $item->get_recurring_period(), $item->get_recurring_interval(), '' ) |
|
| 590 | + ); |
|
| 591 | + |
|
| 592 | + if ( $item->get_the_price() == $item->get_the_initial_price() ) { |
|
| 593 | + echo wp_kses_post( $price ); |
|
| 594 | + break; |
|
| 595 | + } |
|
| 596 | + |
|
| 597 | + echo wp_kses_post( $item->get_the_initial_price() ); |
|
| 598 | + |
|
| 599 | + echo '<span class="meta">' . wp_sprintf( esc_html__( 'then %s', 'invoicing' ), wp_kses_post( $price ) ) . '</span>'; |
|
| 600 | + break; |
|
| 601 | + |
|
| 602 | + case 'vat_rule': |
|
| 603 | + echo wp_kses_post( getpaid_get_tax_rule_label( $item->get_vat_rule() ) ); |
|
| 604 | + break; |
|
| 605 | + |
|
| 606 | + case 'vat_class': |
|
| 607 | + echo wp_kses_post( getpaid_get_tax_class_label( $item->get_vat_class() ) ); |
|
| 608 | + break; |
|
| 609 | + |
|
| 610 | + case 'shortcode': |
|
| 611 | + if ( $item->is_type( array( '', 'fee', 'custom' ) ) ) { |
|
| 612 | + echo '<input onClick="this.select()" type="text" value="[getpaid item=' . esc_attr( $item->get_id() ) . ' button=\'Buy Now\']" style="width: 100%;" readonly/>'; |
|
| 613 | + } else { |
|
| 614 | + echo '—'; |
|
| 615 | + } |
|
| 616 | + |
|
| 617 | + break; |
|
| 618 | + |
|
| 619 | + case 'type': |
|
| 620 | + echo wp_kses_post( wpinv_item_type( $item->get_id() ) . '<span class="meta">' . $item->get_custom_singular_name() . '</span>' ); |
|
| 621 | + break; |
|
| 622 | + |
|
| 623 | + } |
|
| 624 | + |
|
| 625 | + } |
|
| 626 | + |
|
| 627 | + /** |
|
| 628 | + * Lets users filter items using taxes. |
|
| 629 | + */ |
|
| 630 | + public static function add_item_filters( $post_type ) { |
|
| 631 | + |
|
| 632 | + // Abort if we're not dealing with items. |
|
| 633 | + if ( 'wpi_item' !== $post_type ) { |
|
| 634 | + return; |
|
| 635 | + } |
|
| 636 | + |
|
| 637 | + // Filter by vat rules. |
|
| 638 | + if ( wpinv_use_taxes() ) { |
|
| 639 | + |
|
| 640 | + // Sanitize selected vat rule. |
|
| 641 | + $vat_rule = ''; |
|
| 642 | + $vat_rules = getpaid_get_tax_rules(); |
|
| 643 | + if ( isset( $_GET['vat_rule'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
| 644 | + $vat_rule = sanitize_text_field( $_GET['vat_rule'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
| 645 | + } |
|
| 646 | + |
|
| 647 | + // Filter by VAT rule. |
|
| 648 | + wpinv_html_select( |
|
| 649 | + array( |
|
| 650 | + 'options' => array_merge( |
|
| 651 | + array( |
|
| 652 | + '' => __( 'All Tax Rules', 'invoicing' ), |
|
| 653 | + ), |
|
| 654 | + $vat_rules |
|
| 655 | + ), |
|
| 656 | + 'name' => 'vat_rule', |
|
| 657 | + 'id' => 'vat_rule', |
|
| 658 | + 'selected' => in_array( $vat_rule, array_keys( $vat_rules ), true ) ? $vat_rule : '', |
|
| 659 | + 'show_option_all' => false, |
|
| 660 | + 'show_option_none' => false, |
|
| 661 | + ) |
|
| 662 | + ); |
|
| 663 | + |
|
| 664 | + // Filter by VAT class. |
|
| 665 | + |
|
| 666 | + // Sanitize selected vat rule. |
|
| 667 | + $vat_class = ''; |
|
| 668 | + $vat_classes = getpaid_get_tax_classes(); |
|
| 669 | + if ( isset( $_GET['vat_class'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
| 670 | + $vat_class = sanitize_text_field( $_GET['vat_class'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
| 671 | + } |
|
| 672 | + |
|
| 673 | + wpinv_html_select( |
|
| 674 | + array( |
|
| 675 | + 'options' => array_merge( |
|
| 676 | + array( |
|
| 677 | + '' => __( 'All Tax Classes', 'invoicing' ), |
|
| 678 | + ), |
|
| 679 | + $vat_classes |
|
| 680 | + ), |
|
| 681 | + 'name' => 'vat_class', |
|
| 682 | + 'id' => 'vat_class', |
|
| 683 | + 'selected' => in_array( $vat_class, array_keys( $vat_classes ), true ) ? $vat_class : '', |
|
| 684 | + 'show_option_all' => false, |
|
| 685 | + 'show_option_none' => false, |
|
| 686 | + ) |
|
| 687 | + ); |
|
| 688 | + |
|
| 689 | + } |
|
| 690 | + |
|
| 691 | + // Filter by item type. |
|
| 692 | + $type = ''; |
|
| 693 | + if ( isset( $_GET['type'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
| 694 | + $type = sanitize_text_field( $_GET['type'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
| 695 | + } |
|
| 528 | 696 | |
| 529 | - } |
|
| 697 | + wpinv_html_select( |
|
| 698 | + array( |
|
| 699 | + 'options' => array_merge( |
|
| 700 | + array( |
|
| 701 | + '' => __( 'All item types', 'invoicing' ), |
|
| 702 | + ), |
|
| 703 | + wpinv_get_item_types() |
|
| 704 | + ), |
|
| 705 | + 'name' => 'type', |
|
| 706 | + 'id' => 'type', |
|
| 707 | + 'selected' => in_array( $type, wpinv_item_types(), true ) ? $type : '', |
|
| 708 | + 'show_option_all' => false, |
|
| 709 | + 'show_option_none' => false, |
|
| 710 | + ) |
|
| 711 | + ); |
|
| 530 | 712 | |
| 531 | - /** |
|
| 532 | - * Returns an array of items table columns. |
|
| 533 | - */ |
|
| 534 | - public static function item_columns( $columns ) { |
|
| 713 | + } |
|
| 535 | 714 | |
| 536 | - $columns = array( |
|
| 537 | - 'cb' => $columns['cb'], |
|
| 538 | - 'title' => __( 'Name', 'invoicing' ), |
|
| 539 | - 'price' => __( 'Price', 'invoicing' ), |
|
| 540 | - 'vat_rule' => __( 'Tax Rule', 'invoicing' ), |
|
| 541 | - 'vat_class' => __( 'Tax Class', 'invoicing' ), |
|
| 542 | - 'type' => __( 'Type', 'invoicing' ), |
|
| 543 | - 'shortcode' => __( 'Shortcode', 'invoicing' ), |
|
| 544 | - ); |
|
| 715 | + /** |
|
| 716 | + * Filters the item query. |
|
| 717 | + */ |
|
| 718 | + public static function filter_item_query( $query ) { |
|
| 545 | 719 | |
| 546 | - if ( ! wpinv_use_taxes() ) { |
|
| 547 | - unset( $columns['vat_rule'] ); |
|
| 548 | - unset( $columns['vat_class'] ); |
|
| 549 | - } |
|
| 720 | + // modify the query only if it admin and main query. |
|
| 721 | + if ( ! ( is_admin() && $query->is_main_query() ) ) { |
|
| 722 | + return $query; |
|
| 723 | + } |
|
| 550 | 724 | |
| 551 | - return apply_filters( 'wpi_item_table_columns', $columns ); |
|
| 552 | - } |
|
| 725 | + // we want to modify the query for our items. |
|
| 726 | + if ( empty( $query->query['post_type'] ) || 'wpi_item' !== $query->query['post_type'] ) { |
|
| 727 | + return $query; |
|
| 728 | + } |
|
| 553 | 729 | |
| 554 | - /** |
|
| 555 | - * Returns an array of sortable items table columns. |
|
| 556 | - */ |
|
| 557 | - public static function sortable_item_columns( $columns ) { |
|
| 558 | - |
|
| 559 | - return array_merge( |
|
| 560 | - $columns, |
|
| 561 | - array( |
|
| 562 | - 'price' => 'price', |
|
| 563 | - 'vat_rule' => 'vat_rule', |
|
| 564 | - 'vat_class' => 'vat_class', |
|
| 565 | - 'type' => 'type', |
|
| 566 | - ) |
|
| 567 | - ); |
|
| 568 | - |
|
| 569 | - } |
|
| 570 | - |
|
| 571 | - /** |
|
| 572 | - * Displays items table columns. |
|
| 573 | - */ |
|
| 574 | - public static function display_item_columns( $column_name, $post_id ) { |
|
| 575 | - |
|
| 576 | - $item = new WPInv_Item( $post_id ); |
|
| 577 | - |
|
| 578 | - switch ( $column_name ) { |
|
| 579 | - |
|
| 580 | - case 'price': |
|
| 581 | - if ( ! $item->is_recurring() ) { |
|
| 582 | - echo wp_kses_post( $item->get_the_price() ); |
|
| 583 | - break; |
|
| 584 | - } |
|
| 585 | - |
|
| 586 | - $price = wp_sprintf( |
|
| 587 | - __( '%1$s / %2$s', 'invoicing' ), |
|
| 588 | - $item->get_the_price(), |
|
| 589 | - getpaid_get_subscription_period_label( $item->get_recurring_period(), $item->get_recurring_interval(), '' ) |
|
| 590 | - ); |
|
| 591 | - |
|
| 592 | - if ( $item->get_the_price() == $item->get_the_initial_price() ) { |
|
| 593 | - echo wp_kses_post( $price ); |
|
| 594 | - break; |
|
| 595 | - } |
|
| 596 | - |
|
| 597 | - echo wp_kses_post( $item->get_the_initial_price() ); |
|
| 598 | - |
|
| 599 | - echo '<span class="meta">' . wp_sprintf( esc_html__( 'then %s', 'invoicing' ), wp_kses_post( $price ) ) . '</span>'; |
|
| 600 | - break; |
|
| 601 | - |
|
| 602 | - case 'vat_rule': |
|
| 603 | - echo wp_kses_post( getpaid_get_tax_rule_label( $item->get_vat_rule() ) ); |
|
| 604 | - break; |
|
| 605 | - |
|
| 606 | - case 'vat_class': |
|
| 607 | - echo wp_kses_post( getpaid_get_tax_class_label( $item->get_vat_class() ) ); |
|
| 608 | - break; |
|
| 609 | - |
|
| 610 | - case 'shortcode': |
|
| 611 | - if ( $item->is_type( array( '', 'fee', 'custom' ) ) ) { |
|
| 612 | - echo '<input onClick="this.select()" type="text" value="[getpaid item=' . esc_attr( $item->get_id() ) . ' button=\'Buy Now\']" style="width: 100%;" readonly/>'; |
|
| 613 | - } else { |
|
| 614 | - echo '—'; |
|
| 615 | - } |
|
| 616 | - |
|
| 617 | - break; |
|
| 618 | - |
|
| 619 | - case 'type': |
|
| 620 | - echo wp_kses_post( wpinv_item_type( $item->get_id() ) . '<span class="meta">' . $item->get_custom_singular_name() . '</span>' ); |
|
| 621 | - break; |
|
| 622 | - |
|
| 623 | - } |
|
| 624 | - |
|
| 625 | - } |
|
| 626 | - |
|
| 627 | - /** |
|
| 628 | - * Lets users filter items using taxes. |
|
| 629 | - */ |
|
| 630 | - public static function add_item_filters( $post_type ) { |
|
| 631 | - |
|
| 632 | - // Abort if we're not dealing with items. |
|
| 633 | - if ( 'wpi_item' !== $post_type ) { |
|
| 634 | - return; |
|
| 635 | - } |
|
| 636 | - |
|
| 637 | - // Filter by vat rules. |
|
| 638 | - if ( wpinv_use_taxes() ) { |
|
| 639 | - |
|
| 640 | - // Sanitize selected vat rule. |
|
| 641 | - $vat_rule = ''; |
|
| 642 | - $vat_rules = getpaid_get_tax_rules(); |
|
| 643 | - if ( isset( $_GET['vat_rule'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
| 644 | - $vat_rule = sanitize_text_field( $_GET['vat_rule'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
| 645 | - } |
|
| 646 | - |
|
| 647 | - // Filter by VAT rule. |
|
| 648 | - wpinv_html_select( |
|
| 649 | - array( |
|
| 650 | - 'options' => array_merge( |
|
| 651 | - array( |
|
| 652 | - '' => __( 'All Tax Rules', 'invoicing' ), |
|
| 653 | - ), |
|
| 654 | - $vat_rules |
|
| 655 | - ), |
|
| 656 | - 'name' => 'vat_rule', |
|
| 657 | - 'id' => 'vat_rule', |
|
| 658 | - 'selected' => in_array( $vat_rule, array_keys( $vat_rules ), true ) ? $vat_rule : '', |
|
| 659 | - 'show_option_all' => false, |
|
| 660 | - 'show_option_none' => false, |
|
| 661 | - ) |
|
| 662 | - ); |
|
| 663 | - |
|
| 664 | - // Filter by VAT class. |
|
| 665 | - |
|
| 666 | - // Sanitize selected vat rule. |
|
| 667 | - $vat_class = ''; |
|
| 668 | - $vat_classes = getpaid_get_tax_classes(); |
|
| 669 | - if ( isset( $_GET['vat_class'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
| 670 | - $vat_class = sanitize_text_field( $_GET['vat_class'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
| 671 | - } |
|
| 672 | - |
|
| 673 | - wpinv_html_select( |
|
| 674 | - array( |
|
| 675 | - 'options' => array_merge( |
|
| 676 | - array( |
|
| 677 | - '' => __( 'All Tax Classes', 'invoicing' ), |
|
| 678 | - ), |
|
| 679 | - $vat_classes |
|
| 680 | - ), |
|
| 681 | - 'name' => 'vat_class', |
|
| 682 | - 'id' => 'vat_class', |
|
| 683 | - 'selected' => in_array( $vat_class, array_keys( $vat_classes ), true ) ? $vat_class : '', |
|
| 684 | - 'show_option_all' => false, |
|
| 685 | - 'show_option_none' => false, |
|
| 686 | - ) |
|
| 687 | - ); |
|
| 688 | - |
|
| 689 | - } |
|
| 690 | - |
|
| 691 | - // Filter by item type. |
|
| 692 | - $type = ''; |
|
| 693 | - if ( isset( $_GET['type'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
| 694 | - $type = sanitize_text_field( $_GET['type'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
| 695 | - } |
|
| 696 | - |
|
| 697 | - wpinv_html_select( |
|
| 698 | - array( |
|
| 699 | - 'options' => array_merge( |
|
| 700 | - array( |
|
| 701 | - '' => __( 'All item types', 'invoicing' ), |
|
| 702 | - ), |
|
| 703 | - wpinv_get_item_types() |
|
| 704 | - ), |
|
| 705 | - 'name' => 'type', |
|
| 706 | - 'id' => 'type', |
|
| 707 | - 'selected' => in_array( $type, wpinv_item_types(), true ) ? $type : '', |
|
| 708 | - 'show_option_all' => false, |
|
| 709 | - 'show_option_none' => false, |
|
| 710 | - ) |
|
| 711 | - ); |
|
| 712 | - |
|
| 713 | - } |
|
| 714 | - |
|
| 715 | - /** |
|
| 716 | - * Filters the item query. |
|
| 717 | - */ |
|
| 718 | - public static function filter_item_query( $query ) { |
|
| 719 | - |
|
| 720 | - // modify the query only if it admin and main query. |
|
| 721 | - if ( ! ( is_admin() && $query->is_main_query() ) ) { |
|
| 722 | - return $query; |
|
| 723 | - } |
|
| 724 | - |
|
| 725 | - // we want to modify the query for our items. |
|
| 726 | - if ( empty( $query->query['post_type'] ) || 'wpi_item' !== $query->query['post_type'] ) { |
|
| 727 | - return $query; |
|
| 728 | - } |
|
| 729 | - |
|
| 730 | - if ( empty( $query->query_vars['meta_query'] ) ) { |
|
| 731 | - $query->query_vars['meta_query'] = array(); |
|
| 732 | - } |
|
| 733 | - |
|
| 734 | - // Filter vat rule type |
|
| 730 | + if ( empty( $query->query_vars['meta_query'] ) ) { |
|
| 731 | + $query->query_vars['meta_query'] = array(); |
|
| 732 | + } |
|
| 733 | + |
|
| 734 | + // Filter vat rule type |
|
| 735 | 735 | if ( ! empty( $_GET['vat_rule'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
| 736 | 736 | $query->query_vars['meta_query'][] = array( |
| 737 | 737 | 'key' => '_wpinv_vat_rule', |
@@ -756,97 +756,97 @@ discard block |
||
| 756 | 756 | 'value' => sanitize_text_field( $_GET['type'] ), // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
| 757 | 757 | 'compare' => '=', |
| 758 | 758 | ); |
| 759 | - } |
|
| 760 | - |
|
| 761 | - } |
|
| 762 | - |
|
| 763 | - /** |
|
| 764 | - * Reorders items. |
|
| 765 | - */ |
|
| 766 | - public static function reorder_items( $vars ) { |
|
| 767 | - global $typenow; |
|
| 768 | - |
|
| 769 | - if ( 'wpi_item' !== $typenow || empty( $vars['orderby'] ) ) { |
|
| 770 | - return $vars; |
|
| 771 | - } |
|
| 772 | - |
|
| 773 | - // By item type. |
|
| 774 | - if ( 'type' === $vars['orderby'] ) { |
|
| 775 | - return array_merge( |
|
| 776 | - $vars, |
|
| 777 | - array( |
|
| 778 | - 'meta_key' => '_wpinv_type', |
|
| 779 | - 'orderby' => 'meta_value', |
|
| 780 | - ) |
|
| 781 | - ); |
|
| 782 | - } |
|
| 783 | - |
|
| 784 | - // By vat class. |
|
| 785 | - if ( 'vat_class' === $vars['orderby'] ) { |
|
| 786 | - return array_merge( |
|
| 787 | - $vars, |
|
| 788 | - array( |
|
| 789 | - 'meta_key' => '_wpinv_vat_class', |
|
| 790 | - 'orderby' => 'meta_value', |
|
| 791 | - ) |
|
| 792 | - ); |
|
| 793 | - } |
|
| 794 | - |
|
| 795 | - // By vat rule. |
|
| 796 | - if ( 'vat_rule' === $vars['orderby'] ) { |
|
| 797 | - return array_merge( |
|
| 798 | - $vars, |
|
| 799 | - array( |
|
| 800 | - 'meta_key' => '_wpinv_vat_rule', |
|
| 801 | - 'orderby' => 'meta_value', |
|
| 802 | - ) |
|
| 803 | - ); |
|
| 804 | - } |
|
| 805 | - |
|
| 806 | - // By price. |
|
| 807 | - if ( 'price' === $vars['orderby'] ) { |
|
| 808 | - return array_merge( |
|
| 809 | - $vars, |
|
| 810 | - array( |
|
| 811 | - 'meta_key' => '_wpinv_price', |
|
| 812 | - 'orderby' => 'meta_value_num', |
|
| 813 | - ) |
|
| 814 | - ); |
|
| 815 | - } |
|
| 816 | - |
|
| 817 | - return $vars; |
|
| 818 | - |
|
| 819 | - } |
|
| 820 | - |
|
| 821 | - /** |
|
| 822 | - * Fired when deleting a post. |
|
| 823 | - */ |
|
| 824 | - public static function delete_post( $post_id ) { |
|
| 825 | - |
|
| 826 | - switch ( get_post_type( $post_id ) ) { |
|
| 827 | - |
|
| 828 | - case 'wpi_item': |
|
| 829 | - do_action( 'getpaid_before_delete_item', new WPInv_Item( $post_id ) ); |
|
| 830 | - break; |
|
| 831 | - |
|
| 832 | - case 'wpi_payment_form': |
|
| 833 | - do_action( 'getpaid_before_delete_payment_form', new GetPaid_Payment_Form( $post_id ) ); |
|
| 834 | - break; |
|
| 835 | - |
|
| 836 | - case 'wpi_discount': |
|
| 837 | - do_action( 'getpaid_before_delete_discount', new WPInv_Discount( $post_id ) ); |
|
| 838 | - break; |
|
| 839 | - |
|
| 840 | - case 'wpi_invoice': |
|
| 841 | - $invoice = new WPInv_Invoice( $post_id ); |
|
| 842 | - do_action( 'getpaid_before_delete_invoice', $invoice ); |
|
| 843 | - $invoice->get_data_store()->delete_items( $invoice ); |
|
| 844 | - $invoice->get_data_store()->delete_special_fields( $invoice ); |
|
| 845 | - break; |
|
| 846 | - } |
|
| 847 | - } |
|
| 848 | - |
|
| 849 | - /** |
|
| 759 | + } |
|
| 760 | + |
|
| 761 | + } |
|
| 762 | + |
|
| 763 | + /** |
|
| 764 | + * Reorders items. |
|
| 765 | + */ |
|
| 766 | + public static function reorder_items( $vars ) { |
|
| 767 | + global $typenow; |
|
| 768 | + |
|
| 769 | + if ( 'wpi_item' !== $typenow || empty( $vars['orderby'] ) ) { |
|
| 770 | + return $vars; |
|
| 771 | + } |
|
| 772 | + |
|
| 773 | + // By item type. |
|
| 774 | + if ( 'type' === $vars['orderby'] ) { |
|
| 775 | + return array_merge( |
|
| 776 | + $vars, |
|
| 777 | + array( |
|
| 778 | + 'meta_key' => '_wpinv_type', |
|
| 779 | + 'orderby' => 'meta_value', |
|
| 780 | + ) |
|
| 781 | + ); |
|
| 782 | + } |
|
| 783 | + |
|
| 784 | + // By vat class. |
|
| 785 | + if ( 'vat_class' === $vars['orderby'] ) { |
|
| 786 | + return array_merge( |
|
| 787 | + $vars, |
|
| 788 | + array( |
|
| 789 | + 'meta_key' => '_wpinv_vat_class', |
|
| 790 | + 'orderby' => 'meta_value', |
|
| 791 | + ) |
|
| 792 | + ); |
|
| 793 | + } |
|
| 794 | + |
|
| 795 | + // By vat rule. |
|
| 796 | + if ( 'vat_rule' === $vars['orderby'] ) { |
|
| 797 | + return array_merge( |
|
| 798 | + $vars, |
|
| 799 | + array( |
|
| 800 | + 'meta_key' => '_wpinv_vat_rule', |
|
| 801 | + 'orderby' => 'meta_value', |
|
| 802 | + ) |
|
| 803 | + ); |
|
| 804 | + } |
|
| 805 | + |
|
| 806 | + // By price. |
|
| 807 | + if ( 'price' === $vars['orderby'] ) { |
|
| 808 | + return array_merge( |
|
| 809 | + $vars, |
|
| 810 | + array( |
|
| 811 | + 'meta_key' => '_wpinv_price', |
|
| 812 | + 'orderby' => 'meta_value_num', |
|
| 813 | + ) |
|
| 814 | + ); |
|
| 815 | + } |
|
| 816 | + |
|
| 817 | + return $vars; |
|
| 818 | + |
|
| 819 | + } |
|
| 820 | + |
|
| 821 | + /** |
|
| 822 | + * Fired when deleting a post. |
|
| 823 | + */ |
|
| 824 | + public static function delete_post( $post_id ) { |
|
| 825 | + |
|
| 826 | + switch ( get_post_type( $post_id ) ) { |
|
| 827 | + |
|
| 828 | + case 'wpi_item': |
|
| 829 | + do_action( 'getpaid_before_delete_item', new WPInv_Item( $post_id ) ); |
|
| 830 | + break; |
|
| 831 | + |
|
| 832 | + case 'wpi_payment_form': |
|
| 833 | + do_action( 'getpaid_before_delete_payment_form', new GetPaid_Payment_Form( $post_id ) ); |
|
| 834 | + break; |
|
| 835 | + |
|
| 836 | + case 'wpi_discount': |
|
| 837 | + do_action( 'getpaid_before_delete_discount', new WPInv_Discount( $post_id ) ); |
|
| 838 | + break; |
|
| 839 | + |
|
| 840 | + case 'wpi_invoice': |
|
| 841 | + $invoice = new WPInv_Invoice( $post_id ); |
|
| 842 | + do_action( 'getpaid_before_delete_invoice', $invoice ); |
|
| 843 | + $invoice->get_data_store()->delete_items( $invoice ); |
|
| 844 | + $invoice->get_data_store()->delete_special_fields( $invoice ); |
|
| 845 | + break; |
|
| 846 | + } |
|
| 847 | + } |
|
| 848 | + |
|
| 849 | + /** |
|
| 850 | 850 | * Add a post display state for special GetPaid pages in the page list table. |
| 851 | 851 | * |
| 852 | 852 | * @param array $post_states An array of post display states. |
@@ -860,21 +860,21 @@ discard block |
||
| 860 | 860 | $post_states['getpaid_success_page'] = __( 'GetPaid Receipt Page', 'invoicing' ); |
| 861 | 861 | } |
| 862 | 862 | |
| 863 | - foreach ( getpaid_get_invoice_post_types() as $post_type => $label ) { |
|
| 863 | + foreach ( getpaid_get_invoice_post_types() as $post_type => $label ) { |
|
| 864 | 864 | |
| 865 | - if ( wpinv_get_option( "{$post_type}_history_page", 0 ) == $post->ID ) { |
|
| 866 | - $post_states[ "getpaid_{$post_type}_history_page" ] = sprintf( |
|
| 867 | - __( 'GetPaid %s History Page', 'invoicing' ), |
|
| 868 | - $label |
|
| 869 | - ); |
|
| 870 | - } |
|
| 865 | + if ( wpinv_get_option( "{$post_type}_history_page", 0 ) == $post->ID ) { |
|
| 866 | + $post_states[ "getpaid_{$post_type}_history_page" ] = sprintf( |
|
| 867 | + __( 'GetPaid %s History Page', 'invoicing' ), |
|
| 868 | + $label |
|
| 869 | + ); |
|
| 870 | + } |
|
| 871 | 871 | } |
| 872 | 872 | |
| 873 | - if ( wpinv_get_option( 'invoice_subscription_page', 0 ) == $post->ID ) { |
|
| 873 | + if ( wpinv_get_option( 'invoice_subscription_page', 0 ) == $post->ID ) { |
|
| 874 | 874 | $post_states['getpaid_invoice_subscription_page'] = __( 'GetPaid Subscription Page', 'invoicing' ); |
| 875 | 875 | } |
| 876 | 876 | |
| 877 | - if ( wpinv_get_option( 'checkout_page', 0 ) == $post->ID ) { |
|
| 877 | + if ( wpinv_get_option( 'checkout_page', 0 ) == $post->ID ) { |
|
| 878 | 878 | $post_states['getpaid_checkout_page'] = __( 'GetPaid Checkout Page', 'invoicing' ); |
| 879 | 879 | } |
| 880 | 880 | |
@@ -12,59 +12,59 @@ |
||
| 12 | 12 | $label = empty( $label ) ? '' : wp_kses_post( $label ); |
| 13 | 13 | $label_class = sanitize_key( preg_replace( '/[^A-Za-z0-9_-]/', '-', $label ) ); |
| 14 | 14 | if ( ! empty( $required ) ) { |
| 15 | - $label .= "<span class='text-danger'> *</span>"; |
|
| 15 | + $label .= "<span class='text-danger'> *</span>"; |
|
| 16 | 16 | } |
| 17 | 17 | |
| 18 | 18 | $disable_dates = array(); |
| 19 | 19 | |
| 20 | 20 | if ( ! empty( $disabled_dates ) ) { |
| 21 | - $disabled_dates = preg_replace( '/\s+/', '', $disabled_dates ); |
|
| 22 | - $disabled_dates = str_ireplace( 'today', current_time( 'Y-m-d' ), $disabled_dates ); |
|
| 23 | - $disabled_dates = array_filter( explode( ',', $disabled_dates ) ); |
|
| 21 | + $disabled_dates = preg_replace( '/\s+/', '', $disabled_dates ); |
|
| 22 | + $disabled_dates = str_ireplace( 'today', current_time( 'Y-m-d' ), $disabled_dates ); |
|
| 23 | + $disabled_dates = array_filter( explode( ',', $disabled_dates ) ); |
|
| 24 | 24 | |
| 25 | - foreach ( $disabled_dates as $disabled_date ) { |
|
| 25 | + foreach ( $disabled_dates as $disabled_date ) { |
|
| 26 | 26 | |
| 27 | - $disabled_date = trim( $disabled_date ); |
|
| 27 | + $disabled_date = trim( $disabled_date ); |
|
| 28 | 28 | |
| 29 | - if ( false === strpos( $disabled_date, '|' ) ) { |
|
| 30 | - $disable_dates[] = $disabled_date; |
|
| 31 | - continue; |
|
| 32 | - } |
|
| 29 | + if ( false === strpos( $disabled_date, '|' ) ) { |
|
| 30 | + $disable_dates[] = $disabled_date; |
|
| 31 | + continue; |
|
| 32 | + } |
|
| 33 | 33 | |
| 34 | - $disabled_date = explode( '|', $disabled_date ); |
|
| 35 | - $disable_dates[] = array( |
|
| 36 | - 'from' => trim( $disabled_date[0] ), |
|
| 37 | - 'to' => trim( $disabled_date[1] ), |
|
| 38 | - ); |
|
| 34 | + $disabled_date = explode( '|', $disabled_date ); |
|
| 35 | + $disable_dates[] = array( |
|
| 36 | + 'from' => trim( $disabled_date[0] ), |
|
| 37 | + 'to' => trim( $disabled_date[1] ), |
|
| 38 | + ); |
|
| 39 | 39 | |
| 40 | - } |
|
| 40 | + } |
|
| 41 | 41 | } |
| 42 | 42 | |
| 43 | 43 | $options = array( |
| 44 | - 'data-default-date' => empty( 'default_date' ) ? false : $default_date, |
|
| 45 | - 'data-min-date' => empty( 'min_date' ) ? false : $min_date, |
|
| 46 | - 'data-max-date' => empty( 'max_date' ) ? false : $max_date, |
|
| 47 | - 'data-mode' => empty( 'mode' ) ? 'single' : $mode, |
|
| 48 | - 'data-alt-format' => get_option( 'date_format', 'F j, Y' ), |
|
| 49 | - 'data-date-format' => 'Y-m-d', |
|
| 50 | - 'data-alt-input' => 'true', |
|
| 51 | - 'data-disable_alt' => empty( $disabled_dates ) ? false : wp_json_encode( $disable_dates ), |
|
| 52 | - 'data-disable_days_alt' => empty( $disable_days ) ? false : wp_json_encode( wp_parse_id_list( $disable_days ) ), |
|
| 44 | + 'data-default-date' => empty( 'default_date' ) ? false : $default_date, |
|
| 45 | + 'data-min-date' => empty( 'min_date' ) ? false : $min_date, |
|
| 46 | + 'data-max-date' => empty( 'max_date' ) ? false : $max_date, |
|
| 47 | + 'data-mode' => empty( 'mode' ) ? 'single' : $mode, |
|
| 48 | + 'data-alt-format' => get_option( 'date_format', 'F j, Y' ), |
|
| 49 | + 'data-date-format' => 'Y-m-d', |
|
| 50 | + 'data-alt-input' => 'true', |
|
| 51 | + 'data-disable_alt' => empty( $disabled_dates ) ? false : wp_json_encode( $disable_dates ), |
|
| 52 | + 'data-disable_days_alt' => empty( $disable_days ) ? false : wp_json_encode( wp_parse_id_list( $disable_days ) ), |
|
| 53 | 53 | ); |
| 54 | 54 | |
| 55 | 55 | aui()->input( |
| 56 | - array( |
|
| 57 | - 'name' => esc_attr( $id ), |
|
| 58 | - 'id' => esc_attr( $element_id ), |
|
| 59 | - 'placeholder' => empty( $placeholder ) ? '' : esc_attr( $placeholder ), |
|
| 60 | - 'required' => ! empty( $required ), |
|
| 61 | - 'label' => $label, |
|
| 62 | - 'label_type' => 'vertical', |
|
| 63 | - 'help_text' => empty( $description ) ? '' : wp_kses_post( $description ), |
|
| 64 | - 'type' => 'datepicker', |
|
| 65 | - 'class' => $label_class . ' getpaid-init-flatpickr flatpickr-input', |
|
| 66 | - 'extra_attributes' => array_filter( apply_filters( 'getpaid_date_field_attributes', $options ) ), |
|
| 67 | - 'value' => $query_value, |
|
| 68 | - ), |
|
| 69 | - true |
|
| 56 | + array( |
|
| 57 | + 'name' => esc_attr( $id ), |
|
| 58 | + 'id' => esc_attr( $element_id ), |
|
| 59 | + 'placeholder' => empty( $placeholder ) ? '' : esc_attr( $placeholder ), |
|
| 60 | + 'required' => ! empty( $required ), |
|
| 61 | + 'label' => $label, |
|
| 62 | + 'label_type' => 'vertical', |
|
| 63 | + 'help_text' => empty( $description ) ? '' : wp_kses_post( $description ), |
|
| 64 | + 'type' => 'datepicker', |
|
| 65 | + 'class' => $label_class . ' getpaid-init-flatpickr flatpickr-input', |
|
| 66 | + 'extra_attributes' => array_filter( apply_filters( 'getpaid_date_field_attributes', $options ) ), |
|
| 67 | + 'value' => $query_value, |
|
| 68 | + ), |
|
| 69 | + true |
|
| 70 | 70 | ); |
@@ -8,7 +8,7 @@ discard block |
||
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | 10 | if ( ! defined( 'ABSPATH' ) ) { |
| 11 | - exit; // Exit if accessed directly |
|
| 11 | + exit; // Exit if accessed directly |
|
| 12 | 12 | } |
| 13 | 13 | |
| 14 | 14 | /** |
@@ -17,10 +17,10 @@ discard block |
||
| 17 | 17 | class GetPaid_Meta_Box_Invoice_Payment_Meta { |
| 18 | 18 | |
| 19 | 19 | /** |
| 20 | - * Output the metabox. |
|
| 21 | - * |
|
| 22 | - * @param WP_Post $post |
|
| 23 | - */ |
|
| 20 | + * Output the metabox. |
|
| 21 | + * |
|
| 22 | + * @param WP_Post $post |
|
| 23 | + */ |
|
| 24 | 24 | public static function output( $post ) { |
| 25 | 25 | |
| 26 | 26 | // Prepare the invoice. |
@@ -42,167 +42,167 @@ discard block |
||
| 42 | 42 | |
| 43 | 43 | if ( $invoice->is_draft() ) { |
| 44 | 44 | |
| 45 | - // Set gateway. |
|
| 46 | - aui()->select( |
|
| 47 | - array( |
|
| 48 | - 'id' => 'wpinv_gateway', |
|
| 49 | - 'name' => 'wpinv_gateway', |
|
| 50 | - 'label' => __( 'Gateway:', 'invoicing' ), |
|
| 51 | - 'label_type' => 'vertical', |
|
| 52 | - 'placeholder' => __( 'Select Gateway', 'invoicing' ), |
|
| 53 | - 'value' => wpinv_get_default_gateway(), |
|
| 54 | - 'select2' => true, |
|
| 55 | - 'data-allow-clear' => 'false', |
|
| 56 | - 'options' => wp_list_pluck( wpinv_get_enabled_payment_gateways( true ), 'admin_label' ), |
|
| 57 | - ), |
|
| 58 | - true |
|
| 59 | - ); |
|
| 45 | + // Set gateway. |
|
| 46 | + aui()->select( |
|
| 47 | + array( |
|
| 48 | + 'id' => 'wpinv_gateway', |
|
| 49 | + 'name' => 'wpinv_gateway', |
|
| 50 | + 'label' => __( 'Gateway:', 'invoicing' ), |
|
| 51 | + 'label_type' => 'vertical', |
|
| 52 | + 'placeholder' => __( 'Select Gateway', 'invoicing' ), |
|
| 53 | + 'value' => wpinv_get_default_gateway(), |
|
| 54 | + 'select2' => true, |
|
| 55 | + 'data-allow-clear' => 'false', |
|
| 56 | + 'options' => wp_list_pluck( wpinv_get_enabled_payment_gateways( true ), 'admin_label' ), |
|
| 57 | + ), |
|
| 58 | + true |
|
| 59 | + ); |
|
| 60 | 60 | |
| 61 | 61 | } else { |
| 62 | 62 | |
| 63 | - // Invoice key. |
|
| 64 | - aui()->input( |
|
| 65 | - array( |
|
| 66 | - 'type' => 'text', |
|
| 67 | - 'id' => 'wpinv_key', |
|
| 68 | - 'name' => 'wpinv_key', |
|
| 69 | - 'label' => sprintf( |
|
| 70 | - // translators: %s: Invoice type. |
|
| 71 | - __( '%s Key:', 'invoicing' ), |
|
| 72 | - ucfirst( $invoice->get_invoice_quote_type() ) |
|
| 73 | - ), |
|
| 74 | - 'label_type' => 'vertical', |
|
| 75 | - 'class' => 'form-control-sm', |
|
| 76 | - 'value' => $invoice->get_key( 'edit' ), |
|
| 77 | - 'extra_attributes' => array( |
|
| 78 | - 'onclick' => 'this.select();', |
|
| 79 | - 'readonly' => 'true', |
|
| 80 | - ), |
|
| 81 | - ), |
|
| 82 | - true |
|
| 83 | - ); |
|
| 84 | - |
|
| 85 | - // View URL. |
|
| 86 | - aui()->input( |
|
| 87 | - array( |
|
| 88 | - 'type' => 'text', |
|
| 89 | - 'id' => 'wpinv_view_url', |
|
| 90 | - 'name' => 'wpinv_view_url', |
|
| 91 | - 'label' => sprintf( |
|
| 92 | - // translators: %s: Invoice type. |
|
| 93 | - __( '%s URL:', 'invoicing' ), |
|
| 94 | - ucfirst( $invoice->get_invoice_quote_type() ) |
|
| 95 | - ) . ' <a href="' . esc_url_raw( $invoice->get_view_url() ) . '" title="' . __( 'View invoice', 'invoicing' ) . '" target="_blank"><i class="fas fa-external-link-alt fa-fw"></i></a>', |
|
| 96 | - 'label_type' => 'vertical', |
|
| 97 | - 'class' => 'form-control-sm', |
|
| 98 | - 'value' => $invoice->get_view_url(), |
|
| 99 | - 'extra_attributes' => array( |
|
| 100 | - 'onclick' => 'this.select();', |
|
| 101 | - 'readonly' => 'true', |
|
| 102 | - ), |
|
| 103 | - ), |
|
| 104 | - true |
|
| 105 | - ); |
|
| 106 | - |
|
| 107 | - // If the invoice is paid... |
|
| 108 | - if ( $invoice->is_paid() || $invoice->is_refunded() ) { |
|
| 109 | - |
|
| 110 | - // Gateway. |
|
| 111 | - aui()->input( |
|
| 112 | - array( |
|
| 113 | - 'type' => 'text', |
|
| 114 | - 'id' => 'wpinv_gateway', |
|
| 115 | - 'name' => '', |
|
| 116 | - 'label' => __( 'Gateway:', 'invoicing' ), |
|
| 117 | - 'label_type' => 'vertical', |
|
| 118 | - 'class' => 'form-control-sm', |
|
| 119 | - 'value' => wpinv_get_gateway_admin_label( $invoice->get_gateway( 'edit' ) ), |
|
| 120 | - 'extra_attributes' => array( |
|
| 121 | - 'onclick' => 'this.select();', |
|
| 122 | - 'readonly' => 'true', |
|
| 123 | - ), |
|
| 124 | - ), |
|
| 125 | - true |
|
| 126 | - ); |
|
| 127 | - |
|
| 128 | - // Transaction ID. |
|
| 129 | - $transaction_url = $invoice->get_transaction_url(); |
|
| 130 | - aui()->input( |
|
| 131 | - array( |
|
| 132 | - 'type' => 'text', |
|
| 133 | - 'id' => 'wpinv_transaction_id', |
|
| 134 | - 'name' => 'wpinv_transaction_id', |
|
| 135 | - 'label' => __( 'Transaction ID:', 'invoicing' ) . ( $transaction_url ? ' <a href="' . esc_url( $transaction_url ) . '" title="' . __( 'View details', 'invoicing' ) . '" target="_blank"><i class="fas fa-external-link-alt fa-fw"></i></a>' : '' ), |
|
| 136 | - 'label_type' => 'vertical', |
|
| 137 | - 'class' => 'form-control-sm', |
|
| 138 | - 'value' => $invoice->get_transaction_id( 'edit' ), |
|
| 139 | - 'help_text' => apply_filters( 'wpinv_invoice_transaction_link_' . $invoice->get_gateway( 'edit' ), '', $invoice->get_transaction_id(), $invoice ), |
|
| 140 | - 'extra_attributes' => array( |
|
| 141 | - 'onclick' => 'this.select();', |
|
| 142 | - 'readonly' => 'true', |
|
| 143 | - ), |
|
| 144 | - ), |
|
| 145 | - true |
|
| 146 | - ); |
|
| 147 | - |
|
| 148 | - // Currency. |
|
| 149 | - aui()->input( |
|
| 150 | - array( |
|
| 151 | - 'type' => 'text', |
|
| 152 | - 'id' => 'wpinv_currency', |
|
| 153 | - 'name' => 'wpinv_currency', |
|
| 154 | - 'label' => __( 'Currency:', 'invoicing' ), |
|
| 155 | - 'label_type' => 'vertical', |
|
| 156 | - 'class' => 'form-control-sm', |
|
| 157 | - 'value' => $invoice->get_currency( 'edit' ), |
|
| 158 | - 'extra_attributes' => array( |
|
| 159 | - 'onclick' => 'this.select();', |
|
| 160 | - 'readonly' => 'true', |
|
| 161 | - ), |
|
| 162 | - ), |
|
| 163 | - true |
|
| 164 | - ); |
|
| 165 | - |
|
| 166 | - } else { |
|
| 167 | - |
|
| 168 | - if ( 'wpi_invoice' === $invoice->get_post_type() ) { |
|
| 169 | - |
|
| 170 | - // Payment URL. |
|
| 171 | - aui()->input( |
|
| 172 | - array( |
|
| 173 | - 'type' => 'text', |
|
| 174 | - 'id' => 'wpinv_payment_url', |
|
| 175 | - 'name' => 'wpinv_payment_url', |
|
| 176 | - 'label' => __( 'Payment URL:', 'invoicing' ), |
|
| 177 | - 'label_type' => 'vertical', |
|
| 178 | - 'class' => 'form-control-sm', |
|
| 179 | - 'value' => $invoice->get_checkout_payment_url(), |
|
| 180 | - 'extra_attributes' => array( |
|
| 181 | - 'onclick' => 'this.select();', |
|
| 182 | - 'readonly' => 'true', |
|
| 183 | - ), |
|
| 184 | - ), |
|
| 185 | - true |
|
| 186 | - ); |
|
| 187 | - |
|
| 188 | - // Set gateway. |
|
| 189 | - aui()->select( |
|
| 190 | - array( |
|
| 191 | - 'id' => 'wpinv_gateway', |
|
| 192 | - 'name' => 'wpinv_gateway', |
|
| 193 | - 'label' => __( 'Gateway:', 'invoicing' ), |
|
| 194 | - 'label_type' => 'vertical', |
|
| 195 | - 'placeholder' => __( 'Select Gateway', 'invoicing' ), |
|
| 196 | - 'value' => $invoice->get_gateway( 'edit' ), |
|
| 197 | - 'select2' => true, |
|
| 198 | - 'data-allow-clear' => 'false', |
|
| 199 | - 'options' => wp_list_pluck( wpinv_get_enabled_payment_gateways( true ), 'admin_label' ), |
|
| 200 | - ), |
|
| 201 | - true |
|
| 202 | - ); |
|
| 203 | - |
|
| 204 | - } |
|
| 205 | - } |
|
| 63 | + // Invoice key. |
|
| 64 | + aui()->input( |
|
| 65 | + array( |
|
| 66 | + 'type' => 'text', |
|
| 67 | + 'id' => 'wpinv_key', |
|
| 68 | + 'name' => 'wpinv_key', |
|
| 69 | + 'label' => sprintf( |
|
| 70 | + // translators: %s: Invoice type. |
|
| 71 | + __( '%s Key:', 'invoicing' ), |
|
| 72 | + ucfirst( $invoice->get_invoice_quote_type() ) |
|
| 73 | + ), |
|
| 74 | + 'label_type' => 'vertical', |
|
| 75 | + 'class' => 'form-control-sm', |
|
| 76 | + 'value' => $invoice->get_key( 'edit' ), |
|
| 77 | + 'extra_attributes' => array( |
|
| 78 | + 'onclick' => 'this.select();', |
|
| 79 | + 'readonly' => 'true', |
|
| 80 | + ), |
|
| 81 | + ), |
|
| 82 | + true |
|
| 83 | + ); |
|
| 84 | + |
|
| 85 | + // View URL. |
|
| 86 | + aui()->input( |
|
| 87 | + array( |
|
| 88 | + 'type' => 'text', |
|
| 89 | + 'id' => 'wpinv_view_url', |
|
| 90 | + 'name' => 'wpinv_view_url', |
|
| 91 | + 'label' => sprintf( |
|
| 92 | + // translators: %s: Invoice type. |
|
| 93 | + __( '%s URL:', 'invoicing' ), |
|
| 94 | + ucfirst( $invoice->get_invoice_quote_type() ) |
|
| 95 | + ) . ' <a href="' . esc_url_raw( $invoice->get_view_url() ) . '" title="' . __( 'View invoice', 'invoicing' ) . '" target="_blank"><i class="fas fa-external-link-alt fa-fw"></i></a>', |
|
| 96 | + 'label_type' => 'vertical', |
|
| 97 | + 'class' => 'form-control-sm', |
|
| 98 | + 'value' => $invoice->get_view_url(), |
|
| 99 | + 'extra_attributes' => array( |
|
| 100 | + 'onclick' => 'this.select();', |
|
| 101 | + 'readonly' => 'true', |
|
| 102 | + ), |
|
| 103 | + ), |
|
| 104 | + true |
|
| 105 | + ); |
|
| 106 | + |
|
| 107 | + // If the invoice is paid... |
|
| 108 | + if ( $invoice->is_paid() || $invoice->is_refunded() ) { |
|
| 109 | + |
|
| 110 | + // Gateway. |
|
| 111 | + aui()->input( |
|
| 112 | + array( |
|
| 113 | + 'type' => 'text', |
|
| 114 | + 'id' => 'wpinv_gateway', |
|
| 115 | + 'name' => '', |
|
| 116 | + 'label' => __( 'Gateway:', 'invoicing' ), |
|
| 117 | + 'label_type' => 'vertical', |
|
| 118 | + 'class' => 'form-control-sm', |
|
| 119 | + 'value' => wpinv_get_gateway_admin_label( $invoice->get_gateway( 'edit' ) ), |
|
| 120 | + 'extra_attributes' => array( |
|
| 121 | + 'onclick' => 'this.select();', |
|
| 122 | + 'readonly' => 'true', |
|
| 123 | + ), |
|
| 124 | + ), |
|
| 125 | + true |
|
| 126 | + ); |
|
| 127 | + |
|
| 128 | + // Transaction ID. |
|
| 129 | + $transaction_url = $invoice->get_transaction_url(); |
|
| 130 | + aui()->input( |
|
| 131 | + array( |
|
| 132 | + 'type' => 'text', |
|
| 133 | + 'id' => 'wpinv_transaction_id', |
|
| 134 | + 'name' => 'wpinv_transaction_id', |
|
| 135 | + 'label' => __( 'Transaction ID:', 'invoicing' ) . ( $transaction_url ? ' <a href="' . esc_url( $transaction_url ) . '" title="' . __( 'View details', 'invoicing' ) . '" target="_blank"><i class="fas fa-external-link-alt fa-fw"></i></a>' : '' ), |
|
| 136 | + 'label_type' => 'vertical', |
|
| 137 | + 'class' => 'form-control-sm', |
|
| 138 | + 'value' => $invoice->get_transaction_id( 'edit' ), |
|
| 139 | + 'help_text' => apply_filters( 'wpinv_invoice_transaction_link_' . $invoice->get_gateway( 'edit' ), '', $invoice->get_transaction_id(), $invoice ), |
|
| 140 | + 'extra_attributes' => array( |
|
| 141 | + 'onclick' => 'this.select();', |
|
| 142 | + 'readonly' => 'true', |
|
| 143 | + ), |
|
| 144 | + ), |
|
| 145 | + true |
|
| 146 | + ); |
|
| 147 | + |
|
| 148 | + // Currency. |
|
| 149 | + aui()->input( |
|
| 150 | + array( |
|
| 151 | + 'type' => 'text', |
|
| 152 | + 'id' => 'wpinv_currency', |
|
| 153 | + 'name' => 'wpinv_currency', |
|
| 154 | + 'label' => __( 'Currency:', 'invoicing' ), |
|
| 155 | + 'label_type' => 'vertical', |
|
| 156 | + 'class' => 'form-control-sm', |
|
| 157 | + 'value' => $invoice->get_currency( 'edit' ), |
|
| 158 | + 'extra_attributes' => array( |
|
| 159 | + 'onclick' => 'this.select();', |
|
| 160 | + 'readonly' => 'true', |
|
| 161 | + ), |
|
| 162 | + ), |
|
| 163 | + true |
|
| 164 | + ); |
|
| 165 | + |
|
| 166 | + } else { |
|
| 167 | + |
|
| 168 | + if ( 'wpi_invoice' === $invoice->get_post_type() ) { |
|
| 169 | + |
|
| 170 | + // Payment URL. |
|
| 171 | + aui()->input( |
|
| 172 | + array( |
|
| 173 | + 'type' => 'text', |
|
| 174 | + 'id' => 'wpinv_payment_url', |
|
| 175 | + 'name' => 'wpinv_payment_url', |
|
| 176 | + 'label' => __( 'Payment URL:', 'invoicing' ), |
|
| 177 | + 'label_type' => 'vertical', |
|
| 178 | + 'class' => 'form-control-sm', |
|
| 179 | + 'value' => $invoice->get_checkout_payment_url(), |
|
| 180 | + 'extra_attributes' => array( |
|
| 181 | + 'onclick' => 'this.select();', |
|
| 182 | + 'readonly' => 'true', |
|
| 183 | + ), |
|
| 184 | + ), |
|
| 185 | + true |
|
| 186 | + ); |
|
| 187 | + |
|
| 188 | + // Set gateway. |
|
| 189 | + aui()->select( |
|
| 190 | + array( |
|
| 191 | + 'id' => 'wpinv_gateway', |
|
| 192 | + 'name' => 'wpinv_gateway', |
|
| 193 | + 'label' => __( 'Gateway:', 'invoicing' ), |
|
| 194 | + 'label_type' => 'vertical', |
|
| 195 | + 'placeholder' => __( 'Select Gateway', 'invoicing' ), |
|
| 196 | + 'value' => $invoice->get_gateway( 'edit' ), |
|
| 197 | + 'select2' => true, |
|
| 198 | + 'data-allow-clear' => 'false', |
|
| 199 | + 'options' => wp_list_pluck( wpinv_get_enabled_payment_gateways( true ), 'admin_label' ), |
|
| 200 | + ), |
|
| 201 | + true |
|
| 202 | + ); |
|
| 203 | + |
|
| 204 | + } |
|
| 205 | + } |
|
| 206 | 206 | } |
| 207 | 207 | ?> |
| 208 | 208 | </div> |
@@ -14,91 +14,91 @@ discard block |
||
| 14 | 14 | class GetPaid_Admin { |
| 15 | 15 | |
| 16 | 16 | /** |
| 17 | - * Local path to this plugins admin directory |
|
| 18 | - * |
|
| 19 | - * @var string |
|
| 20 | - */ |
|
| 21 | - public $admin_path; |
|
| 22 | - |
|
| 23 | - /** |
|
| 24 | - * Web path to this plugins admin directory |
|
| 25 | - * |
|
| 26 | - * @var string |
|
| 27 | - */ |
|
| 28 | - public $admin_url; |
|
| 29 | - |
|
| 30 | - /** |
|
| 31 | - * Reports components. |
|
| 32 | - * |
|
| 33 | - * @var GetPaid_Reports |
|
| 34 | - */ |
|
| 17 | + * Local path to this plugins admin directory |
|
| 18 | + * |
|
| 19 | + * @var string |
|
| 20 | + */ |
|
| 21 | + public $admin_path; |
|
| 22 | + |
|
| 23 | + /** |
|
| 24 | + * Web path to this plugins admin directory |
|
| 25 | + * |
|
| 26 | + * @var string |
|
| 27 | + */ |
|
| 28 | + public $admin_url; |
|
| 29 | + |
|
| 30 | + /** |
|
| 31 | + * Reports components. |
|
| 32 | + * |
|
| 33 | + * @var GetPaid_Reports |
|
| 34 | + */ |
|
| 35 | 35 | public $reports; |
| 36 | 36 | |
| 37 | 37 | /** |
| 38 | - * Class constructor. |
|
| 39 | - */ |
|
| 40 | - public function __construct() { |
|
| 38 | + * Class constructor. |
|
| 39 | + */ |
|
| 40 | + public function __construct() { |
|
| 41 | 41 | |
| 42 | 42 | $this->admin_path = plugin_dir_path( __FILE__ ); |
| 43 | - $this->admin_url = plugins_url( '/', __FILE__ ); |
|
| 44 | - $this->reports = new GetPaid_Reports(); |
|
| 43 | + $this->admin_url = plugins_url( '/', __FILE__ ); |
|
| 44 | + $this->reports = new GetPaid_Reports(); |
|
| 45 | 45 | |
| 46 | 46 | if ( is_admin() ) { |
| 47 | - $this->init_admin_hooks(); |
|
| 47 | + $this->init_admin_hooks(); |
|
| 48 | 48 | } |
| 49 | 49 | |
| 50 | 50 | } |
| 51 | 51 | |
| 52 | 52 | /** |
| 53 | - * Init action and filter hooks |
|
| 54 | - * |
|
| 55 | - */ |
|
| 56 | - private function init_admin_hooks() { |
|
| 53 | + * Init action and filter hooks |
|
| 54 | + * |
|
| 55 | + */ |
|
| 56 | + private function init_admin_hooks() { |
|
| 57 | 57 | add_action( 'admin_enqueue_scripts', array( $this, 'enqeue_scripts' ), 9 ); |
| 58 | 58 | add_filter( 'admin_body_class', array( $this, 'admin_body_class' ) ); |
| 59 | 59 | add_action( 'admin_init', array( $this, 'init_ayecode_connect_helper' ) ); |
| 60 | 60 | add_action( 'admin_init', array( $this, 'activation_redirect' ) ); |
| 61 | 61 | add_action( 'admin_init', array( $this, 'maybe_do_admin_action' ) ); |
| 62 | - add_action( 'admin_notices', array( $this, 'show_notices' ) ); |
|
| 63 | - add_action( 'getpaid_authenticated_admin_action_rate_plugin', array( $this, 'redirect_to_wordpress_rating_page' ) ); |
|
| 64 | - add_action( 'getpaid_authenticated_admin_action_duplicate_form', array( $this, 'duplicate_payment_form' ) ); |
|
| 65 | - add_action( 'getpaid_authenticated_admin_action_duplicate_invoice', array( $this, 'duplicate_invoice' ) ); |
|
| 66 | - add_action( 'getpaid_authenticated_admin_action_send_invoice', array( $this, 'send_customer_invoice' ) ); |
|
| 67 | - add_action( 'getpaid_authenticated_admin_action_send_invoice_reminder', array( $this, 'send_customer_payment_reminder' ) ); |
|
| 62 | + add_action( 'admin_notices', array( $this, 'show_notices' ) ); |
|
| 63 | + add_action( 'getpaid_authenticated_admin_action_rate_plugin', array( $this, 'redirect_to_wordpress_rating_page' ) ); |
|
| 64 | + add_action( 'getpaid_authenticated_admin_action_duplicate_form', array( $this, 'duplicate_payment_form' ) ); |
|
| 65 | + add_action( 'getpaid_authenticated_admin_action_duplicate_invoice', array( $this, 'duplicate_invoice' ) ); |
|
| 66 | + add_action( 'getpaid_authenticated_admin_action_send_invoice', array( $this, 'send_customer_invoice' ) ); |
|
| 67 | + add_action( 'getpaid_authenticated_admin_action_send_invoice_reminder', array( $this, 'send_customer_payment_reminder' ) ); |
|
| 68 | 68 | add_action( 'getpaid_authenticated_admin_action_reset_tax_rates', array( $this, 'admin_reset_tax_rates' ) ); |
| 69 | - add_action( 'getpaid_authenticated_admin_action_create_missing_pages', array( $this, 'admin_create_missing_pages' ) ); |
|
| 70 | - add_action( 'getpaid_authenticated_admin_action_create_missing_tables', array( $this, 'admin_create_missing_tables' ) ); |
|
| 71 | - add_action( 'getpaid_authenticated_admin_action_migrate_old_invoices', array( $this, 'admin_migrate_old_invoices' ) ); |
|
| 72 | - add_action( 'getpaid_authenticated_admin_action_download_customers', array( $this, 'admin_download_customers' ) ); |
|
| 73 | - add_action( 'getpaid_authenticated_admin_action_recalculate_discounts', array( $this, 'admin_recalculate_discounts' ) ); |
|
| 74 | - add_action( 'getpaid_authenticated_admin_action_install_plugin', array( $this, 'admin_install_plugin' ) ); |
|
| 75 | - add_action( 'getpaid_authenticated_admin_action_connect_gateway', array( $this, 'admin_connect_gateway' ) ); |
|
| 76 | - add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ) ); |
|
| 77 | - do_action( 'getpaid_init_admin_hooks', $this ); |
|
| 78 | - |
|
| 79 | - // Setup/welcome |
|
| 80 | - if ( ! empty( $_GET['page'] ) ) { |
|
| 81 | - switch ( sanitize_text_field( $_GET['page'] ) ) { |
|
| 82 | - case 'gp-setup': |
|
| 83 | - include_once dirname( __FILE__ ) . '/class-getpaid-admin-setup-wizard.php'; |
|
| 84 | - break; |
|
| 85 | - } |
|
| 86 | - } |
|
| 87 | - |
|
| 88 | - } |
|
| 89 | - |
|
| 90 | - /** |
|
| 91 | - * Register admin scripts |
|
| 92 | - * |
|
| 93 | - */ |
|
| 94 | - public function enqeue_scripts() { |
|
| 69 | + add_action( 'getpaid_authenticated_admin_action_create_missing_pages', array( $this, 'admin_create_missing_pages' ) ); |
|
| 70 | + add_action( 'getpaid_authenticated_admin_action_create_missing_tables', array( $this, 'admin_create_missing_tables' ) ); |
|
| 71 | + add_action( 'getpaid_authenticated_admin_action_migrate_old_invoices', array( $this, 'admin_migrate_old_invoices' ) ); |
|
| 72 | + add_action( 'getpaid_authenticated_admin_action_download_customers', array( $this, 'admin_download_customers' ) ); |
|
| 73 | + add_action( 'getpaid_authenticated_admin_action_recalculate_discounts', array( $this, 'admin_recalculate_discounts' ) ); |
|
| 74 | + add_action( 'getpaid_authenticated_admin_action_install_plugin', array( $this, 'admin_install_plugin' ) ); |
|
| 75 | + add_action( 'getpaid_authenticated_admin_action_connect_gateway', array( $this, 'admin_connect_gateway' ) ); |
|
| 76 | + add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ) ); |
|
| 77 | + do_action( 'getpaid_init_admin_hooks', $this ); |
|
| 78 | + |
|
| 79 | + // Setup/welcome |
|
| 80 | + if ( ! empty( $_GET['page'] ) ) { |
|
| 81 | + switch ( sanitize_text_field( $_GET['page'] ) ) { |
|
| 82 | + case 'gp-setup': |
|
| 83 | + include_once dirname( __FILE__ ) . '/class-getpaid-admin-setup-wizard.php'; |
|
| 84 | + break; |
|
| 85 | + } |
|
| 86 | + } |
|
| 87 | + |
|
| 88 | + } |
|
| 89 | + |
|
| 90 | + /** |
|
| 91 | + * Register admin scripts |
|
| 92 | + * |
|
| 93 | + */ |
|
| 94 | + public function enqeue_scripts() { |
|
| 95 | 95 | global $current_screen, $pagenow; |
| 96 | 96 | |
| 97 | - $page = isset( $_GET['page'] ) ? sanitize_text_field( $_GET['page'] ) : ''; |
|
| 98 | - $editing = $pagenow == 'post.php' || $pagenow == 'post-new.php'; |
|
| 97 | + $page = isset( $_GET['page'] ) ? sanitize_text_field( $_GET['page'] ) : ''; |
|
| 98 | + $editing = $pagenow == 'post.php' || $pagenow == 'post-new.php'; |
|
| 99 | 99 | |
| 100 | 100 | if ( ! empty( $current_screen->post_type ) ) { |
| 101 | - $page = $current_screen->post_type; |
|
| 101 | + $page = $current_screen->post_type; |
|
| 102 | 102 | } |
| 103 | 103 | |
| 104 | 104 | // General styles. |
@@ -119,53 +119,53 @@ discard block |
||
| 119 | 119 | } |
| 120 | 120 | |
| 121 | 121 | // Payment form scripts. |
| 122 | - if ( 'wpi_payment_form' == $page && $editing ) { |
|
| 122 | + if ( 'wpi_payment_form' == $page && $editing ) { |
|
| 123 | 123 | $this->load_payment_form_scripts(); |
| 124 | 124 | } |
| 125 | 125 | |
| 126 | - if ( $page == 'wpinv-subscriptions' ) { |
|
| 127 | - wp_enqueue_script( 'postbox' ); |
|
| 128 | - } |
|
| 126 | + if ( $page == 'wpinv-subscriptions' ) { |
|
| 127 | + wp_enqueue_script( 'postbox' ); |
|
| 128 | + } |
|
| 129 | 129 | |
| 130 | 130 | } |
| 131 | 131 | |
| 132 | 132 | /** |
| 133 | - * Returns admin js translations. |
|
| 134 | - * |
|
| 135 | - */ |
|
| 136 | - protected function get_admin_i18() { |
|
| 133 | + * Returns admin js translations. |
|
| 134 | + * |
|
| 135 | + */ |
|
| 136 | + protected function get_admin_i18() { |
|
| 137 | 137 | global $post; |
| 138 | 138 | |
| 139 | - $date_range = array( |
|
| 140 | - 'period' => isset( $_GET['date_range'] ) ? sanitize_text_field( $_GET['date_range'] ) : '7_days', |
|
| 141 | - ); |
|
| 139 | + $date_range = array( |
|
| 140 | + 'period' => isset( $_GET['date_range'] ) ? sanitize_text_field( $_GET['date_range'] ) : '7_days', |
|
| 141 | + ); |
|
| 142 | 142 | |
| 143 | - if ( $date_range['period'] == 'custom' ) { |
|
| 143 | + if ( $date_range['period'] == 'custom' ) { |
|
| 144 | 144 | |
| 145 | - if ( isset( $_GET['from'] ) ) { |
|
| 146 | - $date_range['after'] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['from'] ), current_time( 'timestamp' ) ) - DAY_IN_SECONDS ); |
|
| 147 | - } |
|
| 145 | + if ( isset( $_GET['from'] ) ) { |
|
| 146 | + $date_range['after'] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['from'] ), current_time( 'timestamp' ) ) - DAY_IN_SECONDS ); |
|
| 147 | + } |
|
| 148 | 148 | |
| 149 | - if ( isset( $_GET['to'] ) ) { |
|
| 150 | - $date_range['before'] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['to'] ), current_time( 'timestamp' ) ) + DAY_IN_SECONDS ); |
|
| 151 | - } |
|
| 149 | + if ( isset( $_GET['to'] ) ) { |
|
| 150 | + $date_range['before'] = date( 'Y-m-d', strtotime( sanitize_text_field( $_GET['to'] ), current_time( 'timestamp' ) ) + DAY_IN_SECONDS ); |
|
| 151 | + } |
|
| 152 | 152 | } |
| 153 | 153 | |
| 154 | 154 | $i18n = array( |
| 155 | 155 | 'ajax_url' => admin_url( 'admin-ajax.php' ), |
| 156 | 156 | 'post_ID' => isset( $post->ID ) ? $post->ID : '', |
| 157 | - 'wpinv_nonce' => wp_create_nonce( 'wpinv-nonce' ), |
|
| 158 | - 'rest_nonce' => wp_create_nonce( 'wp_rest' ), |
|
| 159 | - 'rest_root' => esc_url_raw( rest_url() ), |
|
| 160 | - 'date_range' => $date_range, |
|
| 157 | + 'wpinv_nonce' => wp_create_nonce( 'wpinv-nonce' ), |
|
| 158 | + 'rest_nonce' => wp_create_nonce( 'wp_rest' ), |
|
| 159 | + 'rest_root' => esc_url_raw( rest_url() ), |
|
| 160 | + 'date_range' => $date_range, |
|
| 161 | 161 | 'add_invoice_note_nonce' => wp_create_nonce( 'add-invoice-note' ), |
| 162 | 162 | 'delete_invoice_note_nonce' => wp_create_nonce( 'delete-invoice-note' ), |
| 163 | 163 | 'invoice_item_nonce' => wp_create_nonce( 'invoice-item' ), |
| 164 | 164 | 'billing_details_nonce' => wp_create_nonce( 'get-billing-details' ), |
| 165 | 165 | 'tax' => wpinv_tax_amount(), |
| 166 | 166 | 'discount' => 0, |
| 167 | - 'currency_symbol' => wpinv_currency_symbol(), |
|
| 168 | - 'currency' => wpinv_get_currency(), |
|
| 167 | + 'currency_symbol' => wpinv_currency_symbol(), |
|
| 168 | + 'currency' => wpinv_get_currency(), |
|
| 169 | 169 | 'currency_pos' => wpinv_currency_position(), |
| 170 | 170 | 'thousand_sep' => wpinv_thousands_separator(), |
| 171 | 171 | 'decimal_sep' => wpinv_decimal_separator(), |
@@ -185,118 +185,118 @@ discard block |
||
| 185 | 185 | 'item_description' => __( 'Item Description', 'invoicing' ), |
| 186 | 186 | 'invoice_description' => __( 'Invoice Description', 'invoicing' ), |
| 187 | 187 | 'discount_description' => __( 'Discount Description', 'invoicing' ), |
| 188 | - 'searching' => __( 'Searching', 'invoicing' ), |
|
| 189 | - 'loading' => __( 'Loading...', 'invoicing' ), |
|
| 190 | - 'search_customers' => __( 'Enter customer name or email', 'invoicing' ), |
|
| 191 | - 'search_items' => __( 'Enter item name', 'invoicing' ), |
|
| 192 | - 'graphs' => array_merge( array( 'refunded_fees', 'refunded_items', 'refunded_subtotal', 'refunded_tax' ), array_keys( wpinv_get_report_graphs() ) ), |
|
| 188 | + 'searching' => __( 'Searching', 'invoicing' ), |
|
| 189 | + 'loading' => __( 'Loading...', 'invoicing' ), |
|
| 190 | + 'search_customers' => __( 'Enter customer name or email', 'invoicing' ), |
|
| 191 | + 'search_items' => __( 'Enter item name', 'invoicing' ), |
|
| 192 | + 'graphs' => array_merge( array( 'refunded_fees', 'refunded_items', 'refunded_subtotal', 'refunded_tax' ), array_keys( wpinv_get_report_graphs() ) ), |
|
| 193 | 193 | ); |
| 194 | 194 | |
| 195 | - if ( ! empty( $post ) && getpaid_is_invoice_post_type( $post->post_type ) ) { |
|
| 195 | + if ( ! empty( $post ) && getpaid_is_invoice_post_type( $post->post_type ) ) { |
|
| 196 | 196 | |
| 197 | - $invoice = new WPInv_Invoice( $post ); |
|
| 198 | - $i18n['save_invoice'] = sprintf( |
|
| 199 | - __( 'Save %s', 'invoicing' ), |
|
| 200 | - ucfirst( $invoice->get_invoice_quote_type() ) |
|
| 201 | - ); |
|
| 197 | + $invoice = new WPInv_Invoice( $post ); |
|
| 198 | + $i18n['save_invoice'] = sprintf( |
|
| 199 | + __( 'Save %s', 'invoicing' ), |
|
| 200 | + ucfirst( $invoice->get_invoice_quote_type() ) |
|
| 201 | + ); |
|
| 202 | 202 | |
| 203 | - $i18n['invoice_description'] = sprintf( |
|
| 204 | - __( '%s Description', 'invoicing' ), |
|
| 205 | - ucfirst( $invoice->get_invoice_quote_type() ) |
|
| 206 | - ); |
|
| 203 | + $i18n['invoice_description'] = sprintf( |
|
| 204 | + __( '%s Description', 'invoicing' ), |
|
| 205 | + ucfirst( $invoice->get_invoice_quote_type() ) |
|
| 206 | + ); |
|
| 207 | 207 | |
| 208 | - } |
|
| 209 | - return $i18n; |
|
| 210 | - } |
|
| 208 | + } |
|
| 209 | + return $i18n; |
|
| 210 | + } |
|
| 211 | 211 | |
| 212 | - /** |
|
| 213 | - * Change the admin footer text on GetPaid admin pages. |
|
| 214 | - * |
|
| 215 | - * @since 2.0.0 |
|
| 216 | - * @param string $footer_text |
|
| 217 | - * @return string |
|
| 218 | - */ |
|
| 219 | - public function admin_footer_text( $footer_text ) { |
|
| 220 | - global $current_screen; |
|
| 212 | + /** |
|
| 213 | + * Change the admin footer text on GetPaid admin pages. |
|
| 214 | + * |
|
| 215 | + * @since 2.0.0 |
|
| 216 | + * @param string $footer_text |
|
| 217 | + * @return string |
|
| 218 | + */ |
|
| 219 | + public function admin_footer_text( $footer_text ) { |
|
| 220 | + global $current_screen; |
|
| 221 | 221 | |
| 222 | - $page = isset( $_GET['page'] ) ? sanitize_text_field( $_GET['page'] ) : ''; |
|
| 222 | + $page = isset( $_GET['page'] ) ? sanitize_text_field( $_GET['page'] ) : ''; |
|
| 223 | 223 | |
| 224 | 224 | if ( ! empty( $current_screen->post_type ) ) { |
| 225 | - $page = $current_screen->post_type; |
|
| 225 | + $page = $current_screen->post_type; |
|
| 226 | 226 | } |
| 227 | 227 | |
| 228 | 228 | // General styles. |
| 229 | 229 | if ( apply_filters( 'getpaid_display_admin_footer_text', wpinv_current_user_can_manage_invoicing() ) && false !== stripos( $page, 'wpi' ) ) { |
| 230 | 230 | |
| 231 | - // Change the footer text |
|
| 232 | - if ( ! get_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', true ) ) { |
|
| 231 | + // Change the footer text |
|
| 232 | + if ( ! get_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', true ) ) { |
|
| 233 | 233 | |
| 234 | - $rating_url = esc_url( |
|
| 235 | - wp_nonce_url( |
|
| 236 | - admin_url( 'admin.php?page=wpinv-reports&getpaid-admin-action=rate_plugin' ), |
|
| 237 | - 'getpaid-nonce', |
|
| 238 | - 'getpaid-nonce' |
|
| 234 | + $rating_url = esc_url( |
|
| 235 | + wp_nonce_url( |
|
| 236 | + admin_url( 'admin.php?page=wpinv-reports&getpaid-admin-action=rate_plugin' ), |
|
| 237 | + 'getpaid-nonce', |
|
| 238 | + 'getpaid-nonce' |
|
| 239 | 239 | ) |
| 240 | - ); |
|
| 240 | + ); |
|
| 241 | 241 | |
| 242 | - $footer_text = sprintf( |
|
| 243 | - /* translators: %s: five stars */ |
|
| 244 | - __( 'If you like <strong>GetPaid</strong>, please leave us a %s rating. A huge thanks in advance!', 'invoicing' ), |
|
| 245 | - "<a href='$rating_url'>★★★★★</a>" |
|
| 246 | - ); |
|
| 242 | + $footer_text = sprintf( |
|
| 243 | + /* translators: %s: five stars */ |
|
| 244 | + __( 'If you like <strong>GetPaid</strong>, please leave us a %s rating. A huge thanks in advance!', 'invoicing' ), |
|
| 245 | + "<a href='$rating_url'>★★★★★</a>" |
|
| 246 | + ); |
|
| 247 | 247 | |
| 248 | - } else { |
|
| 248 | + } else { |
|
| 249 | 249 | |
| 250 | - $footer_text = sprintf( |
|
| 251 | - /* translators: %s: GetPaid */ |
|
| 252 | - __( 'Thank you for using %s!', 'invoicing' ), |
|
| 253 | - "<a href='https://wpgetpaid.com/' target='_blank'><strong>GetPaid</strong></a>" |
|
| 254 | - ); |
|
| 250 | + $footer_text = sprintf( |
|
| 251 | + /* translators: %s: GetPaid */ |
|
| 252 | + __( 'Thank you for using %s!', 'invoicing' ), |
|
| 253 | + "<a href='https://wpgetpaid.com/' target='_blank'><strong>GetPaid</strong></a>" |
|
| 254 | + ); |
|
| 255 | 255 | |
| 256 | - } |
|
| 256 | + } |
|
| 257 | 257 | } |
| 258 | 258 | |
| 259 | - return $footer_text; |
|
| 260 | - } |
|
| 261 | - |
|
| 262 | - /** |
|
| 263 | - * Redirects to wp.org to rate the plugin. |
|
| 264 | - * |
|
| 265 | - * @since 2.0.0 |
|
| 266 | - */ |
|
| 267 | - public function redirect_to_wordpress_rating_page() { |
|
| 268 | - update_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', 1 ); |
|
| 269 | - wp_redirect( 'https://wordpress.org/support/plugin/invoicing/reviews?rate=5#new-post' ); |
|
| 270 | - exit; |
|
| 271 | - } |
|
| 272 | - |
|
| 273 | - /** |
|
| 274 | - * Loads payment form js. |
|
| 275 | - * |
|
| 276 | - */ |
|
| 277 | - protected function load_payment_form_scripts() { |
|
| 259 | + return $footer_text; |
|
| 260 | + } |
|
| 261 | + |
|
| 262 | + /** |
|
| 263 | + * Redirects to wp.org to rate the plugin. |
|
| 264 | + * |
|
| 265 | + * @since 2.0.0 |
|
| 266 | + */ |
|
| 267 | + public function redirect_to_wordpress_rating_page() { |
|
| 268 | + update_user_meta( get_current_user_id(), 'getpaid_admin_footer_text_rated', 1 ); |
|
| 269 | + wp_redirect( 'https://wordpress.org/support/plugin/invoicing/reviews?rate=5#new-post' ); |
|
| 270 | + exit; |
|
| 271 | + } |
|
| 272 | + |
|
| 273 | + /** |
|
| 274 | + * Loads payment form js. |
|
| 275 | + * |
|
| 276 | + */ |
|
| 277 | + protected function load_payment_form_scripts() { |
|
| 278 | 278 | global $post; |
| 279 | 279 | |
| 280 | 280 | wp_enqueue_script( 'vue', WPINV_PLUGIN_URL . 'assets/js/vue/vue.min.js', array(), WPINV_VERSION ); |
| 281 | - wp_enqueue_script( 'sortable', WPINV_PLUGIN_URL . 'assets/js/sortable.min.js', array(), WPINV_VERSION ); |
|
| 282 | - wp_enqueue_script( 'vue_draggable', WPINV_PLUGIN_URL . 'assets/js/vue/vuedraggable.min.js', array( 'sortable', 'vue' ), WPINV_VERSION ); |
|
| 281 | + wp_enqueue_script( 'sortable', WPINV_PLUGIN_URL . 'assets/js/sortable.min.js', array(), WPINV_VERSION ); |
|
| 282 | + wp_enqueue_script( 'vue_draggable', WPINV_PLUGIN_URL . 'assets/js/vue/vuedraggable.min.js', array( 'sortable', 'vue' ), WPINV_VERSION ); |
|
| 283 | 283 | |
| 284 | - $version = filemtime( WPINV_PLUGIN_DIR . 'assets/js/admin-payment-forms.js' ); |
|
| 285 | - wp_register_script( 'wpinv-admin-payment-form-script', WPINV_PLUGIN_URL . 'assets/js/admin-payment-forms.js', array( 'wpinv-admin-script', 'vue_draggable', 'wp-hooks' ), $version ); |
|
| 284 | + $version = filemtime( WPINV_PLUGIN_DIR . 'assets/js/admin-payment-forms.js' ); |
|
| 285 | + wp_register_script( 'wpinv-admin-payment-form-script', WPINV_PLUGIN_URL . 'assets/js/admin-payment-forms.js', array( 'wpinv-admin-script', 'vue_draggable', 'wp-hooks' ), $version ); |
|
| 286 | 286 | |
| 287 | - wp_localize_script( |
|
| 287 | + wp_localize_script( |
|
| 288 | 288 | 'wpinv-admin-payment-form-script', |
| 289 | 289 | 'wpinvPaymentFormAdmin', |
| 290 | 290 | array( |
| 291 | - 'elements' => wpinv_get_data( 'payment-form-elements' ), |
|
| 292 | - 'form_elements' => getpaid_get_payment_form_elements( $post->ID ), |
|
| 293 | - 'currency' => wpinv_currency_symbol(), |
|
| 294 | - 'position' => wpinv_currency_position(), |
|
| 295 | - 'decimals' => (int) wpinv_decimals(), |
|
| 296 | - 'thousands_sep' => wpinv_thousands_separator(), |
|
| 297 | - 'decimals_sep' => wpinv_decimal_separator(), |
|
| 298 | - 'form_items' => gepaid_get_form_items( $post->ID ), |
|
| 299 | - 'is_default' => $post->ID == wpinv_get_default_payment_form(), |
|
| 291 | + 'elements' => wpinv_get_data( 'payment-form-elements' ), |
|
| 292 | + 'form_elements' => getpaid_get_payment_form_elements( $post->ID ), |
|
| 293 | + 'currency' => wpinv_currency_symbol(), |
|
| 294 | + 'position' => wpinv_currency_position(), |
|
| 295 | + 'decimals' => (int) wpinv_decimals(), |
|
| 296 | + 'thousands_sep' => wpinv_thousands_separator(), |
|
| 297 | + 'decimals_sep' => wpinv_decimal_separator(), |
|
| 298 | + 'form_items' => gepaid_get_form_items( $post->ID ), |
|
| 299 | + 'is_default' => $post->ID == wpinv_get_default_payment_form(), |
|
| 300 | 300 | ) |
| 301 | 301 | ); |
| 302 | 302 | |
@@ -305,19 +305,19 @@ discard block |
||
| 305 | 305 | } |
| 306 | 306 | |
| 307 | 307 | /** |
| 308 | - * Add our classes to admin pages. |
|
| 308 | + * Add our classes to admin pages. |
|
| 309 | 309 | * |
| 310 | 310 | * @param string $classes |
| 311 | 311 | * @return string |
| 312 | - * |
|
| 313 | - */ |
|
| 312 | + * |
|
| 313 | + */ |
|
| 314 | 314 | public function admin_body_class( $classes ) { |
| 315 | - global $pagenow, $post, $current_screen; |
|
| 315 | + global $pagenow, $post, $current_screen; |
|
| 316 | 316 | |
| 317 | 317 | $page = isset( $_GET['page'] ) ? sanitize_text_field( $_GET['page'] ) : ''; |
| 318 | 318 | |
| 319 | 319 | if ( ! empty( $current_screen->post_type ) ) { |
| 320 | - $page = $current_screen->post_type; |
|
| 320 | + $page = $current_screen->post_type; |
|
| 321 | 321 | } |
| 322 | 322 | |
| 323 | 323 | if ( false !== stripos( $page, 'wpi' ) ) { |
@@ -326,70 +326,70 @@ discard block |
||
| 326 | 326 | |
| 327 | 327 | if ( in_array( $page, wpinv_parse_list( 'wpi_invoice wpi_payment_form wpi_quote' ) ) ) { |
| 328 | 328 | $classes .= ' wpinv-cpt wpinv'; |
| 329 | - } |
|
| 329 | + } |
|
| 330 | 330 | |
| 331 | - if ( getpaid_is_invoice_post_type( $page ) ) { |
|
| 331 | + if ( getpaid_is_invoice_post_type( $page ) ) { |
|
| 332 | 332 | $classes .= ' getpaid-is-invoice-cpt'; |
| 333 | 333 | } |
| 334 | 334 | |
| 335 | - return $classes; |
|
| 335 | + return $classes; |
|
| 336 | 336 | } |
| 337 | 337 | |
| 338 | 338 | /** |
| 339 | - * Maybe show the AyeCode Connect Notice. |
|
| 340 | - */ |
|
| 341 | - public function init_ayecode_connect_helper() { |
|
| 339 | + * Maybe show the AyeCode Connect Notice. |
|
| 340 | + */ |
|
| 341 | + public function init_ayecode_connect_helper() { |
|
| 342 | 342 | |
| 343 | - // Register with the deactivation survey class. |
|
| 344 | - AyeCode_Deactivation_Survey::instance( |
|
| 343 | + // Register with the deactivation survey class. |
|
| 344 | + AyeCode_Deactivation_Survey::instance( |
|
| 345 | 345 | array( |
| 346 | - 'slug' => 'invoicing', |
|
| 347 | - 'version' => WPINV_VERSION, |
|
| 348 | - 'support_url' => 'https://wpgetpaid.com/support/', |
|
| 349 | - 'documentation_url' => 'https://docs.wpgetpaid.com/', |
|
| 350 | - 'activated' => (int) get_option( 'gepaid_installed_on' ), |
|
| 346 | + 'slug' => 'invoicing', |
|
| 347 | + 'version' => WPINV_VERSION, |
|
| 348 | + 'support_url' => 'https://wpgetpaid.com/support/', |
|
| 349 | + 'documentation_url' => 'https://docs.wpgetpaid.com/', |
|
| 350 | + 'activated' => (int) get_option( 'gepaid_installed_on' ), |
|
| 351 | 351 | ) |
| 352 | 352 | ); |
| 353 | 353 | |
| 354 | 354 | new AyeCode_Connect_Helper( |
| 355 | 355 | array( |
| 356 | - 'connect_title' => __( 'WP Invoicing - an AyeCode product!', 'invoicing' ), |
|
| 357 | - 'connect_external' => __( 'Please confirm you wish to connect your site?', 'invoicing' ), |
|
| 358 | - 'connect' => sprintf( __( '<strong>Have a license?</strong> Forget about entering license keys or downloading zip files, connect your site for instant access. %1$slearn more%2$s', 'invoicing' ), "<a href='https://ayecode.io/introducing-ayecode-connect/' target='_blank'>", '</a>' ), |
|
| 359 | - 'connect_button' => __( 'Connect Site', 'invoicing' ), |
|
| 360 | - 'connecting_button' => __( 'Connecting...', 'invoicing' ), |
|
| 361 | - 'error_localhost' => __( 'This service will only work with a live domain, not a localhost.', 'invoicing' ), |
|
| 362 | - 'error' => __( 'Something went wrong, please refresh and try again.', 'invoicing' ), |
|
| 356 | + 'connect_title' => __( 'WP Invoicing - an AyeCode product!', 'invoicing' ), |
|
| 357 | + 'connect_external' => __( 'Please confirm you wish to connect your site?', 'invoicing' ), |
|
| 358 | + 'connect' => sprintf( __( '<strong>Have a license?</strong> Forget about entering license keys or downloading zip files, connect your site for instant access. %1$slearn more%2$s', 'invoicing' ), "<a href='https://ayecode.io/introducing-ayecode-connect/' target='_blank'>", '</a>' ), |
|
| 359 | + 'connect_button' => __( 'Connect Site', 'invoicing' ), |
|
| 360 | + 'connecting_button' => __( 'Connecting...', 'invoicing' ), |
|
| 361 | + 'error_localhost' => __( 'This service will only work with a live domain, not a localhost.', 'invoicing' ), |
|
| 362 | + 'error' => __( 'Something went wrong, please refresh and try again.', 'invoicing' ), |
|
| 363 | 363 | ), |
| 364 | 364 | array( 'wpi-addons' ) |
| 365 | 365 | ); |
| 366 | 366 | |
| 367 | 367 | } |
| 368 | 368 | |
| 369 | - /** |
|
| 370 | - * Redirect users to settings on activation. |
|
| 371 | - * |
|
| 372 | - * @return void |
|
| 373 | - */ |
|
| 374 | - public function activation_redirect() { |
|
| 369 | + /** |
|
| 370 | + * Redirect users to settings on activation. |
|
| 371 | + * |
|
| 372 | + * @return void |
|
| 373 | + */ |
|
| 374 | + public function activation_redirect() { |
|
| 375 | 375 | |
| 376 | - $redirected = get_option( 'wpinv_redirected_to_settings' ); |
|
| 376 | + $redirected = get_option( 'wpinv_redirected_to_settings' ); |
|
| 377 | 377 | |
| 378 | - if ( ! empty( $redirected ) || wp_doing_ajax() || ! current_user_can( 'manage_options' ) ) { |
|
| 379 | - return; |
|
| 380 | - } |
|
| 378 | + if ( ! empty( $redirected ) || wp_doing_ajax() || ! current_user_can( 'manage_options' ) ) { |
|
| 379 | + return; |
|
| 380 | + } |
|
| 381 | 381 | |
| 382 | - // Bail if activating from network, or bulk |
|
| 383 | - if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) { |
|
| 384 | - return; |
|
| 385 | - } |
|
| 382 | + // Bail if activating from network, or bulk |
|
| 383 | + if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) { |
|
| 384 | + return; |
|
| 385 | + } |
|
| 386 | 386 | |
| 387 | - update_option( 'wpinv_redirected_to_settings', 1 ); |
|
| 387 | + update_option( 'wpinv_redirected_to_settings', 1 ); |
|
| 388 | 388 | |
| 389 | 389 | wp_safe_redirect( admin_url( 'index.php?page=gp-setup' ) ); |
| 390 | 390 | exit; |
| 391 | 391 | |
| 392 | - } |
|
| 392 | + } |
|
| 393 | 393 | |
| 394 | 394 | /** |
| 395 | 395 | * Fires an admin action after verifying that a user can fire them. |
@@ -403,525 +403,525 @@ discard block |
||
| 403 | 403 | |
| 404 | 404 | } |
| 405 | 405 | |
| 406 | - /** |
|
| 406 | + /** |
|
| 407 | 407 | * Duplicate invoice. |
| 408 | - * |
|
| 409 | - * @param array $args |
|
| 408 | + * |
|
| 409 | + * @param array $args |
|
| 410 | 410 | */ |
| 411 | 411 | public function duplicate_invoice( $args ) { |
| 412 | 412 | |
| 413 | - if ( empty( $args['invoice_id'] ) ) { |
|
| 414 | - return; |
|
| 415 | - } |
|
| 413 | + if ( empty( $args['invoice_id'] ) ) { |
|
| 414 | + return; |
|
| 415 | + } |
|
| 416 | 416 | |
| 417 | - $invoice = new WPInv_Invoice( (int) $args['invoice_id'] ); |
|
| 417 | + $invoice = new WPInv_Invoice( (int) $args['invoice_id'] ); |
|
| 418 | 418 | |
| 419 | - if ( ! $invoice->exists() ) { |
|
| 420 | - return; |
|
| 421 | - } |
|
| 419 | + if ( ! $invoice->exists() ) { |
|
| 420 | + return; |
|
| 421 | + } |
|
| 422 | 422 | |
| 423 | - $new_invoice = getpaid_duplicate_invoice( $invoice ); |
|
| 424 | - $new_invoice->save(); |
|
| 423 | + $new_invoice = getpaid_duplicate_invoice( $invoice ); |
|
| 424 | + $new_invoice->save(); |
|
| 425 | 425 | |
| 426 | - if ( $new_invoice->exists() ) { |
|
| 426 | + if ( $new_invoice->exists() ) { |
|
| 427 | 427 | |
| 428 | - getpaid_admin()->show_success( __( 'Invoice duplicated successfully.', 'newsletter-optin-box' ) ); |
|
| 428 | + getpaid_admin()->show_success( __( 'Invoice duplicated successfully.', 'newsletter-optin-box' ) ); |
|
| 429 | 429 | |
| 430 | - wp_safe_redirect( |
|
| 431 | - add_query_arg( |
|
| 432 | - array( |
|
| 433 | - 'action' => 'edit', |
|
| 434 | - 'post' => $new_invoice->get_id(), |
|
| 435 | - ), |
|
| 436 | - admin_url( 'post.php' ) |
|
| 437 | - ) |
|
| 438 | - ); |
|
| 439 | - exit; |
|
| 430 | + wp_safe_redirect( |
|
| 431 | + add_query_arg( |
|
| 432 | + array( |
|
| 433 | + 'action' => 'edit', |
|
| 434 | + 'post' => $new_invoice->get_id(), |
|
| 435 | + ), |
|
| 436 | + admin_url( 'post.php' ) |
|
| 437 | + ) |
|
| 438 | + ); |
|
| 439 | + exit; |
|
| 440 | 440 | |
| 441 | - } |
|
| 441 | + } |
|
| 442 | 442 | |
| 443 | - getpaid_admin()->show_error( __( 'There was an error duplicating this invoice. Please try again.', 'newsletter-optin-box' ) ); |
|
| 443 | + getpaid_admin()->show_error( __( 'There was an error duplicating this invoice. Please try again.', 'newsletter-optin-box' ) ); |
|
| 444 | 444 | |
| 445 | - } |
|
| 445 | + } |
|
| 446 | 446 | |
| 447 | - /** |
|
| 447 | + /** |
|
| 448 | 448 | * Sends a payment reminder to a customer. |
| 449 | - * |
|
| 450 | - * @param array $args |
|
| 449 | + * |
|
| 450 | + * @param array $args |
|
| 451 | 451 | */ |
| 452 | 452 | public function duplicate_payment_form( $args ) { |
| 453 | 453 | |
| 454 | - if ( empty( $args['form_id'] ) ) { |
|
| 455 | - return; |
|
| 456 | - } |
|
| 457 | - |
|
| 458 | - $form = new GetPaid_Payment_Form( (int) $args['form_id'] ); |
|
| 454 | + if ( empty( $args['form_id'] ) ) { |
|
| 455 | + return; |
|
| 456 | + } |
|
| 459 | 457 | |
| 460 | - if ( ! $form->exists() ) { |
|
| 461 | - return; |
|
| 462 | - } |
|
| 458 | + $form = new GetPaid_Payment_Form( (int) $args['form_id'] ); |
|
| 463 | 459 | |
| 464 | - $new_form = new GetPaid_Payment_Form(); |
|
| 465 | - $new_form->set_author( $form->get_author( 'edit' ) ); |
|
| 466 | - $new_form->set_name( $form->get_name( 'edit' ) . __( '(copy)', 'invoicing' ) ); |
|
| 467 | - $new_form->set_elements( $form->get_elements( 'edit' ) ); |
|
| 468 | - $new_form->set_items( $form->get_items( 'edit' ) ); |
|
| 469 | - $new_form->save(); |
|
| 460 | + if ( ! $form->exists() ) { |
|
| 461 | + return; |
|
| 462 | + } |
|
| 470 | 463 | |
| 471 | - if ( $new_form->exists() ) { |
|
| 472 | - $this->show_success( __( 'Form duplicated successfully', 'invoicing' ) ); |
|
| 473 | - $url = get_edit_post_link( $new_form->get_id(), 'edit' ); |
|
| 474 | - } else { |
|
| 475 | - $this->show_error( __( 'Unable to duplicate form', 'invoicing' ) ); |
|
| 476 | - $url = remove_query_arg( array( 'getpaid-admin-action', 'form_id', 'getpaid-nonce' ) ); |
|
| 477 | - } |
|
| 464 | + $new_form = new GetPaid_Payment_Form(); |
|
| 465 | + $new_form->set_author( $form->get_author( 'edit' ) ); |
|
| 466 | + $new_form->set_name( $form->get_name( 'edit' ) . __( '(copy)', 'invoicing' ) ); |
|
| 467 | + $new_form->set_elements( $form->get_elements( 'edit' ) ); |
|
| 468 | + $new_form->set_items( $form->get_items( 'edit' ) ); |
|
| 469 | + $new_form->save(); |
|
| 470 | + |
|
| 471 | + if ( $new_form->exists() ) { |
|
| 472 | + $this->show_success( __( 'Form duplicated successfully', 'invoicing' ) ); |
|
| 473 | + $url = get_edit_post_link( $new_form->get_id(), 'edit' ); |
|
| 474 | + } else { |
|
| 475 | + $this->show_error( __( 'Unable to duplicate form', 'invoicing' ) ); |
|
| 476 | + $url = remove_query_arg( array( 'getpaid-admin-action', 'form_id', 'getpaid-nonce' ) ); |
|
| 477 | + } |
|
| 478 | 478 | |
| 479 | - wp_redirect( $url ); |
|
| 480 | - exit; |
|
| 481 | - } |
|
| 479 | + wp_redirect( $url ); |
|
| 480 | + exit; |
|
| 481 | + } |
|
| 482 | 482 | |
| 483 | - /** |
|
| 483 | + /** |
|
| 484 | 484 | * Sends a payment reminder to a customer. |
| 485 | - * |
|
| 486 | - * @param array $args |
|
| 485 | + * |
|
| 486 | + * @param array $args |
|
| 487 | 487 | */ |
| 488 | 488 | public function send_customer_invoice( $args ) { |
| 489 | - getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $args['invoice_id'] ), true ); |
|
| 490 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) ); |
|
| 491 | - exit; |
|
| 492 | - } |
|
| 489 | + getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $args['invoice_id'] ), true ); |
|
| 490 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) ); |
|
| 491 | + exit; |
|
| 492 | + } |
|
| 493 | 493 | |
| 494 | - /** |
|
| 494 | + /** |
|
| 495 | 495 | * Sends a payment reminder to a customer. |
| 496 | - * |
|
| 497 | - * @param array $args |
|
| 496 | + * |
|
| 497 | + * @param array $args |
|
| 498 | 498 | */ |
| 499 | 499 | public function send_customer_payment_reminder( $args ) { |
| 500 | - $sent = getpaid()->get( 'invoice_emails' )->force_send_overdue_notice( new WPInv_Invoice( $args['invoice_id'] ) ); |
|
| 500 | + $sent = getpaid()->get( 'invoice_emails' )->force_send_overdue_notice( new WPInv_Invoice( $args['invoice_id'] ) ); |
|
| 501 | 501 | |
| 502 | - if ( $sent ) { |
|
| 503 | - $this->show_success( __( 'Payment reminder was successfully sent to the customer', 'invoicing' ) ); |
|
| 504 | - } else { |
|
| 505 | - $this->show_error( __( 'Could not sent payment reminder to the customer', 'invoicing' ) ); |
|
| 506 | - } |
|
| 502 | + if ( $sent ) { |
|
| 503 | + $this->show_success( __( 'Payment reminder was successfully sent to the customer', 'invoicing' ) ); |
|
| 504 | + } else { |
|
| 505 | + $this->show_error( __( 'Could not sent payment reminder to the customer', 'invoicing' ) ); |
|
| 506 | + } |
|
| 507 | 507 | |
| 508 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) ); |
|
| 509 | - exit; |
|
| 510 | - } |
|
| 508 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce', 'invoice_id' ) ) ); |
|
| 509 | + exit; |
|
| 510 | + } |
|
| 511 | 511 | |
| 512 | - /** |
|
| 512 | + /** |
|
| 513 | 513 | * Resets tax rates. |
| 514 | - * |
|
| 514 | + * |
|
| 515 | 515 | */ |
| 516 | 516 | public function admin_reset_tax_rates() { |
| 517 | 517 | |
| 518 | - update_option( 'wpinv_tax_rates', wpinv_get_data( 'tax-rates' ) ); |
|
| 519 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 520 | - exit; |
|
| 518 | + update_option( 'wpinv_tax_rates', wpinv_get_data( 'tax-rates' ) ); |
|
| 519 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 520 | + exit; |
|
| 521 | 521 | |
| 522 | - } |
|
| 522 | + } |
|
| 523 | 523 | |
| 524 | - /** |
|
| 524 | + /** |
|
| 525 | 525 | * Resets admin pages. |
| 526 | - * |
|
| 526 | + * |
|
| 527 | 527 | */ |
| 528 | 528 | public function admin_create_missing_pages() { |
| 529 | - $installer = new GetPaid_Installer(); |
|
| 530 | - $installer->create_pages(); |
|
| 531 | - $this->show_success( __( 'GetPaid pages updated.', 'invoicing' ) ); |
|
| 532 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 533 | - exit; |
|
| 534 | - } |
|
| 535 | - |
|
| 536 | - /** |
|
| 529 | + $installer = new GetPaid_Installer(); |
|
| 530 | + $installer->create_pages(); |
|
| 531 | + $this->show_success( __( 'GetPaid pages updated.', 'invoicing' ) ); |
|
| 532 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 533 | + exit; |
|
| 534 | + } |
|
| 535 | + |
|
| 536 | + /** |
|
| 537 | 537 | * Creates an missing admin tables. |
| 538 | - * |
|
| 538 | + * |
|
| 539 | 539 | */ |
| 540 | 540 | public function admin_create_missing_tables() { |
| 541 | - global $wpdb; |
|
| 542 | - $installer = new GetPaid_Installer(); |
|
| 541 | + global $wpdb; |
|
| 542 | + $installer = new GetPaid_Installer(); |
|
| 543 | 543 | |
| 544 | - if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}wpinv_subscriptions'" ) != $wpdb->prefix . 'wpinv_subscriptions' ) { |
|
| 545 | - $installer->create_subscriptions_table(); |
|
| 544 | + if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}wpinv_subscriptions'" ) != $wpdb->prefix . 'wpinv_subscriptions' ) { |
|
| 545 | + $installer->create_subscriptions_table(); |
|
| 546 | 546 | |
| 547 | - if ( $wpdb->last_error !== '' ) { |
|
| 548 | - $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error ); |
|
| 549 | - } |
|
| 550 | - } |
|
| 547 | + if ( $wpdb->last_error !== '' ) { |
|
| 548 | + $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error ); |
|
| 549 | + } |
|
| 550 | + } |
|
| 551 | 551 | |
| 552 | - if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}getpaid_invoices'" ) != $wpdb->prefix . 'getpaid_invoices' ) { |
|
| 553 | - $installer->create_invoices_table(); |
|
| 552 | + if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}getpaid_invoices'" ) != $wpdb->prefix . 'getpaid_invoices' ) { |
|
| 553 | + $installer->create_invoices_table(); |
|
| 554 | 554 | |
| 555 | - if ( '' !== $wpdb->last_error ) { |
|
| 556 | - $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error ); |
|
| 557 | - } |
|
| 558 | - } |
|
| 555 | + if ( '' !== $wpdb->last_error ) { |
|
| 556 | + $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error ); |
|
| 557 | + } |
|
| 558 | + } |
|
| 559 | 559 | |
| 560 | - if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}getpaid_invoice_items'" ) != $wpdb->prefix . 'getpaid_invoice_items' ) { |
|
| 561 | - $installer->create_invoice_items_table(); |
|
| 560 | + if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->prefix}getpaid_invoice_items'" ) != $wpdb->prefix . 'getpaid_invoice_items' ) { |
|
| 561 | + $installer->create_invoice_items_table(); |
|
| 562 | 562 | |
| 563 | - if ( '' !== $wpdb->last_error ) { |
|
| 564 | - $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error ); |
|
| 565 | - } |
|
| 566 | - } |
|
| 563 | + if ( '' !== $wpdb->last_error ) { |
|
| 564 | + $this->show_error( __( 'Your GetPaid tables have been updated:', 'invoicing' ) . ' ' . $wpdb->last_error ); |
|
| 565 | + } |
|
| 566 | + } |
|
| 567 | 567 | |
| 568 | - if ( ! $this->has_notices() ) { |
|
| 569 | - $this->show_success( __( 'Your GetPaid tables have been updated.', 'invoicing' ) ); |
|
| 570 | - } |
|
| 568 | + if ( ! $this->has_notices() ) { |
|
| 569 | + $this->show_success( __( 'Your GetPaid tables have been updated.', 'invoicing' ) ); |
|
| 570 | + } |
|
| 571 | 571 | |
| 572 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 573 | - exit; |
|
| 574 | - } |
|
| 572 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 573 | + exit; |
|
| 574 | + } |
|
| 575 | 575 | |
| 576 | - /** |
|
| 576 | + /** |
|
| 577 | 577 | * Migrates old invoices to the new database tables. |
| 578 | - * |
|
| 578 | + * |
|
| 579 | 579 | */ |
| 580 | 580 | public function admin_migrate_old_invoices() { |
| 581 | 581 | |
| 582 | - // Migrate the invoices. |
|
| 583 | - $installer = new GetPaid_Installer(); |
|
| 584 | - $installer->migrate_old_invoices(); |
|
| 582 | + // Migrate the invoices. |
|
| 583 | + $installer = new GetPaid_Installer(); |
|
| 584 | + $installer->migrate_old_invoices(); |
|
| 585 | 585 | |
| 586 | - // Show an admin message. |
|
| 587 | - $this->show_success( __( 'Your invoices have been migrated.', 'invoicing' ) ); |
|
| 586 | + // Show an admin message. |
|
| 587 | + $this->show_success( __( 'Your invoices have been migrated.', 'invoicing' ) ); |
|
| 588 | 588 | |
| 589 | - // Redirect the admin. |
|
| 590 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 591 | - exit; |
|
| 589 | + // Redirect the admin. |
|
| 590 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 591 | + exit; |
|
| 592 | 592 | |
| 593 | - } |
|
| 593 | + } |
|
| 594 | 594 | |
| 595 | - /** |
|
| 595 | + /** |
|
| 596 | 596 | * Download customers. |
| 597 | - * |
|
| 597 | + * |
|
| 598 | 598 | */ |
| 599 | 599 | public function admin_download_customers() { |
| 600 | - global $wpdb; |
|
| 601 | - |
|
| 602 | - $output = fopen( 'php://output', 'w' ); |
|
| 603 | - |
|
| 604 | - if ( false === $output ) { |
|
| 605 | - wp_die( esc_html__( 'Unsupported server', 'invoicing' ), 500 ); |
|
| 606 | - } |
|
| 600 | + global $wpdb; |
|
| 607 | 601 | |
| 608 | - header( 'Content-Type:text/csv' ); |
|
| 609 | - header( 'Content-Disposition:attachment;filename=customers.csv' ); |
|
| 602 | + $output = fopen( 'php://output', 'w' ); |
|
| 610 | 603 | |
| 611 | - $post_types = ''; |
|
| 604 | + if ( false === $output ) { |
|
| 605 | + wp_die( esc_html__( 'Unsupported server', 'invoicing' ), 500 ); |
|
| 606 | + } |
|
| 612 | 607 | |
| 613 | - foreach ( array_keys( getpaid_get_invoice_post_types() ) as $post_type ) { |
|
| 614 | - $post_types .= $wpdb->prepare( 'post_type=%s OR ', $post_type ); |
|
| 615 | - } |
|
| 608 | + header( 'Content-Type:text/csv' ); |
|
| 609 | + header( 'Content-Disposition:attachment;filename=customers.csv' ); |
|
| 616 | 610 | |
| 617 | - $post_types = rtrim( $post_types, ' OR' ); |
|
| 611 | + $post_types = ''; |
|
| 618 | 612 | |
| 619 | - $customers = $wpdb->get_col( "SELECT DISTINCT( post_author ) FROM $wpdb->posts WHERE $post_types" ); |
|
| 613 | + foreach ( array_keys( getpaid_get_invoice_post_types() ) as $post_type ) { |
|
| 614 | + $post_types .= $wpdb->prepare( 'post_type=%s OR ', $post_type ); |
|
| 615 | + } |
|
| 620 | 616 | |
| 621 | - $columns = array( |
|
| 622 | - 'name' => __( 'Name', 'invoicing' ), |
|
| 623 | - 'email' => __( 'Email', 'invoicing' ), |
|
| 624 | - 'country' => __( 'Country', 'invoicing' ), |
|
| 625 | - 'state' => __( 'State', 'invoicing' ), |
|
| 626 | - 'city' => __( 'City', 'invoicing' ), |
|
| 627 | - 'zip' => __( 'ZIP', 'invoicing' ), |
|
| 628 | - 'address' => __( 'Address', 'invoicing' ), |
|
| 629 | - 'phone' => __( 'Phone', 'invoicing' ), |
|
| 630 | - 'company' => __( 'Company', 'invoicing' ), |
|
| 631 | - 'company_id' => __( 'Company ID', 'invoicing' ), |
|
| 632 | - 'invoices' => __( 'Invoices', 'invoicing' ), |
|
| 633 | - 'total_raw' => __( 'Total Spend', 'invoicing' ), |
|
| 634 | - 'signup' => __( 'Date created', 'invoicing' ), |
|
| 635 | - ); |
|
| 617 | + $post_types = rtrim( $post_types, ' OR' ); |
|
| 618 | + |
|
| 619 | + $customers = $wpdb->get_col( "SELECT DISTINCT( post_author ) FROM $wpdb->posts WHERE $post_types" ); |
|
| 620 | + |
|
| 621 | + $columns = array( |
|
| 622 | + 'name' => __( 'Name', 'invoicing' ), |
|
| 623 | + 'email' => __( 'Email', 'invoicing' ), |
|
| 624 | + 'country' => __( 'Country', 'invoicing' ), |
|
| 625 | + 'state' => __( 'State', 'invoicing' ), |
|
| 626 | + 'city' => __( 'City', 'invoicing' ), |
|
| 627 | + 'zip' => __( 'ZIP', 'invoicing' ), |
|
| 628 | + 'address' => __( 'Address', 'invoicing' ), |
|
| 629 | + 'phone' => __( 'Phone', 'invoicing' ), |
|
| 630 | + 'company' => __( 'Company', 'invoicing' ), |
|
| 631 | + 'company_id' => __( 'Company ID', 'invoicing' ), |
|
| 632 | + 'invoices' => __( 'Invoices', 'invoicing' ), |
|
| 633 | + 'total_raw' => __( 'Total Spend', 'invoicing' ), |
|
| 634 | + 'signup' => __( 'Date created', 'invoicing' ), |
|
| 635 | + ); |
|
| 636 | 636 | |
| 637 | - // Output the csv column headers. |
|
| 638 | - fputcsv( $output, array_values( $columns ) ); |
|
| 637 | + // Output the csv column headers. |
|
| 638 | + fputcsv( $output, array_values( $columns ) ); |
|
| 639 | 639 | |
| 640 | - // Loop through |
|
| 641 | - $table = new WPInv_Customers_Table(); |
|
| 642 | - foreach ( $customers as $customer_id ) { |
|
| 640 | + // Loop through |
|
| 641 | + $table = new WPInv_Customers_Table(); |
|
| 642 | + foreach ( $customers as $customer_id ) { |
|
| 643 | 643 | |
| 644 | - $user = get_user_by( 'id', $customer_id ); |
|
| 645 | - $row = array(); |
|
| 646 | - if ( empty( $user ) ) { |
|
| 647 | - continue; |
|
| 648 | - } |
|
| 644 | + $user = get_user_by( 'id', $customer_id ); |
|
| 645 | + $row = array(); |
|
| 646 | + if ( empty( $user ) ) { |
|
| 647 | + continue; |
|
| 648 | + } |
|
| 649 | 649 | |
| 650 | - foreach ( array_keys( $columns ) as $column ) { |
|
| 650 | + foreach ( array_keys( $columns ) as $column ) { |
|
| 651 | 651 | |
| 652 | - $method = 'column_' . $column; |
|
| 652 | + $method = 'column_' . $column; |
|
| 653 | 653 | |
| 654 | - if ( 'name' == $column ) { |
|
| 655 | - $value = esc_html( $user->display_name ); |
|
| 656 | - } elseif ( 'email' == $column ) { |
|
| 657 | - $value = sanitize_email( $user->user_email ); |
|
| 658 | - } elseif ( is_callable( array( $table, $method ) ) ) { |
|
| 659 | - $value = wp_strip_all_tags( $table->$method( $user ) ); |
|
| 660 | - } |
|
| 654 | + if ( 'name' == $column ) { |
|
| 655 | + $value = esc_html( $user->display_name ); |
|
| 656 | + } elseif ( 'email' == $column ) { |
|
| 657 | + $value = sanitize_email( $user->user_email ); |
|
| 658 | + } elseif ( is_callable( array( $table, $method ) ) ) { |
|
| 659 | + $value = wp_strip_all_tags( $table->$method( $user ) ); |
|
| 660 | + } |
|
| 661 | 661 | |
| 662 | - if ( empty( $value ) ) { |
|
| 663 | - $value = esc_html( get_user_meta( $user->ID, '_wpinv_' . $column, true ) ); |
|
| 664 | - } |
|
| 662 | + if ( empty( $value ) ) { |
|
| 663 | + $value = esc_html( get_user_meta( $user->ID, '_wpinv_' . $column, true ) ); |
|
| 664 | + } |
|
| 665 | 665 | |
| 666 | - $row[] = $value; |
|
| 666 | + $row[] = $value; |
|
| 667 | 667 | |
| 668 | - } |
|
| 668 | + } |
|
| 669 | 669 | |
| 670 | - fputcsv( $output, $row ); |
|
| 671 | - } |
|
| 670 | + fputcsv( $output, $row ); |
|
| 671 | + } |
|
| 672 | 672 | |
| 673 | - fclose( $output ); |
|
| 674 | - exit; |
|
| 673 | + fclose( $output ); |
|
| 674 | + exit; |
|
| 675 | 675 | |
| 676 | - } |
|
| 676 | + } |
|
| 677 | 677 | |
| 678 | - /** |
|
| 678 | + /** |
|
| 679 | 679 | * Installs a plugin. |
| 680 | - * |
|
| 681 | - * @param array $data |
|
| 680 | + * |
|
| 681 | + * @param array $data |
|
| 682 | 682 | */ |
| 683 | 683 | public function admin_install_plugin( $data ) { |
| 684 | 684 | |
| 685 | - if ( ! empty( $data['plugins'] ) ) { |
|
| 686 | - include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; |
|
| 687 | - wp_cache_flush(); |
|
| 685 | + if ( ! empty( $data['plugins'] ) ) { |
|
| 686 | + include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; |
|
| 687 | + wp_cache_flush(); |
|
| 688 | 688 | |
| 689 | - foreach ( $data['plugins'] as $slug => $file ) { |
|
| 690 | - $plugin_zip = esc_url( 'https://downloads.wordpress.org/plugin/' . $slug . '.latest-stable.zip' ); |
|
| 691 | - $upgrader = new Plugin_Upgrader( new Automatic_Upgrader_Skin() ); |
|
| 692 | - $installed = $upgrader->install( $plugin_zip ); |
|
| 689 | + foreach ( $data['plugins'] as $slug => $file ) { |
|
| 690 | + $plugin_zip = esc_url( 'https://downloads.wordpress.org/plugin/' . $slug . '.latest-stable.zip' ); |
|
| 691 | + $upgrader = new Plugin_Upgrader( new Automatic_Upgrader_Skin() ); |
|
| 692 | + $installed = $upgrader->install( $plugin_zip ); |
|
| 693 | 693 | |
| 694 | - if ( ! is_wp_error( $installed ) && $installed ) { |
|
| 695 | - activate_plugin( $file, '', false, true ); |
|
| 696 | - } else { |
|
| 697 | - wpinv_error_log( $upgrader->skin->get_upgrade_messages(), false ); |
|
| 698 | - } |
|
| 694 | + if ( ! is_wp_error( $installed ) && $installed ) { |
|
| 695 | + activate_plugin( $file, '', false, true ); |
|
| 696 | + } else { |
|
| 697 | + wpinv_error_log( $upgrader->skin->get_upgrade_messages(), false ); |
|
| 698 | + } |
|
| 699 | 699 | } |
| 700 | 700 | } |
| 701 | 701 | |
| 702 | - $redirect = isset( $data['redirect'] ) ? esc_url_raw( $data['redirect'] ) : admin_url( 'plugins.php' ); |
|
| 703 | - wp_safe_redirect( $redirect ); |
|
| 704 | - exit; |
|
| 702 | + $redirect = isset( $data['redirect'] ) ? esc_url_raw( $data['redirect'] ) : admin_url( 'plugins.php' ); |
|
| 703 | + wp_safe_redirect( $redirect ); |
|
| 704 | + exit; |
|
| 705 | 705 | |
| 706 | - } |
|
| 706 | + } |
|
| 707 | 707 | |
| 708 | - /** |
|
| 708 | + /** |
|
| 709 | 709 | * Connects a gateway. |
| 710 | - * |
|
| 711 | - * @param array $data |
|
| 710 | + * |
|
| 711 | + * @param array $data |
|
| 712 | 712 | */ |
| 713 | 713 | public function admin_connect_gateway( $data ) { |
| 714 | 714 | |
| 715 | - if ( ! empty( $data['plugin'] ) ) { |
|
| 715 | + if ( ! empty( $data['plugin'] ) ) { |
|
| 716 | 716 | |
| 717 | - $gateway = sanitize_key( $data['plugin'] ); |
|
| 718 | - $connect_url = apply_filters( "getpaid_get_{$gateway}_connect_url", false, $data ); |
|
| 717 | + $gateway = sanitize_key( $data['plugin'] ); |
|
| 718 | + $connect_url = apply_filters( "getpaid_get_{$gateway}_connect_url", false, $data ); |
|
| 719 | 719 | |
| 720 | - if ( ! empty( $connect_url ) ) { |
|
| 721 | - wp_redirect( $connect_url ); |
|
| 722 | - exit; |
|
| 723 | - } |
|
| 720 | + if ( ! empty( $connect_url ) ) { |
|
| 721 | + wp_redirect( $connect_url ); |
|
| 722 | + exit; |
|
| 723 | + } |
|
| 724 | 724 | |
| 725 | - if ( 'stripe' == $data['plugin'] ) { |
|
| 726 | - require_once ABSPATH . 'wp-admin/includes/plugin.php'; |
|
| 727 | - include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; |
|
| 728 | - wp_cache_flush(); |
|
| 725 | + if ( 'stripe' == $data['plugin'] ) { |
|
| 726 | + require_once ABSPATH . 'wp-admin/includes/plugin.php'; |
|
| 727 | + include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; |
|
| 728 | + wp_cache_flush(); |
|
| 729 | 729 | |
| 730 | - if ( ! array_key_exists( 'getpaid-stripe-payments/getpaid-stripe-payments.php', get_plugins() ) ) { |
|
| 731 | - $plugin_zip = esc_url( 'https://downloads.wordpress.org/plugin/getpaid-stripe-payments.latest-stable.zip' ); |
|
| 732 | - $upgrader = new Plugin_Upgrader( new Automatic_Upgrader_Skin() ); |
|
| 733 | - $upgrader->install( $plugin_zip ); |
|
| 734 | - } |
|
| 730 | + if ( ! array_key_exists( 'getpaid-stripe-payments/getpaid-stripe-payments.php', get_plugins() ) ) { |
|
| 731 | + $plugin_zip = esc_url( 'https://downloads.wordpress.org/plugin/getpaid-stripe-payments.latest-stable.zip' ); |
|
| 732 | + $upgrader = new Plugin_Upgrader( new Automatic_Upgrader_Skin() ); |
|
| 733 | + $upgrader->install( $plugin_zip ); |
|
| 734 | + } |
|
| 735 | 735 | |
| 736 | - activate_plugin( 'getpaid-stripe-payments/getpaid-stripe-payments.php', '', false, true ); |
|
| 737 | - } |
|
| 736 | + activate_plugin( 'getpaid-stripe-payments/getpaid-stripe-payments.php', '', false, true ); |
|
| 737 | + } |
|
| 738 | 738 | |
| 739 | - $connect_url = apply_filters( "getpaid_get_{$gateway}_connect_url", false, $data ); |
|
| 740 | - if ( ! empty( $connect_url ) ) { |
|
| 741 | - wp_redirect( $connect_url ); |
|
| 742 | - exit; |
|
| 743 | - } |
|
| 739 | + $connect_url = apply_filters( "getpaid_get_{$gateway}_connect_url", false, $data ); |
|
| 740 | + if ( ! empty( $connect_url ) ) { |
|
| 741 | + wp_redirect( $connect_url ); |
|
| 742 | + exit; |
|
| 743 | + } |
|
| 744 | 744 | } |
| 745 | 745 | |
| 746 | - $redirect = isset( $data['redirect'] ) ? esc_url_raw( urldecode( $data['redirect'] ) ) : admin_url( 'admin.php?page=wpinv-settings&tab=gateways' ); |
|
| 747 | - wp_safe_redirect( $redirect ); |
|
| 748 | - exit; |
|
| 746 | + $redirect = isset( $data['redirect'] ) ? esc_url_raw( urldecode( $data['redirect'] ) ) : admin_url( 'admin.php?page=wpinv-settings&tab=gateways' ); |
|
| 747 | + wp_safe_redirect( $redirect ); |
|
| 748 | + exit; |
|
| 749 | 749 | |
| 750 | - } |
|
| 750 | + } |
|
| 751 | 751 | |
| 752 | - /** |
|
| 752 | + /** |
|
| 753 | 753 | * Recalculates discounts. |
| 754 | - * |
|
| 754 | + * |
|
| 755 | 755 | */ |
| 756 | 756 | public function admin_recalculate_discounts() { |
| 757 | - global $wpdb; |
|
| 757 | + global $wpdb; |
|
| 758 | 758 | |
| 759 | - // Fetch all invoices that have discount codes. |
|
| 760 | - $table = $wpdb->prefix . 'getpaid_invoices'; |
|
| 761 | - $invoices = $wpdb->get_col( "SELECT `post_id` FROM `$table` WHERE `discount` = 0 && `discount_code` <> ''" ); |
|
| 759 | + // Fetch all invoices that have discount codes. |
|
| 760 | + $table = $wpdb->prefix . 'getpaid_invoices'; |
|
| 761 | + $invoices = $wpdb->get_col( "SELECT `post_id` FROM `$table` WHERE `discount` = 0 && `discount_code` <> ''" ); |
|
| 762 | 762 | |
| 763 | - foreach ( $invoices as $invoice ) { |
|
| 763 | + foreach ( $invoices as $invoice ) { |
|
| 764 | 764 | |
| 765 | - $invoice = new WPInv_Invoice( $invoice ); |
|
| 765 | + $invoice = new WPInv_Invoice( $invoice ); |
|
| 766 | 766 | |
| 767 | - if ( ! $invoice->exists() ) { |
|
| 768 | - continue; |
|
| 769 | - } |
|
| 767 | + if ( ! $invoice->exists() ) { |
|
| 768 | + continue; |
|
| 769 | + } |
|
| 770 | 770 | |
| 771 | - // Abort if the discount does not exist or does not apply here. |
|
| 772 | - $discount = new WPInv_Discount( $invoice->get_discount_code() ); |
|
| 773 | - if ( ! $discount->exists() ) { |
|
| 774 | - continue; |
|
| 775 | - } |
|
| 771 | + // Abort if the discount does not exist or does not apply here. |
|
| 772 | + $discount = new WPInv_Discount( $invoice->get_discount_code() ); |
|
| 773 | + if ( ! $discount->exists() ) { |
|
| 774 | + continue; |
|
| 775 | + } |
|
| 776 | 776 | |
| 777 | - $invoice->add_discount( getpaid_calculate_invoice_discount( $invoice, $discount ) ); |
|
| 778 | - $invoice->recalculate_total(); |
|
| 777 | + $invoice->add_discount( getpaid_calculate_invoice_discount( $invoice, $discount ) ); |
|
| 778 | + $invoice->recalculate_total(); |
|
| 779 | 779 | |
| 780 | - if ( $invoice->get_total_discount() > 0 ) { |
|
| 781 | - $invoice->save(); |
|
| 782 | - } |
|
| 780 | + if ( $invoice->get_total_discount() > 0 ) { |
|
| 781 | + $invoice->save(); |
|
| 782 | + } |
|
| 783 | 783 | } |
| 784 | 784 | |
| 785 | - // Show an admin message. |
|
| 786 | - $this->show_success( __( 'Discounts have been recalculated.', 'invoicing' ) ); |
|
| 785 | + // Show an admin message. |
|
| 786 | + $this->show_success( __( 'Discounts have been recalculated.', 'invoicing' ) ); |
|
| 787 | 787 | |
| 788 | - // Redirect the admin. |
|
| 789 | - wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 790 | - exit; |
|
| 788 | + // Redirect the admin. |
|
| 789 | + wp_safe_redirect( remove_query_arg( array( 'getpaid-admin-action', 'getpaid-nonce' ) ) ); |
|
| 790 | + exit; |
|
| 791 | 791 | |
| 792 | - } |
|
| 792 | + } |
|
| 793 | 793 | |
| 794 | 794 | /** |
| 795 | - * Returns an array of admin notices. |
|
| 796 | - * |
|
| 797 | - * @since 1.0.19 |
|
| 795 | + * Returns an array of admin notices. |
|
| 796 | + * |
|
| 797 | + * @since 1.0.19 |
|
| 798 | 798 | * @return array |
| 799 | - */ |
|
| 800 | - public function get_notices() { |
|
| 801 | - $notices = get_option( 'wpinv_admin_notices' ); |
|
| 799 | + */ |
|
| 800 | + public function get_notices() { |
|
| 801 | + $notices = get_option( 'wpinv_admin_notices' ); |
|
| 802 | 802 | return is_array( $notices ) ? $notices : array(); |
| 803 | - } |
|
| 803 | + } |
|
| 804 | 804 | |
| 805 | - /** |
|
| 806 | - * Checks if we have any admin notices. |
|
| 807 | - * |
|
| 808 | - * @since 2.0.4 |
|
| 805 | + /** |
|
| 806 | + * Checks if we have any admin notices. |
|
| 807 | + * |
|
| 808 | + * @since 2.0.4 |
|
| 809 | 809 | * @return array |
| 810 | - */ |
|
| 811 | - public function has_notices() { |
|
| 812 | - return count( $this->get_notices() ) > 0; |
|
| 813 | - } |
|
| 814 | - |
|
| 815 | - /** |
|
| 816 | - * Clears all admin notices |
|
| 817 | - * |
|
| 818 | - * @access public |
|
| 819 | - * @since 1.0.19 |
|
| 820 | - */ |
|
| 821 | - public function clear_notices() { |
|
| 822 | - delete_option( 'wpinv_admin_notices' ); |
|
| 823 | - } |
|
| 824 | - |
|
| 825 | - /** |
|
| 826 | - * Saves a new admin notice |
|
| 827 | - * |
|
| 828 | - * @access public |
|
| 829 | - * @since 1.0.19 |
|
| 830 | - */ |
|
| 831 | - public function save_notice( $type, $message ) { |
|
| 832 | - $notices = $this->get_notices(); |
|
| 833 | - |
|
| 834 | - if ( empty( $notices[ $type ] ) || ! is_array( $notices[ $type ] ) ) { |
|
| 835 | - $notices[ $type ] = array(); |
|
| 836 | - } |
|
| 837 | - |
|
| 838 | - $notices[ $type ][] = $message; |
|
| 839 | - |
|
| 840 | - update_option( 'wpinv_admin_notices', $notices ); |
|
| 841 | - } |
|
| 842 | - |
|
| 843 | - /** |
|
| 844 | - * Displays a success notice |
|
| 845 | - * |
|
| 846 | - * @param string $msg The message to qeue. |
|
| 847 | - * @access public |
|
| 848 | - * @since 1.0.19 |
|
| 849 | - */ |
|
| 850 | - public function show_success( $msg ) { |
|
| 851 | - $this->save_notice( 'success', $msg ); |
|
| 852 | - } |
|
| 853 | - |
|
| 854 | - /** |
|
| 855 | - * Displays a error notice |
|
| 856 | - * |
|
| 857 | - * @access public |
|
| 858 | - * @param string $msg The message to qeue. |
|
| 859 | - * @since 1.0.19 |
|
| 860 | - */ |
|
| 861 | - public function show_error( $msg ) { |
|
| 862 | - $this->save_notice( 'error', $msg ); |
|
| 863 | - } |
|
| 864 | - |
|
| 865 | - /** |
|
| 866 | - * Displays a warning notice |
|
| 867 | - * |
|
| 868 | - * @access public |
|
| 869 | - * @param string $msg The message to qeue. |
|
| 870 | - * @since 1.0.19 |
|
| 871 | - */ |
|
| 872 | - public function show_warning( $msg ) { |
|
| 873 | - $this->save_notice( 'warning', $msg ); |
|
| 874 | - } |
|
| 875 | - |
|
| 876 | - /** |
|
| 877 | - * Displays a info notice |
|
| 878 | - * |
|
| 879 | - * @access public |
|
| 880 | - * @param string $msg The message to qeue. |
|
| 881 | - * @since 1.0.19 |
|
| 882 | - */ |
|
| 883 | - public function show_info( $msg ) { |
|
| 884 | - $this->save_notice( 'info', $msg ); |
|
| 885 | - } |
|
| 886 | - |
|
| 887 | - /** |
|
| 888 | - * Show notices |
|
| 889 | - * |
|
| 890 | - * @access public |
|
| 891 | - * @since 1.0.19 |
|
| 892 | - */ |
|
| 893 | - public function show_notices() { |
|
| 810 | + */ |
|
| 811 | + public function has_notices() { |
|
| 812 | + return count( $this->get_notices() ) > 0; |
|
| 813 | + } |
|
| 814 | + |
|
| 815 | + /** |
|
| 816 | + * Clears all admin notices |
|
| 817 | + * |
|
| 818 | + * @access public |
|
| 819 | + * @since 1.0.19 |
|
| 820 | + */ |
|
| 821 | + public function clear_notices() { |
|
| 822 | + delete_option( 'wpinv_admin_notices' ); |
|
| 823 | + } |
|
| 824 | + |
|
| 825 | + /** |
|
| 826 | + * Saves a new admin notice |
|
| 827 | + * |
|
| 828 | + * @access public |
|
| 829 | + * @since 1.0.19 |
|
| 830 | + */ |
|
| 831 | + public function save_notice( $type, $message ) { |
|
| 832 | + $notices = $this->get_notices(); |
|
| 833 | + |
|
| 834 | + if ( empty( $notices[ $type ] ) || ! is_array( $notices[ $type ] ) ) { |
|
| 835 | + $notices[ $type ] = array(); |
|
| 836 | + } |
|
| 837 | + |
|
| 838 | + $notices[ $type ][] = $message; |
|
| 839 | + |
|
| 840 | + update_option( 'wpinv_admin_notices', $notices ); |
|
| 841 | + } |
|
| 842 | + |
|
| 843 | + /** |
|
| 844 | + * Displays a success notice |
|
| 845 | + * |
|
| 846 | + * @param string $msg The message to qeue. |
|
| 847 | + * @access public |
|
| 848 | + * @since 1.0.19 |
|
| 849 | + */ |
|
| 850 | + public function show_success( $msg ) { |
|
| 851 | + $this->save_notice( 'success', $msg ); |
|
| 852 | + } |
|
| 853 | + |
|
| 854 | + /** |
|
| 855 | + * Displays a error notice |
|
| 856 | + * |
|
| 857 | + * @access public |
|
| 858 | + * @param string $msg The message to qeue. |
|
| 859 | + * @since 1.0.19 |
|
| 860 | + */ |
|
| 861 | + public function show_error( $msg ) { |
|
| 862 | + $this->save_notice( 'error', $msg ); |
|
| 863 | + } |
|
| 864 | + |
|
| 865 | + /** |
|
| 866 | + * Displays a warning notice |
|
| 867 | + * |
|
| 868 | + * @access public |
|
| 869 | + * @param string $msg The message to qeue. |
|
| 870 | + * @since 1.0.19 |
|
| 871 | + */ |
|
| 872 | + public function show_warning( $msg ) { |
|
| 873 | + $this->save_notice( 'warning', $msg ); |
|
| 874 | + } |
|
| 875 | + |
|
| 876 | + /** |
|
| 877 | + * Displays a info notice |
|
| 878 | + * |
|
| 879 | + * @access public |
|
| 880 | + * @param string $msg The message to qeue. |
|
| 881 | + * @since 1.0.19 |
|
| 882 | + */ |
|
| 883 | + public function show_info( $msg ) { |
|
| 884 | + $this->save_notice( 'info', $msg ); |
|
| 885 | + } |
|
| 886 | + |
|
| 887 | + /** |
|
| 888 | + * Show notices |
|
| 889 | + * |
|
| 890 | + * @access public |
|
| 891 | + * @since 1.0.19 |
|
| 892 | + */ |
|
| 893 | + public function show_notices() { |
|
| 894 | 894 | |
| 895 | 895 | $notices = $this->get_notices(); |
| 896 | 896 | $this->clear_notices(); |
| 897 | 897 | |
| 898 | - foreach ( $notices as $type => $messages ) { |
|
| 898 | + foreach ( $notices as $type => $messages ) { |
|
| 899 | 899 | |
| 900 | - if ( ! is_array( $messages ) ) { |
|
| 901 | - continue; |
|
| 902 | - } |
|
| 900 | + if ( ! is_array( $messages ) ) { |
|
| 901 | + continue; |
|
| 902 | + } |
|
| 903 | 903 | |
| 904 | 904 | $type = esc_attr( $type ); |
| 905 | - foreach ( $messages as $message ) { |
|
| 906 | - echo wp_kses_post( "<div class='notice notice-$type is-dismissible'><p>$message</p></div>" ); |
|
| 905 | + foreach ( $messages as $message ) { |
|
| 906 | + echo wp_kses_post( "<div class='notice notice-$type is-dismissible'><p>$message</p></div>" ); |
|
| 907 | 907 | } |
| 908 | 908 | } |
| 909 | 909 | |
| 910 | - foreach ( array( 'checkout_page', 'invoice_history_page', 'success_page', 'failure_page', 'invoice_subscription_page' ) as $page ) { |
|
| 911 | - |
|
| 912 | - if ( ! is_numeric( wpinv_get_option( $page, false ) ) ) { |
|
| 913 | - $url = wp_nonce_url( |
|
| 914 | - add_query_arg( 'getpaid-admin-action', 'create_missing_pages' ), |
|
| 915 | - 'getpaid-nonce', |
|
| 916 | - 'getpaid-nonce' |
|
| 917 | - ); |
|
| 918 | - $message = __( 'Some GetPaid pages are missing. To use GetPaid without any issues, click the button below to generate the missing pages.', 'invoicing' ); |
|
| 919 | - $message2 = __( 'Generate Pages', 'invoicing' ); |
|
| 920 | - echo wp_kses_post( "<div class='notice notice-warning is-dismissible'><p>$message<br><br><a href='$url' class='button button-primary'>$message2</a></p></div>" ); |
|
| 921 | - break; |
|
| 922 | - } |
|
| 910 | + foreach ( array( 'checkout_page', 'invoice_history_page', 'success_page', 'failure_page', 'invoice_subscription_page' ) as $page ) { |
|
| 911 | + |
|
| 912 | + if ( ! is_numeric( wpinv_get_option( $page, false ) ) ) { |
|
| 913 | + $url = wp_nonce_url( |
|
| 914 | + add_query_arg( 'getpaid-admin-action', 'create_missing_pages' ), |
|
| 915 | + 'getpaid-nonce', |
|
| 916 | + 'getpaid-nonce' |
|
| 917 | + ); |
|
| 918 | + $message = __( 'Some GetPaid pages are missing. To use GetPaid without any issues, click the button below to generate the missing pages.', 'invoicing' ); |
|
| 919 | + $message2 = __( 'Generate Pages', 'invoicing' ); |
|
| 920 | + echo wp_kses_post( "<div class='notice notice-warning is-dismissible'><p>$message<br><br><a href='$url' class='button button-primary'>$message2</a></p></div>" ); |
|
| 921 | + break; |
|
| 922 | + } |
|
| 923 | 923 | } |
| 924 | 924 | |
| 925 | - } |
|
| 925 | + } |
|
| 926 | 926 | |
| 927 | 927 | } |
@@ -19,16 +19,16 @@ discard block |
||
| 19 | 19 | |
| 20 | 20 | // Define constants. |
| 21 | 21 | if ( ! defined( 'WPINV_PLUGIN_FILE' ) ) { |
| 22 | - define( 'WPINV_PLUGIN_FILE', __FILE__ ); |
|
| 22 | + define( 'WPINV_PLUGIN_FILE', __FILE__ ); |
|
| 23 | 23 | } |
| 24 | 24 | |
| 25 | 25 | if ( ! defined( 'WPINV_VERSION' ) ) { |
| 26 | - define( 'WPINV_VERSION', '2.6.11' ); |
|
| 26 | + define( 'WPINV_VERSION', '2.6.11' ); |
|
| 27 | 27 | } |
| 28 | 28 | |
| 29 | 29 | // Include the main Invoicing class. |
| 30 | 30 | if ( ! class_exists( 'WPInv_Plugin', false ) ) { |
| 31 | - require_once plugin_dir_path( WPINV_PLUGIN_FILE ) . 'includes/class-wpinv.php'; |
|
| 31 | + require_once plugin_dir_path( WPINV_PLUGIN_FILE ) . 'includes/class-wpinv.php'; |
|
| 32 | 32 | } |
| 33 | 33 | |
| 34 | 34 | /** |
@@ -43,7 +43,7 @@ discard block |
||
| 43 | 43 | $GLOBALS['invoicing'] = new WPInv_Plugin(); |
| 44 | 44 | } |
| 45 | 45 | |
| 46 | - return $GLOBALS['invoicing']; |
|
| 46 | + return $GLOBALS['invoicing']; |
|
| 47 | 47 | } |
| 48 | 48 | |
| 49 | 49 | /** |
@@ -7,40 +7,40 @@ |
||
| 7 | 7 | * Bail if we are not in WP. |
| 8 | 8 | */ |
| 9 | 9 | if ( ! defined( 'ABSPATH' ) ) { |
| 10 | - exit; |
|
| 10 | + exit; |
|
| 11 | 11 | } |
| 12 | 12 | |
| 13 | 13 | /** |
| 14 | 14 | * Set the version only if its the current newest while loading. |
| 15 | 15 | */ |
| 16 | 16 | add_action('after_setup_theme', function () { |
| 17 | - global $ayecode_ui_version,$ayecode_ui_file_key; |
|
| 18 | - $this_version = "0.1.71"; |
|
| 19 | - if(empty($ayecode_ui_version) || version_compare($this_version , $ayecode_ui_version, '>')){ |
|
| 20 | - $ayecode_ui_version = $this_version ; |
|
| 21 | - $ayecode_ui_file_key = wp_hash( __FILE__ ); |
|
| 22 | - } |
|
| 17 | + global $ayecode_ui_version,$ayecode_ui_file_key; |
|
| 18 | + $this_version = "0.1.71"; |
|
| 19 | + if(empty($ayecode_ui_version) || version_compare($this_version , $ayecode_ui_version, '>')){ |
|
| 20 | + $ayecode_ui_version = $this_version ; |
|
| 21 | + $ayecode_ui_file_key = wp_hash( __FILE__ ); |
|
| 22 | + } |
|
| 23 | 23 | },0); |
| 24 | 24 | |
| 25 | 25 | /** |
| 26 | 26 | * Load this version of WP Bootstrap Settings only if the file hash is the current one. |
| 27 | 27 | */ |
| 28 | 28 | add_action('after_setup_theme', function () { |
| 29 | - global $ayecode_ui_file_key; |
|
| 30 | - if($ayecode_ui_file_key && $ayecode_ui_file_key == wp_hash( __FILE__ )){ |
|
| 31 | - include_once( dirname( __FILE__ ) . '/includes/class-aui.php' ); |
|
| 32 | - include_once( dirname( __FILE__ ) . '/includes/ayecode-ui-settings.php' ); |
|
| 33 | - } |
|
| 29 | + global $ayecode_ui_file_key; |
|
| 30 | + if($ayecode_ui_file_key && $ayecode_ui_file_key == wp_hash( __FILE__ )){ |
|
| 31 | + include_once( dirname( __FILE__ ) . '/includes/class-aui.php' ); |
|
| 32 | + include_once( dirname( __FILE__ ) . '/includes/ayecode-ui-settings.php' ); |
|
| 33 | + } |
|
| 34 | 34 | },1); |
| 35 | 35 | |
| 36 | 36 | /** |
| 37 | 37 | * Add the function that calls the class. |
| 38 | 38 | */ |
| 39 | 39 | if(!function_exists('aui')){ |
| 40 | - function aui(){ |
|
| 41 | - if(!class_exists("AUI",false)){ |
|
| 42 | - return false; |
|
| 43 | - } |
|
| 44 | - return AUI::instance(); |
|
| 45 | - } |
|
| 40 | + function aui(){ |
|
| 41 | + if(!class_exists("AUI",false)){ |
|
| 42 | + return false; |
|
| 43 | + } |
|
| 44 | + return AUI::instance(); |
|
| 45 | + } |
|
| 46 | 46 | } |
@@ -13,7 +13,7 @@ discard block |
||
| 13 | 13 | * Bail if we are not in WP. |
| 14 | 14 | */ |
| 15 | 15 | if ( ! defined( 'ABSPATH' ) ) { |
| 16 | - exit; |
|
| 16 | + exit; |
|
| 17 | 17 | } |
| 18 | 18 | |
| 19 | 19 | /** |
@@ -21,273 +21,273 @@ discard block |
||
| 21 | 21 | */ |
| 22 | 22 | if ( ! class_exists( 'AyeCode_UI_Settings' ) ) { |
| 23 | 23 | |
| 24 | - /** |
|
| 25 | - * A Class to be able to change settings for Font Awesome. |
|
| 26 | - * |
|
| 27 | - * Class AyeCode_UI_Settings |
|
| 28 | - * @ver 1.0.0 |
|
| 29 | - * @todo decide how to implement textdomain |
|
| 30 | - */ |
|
| 31 | - class AyeCode_UI_Settings { |
|
| 32 | - |
|
| 33 | - /** |
|
| 34 | - * Class version version. |
|
| 35 | - * |
|
| 36 | - * @var string |
|
| 37 | - */ |
|
| 38 | - public $version = '0.1.71'; |
|
| 39 | - |
|
| 40 | - /** |
|
| 41 | - * Class textdomain. |
|
| 42 | - * |
|
| 43 | - * @var string |
|
| 44 | - */ |
|
| 45 | - public $textdomain = 'aui'; |
|
| 46 | - |
|
| 47 | - /** |
|
| 48 | - * Latest version of Bootstrap at time of publish published. |
|
| 49 | - * |
|
| 50 | - * @var string |
|
| 51 | - */ |
|
| 52 | - public $latest = "4.5.3"; |
|
| 53 | - |
|
| 54 | - /** |
|
| 55 | - * Current version of select2 being used. |
|
| 56 | - * |
|
| 57 | - * @var string |
|
| 58 | - */ |
|
| 59 | - public $select2_version = "4.0.11"; |
|
| 60 | - |
|
| 61 | - /** |
|
| 62 | - * The title. |
|
| 63 | - * |
|
| 64 | - * @var string |
|
| 65 | - */ |
|
| 66 | - public $name = 'AyeCode UI'; |
|
| 67 | - |
|
| 68 | - /** |
|
| 69 | - * The relative url to the assets. |
|
| 70 | - * |
|
| 71 | - * @var string |
|
| 72 | - */ |
|
| 73 | - public $url = ''; |
|
| 74 | - |
|
| 75 | - /** |
|
| 76 | - * Holds the settings values. |
|
| 77 | - * |
|
| 78 | - * @var array |
|
| 79 | - */ |
|
| 80 | - private $settings; |
|
| 81 | - |
|
| 82 | - /** |
|
| 83 | - * AyeCode_UI_Settings instance. |
|
| 84 | - * |
|
| 85 | - * @access private |
|
| 86 | - * @since 1.0.0 |
|
| 87 | - * @var AyeCode_UI_Settings There can be only one! |
|
| 88 | - */ |
|
| 89 | - private static $instance = null; |
|
| 90 | - |
|
| 91 | - /** |
|
| 92 | - * Main AyeCode_UI_Settings Instance. |
|
| 93 | - * |
|
| 94 | - * Ensures only one instance of AyeCode_UI_Settings is loaded or can be loaded. |
|
| 95 | - * |
|
| 96 | - * @since 1.0.0 |
|
| 97 | - * @static |
|
| 98 | - * @return AyeCode_UI_Settings - Main instance. |
|
| 99 | - */ |
|
| 100 | - public static function instance() { |
|
| 101 | - if ( ! isset( self::$instance ) && ! ( self::$instance instanceof AyeCode_UI_Settings ) ) { |
|
| 102 | - |
|
| 103 | - self::$instance = new AyeCode_UI_Settings; |
|
| 104 | - |
|
| 105 | - add_action( 'init', array( self::$instance, 'init' ) ); // set settings |
|
| 106 | - |
|
| 107 | - if ( is_admin() ) { |
|
| 108 | - add_action( 'admin_menu', array( self::$instance, 'menu_item' ) ); |
|
| 109 | - add_action( 'admin_init', array( self::$instance, 'register_settings' ) ); |
|
| 110 | - |
|
| 111 | - // Maybe show example page |
|
| 112 | - add_action( 'template_redirect', array( self::$instance,'maybe_show_examples' ) ); |
|
| 113 | - } |
|
| 24 | + /** |
|
| 25 | + * A Class to be able to change settings for Font Awesome. |
|
| 26 | + * |
|
| 27 | + * Class AyeCode_UI_Settings |
|
| 28 | + * @ver 1.0.0 |
|
| 29 | + * @todo decide how to implement textdomain |
|
| 30 | + */ |
|
| 31 | + class AyeCode_UI_Settings { |
|
| 32 | + |
|
| 33 | + /** |
|
| 34 | + * Class version version. |
|
| 35 | + * |
|
| 36 | + * @var string |
|
| 37 | + */ |
|
| 38 | + public $version = '0.1.71'; |
|
| 39 | + |
|
| 40 | + /** |
|
| 41 | + * Class textdomain. |
|
| 42 | + * |
|
| 43 | + * @var string |
|
| 44 | + */ |
|
| 45 | + public $textdomain = 'aui'; |
|
| 46 | + |
|
| 47 | + /** |
|
| 48 | + * Latest version of Bootstrap at time of publish published. |
|
| 49 | + * |
|
| 50 | + * @var string |
|
| 51 | + */ |
|
| 52 | + public $latest = "4.5.3"; |
|
| 53 | + |
|
| 54 | + /** |
|
| 55 | + * Current version of select2 being used. |
|
| 56 | + * |
|
| 57 | + * @var string |
|
| 58 | + */ |
|
| 59 | + public $select2_version = "4.0.11"; |
|
| 60 | + |
|
| 61 | + /** |
|
| 62 | + * The title. |
|
| 63 | + * |
|
| 64 | + * @var string |
|
| 65 | + */ |
|
| 66 | + public $name = 'AyeCode UI'; |
|
| 67 | + |
|
| 68 | + /** |
|
| 69 | + * The relative url to the assets. |
|
| 70 | + * |
|
| 71 | + * @var string |
|
| 72 | + */ |
|
| 73 | + public $url = ''; |
|
| 74 | + |
|
| 75 | + /** |
|
| 76 | + * Holds the settings values. |
|
| 77 | + * |
|
| 78 | + * @var array |
|
| 79 | + */ |
|
| 80 | + private $settings; |
|
| 81 | + |
|
| 82 | + /** |
|
| 83 | + * AyeCode_UI_Settings instance. |
|
| 84 | + * |
|
| 85 | + * @access private |
|
| 86 | + * @since 1.0.0 |
|
| 87 | + * @var AyeCode_UI_Settings There can be only one! |
|
| 88 | + */ |
|
| 89 | + private static $instance = null; |
|
| 90 | + |
|
| 91 | + /** |
|
| 92 | + * Main AyeCode_UI_Settings Instance. |
|
| 93 | + * |
|
| 94 | + * Ensures only one instance of AyeCode_UI_Settings is loaded or can be loaded. |
|
| 95 | + * |
|
| 96 | + * @since 1.0.0 |
|
| 97 | + * @static |
|
| 98 | + * @return AyeCode_UI_Settings - Main instance. |
|
| 99 | + */ |
|
| 100 | + public static function instance() { |
|
| 101 | + if ( ! isset( self::$instance ) && ! ( self::$instance instanceof AyeCode_UI_Settings ) ) { |
|
| 102 | + |
|
| 103 | + self::$instance = new AyeCode_UI_Settings; |
|
| 104 | + |
|
| 105 | + add_action( 'init', array( self::$instance, 'init' ) ); // set settings |
|
| 106 | + |
|
| 107 | + if ( is_admin() ) { |
|
| 108 | + add_action( 'admin_menu', array( self::$instance, 'menu_item' ) ); |
|
| 109 | + add_action( 'admin_init', array( self::$instance, 'register_settings' ) ); |
|
| 110 | + |
|
| 111 | + // Maybe show example page |
|
| 112 | + add_action( 'template_redirect', array( self::$instance,'maybe_show_examples' ) ); |
|
| 113 | + } |
|
| 114 | 114 | |
| 115 | - add_action( 'customize_register', array( self::$instance, 'customizer_settings' )); |
|
| 115 | + add_action( 'customize_register', array( self::$instance, 'customizer_settings' )); |
|
| 116 | 116 | |
| 117 | - do_action( 'ayecode_ui_settings_loaded' ); |
|
| 118 | - } |
|
| 117 | + do_action( 'ayecode_ui_settings_loaded' ); |
|
| 118 | + } |
|
| 119 | 119 | |
| 120 | - return self::$instance; |
|
| 121 | - } |
|
| 120 | + return self::$instance; |
|
| 121 | + } |
|
| 122 | 122 | |
| 123 | - /** |
|
| 124 | - * Setup some constants. |
|
| 125 | - */ |
|
| 126 | - public function constants(){ |
|
| 127 | - define('AUI_PRIMARY_COLOR_ORIGINAL', "#1e73be"); |
|
| 128 | - define('AUI_SECONDARY_COLOR_ORIGINAL', '#6c757d'); |
|
| 129 | - if (!defined('AUI_PRIMARY_COLOR')) define('AUI_PRIMARY_COLOR', AUI_PRIMARY_COLOR_ORIGINAL); |
|
| 130 | - if (!defined('AUI_SECONDARY_COLOR')) define('AUI_SECONDARY_COLOR', AUI_SECONDARY_COLOR_ORIGINAL); |
|
| 131 | - } |
|
| 123 | + /** |
|
| 124 | + * Setup some constants. |
|
| 125 | + */ |
|
| 126 | + public function constants(){ |
|
| 127 | + define('AUI_PRIMARY_COLOR_ORIGINAL', "#1e73be"); |
|
| 128 | + define('AUI_SECONDARY_COLOR_ORIGINAL', '#6c757d'); |
|
| 129 | + if (!defined('AUI_PRIMARY_COLOR')) define('AUI_PRIMARY_COLOR', AUI_PRIMARY_COLOR_ORIGINAL); |
|
| 130 | + if (!defined('AUI_SECONDARY_COLOR')) define('AUI_SECONDARY_COLOR', AUI_SECONDARY_COLOR_ORIGINAL); |
|
| 131 | + } |
|
| 132 | 132 | |
| 133 | - /** |
|
| 134 | - * Initiate the settings and add the required action hooks. |
|
| 135 | - */ |
|
| 136 | - public function init() { |
|
| 137 | - |
|
| 138 | - // Maybe fix settings |
|
| 139 | - if ( ! empty( $_REQUEST['aui-fix-admin'] ) && !empty($_REQUEST['nonce']) && wp_verify_nonce( $_REQUEST['nonce'], "aui-fix-admin" ) ) { |
|
| 140 | - $db_settings = get_option( 'ayecode-ui-settings' ); |
|
| 141 | - if ( ! empty( $db_settings ) ) { |
|
| 142 | - $db_settings['css_backend'] = 'compatibility'; |
|
| 143 | - $db_settings['js_backend'] = 'core-popper'; |
|
| 144 | - update_option( 'ayecode-ui-settings', $db_settings ); |
|
| 145 | - wp_safe_redirect(admin_url("options-general.php?page=ayecode-ui-settings&updated=true")); |
|
| 146 | - } |
|
| 147 | - } |
|
| 133 | + /** |
|
| 134 | + * Initiate the settings and add the required action hooks. |
|
| 135 | + */ |
|
| 136 | + public function init() { |
|
| 137 | + |
|
| 138 | + // Maybe fix settings |
|
| 139 | + if ( ! empty( $_REQUEST['aui-fix-admin'] ) && !empty($_REQUEST['nonce']) && wp_verify_nonce( $_REQUEST['nonce'], "aui-fix-admin" ) ) { |
|
| 140 | + $db_settings = get_option( 'ayecode-ui-settings' ); |
|
| 141 | + if ( ! empty( $db_settings ) ) { |
|
| 142 | + $db_settings['css_backend'] = 'compatibility'; |
|
| 143 | + $db_settings['js_backend'] = 'core-popper'; |
|
| 144 | + update_option( 'ayecode-ui-settings', $db_settings ); |
|
| 145 | + wp_safe_redirect(admin_url("options-general.php?page=ayecode-ui-settings&updated=true")); |
|
| 146 | + } |
|
| 147 | + } |
|
| 148 | 148 | |
| 149 | - $this->constants(); |
|
| 150 | - $this->settings = $this->get_settings(); |
|
| 151 | - $this->url = $this->get_url(); |
|
| 149 | + $this->constants(); |
|
| 150 | + $this->settings = $this->get_settings(); |
|
| 151 | + $this->url = $this->get_url(); |
|
| 152 | + |
|
| 153 | + /** |
|
| 154 | + * Maybe load CSS |
|
| 155 | + * |
|
| 156 | + * We load super early in case there is a theme version that might change the colors |
|
| 157 | + */ |
|
| 158 | + if ( $this->settings['css'] ) { |
|
| 159 | + $priority = $this->is_bs3_compat() ? 100 : 1; |
|
| 160 | + add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_style' ), $priority ); |
|
| 161 | + } |
|
| 162 | + if ( $this->settings['css_backend'] && $this->load_admin_scripts() ) { |
|
| 163 | + add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_style' ), 1 ); |
|
| 164 | + } |
|
| 152 | 165 | |
| 153 | - /** |
|
| 154 | - * Maybe load CSS |
|
| 155 | - * |
|
| 156 | - * We load super early in case there is a theme version that might change the colors |
|
| 157 | - */ |
|
| 158 | - if ( $this->settings['css'] ) { |
|
| 159 | - $priority = $this->is_bs3_compat() ? 100 : 1; |
|
| 160 | - add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_style' ), $priority ); |
|
| 161 | - } |
|
| 162 | - if ( $this->settings['css_backend'] && $this->load_admin_scripts() ) { |
|
| 163 | - add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_style' ), 1 ); |
|
| 164 | - } |
|
| 165 | - |
|
| 166 | - // maybe load JS |
|
| 167 | - if ( $this->settings['js'] ) { |
|
| 168 | - $priority = $this->is_bs3_compat() ? 100 : 1; |
|
| 169 | - add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), $priority ); |
|
| 170 | - } |
|
| 171 | - if ( $this->settings['js_backend'] && $this->load_admin_scripts() ) { |
|
| 172 | - add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ), 1 ); |
|
| 173 | - } |
|
| 174 | - |
|
| 175 | - // Maybe set the HTML font size |
|
| 176 | - if ( $this->settings['html_font_size'] ) { |
|
| 177 | - add_action( 'wp_footer', array( $this, 'html_font_size' ), 10 ); |
|
| 178 | - } |
|
| 179 | - |
|
| 180 | - // Maybe show backend style error |
|
| 181 | - if( $this->settings['css_backend'] != 'compatibility' || $this->settings['js_backend'] != 'core-popper' ){ |
|
| 182 | - add_action( 'admin_notices', array( $this, 'show_admin_style_notice' ) ); |
|
| 183 | - } |
|
| 166 | + // maybe load JS |
|
| 167 | + if ( $this->settings['js'] ) { |
|
| 168 | + $priority = $this->is_bs3_compat() ? 100 : 1; |
|
| 169 | + add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), $priority ); |
|
| 170 | + } |
|
| 171 | + if ( $this->settings['js_backend'] && $this->load_admin_scripts() ) { |
|
| 172 | + add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ), 1 ); |
|
| 173 | + } |
|
| 184 | 174 | |
| 185 | - } |
|
| 175 | + // Maybe set the HTML font size |
|
| 176 | + if ( $this->settings['html_font_size'] ) { |
|
| 177 | + add_action( 'wp_footer', array( $this, 'html_font_size' ), 10 ); |
|
| 178 | + } |
|
| 186 | 179 | |
| 187 | - /** |
|
| 188 | - * Show admin notice if backend scripts not loaded. |
|
| 189 | - */ |
|
| 190 | - public function show_admin_style_notice(){ |
|
| 191 | - $fix_url = admin_url("options-general.php?page=ayecode-ui-settings&aui-fix-admin=true&nonce=".wp_create_nonce('aui-fix-admin')); |
|
| 192 | - $button = '<a href="'.esc_url($fix_url).'" class="button-primary">Fix Now</a>'; |
|
| 193 | - $message = __( '<b>Style Issue:</b> AyeCode UI is disable or set wrong.')." " .$button; |
|
| 194 | - echo '<div class="notice notice-error aui-settings-error-notice"><p>'.$message.'</p></div>'; |
|
| 195 | - } |
|
| 180 | + // Maybe show backend style error |
|
| 181 | + if( $this->settings['css_backend'] != 'compatibility' || $this->settings['js_backend'] != 'core-popper' ){ |
|
| 182 | + add_action( 'admin_notices', array( $this, 'show_admin_style_notice' ) ); |
|
| 183 | + } |
|
| 196 | 184 | |
| 197 | - /** |
|
| 198 | - * Check if we should load the admin scripts or not. |
|
| 199 | - * |
|
| 200 | - * @return bool |
|
| 201 | - */ |
|
| 202 | - public function load_admin_scripts(){ |
|
| 203 | - $result = true; |
|
| 204 | - |
|
| 205 | - // check if specifically disabled |
|
| 206 | - if(!empty($this->settings['disable_admin'])){ |
|
| 207 | - $url_parts = explode("\n",$this->settings['disable_admin']); |
|
| 208 | - foreach($url_parts as $part){ |
|
| 209 | - if( strpos($_SERVER['REQUEST_URI'], trim($part)) !== false ){ |
|
| 210 | - return false; // return early, no point checking further |
|
| 211 | - } |
|
| 212 | - } |
|
| 213 | - } |
|
| 185 | + } |
|
| 214 | 186 | |
| 215 | - return $result; |
|
| 216 | - } |
|
| 187 | + /** |
|
| 188 | + * Show admin notice if backend scripts not loaded. |
|
| 189 | + */ |
|
| 190 | + public function show_admin_style_notice(){ |
|
| 191 | + $fix_url = admin_url("options-general.php?page=ayecode-ui-settings&aui-fix-admin=true&nonce=".wp_create_nonce('aui-fix-admin')); |
|
| 192 | + $button = '<a href="'.esc_url($fix_url).'" class="button-primary">Fix Now</a>'; |
|
| 193 | + $message = __( '<b>Style Issue:</b> AyeCode UI is disable or set wrong.')." " .$button; |
|
| 194 | + echo '<div class="notice notice-error aui-settings-error-notice"><p>'.$message.'</p></div>'; |
|
| 195 | + } |
|
| 217 | 196 | |
| 218 | - /** |
|
| 219 | - * Add a html font size to the footer. |
|
| 220 | - */ |
|
| 221 | - public function html_font_size(){ |
|
| 222 | - $this->settings = $this->get_settings(); |
|
| 223 | - echo "<style>html{font-size:".absint($this->settings['html_font_size'])."px;}</style>"; |
|
| 224 | - } |
|
| 197 | + /** |
|
| 198 | + * Check if we should load the admin scripts or not. |
|
| 199 | + * |
|
| 200 | + * @return bool |
|
| 201 | + */ |
|
| 202 | + public function load_admin_scripts(){ |
|
| 203 | + $result = true; |
|
| 204 | + |
|
| 205 | + // check if specifically disabled |
|
| 206 | + if(!empty($this->settings['disable_admin'])){ |
|
| 207 | + $url_parts = explode("\n",$this->settings['disable_admin']); |
|
| 208 | + foreach($url_parts as $part){ |
|
| 209 | + if( strpos($_SERVER['REQUEST_URI'], trim($part)) !== false ){ |
|
| 210 | + return false; // return early, no point checking further |
|
| 211 | + } |
|
| 212 | + } |
|
| 213 | + } |
|
| 214 | + |
|
| 215 | + return $result; |
|
| 216 | + } |
|
| 217 | + |
|
| 218 | + /** |
|
| 219 | + * Add a html font size to the footer. |
|
| 220 | + */ |
|
| 221 | + public function html_font_size(){ |
|
| 222 | + $this->settings = $this->get_settings(); |
|
| 223 | + echo "<style>html{font-size:".absint($this->settings['html_font_size'])."px;}</style>"; |
|
| 224 | + } |
|
| 225 | 225 | |
| 226 | - /** |
|
| 227 | - * Check if the current admin screen should load scripts. |
|
| 228 | - * |
|
| 229 | - * @return bool |
|
| 230 | - */ |
|
| 231 | - public function is_aui_screen(){ |
|
| 226 | + /** |
|
| 227 | + * Check if the current admin screen should load scripts. |
|
| 228 | + * |
|
| 229 | + * @return bool |
|
| 230 | + */ |
|
| 231 | + public function is_aui_screen(){ |
|
| 232 | 232 | // echo '###';exit; |
| 233 | - $load = false; |
|
| 234 | - // check if we should load or not |
|
| 235 | - if ( is_admin() ) { |
|
| 236 | - // Only enable on set pages |
|
| 237 | - $aui_screens = array( |
|
| 238 | - 'page', |
|
| 239 | - 'post', |
|
| 240 | - 'settings_page_ayecode-ui-settings', |
|
| 241 | - 'appearance_page_gutenberg-widgets', |
|
| 242 | - 'widgets', |
|
| 243 | - 'ayecode-ui-settings', |
|
| 244 | - 'site-editor' |
|
| 245 | - ); |
|
| 246 | - $screen_ids = apply_filters( 'aui_screen_ids', $aui_screens ); |
|
| 247 | - |
|
| 248 | - $screen = get_current_screen(); |
|
| 233 | + $load = false; |
|
| 234 | + // check if we should load or not |
|
| 235 | + if ( is_admin() ) { |
|
| 236 | + // Only enable on set pages |
|
| 237 | + $aui_screens = array( |
|
| 238 | + 'page', |
|
| 239 | + 'post', |
|
| 240 | + 'settings_page_ayecode-ui-settings', |
|
| 241 | + 'appearance_page_gutenberg-widgets', |
|
| 242 | + 'widgets', |
|
| 243 | + 'ayecode-ui-settings', |
|
| 244 | + 'site-editor' |
|
| 245 | + ); |
|
| 246 | + $screen_ids = apply_filters( 'aui_screen_ids', $aui_screens ); |
|
| 247 | + |
|
| 248 | + $screen = get_current_screen(); |
|
| 249 | 249 | |
| 250 | 250 | // echo '###'.$screen->id; |
| 251 | 251 | |
| 252 | - // check if we are on a AUI screen |
|
| 253 | - if ( $screen && in_array( $screen->id, $screen_ids ) ) { |
|
| 254 | - $load = true; |
|
| 255 | - } |
|
| 252 | + // check if we are on a AUI screen |
|
| 253 | + if ( $screen && in_array( $screen->id, $screen_ids ) ) { |
|
| 254 | + $load = true; |
|
| 255 | + } |
|
| 256 | 256 | |
| 257 | - //load for widget previews in WP 5.8 |
|
| 258 | - if( !empty($_REQUEST['legacy-widget-preview'])){ |
|
| 259 | - $load = true; |
|
| 260 | - } |
|
| 261 | - } |
|
| 257 | + //load for widget previews in WP 5.8 |
|
| 258 | + if( !empty($_REQUEST['legacy-widget-preview'])){ |
|
| 259 | + $load = true; |
|
| 260 | + } |
|
| 261 | + } |
|
| 262 | 262 | |
| 263 | - return apply_filters( 'aui_load_on_admin' , $load ); |
|
| 264 | - } |
|
| 263 | + return apply_filters( 'aui_load_on_admin' , $load ); |
|
| 264 | + } |
|
| 265 | 265 | |
| 266 | - /** |
|
| 267 | - * Adds the styles. |
|
| 268 | - */ |
|
| 269 | - public function enqueue_style() { |
|
| 266 | + /** |
|
| 267 | + * Adds the styles. |
|
| 268 | + */ |
|
| 269 | + public function enqueue_style() { |
|
| 270 | 270 | |
| 271 | 271 | |
| 272 | - if( is_admin() && !$this->is_aui_screen()){ |
|
| 273 | - // don't add wp-admin scripts if not requested to |
|
| 274 | - }else{ |
|
| 275 | - $css_setting = current_action() == 'wp_enqueue_scripts' ? 'css' : 'css_backend'; |
|
| 272 | + if( is_admin() && !$this->is_aui_screen()){ |
|
| 273 | + // don't add wp-admin scripts if not requested to |
|
| 274 | + }else{ |
|
| 275 | + $css_setting = current_action() == 'wp_enqueue_scripts' ? 'css' : 'css_backend'; |
|
| 276 | 276 | |
| 277 | - $rtl = is_rtl() ? '-rtl' : ''; |
|
| 277 | + $rtl = is_rtl() ? '-rtl' : ''; |
|
| 278 | 278 | |
| 279 | - if($this->settings[$css_setting]){ |
|
| 280 | - $compatibility = $this->settings[$css_setting]=='core' ? false : true; |
|
| 281 | - $url = $this->settings[$css_setting]=='core' ? $this->url.'assets/css/ayecode-ui'.$rtl.'.css' : $this->url.'assets/css/ayecode-ui-compatibility'.$rtl.'.css'; |
|
| 282 | - wp_register_style( 'ayecode-ui', $url, array(), $this->version ); |
|
| 283 | - wp_enqueue_style( 'ayecode-ui' ); |
|
| 279 | + if($this->settings[$css_setting]){ |
|
| 280 | + $compatibility = $this->settings[$css_setting]=='core' ? false : true; |
|
| 281 | + $url = $this->settings[$css_setting]=='core' ? $this->url.'assets/css/ayecode-ui'.$rtl.'.css' : $this->url.'assets/css/ayecode-ui-compatibility'.$rtl.'.css'; |
|
| 282 | + wp_register_style( 'ayecode-ui', $url, array(), $this->version ); |
|
| 283 | + wp_enqueue_style( 'ayecode-ui' ); |
|
| 284 | 284 | |
| 285 | - // flatpickr |
|
| 286 | - wp_register_style( 'flatpickr', $this->url.'assets/css/flatpickr.min.css', array(), $this->version ); |
|
| 285 | + // flatpickr |
|
| 286 | + wp_register_style( 'flatpickr', $this->url.'assets/css/flatpickr.min.css', array(), $this->version ); |
|
| 287 | 287 | |
| 288 | - // fix some wp-admin issues |
|
| 289 | - if(is_admin()){ |
|
| 290 | - $custom_css = " |
|
| 288 | + // fix some wp-admin issues |
|
| 289 | + if(is_admin()){ |
|
| 290 | + $custom_css = " |
|
| 291 | 291 | body{ |
| 292 | 292 | background-color: #f1f1f1; |
| 293 | 293 | font-family: -apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif; |
@@ -333,35 +333,35 @@ discard block |
||
| 333 | 333 | } |
| 334 | 334 | "; |
| 335 | 335 | |
| 336 | - // @todo, remove once fixed :: fix for this bug https://github.com/WordPress/gutenberg/issues/14377 |
|
| 337 | - $custom_css .= " |
|
| 336 | + // @todo, remove once fixed :: fix for this bug https://github.com/WordPress/gutenberg/issues/14377 |
|
| 337 | + $custom_css .= " |
|
| 338 | 338 | .edit-post-sidebar input[type=color].components-text-control__input{ |
| 339 | 339 | padding: 0; |
| 340 | 340 | } |
| 341 | 341 | "; |
| 342 | - wp_add_inline_style( 'ayecode-ui', $custom_css ); |
|
| 343 | - } |
|
| 342 | + wp_add_inline_style( 'ayecode-ui', $custom_css ); |
|
| 343 | + } |
|
| 344 | 344 | |
| 345 | - // custom changes |
|
| 346 | - wp_add_inline_style( 'ayecode-ui', self::custom_css($compatibility) ); |
|
| 345 | + // custom changes |
|
| 346 | + wp_add_inline_style( 'ayecode-ui', self::custom_css($compatibility) ); |
|
| 347 | 347 | |
| 348 | - } |
|
| 349 | - } |
|
| 348 | + } |
|
| 349 | + } |
|
| 350 | 350 | |
| 351 | 351 | |
| 352 | - } |
|
| 352 | + } |
|
| 353 | 353 | |
| 354 | - /** |
|
| 355 | - * Get inline script used if bootstrap enqueued |
|
| 356 | - * |
|
| 357 | - * If this remains small then its best to use this than to add another JS file. |
|
| 358 | - */ |
|
| 359 | - public function inline_script() { |
|
| 360 | - // Flatpickr calendar locale |
|
| 361 | - $flatpickr_locale = self::flatpickr_locale(); |
|
| 362 | - |
|
| 363 | - ob_start(); |
|
| 364 | - ?> |
|
| 354 | + /** |
|
| 355 | + * Get inline script used if bootstrap enqueued |
|
| 356 | + * |
|
| 357 | + * If this remains small then its best to use this than to add another JS file. |
|
| 358 | + */ |
|
| 359 | + public function inline_script() { |
|
| 360 | + // Flatpickr calendar locale |
|
| 361 | + $flatpickr_locale = self::flatpickr_locale(); |
|
| 362 | + |
|
| 363 | + ob_start(); |
|
| 364 | + ?> |
|
| 365 | 365 | <script> |
| 366 | 366 | /** |
| 367 | 367 | * An AUI bootstrap adaptation of GreedyNav.js ( by Luke Jackson ). |
@@ -1199,29 +1199,29 @@ discard block |
||
| 1199 | 1199 | } |
| 1200 | 1200 | </script> |
| 1201 | 1201 | <?php |
| 1202 | - $output = ob_get_clean(); |
|
| 1202 | + $output = ob_get_clean(); |
|
| 1203 | 1203 | |
| 1204 | 1204 | |
| 1205 | 1205 | |
| 1206 | - /* |
|
| 1206 | + /* |
|
| 1207 | 1207 | * We only add the <script> tags for code highlighting, so we strip them from the output. |
| 1208 | 1208 | */ |
| 1209 | - return str_replace( array( |
|
| 1210 | - '<script>', |
|
| 1211 | - '</script>' |
|
| 1212 | - ), '', self::minify_js($output) ); |
|
| 1213 | - } |
|
| 1209 | + return str_replace( array( |
|
| 1210 | + '<script>', |
|
| 1211 | + '</script>' |
|
| 1212 | + ), '', self::minify_js($output) ); |
|
| 1213 | + } |
|
| 1214 | 1214 | |
| 1215 | 1215 | |
| 1216 | - /** |
|
| 1217 | - * JS to help with conflict issues with other plugins and themes using bootstrap v3. |
|
| 1218 | - * |
|
| 1219 | - * @TODO we may need this when other conflicts arrise. |
|
| 1220 | - * @return mixed |
|
| 1221 | - */ |
|
| 1222 | - public static function bs3_compat_js() { |
|
| 1223 | - ob_start(); |
|
| 1224 | - ?> |
|
| 1216 | + /** |
|
| 1217 | + * JS to help with conflict issues with other plugins and themes using bootstrap v3. |
|
| 1218 | + * |
|
| 1219 | + * @TODO we may need this when other conflicts arrise. |
|
| 1220 | + * @return mixed |
|
| 1221 | + */ |
|
| 1222 | + public static function bs3_compat_js() { |
|
| 1223 | + ob_start(); |
|
| 1224 | + ?> |
|
| 1225 | 1225 | <script> |
| 1226 | 1226 | <?php if( defined( 'FUSION_BUILDER_VERSION' ) ){ ?> |
| 1227 | 1227 | /* With Avada builder */ |
@@ -1229,20 +1229,20 @@ discard block |
||
| 1229 | 1229 | <?php } ?> |
| 1230 | 1230 | </script> |
| 1231 | 1231 | <?php |
| 1232 | - return str_replace( array( |
|
| 1233 | - '<script>', |
|
| 1234 | - '</script>' |
|
| 1235 | - ), '', ob_get_clean()); |
|
| 1236 | - } |
|
| 1232 | + return str_replace( array( |
|
| 1233 | + '<script>', |
|
| 1234 | + '</script>' |
|
| 1235 | + ), '', ob_get_clean()); |
|
| 1236 | + } |
|
| 1237 | 1237 | |
| 1238 | - /** |
|
| 1239 | - * Get inline script used if bootstrap file browser enqueued. |
|
| 1240 | - * |
|
| 1241 | - * If this remains small then its best to use this than to add another JS file. |
|
| 1242 | - */ |
|
| 1243 | - public function inline_script_file_browser(){ |
|
| 1244 | - ob_start(); |
|
| 1245 | - ?> |
|
| 1238 | + /** |
|
| 1239 | + * Get inline script used if bootstrap file browser enqueued. |
|
| 1240 | + * |
|
| 1241 | + * If this remains small then its best to use this than to add another JS file. |
|
| 1242 | + */ |
|
| 1243 | + public function inline_script_file_browser(){ |
|
| 1244 | + ob_start(); |
|
| 1245 | + ?> |
|
| 1246 | 1246 | <script> |
| 1247 | 1247 | // run on doc ready |
| 1248 | 1248 | jQuery(document).ready(function () { |
@@ -1250,203 +1250,203 @@ discard block |
||
| 1250 | 1250 | }); |
| 1251 | 1251 | </script> |
| 1252 | 1252 | <?php |
| 1253 | - $output = ob_get_clean(); |
|
| 1253 | + $output = ob_get_clean(); |
|
| 1254 | 1254 | |
| 1255 | - /* |
|
| 1255 | + /* |
|
| 1256 | 1256 | * We only add the <script> tags for code highlighting, so we strip them from the output. |
| 1257 | 1257 | */ |
| 1258 | - return str_replace( array( |
|
| 1259 | - '<script>', |
|
| 1260 | - '</script>' |
|
| 1261 | - ), '', $output ); |
|
| 1262 | - } |
|
| 1258 | + return str_replace( array( |
|
| 1259 | + '<script>', |
|
| 1260 | + '</script>' |
|
| 1261 | + ), '', $output ); |
|
| 1262 | + } |
|
| 1263 | 1263 | |
| 1264 | - /** |
|
| 1265 | - * Adds the Font Awesome JS. |
|
| 1266 | - */ |
|
| 1267 | - public function enqueue_scripts() { |
|
| 1264 | + /** |
|
| 1265 | + * Adds the Font Awesome JS. |
|
| 1266 | + */ |
|
| 1267 | + public function enqueue_scripts() { |
|
| 1268 | 1268 | |
| 1269 | - if( is_admin() && !$this->is_aui_screen()){ |
|
| 1270 | - // don't add wp-admin scripts if not requested to |
|
| 1271 | - }else { |
|
| 1269 | + if( is_admin() && !$this->is_aui_screen()){ |
|
| 1270 | + // don't add wp-admin scripts if not requested to |
|
| 1271 | + }else { |
|
| 1272 | 1272 | |
| 1273 | - $js_setting = current_action() == 'wp_enqueue_scripts' ? 'js' : 'js_backend'; |
|
| 1273 | + $js_setting = current_action() == 'wp_enqueue_scripts' ? 'js' : 'js_backend'; |
|
| 1274 | 1274 | |
| 1275 | - // select2 |
|
| 1276 | - wp_register_script( 'select2', $this->url . 'assets/js/select2.min.js', array( 'jquery' ), $this->select2_version ); |
|
| 1275 | + // select2 |
|
| 1276 | + wp_register_script( 'select2', $this->url . 'assets/js/select2.min.js', array( 'jquery' ), $this->select2_version ); |
|
| 1277 | 1277 | |
| 1278 | - // flatpickr |
|
| 1279 | - wp_register_script( 'flatpickr', $this->url . 'assets/js/flatpickr.min.js', array(), $this->version ); |
|
| 1278 | + // flatpickr |
|
| 1279 | + wp_register_script( 'flatpickr', $this->url . 'assets/js/flatpickr.min.js', array(), $this->version ); |
|
| 1280 | 1280 | |
| 1281 | - // flatpickr |
|
| 1282 | - wp_register_script( 'iconpicker', $this->url . 'assets/js/fontawesome-iconpicker.min.js', array(), $this->version ); |
|
| 1281 | + // flatpickr |
|
| 1282 | + wp_register_script( 'iconpicker', $this->url . 'assets/js/fontawesome-iconpicker.min.js', array(), $this->version ); |
|
| 1283 | 1283 | |
| 1284 | - // Bootstrap file browser |
|
| 1285 | - wp_register_script( 'aui-custom-file-input', $url = $this->url . 'assets/js/bs-custom-file-input.min.js', array( 'jquery' ), $this->select2_version ); |
|
| 1286 | - wp_add_inline_script( 'aui-custom-file-input', $this->inline_script_file_browser() ); |
|
| 1287 | - |
|
| 1288 | - $load_inline = false; |
|
| 1289 | - |
|
| 1290 | - if ( $this->settings[ $js_setting ] == 'core-popper' ) { |
|
| 1291 | - // Bootstrap bundle |
|
| 1292 | - $url = $this->url . 'assets/js/bootstrap.bundle.min.js'; |
|
| 1293 | - wp_register_script( 'bootstrap-js-bundle', $url, array( |
|
| 1294 | - 'select2', |
|
| 1295 | - 'jquery' |
|
| 1296 | - ), $this->version, $this->is_bs3_compat() ); |
|
| 1297 | - // if in admin then add to footer for compatibility. |
|
| 1298 | - is_admin() ? wp_enqueue_script( 'bootstrap-js-bundle', '', null, null, true ) : wp_enqueue_script( 'bootstrap-js-bundle' ); |
|
| 1299 | - $script = $this->inline_script(); |
|
| 1300 | - wp_add_inline_script( 'bootstrap-js-bundle', $script ); |
|
| 1301 | - } elseif ( $this->settings[ $js_setting ] == 'popper' ) { |
|
| 1302 | - $url = $this->url . 'assets/js/popper.min.js'; |
|
| 1303 | - wp_register_script( 'bootstrap-js-popper', $url, array( 'select2', 'jquery' ), $this->version ); |
|
| 1304 | - wp_enqueue_script( 'bootstrap-js-popper' ); |
|
| 1305 | - $load_inline = true; |
|
| 1306 | - } else { |
|
| 1307 | - $load_inline = true; |
|
| 1308 | - } |
|
| 1284 | + // Bootstrap file browser |
|
| 1285 | + wp_register_script( 'aui-custom-file-input', $url = $this->url . 'assets/js/bs-custom-file-input.min.js', array( 'jquery' ), $this->select2_version ); |
|
| 1286 | + wp_add_inline_script( 'aui-custom-file-input', $this->inline_script_file_browser() ); |
|
| 1287 | + |
|
| 1288 | + $load_inline = false; |
|
| 1289 | + |
|
| 1290 | + if ( $this->settings[ $js_setting ] == 'core-popper' ) { |
|
| 1291 | + // Bootstrap bundle |
|
| 1292 | + $url = $this->url . 'assets/js/bootstrap.bundle.min.js'; |
|
| 1293 | + wp_register_script( 'bootstrap-js-bundle', $url, array( |
|
| 1294 | + 'select2', |
|
| 1295 | + 'jquery' |
|
| 1296 | + ), $this->version, $this->is_bs3_compat() ); |
|
| 1297 | + // if in admin then add to footer for compatibility. |
|
| 1298 | + is_admin() ? wp_enqueue_script( 'bootstrap-js-bundle', '', null, null, true ) : wp_enqueue_script( 'bootstrap-js-bundle' ); |
|
| 1299 | + $script = $this->inline_script(); |
|
| 1300 | + wp_add_inline_script( 'bootstrap-js-bundle', $script ); |
|
| 1301 | + } elseif ( $this->settings[ $js_setting ] == 'popper' ) { |
|
| 1302 | + $url = $this->url . 'assets/js/popper.min.js'; |
|
| 1303 | + wp_register_script( 'bootstrap-js-popper', $url, array( 'select2', 'jquery' ), $this->version ); |
|
| 1304 | + wp_enqueue_script( 'bootstrap-js-popper' ); |
|
| 1305 | + $load_inline = true; |
|
| 1306 | + } else { |
|
| 1307 | + $load_inline = true; |
|
| 1308 | + } |
|
| 1309 | 1309 | |
| 1310 | - // Load needed inline scripts by faking the loading of a script if the main script is not being loaded |
|
| 1311 | - if ( $load_inline ) { |
|
| 1312 | - wp_register_script( 'bootstrap-dummy', '', array( 'select2', 'jquery' ) ); |
|
| 1313 | - wp_enqueue_script( 'bootstrap-dummy' ); |
|
| 1314 | - $script = $this->inline_script(); |
|
| 1315 | - wp_add_inline_script( 'bootstrap-dummy', $script ); |
|
| 1316 | - } |
|
| 1317 | - } |
|
| 1310 | + // Load needed inline scripts by faking the loading of a script if the main script is not being loaded |
|
| 1311 | + if ( $load_inline ) { |
|
| 1312 | + wp_register_script( 'bootstrap-dummy', '', array( 'select2', 'jquery' ) ); |
|
| 1313 | + wp_enqueue_script( 'bootstrap-dummy' ); |
|
| 1314 | + $script = $this->inline_script(); |
|
| 1315 | + wp_add_inline_script( 'bootstrap-dummy', $script ); |
|
| 1316 | + } |
|
| 1317 | + } |
|
| 1318 | 1318 | |
| 1319 | - } |
|
| 1319 | + } |
|
| 1320 | 1320 | |
| 1321 | - /** |
|
| 1322 | - * Enqueue flatpickr if called. |
|
| 1323 | - */ |
|
| 1324 | - public function enqueue_flatpickr(){ |
|
| 1325 | - wp_enqueue_style( 'flatpickr' ); |
|
| 1326 | - wp_enqueue_script( 'flatpickr' ); |
|
| 1327 | - } |
|
| 1321 | + /** |
|
| 1322 | + * Enqueue flatpickr if called. |
|
| 1323 | + */ |
|
| 1324 | + public function enqueue_flatpickr(){ |
|
| 1325 | + wp_enqueue_style( 'flatpickr' ); |
|
| 1326 | + wp_enqueue_script( 'flatpickr' ); |
|
| 1327 | + } |
|
| 1328 | 1328 | |
| 1329 | - /** |
|
| 1330 | - * Enqueue iconpicker if called. |
|
| 1331 | - */ |
|
| 1332 | - public function enqueue_iconpicker(){ |
|
| 1333 | - wp_enqueue_style( 'iconpicker' ); |
|
| 1334 | - wp_enqueue_script( 'iconpicker' ); |
|
| 1335 | - } |
|
| 1329 | + /** |
|
| 1330 | + * Enqueue iconpicker if called. |
|
| 1331 | + */ |
|
| 1332 | + public function enqueue_iconpicker(){ |
|
| 1333 | + wp_enqueue_style( 'iconpicker' ); |
|
| 1334 | + wp_enqueue_script( 'iconpicker' ); |
|
| 1335 | + } |
|
| 1336 | 1336 | |
| 1337 | - /** |
|
| 1338 | - * Get the url path to the current folder. |
|
| 1339 | - * |
|
| 1340 | - * @return string |
|
| 1341 | - */ |
|
| 1342 | - public function get_url() { |
|
| 1337 | + /** |
|
| 1338 | + * Get the url path to the current folder. |
|
| 1339 | + * |
|
| 1340 | + * @return string |
|
| 1341 | + */ |
|
| 1342 | + public function get_url() { |
|
| 1343 | 1343 | |
| 1344 | - $url = ''; |
|
| 1345 | - // check if we are inside a plugin |
|
| 1346 | - $file_dir = str_replace( "/includes","", wp_normalize_path( dirname( __FILE__ ) ) ); |
|
| 1344 | + $url = ''; |
|
| 1345 | + // check if we are inside a plugin |
|
| 1346 | + $file_dir = str_replace( "/includes","", wp_normalize_path( dirname( __FILE__ ) ) ); |
|
| 1347 | 1347 | |
| 1348 | - // add check in-case user has changed wp-content dir name. |
|
| 1349 | - $wp_content_folder_name = basename(WP_CONTENT_DIR); |
|
| 1350 | - $dir_parts = explode("/$wp_content_folder_name/",$file_dir); |
|
| 1351 | - $url_parts = explode("/$wp_content_folder_name/",plugins_url()); |
|
| 1348 | + // add check in-case user has changed wp-content dir name. |
|
| 1349 | + $wp_content_folder_name = basename(WP_CONTENT_DIR); |
|
| 1350 | + $dir_parts = explode("/$wp_content_folder_name/",$file_dir); |
|
| 1351 | + $url_parts = explode("/$wp_content_folder_name/",plugins_url()); |
|
| 1352 | 1352 | |
| 1353 | - if(!empty($url_parts[0]) && !empty($dir_parts[1])){ |
|
| 1354 | - $url = trailingslashit( $url_parts[0]."/$wp_content_folder_name/".$dir_parts[1] ); |
|
| 1355 | - } |
|
| 1353 | + if(!empty($url_parts[0]) && !empty($dir_parts[1])){ |
|
| 1354 | + $url = trailingslashit( $url_parts[0]."/$wp_content_folder_name/".$dir_parts[1] ); |
|
| 1355 | + } |
|
| 1356 | 1356 | |
| 1357 | - return $url; |
|
| 1358 | - } |
|
| 1357 | + return $url; |
|
| 1358 | + } |
|
| 1359 | 1359 | |
| 1360 | - /** |
|
| 1361 | - * Register the database settings with WordPress. |
|
| 1362 | - */ |
|
| 1363 | - public function register_settings() { |
|
| 1364 | - register_setting( 'ayecode-ui-settings', 'ayecode-ui-settings' ); |
|
| 1365 | - } |
|
| 1360 | + /** |
|
| 1361 | + * Register the database settings with WordPress. |
|
| 1362 | + */ |
|
| 1363 | + public function register_settings() { |
|
| 1364 | + register_setting( 'ayecode-ui-settings', 'ayecode-ui-settings' ); |
|
| 1365 | + } |
|
| 1366 | 1366 | |
| 1367 | - /** |
|
| 1368 | - * Add the WordPress settings menu item. |
|
| 1369 | - * @since 1.0.10 Calling function name direct will fail theme check so we don't. |
|
| 1370 | - */ |
|
| 1371 | - public function menu_item() { |
|
| 1372 | - $menu_function = 'add' . '_' . 'options' . '_' . 'page'; // won't pass theme check if function name present in theme |
|
| 1373 | - call_user_func( $menu_function, $this->name, $this->name, 'manage_options', 'ayecode-ui-settings', array( |
|
| 1374 | - $this, |
|
| 1375 | - 'settings_page' |
|
| 1376 | - ) ); |
|
| 1377 | - } |
|
| 1367 | + /** |
|
| 1368 | + * Add the WordPress settings menu item. |
|
| 1369 | + * @since 1.0.10 Calling function name direct will fail theme check so we don't. |
|
| 1370 | + */ |
|
| 1371 | + public function menu_item() { |
|
| 1372 | + $menu_function = 'add' . '_' . 'options' . '_' . 'page'; // won't pass theme check if function name present in theme |
|
| 1373 | + call_user_func( $menu_function, $this->name, $this->name, 'manage_options', 'ayecode-ui-settings', array( |
|
| 1374 | + $this, |
|
| 1375 | + 'settings_page' |
|
| 1376 | + ) ); |
|
| 1377 | + } |
|
| 1378 | 1378 | |
| 1379 | - /** |
|
| 1380 | - * Get a list of themes and their default JS settings. |
|
| 1381 | - * |
|
| 1382 | - * @return array |
|
| 1383 | - */ |
|
| 1384 | - public function theme_js_settings(){ |
|
| 1385 | - return array( |
|
| 1386 | - 'ayetheme' => 'popper', |
|
| 1387 | - 'listimia' => 'required', |
|
| 1388 | - 'listimia_backend' => 'core-popper', |
|
| 1389 | - //'avada' => 'required', // removed as we now add compatibility |
|
| 1390 | - ); |
|
| 1391 | - } |
|
| 1379 | + /** |
|
| 1380 | + * Get a list of themes and their default JS settings. |
|
| 1381 | + * |
|
| 1382 | + * @return array |
|
| 1383 | + */ |
|
| 1384 | + public function theme_js_settings(){ |
|
| 1385 | + return array( |
|
| 1386 | + 'ayetheme' => 'popper', |
|
| 1387 | + 'listimia' => 'required', |
|
| 1388 | + 'listimia_backend' => 'core-popper', |
|
| 1389 | + //'avada' => 'required', // removed as we now add compatibility |
|
| 1390 | + ); |
|
| 1391 | + } |
|
| 1392 | 1392 | |
| 1393 | - /** |
|
| 1394 | - * Get the current Font Awesome output settings. |
|
| 1395 | - * |
|
| 1396 | - * @return array The array of settings. |
|
| 1397 | - */ |
|
| 1398 | - public function get_settings() { |
|
| 1399 | - |
|
| 1400 | - $db_settings = get_option( 'ayecode-ui-settings' ); |
|
| 1401 | - $js_default = 'core-popper'; |
|
| 1402 | - $js_default_backend = $js_default; |
|
| 1403 | - |
|
| 1404 | - // maybe set defaults (if no settings set) |
|
| 1405 | - if(empty($db_settings)){ |
|
| 1406 | - $active_theme = strtolower( get_template() ); // active parent theme. |
|
| 1407 | - $theme_js_settings = self::theme_js_settings(); |
|
| 1408 | - if(isset($theme_js_settings[$active_theme])){ |
|
| 1409 | - $js_default = $theme_js_settings[$active_theme]; |
|
| 1410 | - $js_default_backend = isset($theme_js_settings[$active_theme."_backend"]) ? $theme_js_settings[$active_theme."_backend"] : $js_default; |
|
| 1411 | - } |
|
| 1412 | - } |
|
| 1413 | - |
|
| 1414 | - $defaults = array( |
|
| 1415 | - 'css' => 'compatibility', // core, compatibility |
|
| 1416 | - 'js' => $js_default, // js to load, core-popper, popper |
|
| 1417 | - 'html_font_size' => '16', // js to load, core-popper, popper |
|
| 1418 | - 'css_backend' => 'compatibility', // core, compatibility |
|
| 1419 | - 'js_backend' => $js_default_backend, // js to load, core-popper, popper |
|
| 1420 | - 'disable_admin' => '', // URL snippets to disable loading on admin |
|
| 1421 | - ); |
|
| 1422 | - |
|
| 1423 | - $settings = wp_parse_args( $db_settings, $defaults ); |
|
| 1424 | - |
|
| 1425 | - /** |
|
| 1426 | - * Filter the Bootstrap settings. |
|
| 1427 | - * |
|
| 1428 | - * @todo if we add this filer people might use it and then it defeates the purpose of this class :/ |
|
| 1429 | - */ |
|
| 1430 | - return $this->settings = apply_filters( 'ayecode-ui-settings', $settings, $db_settings, $defaults ); |
|
| 1431 | - } |
|
| 1393 | + /** |
|
| 1394 | + * Get the current Font Awesome output settings. |
|
| 1395 | + * |
|
| 1396 | + * @return array The array of settings. |
|
| 1397 | + */ |
|
| 1398 | + public function get_settings() { |
|
| 1399 | + |
|
| 1400 | + $db_settings = get_option( 'ayecode-ui-settings' ); |
|
| 1401 | + $js_default = 'core-popper'; |
|
| 1402 | + $js_default_backend = $js_default; |
|
| 1403 | + |
|
| 1404 | + // maybe set defaults (if no settings set) |
|
| 1405 | + if(empty($db_settings)){ |
|
| 1406 | + $active_theme = strtolower( get_template() ); // active parent theme. |
|
| 1407 | + $theme_js_settings = self::theme_js_settings(); |
|
| 1408 | + if(isset($theme_js_settings[$active_theme])){ |
|
| 1409 | + $js_default = $theme_js_settings[$active_theme]; |
|
| 1410 | + $js_default_backend = isset($theme_js_settings[$active_theme."_backend"]) ? $theme_js_settings[$active_theme."_backend"] : $js_default; |
|
| 1411 | + } |
|
| 1412 | + } |
|
| 1413 | + |
|
| 1414 | + $defaults = array( |
|
| 1415 | + 'css' => 'compatibility', // core, compatibility |
|
| 1416 | + 'js' => $js_default, // js to load, core-popper, popper |
|
| 1417 | + 'html_font_size' => '16', // js to load, core-popper, popper |
|
| 1418 | + 'css_backend' => 'compatibility', // core, compatibility |
|
| 1419 | + 'js_backend' => $js_default_backend, // js to load, core-popper, popper |
|
| 1420 | + 'disable_admin' => '', // URL snippets to disable loading on admin |
|
| 1421 | + ); |
|
| 1422 | + |
|
| 1423 | + $settings = wp_parse_args( $db_settings, $defaults ); |
|
| 1424 | + |
|
| 1425 | + /** |
|
| 1426 | + * Filter the Bootstrap settings. |
|
| 1427 | + * |
|
| 1428 | + * @todo if we add this filer people might use it and then it defeates the purpose of this class :/ |
|
| 1429 | + */ |
|
| 1430 | + return $this->settings = apply_filters( 'ayecode-ui-settings', $settings, $db_settings, $defaults ); |
|
| 1431 | + } |
|
| 1432 | 1432 | |
| 1433 | 1433 | |
| 1434 | - /** |
|
| 1435 | - * The settings page html output. |
|
| 1436 | - */ |
|
| 1437 | - public function settings_page() { |
|
| 1438 | - if ( ! current_user_can( 'manage_options' ) ) { |
|
| 1439 | - wp_die( __( 'You do not have sufficient permissions to access this page.', 'aui' ) ); |
|
| 1440 | - } |
|
| 1441 | - ?> |
|
| 1434 | + /** |
|
| 1435 | + * The settings page html output. |
|
| 1436 | + */ |
|
| 1437 | + public function settings_page() { |
|
| 1438 | + if ( ! current_user_can( 'manage_options' ) ) { |
|
| 1439 | + wp_die( __( 'You do not have sufficient permissions to access this page.', 'aui' ) ); |
|
| 1440 | + } |
|
| 1441 | + ?> |
|
| 1442 | 1442 | <div class="wrap"> |
| 1443 | 1443 | <h1><?php echo $this->name; ?></h1> |
| 1444 | 1444 | <p><?php _e("Here you can adjust settings if you are having compatibility issues.",'aui');?></p> |
| 1445 | 1445 | <form method="post" action="options.php"> |
| 1446 | 1446 | <?php |
| 1447 | - settings_fields( 'ayecode-ui-settings' ); |
|
| 1448 | - do_settings_sections( 'ayecode-ui-settings' ); |
|
| 1449 | - ?> |
|
| 1447 | + settings_fields( 'ayecode-ui-settings' ); |
|
| 1448 | + do_settings_sections( 'ayecode-ui-settings' ); |
|
| 1449 | + ?> |
|
| 1450 | 1450 | |
| 1451 | 1451 | <h2><?php _e( 'Frontend', 'aui' ); ?></h2> |
| 1452 | 1452 | <table class="form-table wpbs-table-settings"> |
@@ -1526,60 +1526,60 @@ discard block |
||
| 1526 | 1526 | </table> |
| 1527 | 1527 | |
| 1528 | 1528 | <?php |
| 1529 | - submit_button(); |
|
| 1530 | - ?> |
|
| 1529 | + submit_button(); |
|
| 1530 | + ?> |
|
| 1531 | 1531 | </form> |
| 1532 | 1532 | |
| 1533 | 1533 | <div id="wpbs-version"><?php echo $this->version; ?></div> |
| 1534 | 1534 | </div> |
| 1535 | 1535 | |
| 1536 | 1536 | <?php |
| 1537 | - } |
|
| 1537 | + } |
|
| 1538 | 1538 | |
| 1539 | - public function customizer_settings($wp_customize){ |
|
| 1540 | - $wp_customize->add_section('aui_settings', array( |
|
| 1541 | - 'title' => __('AyeCode UI','aui'), |
|
| 1542 | - 'priority' => 120, |
|
| 1543 | - )); |
|
| 1544 | - |
|
| 1545 | - // ============================= |
|
| 1546 | - // = Color Picker = |
|
| 1547 | - // ============================= |
|
| 1548 | - $wp_customize->add_setting('aui_options[color_primary]', array( |
|
| 1549 | - 'default' => AUI_PRIMARY_COLOR, |
|
| 1550 | - 'sanitize_callback' => 'sanitize_hex_color', |
|
| 1551 | - 'capability' => 'edit_theme_options', |
|
| 1552 | - 'type' => 'option', |
|
| 1553 | - 'transport' => 'refresh', |
|
| 1554 | - )); |
|
| 1555 | - $wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_primary', array( |
|
| 1556 | - 'label' => __('Primary Color','aui'), |
|
| 1557 | - 'section' => 'aui_settings', |
|
| 1558 | - 'settings' => 'aui_options[color_primary]', |
|
| 1559 | - ))); |
|
| 1560 | - |
|
| 1561 | - $wp_customize->add_setting('aui_options[color_secondary]', array( |
|
| 1562 | - 'default' => '#6c757d', |
|
| 1563 | - 'sanitize_callback' => 'sanitize_hex_color', |
|
| 1564 | - 'capability' => 'edit_theme_options', |
|
| 1565 | - 'type' => 'option', |
|
| 1566 | - 'transport' => 'refresh', |
|
| 1567 | - )); |
|
| 1568 | - $wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_secondary', array( |
|
| 1569 | - 'label' => __('Secondary Color','aui'), |
|
| 1570 | - 'section' => 'aui_settings', |
|
| 1571 | - 'settings' => 'aui_options[color_secondary]', |
|
| 1572 | - ))); |
|
| 1573 | - } |
|
| 1539 | + public function customizer_settings($wp_customize){ |
|
| 1540 | + $wp_customize->add_section('aui_settings', array( |
|
| 1541 | + 'title' => __('AyeCode UI','aui'), |
|
| 1542 | + 'priority' => 120, |
|
| 1543 | + )); |
|
| 1544 | + |
|
| 1545 | + // ============================= |
|
| 1546 | + // = Color Picker = |
|
| 1547 | + // ============================= |
|
| 1548 | + $wp_customize->add_setting('aui_options[color_primary]', array( |
|
| 1549 | + 'default' => AUI_PRIMARY_COLOR, |
|
| 1550 | + 'sanitize_callback' => 'sanitize_hex_color', |
|
| 1551 | + 'capability' => 'edit_theme_options', |
|
| 1552 | + 'type' => 'option', |
|
| 1553 | + 'transport' => 'refresh', |
|
| 1554 | + )); |
|
| 1555 | + $wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_primary', array( |
|
| 1556 | + 'label' => __('Primary Color','aui'), |
|
| 1557 | + 'section' => 'aui_settings', |
|
| 1558 | + 'settings' => 'aui_options[color_primary]', |
|
| 1559 | + ))); |
|
| 1560 | + |
|
| 1561 | + $wp_customize->add_setting('aui_options[color_secondary]', array( |
|
| 1562 | + 'default' => '#6c757d', |
|
| 1563 | + 'sanitize_callback' => 'sanitize_hex_color', |
|
| 1564 | + 'capability' => 'edit_theme_options', |
|
| 1565 | + 'type' => 'option', |
|
| 1566 | + 'transport' => 'refresh', |
|
| 1567 | + )); |
|
| 1568 | + $wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_secondary', array( |
|
| 1569 | + 'label' => __('Secondary Color','aui'), |
|
| 1570 | + 'section' => 'aui_settings', |
|
| 1571 | + 'settings' => 'aui_options[color_secondary]', |
|
| 1572 | + ))); |
|
| 1573 | + } |
|
| 1574 | 1574 | |
| 1575 | - /** |
|
| 1576 | - * CSS to help with conflict issues with other plugins and themes using bootstrap v3. |
|
| 1577 | - * |
|
| 1578 | - * @return mixed |
|
| 1579 | - */ |
|
| 1580 | - public static function bs3_compat_css() { |
|
| 1581 | - ob_start(); |
|
| 1582 | - ?> |
|
| 1575 | + /** |
|
| 1576 | + * CSS to help with conflict issues with other plugins and themes using bootstrap v3. |
|
| 1577 | + * |
|
| 1578 | + * @return mixed |
|
| 1579 | + */ |
|
| 1580 | + public static function bs3_compat_css() { |
|
| 1581 | + ob_start(); |
|
| 1582 | + ?> |
|
| 1583 | 1583 | <style> |
| 1584 | 1584 | /* Bootstrap 3 compatibility */ |
| 1585 | 1585 | body.modal-open .modal-backdrop.show:not(.in) {opacity:0.5;} |
@@ -1608,583 +1608,583 @@ discard block |
||
| 1608 | 1608 | <?php } ?> |
| 1609 | 1609 | </style> |
| 1610 | 1610 | <?php |
| 1611 | - return str_replace( array( |
|
| 1612 | - '<style>', |
|
| 1613 | - '</style>' |
|
| 1614 | - ), '', self::minify_css( ob_get_clean() ) ); |
|
| 1615 | - } |
|
| 1611 | + return str_replace( array( |
|
| 1612 | + '<style>', |
|
| 1613 | + '</style>' |
|
| 1614 | + ), '', self::minify_css( ob_get_clean() ) ); |
|
| 1615 | + } |
|
| 1616 | 1616 | |
| 1617 | 1617 | |
| 1618 | - public static function custom_css($compatibility = true) { |
|
| 1619 | - $settings = get_option('aui_options'); |
|
| 1618 | + public static function custom_css($compatibility = true) { |
|
| 1619 | + $settings = get_option('aui_options'); |
|
| 1620 | 1620 | |
| 1621 | - ob_start(); |
|
| 1621 | + ob_start(); |
|
| 1622 | 1622 | |
| 1623 | - $primary_color = !empty($settings['color_primary']) ? $settings['color_primary'] : AUI_PRIMARY_COLOR; |
|
| 1624 | - $secondary_color = !empty($settings['color_secondary']) ? $settings['color_secondary'] : AUI_SECONDARY_COLOR; |
|
| 1625 | - //AUI_PRIMARY_COLOR_ORIGINAL |
|
| 1626 | - ?> |
|
| 1623 | + $primary_color = !empty($settings['color_primary']) ? $settings['color_primary'] : AUI_PRIMARY_COLOR; |
|
| 1624 | + $secondary_color = !empty($settings['color_secondary']) ? $settings['color_secondary'] : AUI_SECONDARY_COLOR; |
|
| 1625 | + //AUI_PRIMARY_COLOR_ORIGINAL |
|
| 1626 | + ?> |
|
| 1627 | 1627 | <style> |
| 1628 | 1628 | <?php |
| 1629 | 1629 | |
| 1630 | - // BS v3 compat |
|
| 1631 | - if( self::is_bs3_compat() ){ |
|
| 1632 | - echo self::bs3_compat_css(); |
|
| 1633 | - } |
|
| 1630 | + // BS v3 compat |
|
| 1631 | + if( self::is_bs3_compat() ){ |
|
| 1632 | + echo self::bs3_compat_css(); |
|
| 1633 | + } |
|
| 1634 | 1634 | |
| 1635 | - if(!is_admin() && $primary_color != AUI_PRIMARY_COLOR_ORIGINAL){ |
|
| 1636 | - echo self::css_primary($primary_color,$compatibility); |
|
| 1637 | - } |
|
| 1635 | + if(!is_admin() && $primary_color != AUI_PRIMARY_COLOR_ORIGINAL){ |
|
| 1636 | + echo self::css_primary($primary_color,$compatibility); |
|
| 1637 | + } |
|
| 1638 | 1638 | |
| 1639 | - if(!is_admin() && $secondary_color != AUI_SECONDARY_COLOR_ORIGINAL){ |
|
| 1640 | - echo self::css_secondary($settings['color_secondary'],$compatibility); |
|
| 1641 | - } |
|
| 1639 | + if(!is_admin() && $secondary_color != AUI_SECONDARY_COLOR_ORIGINAL){ |
|
| 1640 | + echo self::css_secondary($settings['color_secondary'],$compatibility); |
|
| 1641 | + } |
|
| 1642 | 1642 | |
| 1643 | - // Set admin bar z-index lower when modal is open. |
|
| 1644 | - echo ' body.modal-open #wpadminbar{z-index:999}.embed-responsive-16by9 .fluid-width-video-wrapper{padding:0 !important;position:initial}'; |
|
| 1643 | + // Set admin bar z-index lower when modal is open. |
|
| 1644 | + echo ' body.modal-open #wpadminbar{z-index:999}.embed-responsive-16by9 .fluid-width-video-wrapper{padding:0 !important;position:initial}'; |
|
| 1645 | 1645 | |
| 1646 | - if(is_admin()){ |
|
| 1647 | - echo ' body.modal-open #adminmenuwrap{z-index:999} body.modal-open #wpadminbar{z-index:1025}'; |
|
| 1648 | - } |
|
| 1646 | + if(is_admin()){ |
|
| 1647 | + echo ' body.modal-open #adminmenuwrap{z-index:999} body.modal-open #wpadminbar{z-index:1025}'; |
|
| 1648 | + } |
|
| 1649 | 1649 | ?> |
| 1650 | 1650 | </style> |
| 1651 | 1651 | <?php |
| 1652 | 1652 | |
| 1653 | 1653 | |
| 1654 | - /* |
|
| 1654 | + /* |
|
| 1655 | 1655 | * We only add the <script> tags for code highlighting, so we strip them from the output. |
| 1656 | 1656 | */ |
| 1657 | - return str_replace( array( |
|
| 1658 | - '<style>', |
|
| 1659 | - '</style>' |
|
| 1660 | - ), '', self::minify_css( ob_get_clean() ) ); |
|
| 1661 | - } |
|
| 1657 | + return str_replace( array( |
|
| 1658 | + '<style>', |
|
| 1659 | + '</style>' |
|
| 1660 | + ), '', self::minify_css( ob_get_clean() ) ); |
|
| 1661 | + } |
|
| 1662 | 1662 | |
| 1663 | - /** |
|
| 1664 | - * Check if we should add booststrap 3 compatibility changes. |
|
| 1665 | - * |
|
| 1666 | - * @return bool |
|
| 1667 | - */ |
|
| 1668 | - public static function is_bs3_compat(){ |
|
| 1669 | - return defined('AYECODE_UI_BS3_COMPAT') || defined('SVQ_THEME_VERSION') || defined('FUSION_BUILDER_VERSION'); |
|
| 1670 | - } |
|
| 1663 | + /** |
|
| 1664 | + * Check if we should add booststrap 3 compatibility changes. |
|
| 1665 | + * |
|
| 1666 | + * @return bool |
|
| 1667 | + */ |
|
| 1668 | + public static function is_bs3_compat(){ |
|
| 1669 | + return defined('AYECODE_UI_BS3_COMPAT') || defined('SVQ_THEME_VERSION') || defined('FUSION_BUILDER_VERSION'); |
|
| 1670 | + } |
|
| 1671 | 1671 | |
| 1672 | - public static function css_primary($color_code,$compatibility){; |
|
| 1673 | - $color_code = sanitize_hex_color($color_code); |
|
| 1674 | - if(!$color_code){return '';} |
|
| 1675 | - /** |
|
| 1676 | - * c = color, b = background color, o = border-color, f = fill |
|
| 1677 | - */ |
|
| 1678 | - $selectors = array( |
|
| 1679 | - 'a' => array('c'), |
|
| 1680 | - '.btn-primary' => array('b','o'), |
|
| 1681 | - '.btn-primary.disabled' => array('b','o'), |
|
| 1682 | - '.btn-primary:disabled' => array('b','o'), |
|
| 1683 | - '.btn-outline-primary' => array('c','o'), |
|
| 1684 | - '.btn-outline-primary:hover' => array('b','o'), |
|
| 1685 | - '.btn-outline-primary:not(:disabled):not(.disabled).active' => array('b','o'), |
|
| 1686 | - '.btn-outline-primary:not(:disabled):not(.disabled):active' => array('b','o'), |
|
| 1687 | - '.show>.btn-outline-primary.dropdown-toggle' => array('b','o'), |
|
| 1688 | - '.btn-link' => array('c'), |
|
| 1689 | - '.dropdown-item.active' => array('b'), |
|
| 1690 | - '.custom-control-input:checked~.custom-control-label::before' => array('b','o'), |
|
| 1691 | - '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before' => array('b','o'), |
|
| 1672 | + public static function css_primary($color_code,$compatibility){; |
|
| 1673 | + $color_code = sanitize_hex_color($color_code); |
|
| 1674 | + if(!$color_code){return '';} |
|
| 1675 | + /** |
|
| 1676 | + * c = color, b = background color, o = border-color, f = fill |
|
| 1677 | + */ |
|
| 1678 | + $selectors = array( |
|
| 1679 | + 'a' => array('c'), |
|
| 1680 | + '.btn-primary' => array('b','o'), |
|
| 1681 | + '.btn-primary.disabled' => array('b','o'), |
|
| 1682 | + '.btn-primary:disabled' => array('b','o'), |
|
| 1683 | + '.btn-outline-primary' => array('c','o'), |
|
| 1684 | + '.btn-outline-primary:hover' => array('b','o'), |
|
| 1685 | + '.btn-outline-primary:not(:disabled):not(.disabled).active' => array('b','o'), |
|
| 1686 | + '.btn-outline-primary:not(:disabled):not(.disabled):active' => array('b','o'), |
|
| 1687 | + '.show>.btn-outline-primary.dropdown-toggle' => array('b','o'), |
|
| 1688 | + '.btn-link' => array('c'), |
|
| 1689 | + '.dropdown-item.active' => array('b'), |
|
| 1690 | + '.custom-control-input:checked~.custom-control-label::before' => array('b','o'), |
|
| 1691 | + '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before' => array('b','o'), |
|
| 1692 | 1692 | // '.custom-range::-webkit-slider-thumb' => array('b'), // these break the inline rules... |
| 1693 | 1693 | // '.custom-range::-moz-range-thumb' => array('b'), |
| 1694 | 1694 | // '.custom-range::-ms-thumb' => array('b'), |
| 1695 | - '.nav-pills .nav-link.active' => array('b'), |
|
| 1696 | - '.nav-pills .show>.nav-link' => array('b'), |
|
| 1697 | - '.page-link' => array('c'), |
|
| 1698 | - '.page-item.active .page-link' => array('b','o'), |
|
| 1699 | - '.badge-primary' => array('b'), |
|
| 1700 | - '.alert-primary' => array('b','o'), |
|
| 1701 | - '.progress-bar' => array('b'), |
|
| 1702 | - '.list-group-item.active' => array('b','o'), |
|
| 1703 | - '.bg-primary' => array('b','f'), |
|
| 1704 | - '.btn-link.btn-primary' => array('c'), |
|
| 1705 | - '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array('b'), |
|
| 1706 | - ); |
|
| 1707 | - |
|
| 1708 | - $important_selectors = array( |
|
| 1709 | - '.bg-primary' => array('b','f'), |
|
| 1710 | - '.border-primary' => array('o'), |
|
| 1711 | - '.text-primary' => array('c'), |
|
| 1712 | - ); |
|
| 1713 | - |
|
| 1714 | - $color = array(); |
|
| 1715 | - $color_i = array(); |
|
| 1716 | - $background = array(); |
|
| 1717 | - $background_i = array(); |
|
| 1718 | - $border = array(); |
|
| 1719 | - $border_i = array(); |
|
| 1720 | - $fill = array(); |
|
| 1721 | - $fill_i = array(); |
|
| 1722 | - |
|
| 1723 | - $output = ''; |
|
| 1724 | - |
|
| 1725 | - // build rules into each type |
|
| 1726 | - foreach($selectors as $selector => $types){ |
|
| 1727 | - $selector = $compatibility ? ".bsui ".$selector : $selector; |
|
| 1728 | - $types = array_combine($types,$types); |
|
| 1729 | - if(isset($types['c'])){$color[] = $selector;} |
|
| 1730 | - if(isset($types['b'])){$background[] = $selector;} |
|
| 1731 | - if(isset($types['o'])){$border[] = $selector;} |
|
| 1732 | - if(isset($types['f'])){$fill[] = $selector;} |
|
| 1733 | - } |
|
| 1734 | - |
|
| 1735 | - // build rules into each type |
|
| 1736 | - foreach($important_selectors as $selector => $types){ |
|
| 1737 | - $selector = $compatibility ? ".bsui ".$selector : $selector; |
|
| 1738 | - $types = array_combine($types,$types); |
|
| 1739 | - if(isset($types['c'])){$color_i[] = $selector;} |
|
| 1740 | - if(isset($types['b'])){$background_i[] = $selector;} |
|
| 1741 | - if(isset($types['o'])){$border_i[] = $selector;} |
|
| 1742 | - if(isset($types['f'])){$fill_i[] = $selector;} |
|
| 1743 | - } |
|
| 1744 | - |
|
| 1745 | - // add any color rules |
|
| 1746 | - if(!empty($color)){ |
|
| 1747 | - $output .= implode(",",$color) . "{color: $color_code;} "; |
|
| 1748 | - } |
|
| 1749 | - if(!empty($color_i)){ |
|
| 1750 | - $output .= implode(",",$color_i) . "{color: $color_code !important;} "; |
|
| 1751 | - } |
|
| 1752 | - |
|
| 1753 | - // add any background color rules |
|
| 1754 | - if(!empty($background)){ |
|
| 1755 | - $output .= implode(",",$background) . "{background-color: $color_code;} "; |
|
| 1756 | - } |
|
| 1757 | - if(!empty($background_i)){ |
|
| 1758 | - $output .= implode(",",$background_i) . "{background-color: $color_code !important;} "; |
|
| 1759 | - } |
|
| 1760 | - |
|
| 1761 | - // add any border color rules |
|
| 1762 | - if(!empty($border)){ |
|
| 1763 | - $output .= implode(",",$border) . "{border-color: $color_code;} "; |
|
| 1764 | - } |
|
| 1765 | - if(!empty($border_i)){ |
|
| 1766 | - $output .= implode(",",$border_i) . "{border-color: $color_code !important;} "; |
|
| 1767 | - } |
|
| 1768 | - |
|
| 1769 | - // add any fill color rules |
|
| 1770 | - if(!empty($fill)){ |
|
| 1771 | - $output .= implode(",",$fill) . "{fill: $color_code;} "; |
|
| 1772 | - } |
|
| 1773 | - if(!empty($fill_i)){ |
|
| 1774 | - $output .= implode(",",$fill_i) . "{fill: $color_code !important;} "; |
|
| 1775 | - } |
|
| 1776 | - |
|
| 1777 | - |
|
| 1778 | - $prefix = $compatibility ? ".bsui " : ""; |
|
| 1779 | - |
|
| 1780 | - // darken |
|
| 1781 | - $darker_075 = self::css_hex_lighten_darken($color_code,"-0.075"); |
|
| 1782 | - $darker_10 = self::css_hex_lighten_darken($color_code,"-0.10"); |
|
| 1783 | - $darker_125 = self::css_hex_lighten_darken($color_code,"-0.125"); |
|
| 1784 | - |
|
| 1785 | - // lighten |
|
| 1786 | - $lighten_25 = self::css_hex_lighten_darken($color_code,"0.25"); |
|
| 1787 | - |
|
| 1788 | - // opacity see https://css-tricks.com/8-digit-hex-codes/ |
|
| 1789 | - $op_25 = $color_code."40"; // 25% opacity |
|
| 1790 | - |
|
| 1791 | - |
|
| 1792 | - // button states |
|
| 1793 | - $output .= $prefix ." .btn-primary:hover, $prefix .btn-primary:focus, $prefix .btn-primary.focus{background-color: ".$darker_075."; border-color: ".$darker_10.";} "; |
|
| 1794 | - $output .= $prefix ." .btn-outline-primary:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-primary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-primary.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1795 | - $output .= $prefix ." .btn-primary:not(:disabled):not(.disabled):active, $prefix .btn-primary:not(:disabled):not(.disabled).active, .show>$prefix .btn-primary.dropdown-toggle{background-color: ".$darker_10."; border-color: ".$darker_125.";} "; |
|
| 1796 | - $output .= $prefix ." .btn-primary:not(:disabled):not(.disabled):active:focus, $prefix .btn-primary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-primary.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1797 | - |
|
| 1798 | - |
|
| 1799 | - // dropdown's |
|
| 1800 | - $output .= $prefix ." .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} "; |
|
| 1801 | - |
|
| 1802 | - |
|
| 1803 | - // input states |
|
| 1804 | - $output .= $prefix ." .form-control:focus{border-color: ".$lighten_25.";box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1805 | - |
|
| 1806 | - // page link |
|
| 1807 | - $output .= $prefix ." .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1808 | - |
|
| 1809 | - return $output; |
|
| 1810 | - } |
|
| 1695 | + '.nav-pills .nav-link.active' => array('b'), |
|
| 1696 | + '.nav-pills .show>.nav-link' => array('b'), |
|
| 1697 | + '.page-link' => array('c'), |
|
| 1698 | + '.page-item.active .page-link' => array('b','o'), |
|
| 1699 | + '.badge-primary' => array('b'), |
|
| 1700 | + '.alert-primary' => array('b','o'), |
|
| 1701 | + '.progress-bar' => array('b'), |
|
| 1702 | + '.list-group-item.active' => array('b','o'), |
|
| 1703 | + '.bg-primary' => array('b','f'), |
|
| 1704 | + '.btn-link.btn-primary' => array('c'), |
|
| 1705 | + '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array('b'), |
|
| 1706 | + ); |
|
| 1707 | + |
|
| 1708 | + $important_selectors = array( |
|
| 1709 | + '.bg-primary' => array('b','f'), |
|
| 1710 | + '.border-primary' => array('o'), |
|
| 1711 | + '.text-primary' => array('c'), |
|
| 1712 | + ); |
|
| 1713 | + |
|
| 1714 | + $color = array(); |
|
| 1715 | + $color_i = array(); |
|
| 1716 | + $background = array(); |
|
| 1717 | + $background_i = array(); |
|
| 1718 | + $border = array(); |
|
| 1719 | + $border_i = array(); |
|
| 1720 | + $fill = array(); |
|
| 1721 | + $fill_i = array(); |
|
| 1722 | + |
|
| 1723 | + $output = ''; |
|
| 1724 | + |
|
| 1725 | + // build rules into each type |
|
| 1726 | + foreach($selectors as $selector => $types){ |
|
| 1727 | + $selector = $compatibility ? ".bsui ".$selector : $selector; |
|
| 1728 | + $types = array_combine($types,$types); |
|
| 1729 | + if(isset($types['c'])){$color[] = $selector;} |
|
| 1730 | + if(isset($types['b'])){$background[] = $selector;} |
|
| 1731 | + if(isset($types['o'])){$border[] = $selector;} |
|
| 1732 | + if(isset($types['f'])){$fill[] = $selector;} |
|
| 1733 | + } |
|
| 1811 | 1734 | |
| 1812 | - public static function css_secondary($color_code,$compatibility){; |
|
| 1813 | - $color_code = sanitize_hex_color($color_code); |
|
| 1814 | - if(!$color_code){return '';} |
|
| 1815 | - /** |
|
| 1816 | - * c = color, b = background color, o = border-color, f = fill |
|
| 1817 | - */ |
|
| 1818 | - $selectors = array( |
|
| 1819 | - '.btn-secondary' => array('b','o'), |
|
| 1820 | - '.btn-secondary.disabled' => array('b','o'), |
|
| 1821 | - '.btn-secondary:disabled' => array('b','o'), |
|
| 1822 | - '.btn-outline-secondary' => array('c','o'), |
|
| 1823 | - '.btn-outline-secondary:hover' => array('b','o'), |
|
| 1824 | - '.btn-outline-secondary.disabled' => array('c'), |
|
| 1825 | - '.btn-outline-secondary:disabled' => array('c'), |
|
| 1826 | - '.btn-outline-secondary:not(:disabled):not(.disabled):active' => array('b','o'), |
|
| 1827 | - '.btn-outline-secondary:not(:disabled):not(.disabled).active' => array('b','o'), |
|
| 1828 | - '.btn-outline-secondary.dropdown-toggle' => array('b','o'), |
|
| 1829 | - '.badge-secondary' => array('b'), |
|
| 1830 | - '.alert-secondary' => array('b','o'), |
|
| 1831 | - '.btn-link.btn-secondary' => array('c'), |
|
| 1832 | - ); |
|
| 1833 | - |
|
| 1834 | - $important_selectors = array( |
|
| 1835 | - '.bg-secondary' => array('b','f'), |
|
| 1836 | - '.border-secondary' => array('o'), |
|
| 1837 | - '.text-secondary' => array('c'), |
|
| 1838 | - ); |
|
| 1839 | - |
|
| 1840 | - $color = array(); |
|
| 1841 | - $color_i = array(); |
|
| 1842 | - $background = array(); |
|
| 1843 | - $background_i = array(); |
|
| 1844 | - $border = array(); |
|
| 1845 | - $border_i = array(); |
|
| 1846 | - $fill = array(); |
|
| 1847 | - $fill_i = array(); |
|
| 1848 | - |
|
| 1849 | - $output = ''; |
|
| 1850 | - |
|
| 1851 | - // build rules into each type |
|
| 1852 | - foreach($selectors as $selector => $types){ |
|
| 1853 | - $selector = $compatibility ? ".bsui ".$selector : $selector; |
|
| 1854 | - $types = array_combine($types,$types); |
|
| 1855 | - if(isset($types['c'])){$color[] = $selector;} |
|
| 1856 | - if(isset($types['b'])){$background[] = $selector;} |
|
| 1857 | - if(isset($types['o'])){$border[] = $selector;} |
|
| 1858 | - if(isset($types['f'])){$fill[] = $selector;} |
|
| 1859 | - } |
|
| 1860 | - |
|
| 1861 | - // build rules into each type |
|
| 1862 | - foreach($important_selectors as $selector => $types){ |
|
| 1863 | - $selector = $compatibility ? ".bsui ".$selector : $selector; |
|
| 1864 | - $types = array_combine($types,$types); |
|
| 1865 | - if(isset($types['c'])){$color_i[] = $selector;} |
|
| 1866 | - if(isset($types['b'])){$background_i[] = $selector;} |
|
| 1867 | - if(isset($types['o'])){$border_i[] = $selector;} |
|
| 1868 | - if(isset($types['f'])){$fill_i[] = $selector;} |
|
| 1869 | - } |
|
| 1870 | - |
|
| 1871 | - // add any color rules |
|
| 1872 | - if(!empty($color)){ |
|
| 1873 | - $output .= implode(",",$color) . "{color: $color_code;} "; |
|
| 1874 | - } |
|
| 1875 | - if(!empty($color_i)){ |
|
| 1876 | - $output .= implode(",",$color_i) . "{color: $color_code !important;} "; |
|
| 1877 | - } |
|
| 1878 | - |
|
| 1879 | - // add any background color rules |
|
| 1880 | - if(!empty($background)){ |
|
| 1881 | - $output .= implode(",",$background) . "{background-color: $color_code;} "; |
|
| 1882 | - } |
|
| 1883 | - if(!empty($background_i)){ |
|
| 1884 | - $output .= implode(",",$background_i) . "{background-color: $color_code !important;} "; |
|
| 1885 | - } |
|
| 1886 | - |
|
| 1887 | - // add any border color rules |
|
| 1888 | - if(!empty($border)){ |
|
| 1889 | - $output .= implode(",",$border) . "{border-color: $color_code;} "; |
|
| 1890 | - } |
|
| 1891 | - if(!empty($border_i)){ |
|
| 1892 | - $output .= implode(",",$border_i) . "{border-color: $color_code !important;} "; |
|
| 1893 | - } |
|
| 1894 | - |
|
| 1895 | - // add any fill color rules |
|
| 1896 | - if(!empty($fill)){ |
|
| 1897 | - $output .= implode(",",$fill) . "{fill: $color_code;} "; |
|
| 1898 | - } |
|
| 1899 | - if(!empty($fill_i)){ |
|
| 1900 | - $output .= implode(",",$fill_i) . "{fill: $color_code !important;} "; |
|
| 1901 | - } |
|
| 1902 | - |
|
| 1903 | - |
|
| 1904 | - $prefix = $compatibility ? ".bsui " : ""; |
|
| 1905 | - |
|
| 1906 | - // darken |
|
| 1907 | - $darker_075 = self::css_hex_lighten_darken($color_code,"-0.075"); |
|
| 1908 | - $darker_10 = self::css_hex_lighten_darken($color_code,"-0.10"); |
|
| 1909 | - $darker_125 = self::css_hex_lighten_darken($color_code,"-0.125"); |
|
| 1910 | - |
|
| 1911 | - // lighten |
|
| 1912 | - $lighten_25 = self::css_hex_lighten_darken($color_code,"0.25"); |
|
| 1913 | - |
|
| 1914 | - // opacity see https://css-tricks.com/8-digit-hex-codes/ |
|
| 1915 | - $op_25 = $color_code."40"; // 25% opacity |
|
| 1916 | - |
|
| 1917 | - |
|
| 1918 | - // button states |
|
| 1919 | - $output .= $prefix ." .btn-secondary:hover{background-color: ".$darker_075."; border-color: ".$darker_10.";} "; |
|
| 1920 | - $output .= $prefix ." .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-secondary.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1921 | - $output .= $prefix ." .btn-secondary:not(:disabled):not(.disabled):active, $prefix .btn-secondary:not(:disabled):not(.disabled).active, .show>$prefix .btn-secondary.dropdown-toggle{background-color: ".$darker_10."; border-color: ".$darker_125.";} "; |
|
| 1922 | - $output .= $prefix ." .btn-secondary:not(:disabled):not(.disabled):active:focus, $prefix .btn-secondary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-secondary.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1923 | - |
|
| 1924 | - |
|
| 1925 | - return $output; |
|
| 1926 | - } |
|
| 1735 | + // build rules into each type |
|
| 1736 | + foreach($important_selectors as $selector => $types){ |
|
| 1737 | + $selector = $compatibility ? ".bsui ".$selector : $selector; |
|
| 1738 | + $types = array_combine($types,$types); |
|
| 1739 | + if(isset($types['c'])){$color_i[] = $selector;} |
|
| 1740 | + if(isset($types['b'])){$background_i[] = $selector;} |
|
| 1741 | + if(isset($types['o'])){$border_i[] = $selector;} |
|
| 1742 | + if(isset($types['f'])){$fill_i[] = $selector;} |
|
| 1743 | + } |
|
| 1927 | 1744 | |
| 1928 | - /** |
|
| 1929 | - * Increases or decreases the brightness of a color by a percentage of the current brightness. |
|
| 1930 | - * |
|
| 1931 | - * @param string $hexCode Supported formats: `#FFF`, `#FFFFFF`, `FFF`, `FFFFFF` |
|
| 1932 | - * @param float $adjustPercent A number between -1 and 1. E.g. 0.3 = 30% lighter; -0.4 = 40% darker. |
|
| 1933 | - * |
|
| 1934 | - * @return string |
|
| 1935 | - */ |
|
| 1936 | - public static function css_hex_lighten_darken($hexCode, $adjustPercent) { |
|
| 1937 | - $hexCode = ltrim($hexCode, '#'); |
|
| 1745 | + // add any color rules |
|
| 1746 | + if(!empty($color)){ |
|
| 1747 | + $output .= implode(",",$color) . "{color: $color_code;} "; |
|
| 1748 | + } |
|
| 1749 | + if(!empty($color_i)){ |
|
| 1750 | + $output .= implode(",",$color_i) . "{color: $color_code !important;} "; |
|
| 1751 | + } |
|
| 1938 | 1752 | |
| 1939 | - if (strlen($hexCode) == 3) { |
|
| 1940 | - $hexCode = $hexCode[0] . $hexCode[0] . $hexCode[1] . $hexCode[1] . $hexCode[2] . $hexCode[2]; |
|
| 1941 | - } |
|
| 1753 | + // add any background color rules |
|
| 1754 | + if(!empty($background)){ |
|
| 1755 | + $output .= implode(",",$background) . "{background-color: $color_code;} "; |
|
| 1756 | + } |
|
| 1757 | + if(!empty($background_i)){ |
|
| 1758 | + $output .= implode(",",$background_i) . "{background-color: $color_code !important;} "; |
|
| 1759 | + } |
|
| 1942 | 1760 | |
| 1943 | - $hexCode = array_map('hexdec', str_split($hexCode, 2)); |
|
| 1761 | + // add any border color rules |
|
| 1762 | + if(!empty($border)){ |
|
| 1763 | + $output .= implode(",",$border) . "{border-color: $color_code;} "; |
|
| 1764 | + } |
|
| 1765 | + if(!empty($border_i)){ |
|
| 1766 | + $output .= implode(",",$border_i) . "{border-color: $color_code !important;} "; |
|
| 1767 | + } |
|
| 1944 | 1768 | |
| 1945 | - foreach ($hexCode as & $color) { |
|
| 1946 | - $adjustableLimit = $adjustPercent < 0 ? $color : 255 - $color; |
|
| 1947 | - $adjustAmount = ceil($adjustableLimit * $adjustPercent); |
|
| 1769 | + // add any fill color rules |
|
| 1770 | + if(!empty($fill)){ |
|
| 1771 | + $output .= implode(",",$fill) . "{fill: $color_code;} "; |
|
| 1772 | + } |
|
| 1773 | + if(!empty($fill_i)){ |
|
| 1774 | + $output .= implode(",",$fill_i) . "{fill: $color_code !important;} "; |
|
| 1775 | + } |
|
| 1948 | 1776 | |
| 1949 | - $color = str_pad(dechex($color + $adjustAmount), 2, '0', STR_PAD_LEFT); |
|
| 1950 | - } |
|
| 1951 | 1777 | |
| 1952 | - return '#' . implode($hexCode); |
|
| 1953 | - } |
|
| 1778 | + $prefix = $compatibility ? ".bsui " : ""; |
|
| 1954 | 1779 | |
| 1955 | - /** |
|
| 1956 | - * Check if we should display examples. |
|
| 1957 | - */ |
|
| 1958 | - public function maybe_show_examples(){ |
|
| 1959 | - if(current_user_can('manage_options') && isset($_REQUEST['preview-aui'])){ |
|
| 1960 | - echo "<head>"; |
|
| 1961 | - wp_head(); |
|
| 1962 | - echo "</head>"; |
|
| 1963 | - echo "<body>"; |
|
| 1964 | - echo $this->get_examples(); |
|
| 1965 | - echo "</body>"; |
|
| 1966 | - exit; |
|
| 1967 | - } |
|
| 1968 | - } |
|
| 1780 | + // darken |
|
| 1781 | + $darker_075 = self::css_hex_lighten_darken($color_code,"-0.075"); |
|
| 1782 | + $darker_10 = self::css_hex_lighten_darken($color_code,"-0.10"); |
|
| 1783 | + $darker_125 = self::css_hex_lighten_darken($color_code,"-0.125"); |
|
| 1969 | 1784 | |
| 1970 | - /** |
|
| 1971 | - * Get developer examples. |
|
| 1972 | - * |
|
| 1973 | - * @return string |
|
| 1974 | - */ |
|
| 1975 | - public function get_examples(){ |
|
| 1976 | - $output = ''; |
|
| 1977 | - |
|
| 1978 | - |
|
| 1979 | - // open form |
|
| 1980 | - $output .= "<form class='p-5 m-5 border rounded'>"; |
|
| 1981 | - |
|
| 1982 | - // input example |
|
| 1983 | - $output .= aui()->input(array( |
|
| 1984 | - 'type' => 'text', |
|
| 1985 | - 'id' => 'text-example', |
|
| 1986 | - 'name' => 'text-example', |
|
| 1987 | - 'placeholder' => 'text placeholder', |
|
| 1988 | - 'title' => 'Text input example', |
|
| 1989 | - 'value' => '', |
|
| 1990 | - 'required' => false, |
|
| 1991 | - 'help_text' => 'help text', |
|
| 1992 | - 'label' => 'Text input example label' |
|
| 1993 | - )); |
|
| 1994 | - |
|
| 1995 | - // input example |
|
| 1996 | - $output .= aui()->input(array( |
|
| 1997 | - 'type' => 'url', |
|
| 1998 | - 'id' => 'text-example2', |
|
| 1999 | - 'name' => 'text-example', |
|
| 2000 | - 'placeholder' => 'url placeholder', |
|
| 2001 | - 'title' => 'Text input example', |
|
| 2002 | - 'value' => '', |
|
| 2003 | - 'required' => false, |
|
| 2004 | - 'help_text' => 'help text', |
|
| 2005 | - 'label' => 'Text input example label' |
|
| 2006 | - )); |
|
| 2007 | - |
|
| 2008 | - // checkbox example |
|
| 2009 | - $output .= aui()->input(array( |
|
| 2010 | - 'type' => 'checkbox', |
|
| 2011 | - 'id' => 'checkbox-example', |
|
| 2012 | - 'name' => 'checkbox-example', |
|
| 2013 | - 'placeholder' => 'checkbox-example', |
|
| 2014 | - 'title' => 'Checkbox example', |
|
| 2015 | - 'value' => '1', |
|
| 2016 | - 'checked' => true, |
|
| 2017 | - 'required' => false, |
|
| 2018 | - 'help_text' => 'help text', |
|
| 2019 | - 'label' => 'Checkbox checked' |
|
| 2020 | - )); |
|
| 2021 | - |
|
| 2022 | - // checkbox example |
|
| 2023 | - $output .= aui()->input(array( |
|
| 2024 | - 'type' => 'checkbox', |
|
| 2025 | - 'id' => 'checkbox-example2', |
|
| 2026 | - 'name' => 'checkbox-example2', |
|
| 2027 | - 'placeholder' => 'checkbox-example', |
|
| 2028 | - 'title' => 'Checkbox example', |
|
| 2029 | - 'value' => '1', |
|
| 2030 | - 'checked' => false, |
|
| 2031 | - 'required' => false, |
|
| 2032 | - 'help_text' => 'help text', |
|
| 2033 | - 'label' => 'Checkbox un-checked' |
|
| 2034 | - )); |
|
| 2035 | - |
|
| 2036 | - // switch example |
|
| 2037 | - $output .= aui()->input(array( |
|
| 2038 | - 'type' => 'checkbox', |
|
| 2039 | - 'id' => 'switch-example', |
|
| 2040 | - 'name' => 'switch-example', |
|
| 2041 | - 'placeholder' => 'checkbox-example', |
|
| 2042 | - 'title' => 'Switch example', |
|
| 2043 | - 'value' => '1', |
|
| 2044 | - 'checked' => true, |
|
| 2045 | - 'switch' => true, |
|
| 2046 | - 'required' => false, |
|
| 2047 | - 'help_text' => 'help text', |
|
| 2048 | - 'label' => 'Switch on' |
|
| 2049 | - )); |
|
| 2050 | - |
|
| 2051 | - // switch example |
|
| 2052 | - $output .= aui()->input(array( |
|
| 2053 | - 'type' => 'checkbox', |
|
| 2054 | - 'id' => 'switch-example2', |
|
| 2055 | - 'name' => 'switch-example2', |
|
| 2056 | - 'placeholder' => 'checkbox-example', |
|
| 2057 | - 'title' => 'Switch example', |
|
| 2058 | - 'value' => '1', |
|
| 2059 | - 'checked' => false, |
|
| 2060 | - 'switch' => true, |
|
| 2061 | - 'required' => false, |
|
| 2062 | - 'help_text' => 'help text', |
|
| 2063 | - 'label' => 'Switch off' |
|
| 2064 | - )); |
|
| 2065 | - |
|
| 2066 | - // close form |
|
| 2067 | - $output .= "</form>"; |
|
| 2068 | - |
|
| 2069 | - return $output; |
|
| 2070 | - } |
|
| 1785 | + // lighten |
|
| 1786 | + $lighten_25 = self::css_hex_lighten_darken($color_code,"0.25"); |
|
| 2071 | 1787 | |
| 2072 | - /** |
|
| 2073 | - * Calendar params. |
|
| 2074 | - * |
|
| 2075 | - * @since 0.1.44 |
|
| 2076 | - * |
|
| 2077 | - * @return array Calendar params. |
|
| 2078 | - */ |
|
| 2079 | - public static function calendar_params() { |
|
| 2080 | - $params = array( |
|
| 2081 | - 'month_long_1' => __( 'January', 'aui' ), |
|
| 2082 | - 'month_long_2' => __( 'February', 'aui' ), |
|
| 2083 | - 'month_long_3' => __( 'March', 'aui' ), |
|
| 2084 | - 'month_long_4' => __( 'April', 'aui' ), |
|
| 2085 | - 'month_long_5' => __( 'May', 'aui' ), |
|
| 2086 | - 'month_long_6' => __( 'June', 'aui' ), |
|
| 2087 | - 'month_long_7' => __( 'July', 'aui' ), |
|
| 2088 | - 'month_long_8' => __( 'August', 'aui' ), |
|
| 2089 | - 'month_long_9' => __( 'September', 'aui' ), |
|
| 2090 | - 'month_long_10' => __( 'October', 'aui' ), |
|
| 2091 | - 'month_long_11' => __( 'November', 'aui' ), |
|
| 2092 | - 'month_long_12' => __( 'December', 'aui' ), |
|
| 2093 | - 'month_s_1' => _x( 'Jan', 'January abbreviation', 'aui' ), |
|
| 2094 | - 'month_s_2' => _x( 'Feb', 'February abbreviation', 'aui' ), |
|
| 2095 | - 'month_s_3' => _x( 'Mar', 'March abbreviation', 'aui' ), |
|
| 2096 | - 'month_s_4' => _x( 'Apr', 'April abbreviation', 'aui' ), |
|
| 2097 | - 'month_s_5' => _x( 'May', 'May abbreviation', 'aui' ), |
|
| 2098 | - 'month_s_6' => _x( 'Jun', 'June abbreviation', 'aui' ), |
|
| 2099 | - 'month_s_7' => _x( 'Jul', 'July abbreviation', 'aui' ), |
|
| 2100 | - 'month_s_8' => _x( 'Aug', 'August abbreviation', 'aui' ), |
|
| 2101 | - 'month_s_9' => _x( 'Sep', 'September abbreviation', 'aui' ), |
|
| 2102 | - 'month_s_10' => _x( 'Oct', 'October abbreviation', 'aui' ), |
|
| 2103 | - 'month_s_11' => _x( 'Nov', 'November abbreviation', 'aui' ), |
|
| 2104 | - 'month_s_12' => _x( 'Dec', 'December abbreviation', 'aui' ), |
|
| 2105 | - 'day_s1_1' => _x( 'S', 'Sunday initial', 'aui' ), |
|
| 2106 | - 'day_s1_2' => _x( 'M', 'Monday initial', 'aui' ), |
|
| 2107 | - 'day_s1_3' => _x( 'T', 'Tuesday initial', 'aui' ), |
|
| 2108 | - 'day_s1_4' => _x( 'W', 'Wednesday initial', 'aui' ), |
|
| 2109 | - 'day_s1_5' => _x( 'T', 'Friday initial', 'aui' ), |
|
| 2110 | - 'day_s1_6' => _x( 'F', 'Thursday initial', 'aui' ), |
|
| 2111 | - 'day_s1_7' => _x( 'S', 'Saturday initial', 'aui' ), |
|
| 2112 | - 'day_s2_1' => __( 'Su', 'aui' ), |
|
| 2113 | - 'day_s2_2' => __( 'Mo', 'aui' ), |
|
| 2114 | - 'day_s2_3' => __( 'Tu', 'aui' ), |
|
| 2115 | - 'day_s2_4' => __( 'We', 'aui' ), |
|
| 2116 | - 'day_s2_5' => __( 'Th', 'aui' ), |
|
| 2117 | - 'day_s2_6' => __( 'Fr', 'aui' ), |
|
| 2118 | - 'day_s2_7' => __( 'Sa', 'aui' ), |
|
| 2119 | - 'day_s3_1' => __( 'Sun', 'aui' ), |
|
| 2120 | - 'day_s3_2' => __( 'Mon', 'aui' ), |
|
| 2121 | - 'day_s3_3' => __( 'Tue', 'aui' ), |
|
| 2122 | - 'day_s3_4' => __( 'Wed', 'aui' ), |
|
| 2123 | - 'day_s3_5' => __( 'Thu', 'aui' ), |
|
| 2124 | - 'day_s3_6' => __( 'Fri', 'aui' ), |
|
| 2125 | - 'day_s3_7' => __( 'Sat', 'aui' ), |
|
| 2126 | - 'day_s5_1' => __( 'Sunday', 'aui' ), |
|
| 2127 | - 'day_s5_2' => __( 'Monday', 'aui' ), |
|
| 2128 | - 'day_s5_3' => __( 'Tuesday', 'aui' ), |
|
| 2129 | - 'day_s5_4' => __( 'Wednesday', 'aui' ), |
|
| 2130 | - 'day_s5_5' => __( 'Thursday', 'aui' ), |
|
| 2131 | - 'day_s5_6' => __( 'Friday', 'aui' ), |
|
| 2132 | - 'day_s5_7' => __( 'Saturday', 'aui' ), |
|
| 2133 | - 'am_lower' => __( 'am', 'aui' ), |
|
| 2134 | - 'pm_lower' => __( 'pm', 'aui' ), |
|
| 2135 | - 'am_upper' => __( 'AM', 'aui' ), |
|
| 2136 | - 'pm_upper' => __( 'PM', 'aui' ), |
|
| 2137 | - 'firstDayOfWeek' => (int) get_option( 'start_of_week' ), |
|
| 2138 | - 'time_24hr' => false, |
|
| 2139 | - 'year' => __( 'Year', 'aui' ), |
|
| 2140 | - 'hour' => __( 'Hour', 'aui' ), |
|
| 2141 | - 'minute' => __( 'Minute', 'aui' ), |
|
| 2142 | - 'weekAbbreviation' => __( 'Wk', 'aui' ), |
|
| 2143 | - 'rangeSeparator' => __( ' to ', 'aui' ), |
|
| 2144 | - 'scrollTitle' => __( 'Scroll to increment', 'aui' ), |
|
| 2145 | - 'toggleTitle' => __( 'Click to toggle', 'aui' ) |
|
| 2146 | - ); |
|
| 2147 | - |
|
| 2148 | - return apply_filters( 'ayecode_ui_calendar_params', $params ); |
|
| 2149 | - } |
|
| 1788 | + // opacity see https://css-tricks.com/8-digit-hex-codes/ |
|
| 1789 | + $op_25 = $color_code."40"; // 25% opacity |
|
| 2150 | 1790 | |
| 2151 | - /** |
|
| 2152 | - * Flatpickr calendar localize. |
|
| 2153 | - * |
|
| 2154 | - * @since 0.1.44 |
|
| 2155 | - * |
|
| 2156 | - * @return string Calendar locale. |
|
| 2157 | - */ |
|
| 2158 | - public static function flatpickr_locale() { |
|
| 2159 | - $params = self::calendar_params(); |
|
| 2160 | - |
|
| 2161 | - if ( is_string( $params ) ) { |
|
| 2162 | - $params = html_entity_decode( $params, ENT_QUOTES, 'UTF-8' ); |
|
| 2163 | - } else { |
|
| 2164 | - foreach ( (array) $params as $key => $value ) { |
|
| 2165 | - if ( ! is_scalar( $value ) ) { |
|
| 2166 | - continue; |
|
| 2167 | - } |
|
| 2168 | 1791 | |
| 2169 | - $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' ); |
|
| 2170 | - } |
|
| 2171 | - } |
|
| 1792 | + // button states |
|
| 1793 | + $output .= $prefix ." .btn-primary:hover, $prefix .btn-primary:focus, $prefix .btn-primary.focus{background-color: ".$darker_075."; border-color: ".$darker_10.";} "; |
|
| 1794 | + $output .= $prefix ." .btn-outline-primary:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-primary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-primary.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1795 | + $output .= $prefix ." .btn-primary:not(:disabled):not(.disabled):active, $prefix .btn-primary:not(:disabled):not(.disabled).active, .show>$prefix .btn-primary.dropdown-toggle{background-color: ".$darker_10."; border-color: ".$darker_125.";} "; |
|
| 1796 | + $output .= $prefix ." .btn-primary:not(:disabled):not(.disabled):active:focus, $prefix .btn-primary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-primary.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1797 | + |
|
| 1798 | + |
|
| 1799 | + // dropdown's |
|
| 1800 | + $output .= $prefix ." .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} "; |
|
| 1801 | + |
|
| 1802 | + |
|
| 1803 | + // input states |
|
| 1804 | + $output .= $prefix ." .form-control:focus{border-color: ".$lighten_25.";box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1805 | + |
|
| 1806 | + // page link |
|
| 1807 | + $output .= $prefix ." .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1808 | + |
|
| 1809 | + return $output; |
|
| 1810 | + } |
|
| 1811 | + |
|
| 1812 | + public static function css_secondary($color_code,$compatibility){; |
|
| 1813 | + $color_code = sanitize_hex_color($color_code); |
|
| 1814 | + if(!$color_code){return '';} |
|
| 1815 | + /** |
|
| 1816 | + * c = color, b = background color, o = border-color, f = fill |
|
| 1817 | + */ |
|
| 1818 | + $selectors = array( |
|
| 1819 | + '.btn-secondary' => array('b','o'), |
|
| 1820 | + '.btn-secondary.disabled' => array('b','o'), |
|
| 1821 | + '.btn-secondary:disabled' => array('b','o'), |
|
| 1822 | + '.btn-outline-secondary' => array('c','o'), |
|
| 1823 | + '.btn-outline-secondary:hover' => array('b','o'), |
|
| 1824 | + '.btn-outline-secondary.disabled' => array('c'), |
|
| 1825 | + '.btn-outline-secondary:disabled' => array('c'), |
|
| 1826 | + '.btn-outline-secondary:not(:disabled):not(.disabled):active' => array('b','o'), |
|
| 1827 | + '.btn-outline-secondary:not(:disabled):not(.disabled).active' => array('b','o'), |
|
| 1828 | + '.btn-outline-secondary.dropdown-toggle' => array('b','o'), |
|
| 1829 | + '.badge-secondary' => array('b'), |
|
| 1830 | + '.alert-secondary' => array('b','o'), |
|
| 1831 | + '.btn-link.btn-secondary' => array('c'), |
|
| 1832 | + ); |
|
| 1833 | + |
|
| 1834 | + $important_selectors = array( |
|
| 1835 | + '.bg-secondary' => array('b','f'), |
|
| 1836 | + '.border-secondary' => array('o'), |
|
| 1837 | + '.text-secondary' => array('c'), |
|
| 1838 | + ); |
|
| 1839 | + |
|
| 1840 | + $color = array(); |
|
| 1841 | + $color_i = array(); |
|
| 1842 | + $background = array(); |
|
| 1843 | + $background_i = array(); |
|
| 1844 | + $border = array(); |
|
| 1845 | + $border_i = array(); |
|
| 1846 | + $fill = array(); |
|
| 1847 | + $fill_i = array(); |
|
| 1848 | + |
|
| 1849 | + $output = ''; |
|
| 1850 | + |
|
| 1851 | + // build rules into each type |
|
| 1852 | + foreach($selectors as $selector => $types){ |
|
| 1853 | + $selector = $compatibility ? ".bsui ".$selector : $selector; |
|
| 1854 | + $types = array_combine($types,$types); |
|
| 1855 | + if(isset($types['c'])){$color[] = $selector;} |
|
| 1856 | + if(isset($types['b'])){$background[] = $selector;} |
|
| 1857 | + if(isset($types['o'])){$border[] = $selector;} |
|
| 1858 | + if(isset($types['f'])){$fill[] = $selector;} |
|
| 1859 | + } |
|
| 1860 | + |
|
| 1861 | + // build rules into each type |
|
| 1862 | + foreach($important_selectors as $selector => $types){ |
|
| 1863 | + $selector = $compatibility ? ".bsui ".$selector : $selector; |
|
| 1864 | + $types = array_combine($types,$types); |
|
| 1865 | + if(isset($types['c'])){$color_i[] = $selector;} |
|
| 1866 | + if(isset($types['b'])){$background_i[] = $selector;} |
|
| 1867 | + if(isset($types['o'])){$border_i[] = $selector;} |
|
| 1868 | + if(isset($types['f'])){$fill_i[] = $selector;} |
|
| 1869 | + } |
|
| 1870 | + |
|
| 1871 | + // add any color rules |
|
| 1872 | + if(!empty($color)){ |
|
| 1873 | + $output .= implode(",",$color) . "{color: $color_code;} "; |
|
| 1874 | + } |
|
| 1875 | + if(!empty($color_i)){ |
|
| 1876 | + $output .= implode(",",$color_i) . "{color: $color_code !important;} "; |
|
| 1877 | + } |
|
| 1878 | + |
|
| 1879 | + // add any background color rules |
|
| 1880 | + if(!empty($background)){ |
|
| 1881 | + $output .= implode(",",$background) . "{background-color: $color_code;} "; |
|
| 1882 | + } |
|
| 1883 | + if(!empty($background_i)){ |
|
| 1884 | + $output .= implode(",",$background_i) . "{background-color: $color_code !important;} "; |
|
| 1885 | + } |
|
| 1886 | + |
|
| 1887 | + // add any border color rules |
|
| 1888 | + if(!empty($border)){ |
|
| 1889 | + $output .= implode(",",$border) . "{border-color: $color_code;} "; |
|
| 1890 | + } |
|
| 1891 | + if(!empty($border_i)){ |
|
| 1892 | + $output .= implode(",",$border_i) . "{border-color: $color_code !important;} "; |
|
| 1893 | + } |
|
| 1894 | + |
|
| 1895 | + // add any fill color rules |
|
| 1896 | + if(!empty($fill)){ |
|
| 1897 | + $output .= implode(",",$fill) . "{fill: $color_code;} "; |
|
| 1898 | + } |
|
| 1899 | + if(!empty($fill_i)){ |
|
| 1900 | + $output .= implode(",",$fill_i) . "{fill: $color_code !important;} "; |
|
| 1901 | + } |
|
| 1902 | + |
|
| 1903 | + |
|
| 1904 | + $prefix = $compatibility ? ".bsui " : ""; |
|
| 1905 | + |
|
| 1906 | + // darken |
|
| 1907 | + $darker_075 = self::css_hex_lighten_darken($color_code,"-0.075"); |
|
| 1908 | + $darker_10 = self::css_hex_lighten_darken($color_code,"-0.10"); |
|
| 1909 | + $darker_125 = self::css_hex_lighten_darken($color_code,"-0.125"); |
|
| 1910 | + |
|
| 1911 | + // lighten |
|
| 1912 | + $lighten_25 = self::css_hex_lighten_darken($color_code,"0.25"); |
|
| 1913 | + |
|
| 1914 | + // opacity see https://css-tricks.com/8-digit-hex-codes/ |
|
| 1915 | + $op_25 = $color_code."40"; // 25% opacity |
|
| 2172 | 1916 | |
| 2173 | - $day_s3 = array(); |
|
| 2174 | - $day_s5 = array(); |
|
| 2175 | 1917 | |
| 2176 | - for ( $i = 1; $i <= 7; $i ++ ) { |
|
| 2177 | - $day_s3[] = addslashes( $params[ 'day_s3_' . $i ] ); |
|
| 2178 | - $day_s5[] = addslashes( $params[ 'day_s3_' . $i ] ); |
|
| 2179 | - } |
|
| 1918 | + // button states |
|
| 1919 | + $output .= $prefix ." .btn-secondary:hover{background-color: ".$darker_075."; border-color: ".$darker_10.";} "; |
|
| 1920 | + $output .= $prefix ." .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-secondary.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 1921 | + $output .= $prefix ." .btn-secondary:not(:disabled):not(.disabled):active, $prefix .btn-secondary:not(:disabled):not(.disabled).active, .show>$prefix .btn-secondary.dropdown-toggle{background-color: ".$darker_10."; border-color: ".$darker_125.";} "; |
|
| 1922 | + $output .= $prefix ." .btn-secondary:not(:disabled):not(.disabled):active:focus, $prefix .btn-secondary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-secondary.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} "; |
|
| 2180 | 1923 | |
| 2181 | - $month_s = array(); |
|
| 2182 | - $month_long = array(); |
|
| 2183 | 1924 | |
| 2184 | - for ( $i = 1; $i <= 12; $i ++ ) { |
|
| 2185 | - $month_s[] = addslashes( $params[ 'month_s_' . $i ] ); |
|
| 2186 | - $month_long[] = addslashes( $params[ 'month_long_' . $i ] ); |
|
| 2187 | - } |
|
| 1925 | + return $output; |
|
| 1926 | + } |
|
| 1927 | + |
|
| 1928 | + /** |
|
| 1929 | + * Increases or decreases the brightness of a color by a percentage of the current brightness. |
|
| 1930 | + * |
|
| 1931 | + * @param string $hexCode Supported formats: `#FFF`, `#FFFFFF`, `FFF`, `FFFFFF` |
|
| 1932 | + * @param float $adjustPercent A number between -1 and 1. E.g. 0.3 = 30% lighter; -0.4 = 40% darker. |
|
| 1933 | + * |
|
| 1934 | + * @return string |
|
| 1935 | + */ |
|
| 1936 | + public static function css_hex_lighten_darken($hexCode, $adjustPercent) { |
|
| 1937 | + $hexCode = ltrim($hexCode, '#'); |
|
| 1938 | + |
|
| 1939 | + if (strlen($hexCode) == 3) { |
|
| 1940 | + $hexCode = $hexCode[0] . $hexCode[0] . $hexCode[1] . $hexCode[1] . $hexCode[2] . $hexCode[2]; |
|
| 1941 | + } |
|
| 1942 | + |
|
| 1943 | + $hexCode = array_map('hexdec', str_split($hexCode, 2)); |
|
| 1944 | + |
|
| 1945 | + foreach ($hexCode as & $color) { |
|
| 1946 | + $adjustableLimit = $adjustPercent < 0 ? $color : 255 - $color; |
|
| 1947 | + $adjustAmount = ceil($adjustableLimit * $adjustPercent); |
|
| 1948 | + |
|
| 1949 | + $color = str_pad(dechex($color + $adjustAmount), 2, '0', STR_PAD_LEFT); |
|
| 1950 | + } |
|
| 1951 | + |
|
| 1952 | + return '#' . implode($hexCode); |
|
| 1953 | + } |
|
| 1954 | + |
|
| 1955 | + /** |
|
| 1956 | + * Check if we should display examples. |
|
| 1957 | + */ |
|
| 1958 | + public function maybe_show_examples(){ |
|
| 1959 | + if(current_user_can('manage_options') && isset($_REQUEST['preview-aui'])){ |
|
| 1960 | + echo "<head>"; |
|
| 1961 | + wp_head(); |
|
| 1962 | + echo "</head>"; |
|
| 1963 | + echo "<body>"; |
|
| 1964 | + echo $this->get_examples(); |
|
| 1965 | + echo "</body>"; |
|
| 1966 | + exit; |
|
| 1967 | + } |
|
| 1968 | + } |
|
| 1969 | + |
|
| 1970 | + /** |
|
| 1971 | + * Get developer examples. |
|
| 1972 | + * |
|
| 1973 | + * @return string |
|
| 1974 | + */ |
|
| 1975 | + public function get_examples(){ |
|
| 1976 | + $output = ''; |
|
| 1977 | + |
|
| 1978 | + |
|
| 1979 | + // open form |
|
| 1980 | + $output .= "<form class='p-5 m-5 border rounded'>"; |
|
| 1981 | + |
|
| 1982 | + // input example |
|
| 1983 | + $output .= aui()->input(array( |
|
| 1984 | + 'type' => 'text', |
|
| 1985 | + 'id' => 'text-example', |
|
| 1986 | + 'name' => 'text-example', |
|
| 1987 | + 'placeholder' => 'text placeholder', |
|
| 1988 | + 'title' => 'Text input example', |
|
| 1989 | + 'value' => '', |
|
| 1990 | + 'required' => false, |
|
| 1991 | + 'help_text' => 'help text', |
|
| 1992 | + 'label' => 'Text input example label' |
|
| 1993 | + )); |
|
| 1994 | + |
|
| 1995 | + // input example |
|
| 1996 | + $output .= aui()->input(array( |
|
| 1997 | + 'type' => 'url', |
|
| 1998 | + 'id' => 'text-example2', |
|
| 1999 | + 'name' => 'text-example', |
|
| 2000 | + 'placeholder' => 'url placeholder', |
|
| 2001 | + 'title' => 'Text input example', |
|
| 2002 | + 'value' => '', |
|
| 2003 | + 'required' => false, |
|
| 2004 | + 'help_text' => 'help text', |
|
| 2005 | + 'label' => 'Text input example label' |
|
| 2006 | + )); |
|
| 2007 | + |
|
| 2008 | + // checkbox example |
|
| 2009 | + $output .= aui()->input(array( |
|
| 2010 | + 'type' => 'checkbox', |
|
| 2011 | + 'id' => 'checkbox-example', |
|
| 2012 | + 'name' => 'checkbox-example', |
|
| 2013 | + 'placeholder' => 'checkbox-example', |
|
| 2014 | + 'title' => 'Checkbox example', |
|
| 2015 | + 'value' => '1', |
|
| 2016 | + 'checked' => true, |
|
| 2017 | + 'required' => false, |
|
| 2018 | + 'help_text' => 'help text', |
|
| 2019 | + 'label' => 'Checkbox checked' |
|
| 2020 | + )); |
|
| 2021 | + |
|
| 2022 | + // checkbox example |
|
| 2023 | + $output .= aui()->input(array( |
|
| 2024 | + 'type' => 'checkbox', |
|
| 2025 | + 'id' => 'checkbox-example2', |
|
| 2026 | + 'name' => 'checkbox-example2', |
|
| 2027 | + 'placeholder' => 'checkbox-example', |
|
| 2028 | + 'title' => 'Checkbox example', |
|
| 2029 | + 'value' => '1', |
|
| 2030 | + 'checked' => false, |
|
| 2031 | + 'required' => false, |
|
| 2032 | + 'help_text' => 'help text', |
|
| 2033 | + 'label' => 'Checkbox un-checked' |
|
| 2034 | + )); |
|
| 2035 | + |
|
| 2036 | + // switch example |
|
| 2037 | + $output .= aui()->input(array( |
|
| 2038 | + 'type' => 'checkbox', |
|
| 2039 | + 'id' => 'switch-example', |
|
| 2040 | + 'name' => 'switch-example', |
|
| 2041 | + 'placeholder' => 'checkbox-example', |
|
| 2042 | + 'title' => 'Switch example', |
|
| 2043 | + 'value' => '1', |
|
| 2044 | + 'checked' => true, |
|
| 2045 | + 'switch' => true, |
|
| 2046 | + 'required' => false, |
|
| 2047 | + 'help_text' => 'help text', |
|
| 2048 | + 'label' => 'Switch on' |
|
| 2049 | + )); |
|
| 2050 | + |
|
| 2051 | + // switch example |
|
| 2052 | + $output .= aui()->input(array( |
|
| 2053 | + 'type' => 'checkbox', |
|
| 2054 | + 'id' => 'switch-example2', |
|
| 2055 | + 'name' => 'switch-example2', |
|
| 2056 | + 'placeholder' => 'checkbox-example', |
|
| 2057 | + 'title' => 'Switch example', |
|
| 2058 | + 'value' => '1', |
|
| 2059 | + 'checked' => false, |
|
| 2060 | + 'switch' => true, |
|
| 2061 | + 'required' => false, |
|
| 2062 | + 'help_text' => 'help text', |
|
| 2063 | + 'label' => 'Switch off' |
|
| 2064 | + )); |
|
| 2065 | + |
|
| 2066 | + // close form |
|
| 2067 | + $output .= "</form>"; |
|
| 2068 | + |
|
| 2069 | + return $output; |
|
| 2070 | + } |
|
| 2071 | + |
|
| 2072 | + /** |
|
| 2073 | + * Calendar params. |
|
| 2074 | + * |
|
| 2075 | + * @since 0.1.44 |
|
| 2076 | + * |
|
| 2077 | + * @return array Calendar params. |
|
| 2078 | + */ |
|
| 2079 | + public static function calendar_params() { |
|
| 2080 | + $params = array( |
|
| 2081 | + 'month_long_1' => __( 'January', 'aui' ), |
|
| 2082 | + 'month_long_2' => __( 'February', 'aui' ), |
|
| 2083 | + 'month_long_3' => __( 'March', 'aui' ), |
|
| 2084 | + 'month_long_4' => __( 'April', 'aui' ), |
|
| 2085 | + 'month_long_5' => __( 'May', 'aui' ), |
|
| 2086 | + 'month_long_6' => __( 'June', 'aui' ), |
|
| 2087 | + 'month_long_7' => __( 'July', 'aui' ), |
|
| 2088 | + 'month_long_8' => __( 'August', 'aui' ), |
|
| 2089 | + 'month_long_9' => __( 'September', 'aui' ), |
|
| 2090 | + 'month_long_10' => __( 'October', 'aui' ), |
|
| 2091 | + 'month_long_11' => __( 'November', 'aui' ), |
|
| 2092 | + 'month_long_12' => __( 'December', 'aui' ), |
|
| 2093 | + 'month_s_1' => _x( 'Jan', 'January abbreviation', 'aui' ), |
|
| 2094 | + 'month_s_2' => _x( 'Feb', 'February abbreviation', 'aui' ), |
|
| 2095 | + 'month_s_3' => _x( 'Mar', 'March abbreviation', 'aui' ), |
|
| 2096 | + 'month_s_4' => _x( 'Apr', 'April abbreviation', 'aui' ), |
|
| 2097 | + 'month_s_5' => _x( 'May', 'May abbreviation', 'aui' ), |
|
| 2098 | + 'month_s_6' => _x( 'Jun', 'June abbreviation', 'aui' ), |
|
| 2099 | + 'month_s_7' => _x( 'Jul', 'July abbreviation', 'aui' ), |
|
| 2100 | + 'month_s_8' => _x( 'Aug', 'August abbreviation', 'aui' ), |
|
| 2101 | + 'month_s_9' => _x( 'Sep', 'September abbreviation', 'aui' ), |
|
| 2102 | + 'month_s_10' => _x( 'Oct', 'October abbreviation', 'aui' ), |
|
| 2103 | + 'month_s_11' => _x( 'Nov', 'November abbreviation', 'aui' ), |
|
| 2104 | + 'month_s_12' => _x( 'Dec', 'December abbreviation', 'aui' ), |
|
| 2105 | + 'day_s1_1' => _x( 'S', 'Sunday initial', 'aui' ), |
|
| 2106 | + 'day_s1_2' => _x( 'M', 'Monday initial', 'aui' ), |
|
| 2107 | + 'day_s1_3' => _x( 'T', 'Tuesday initial', 'aui' ), |
|
| 2108 | + 'day_s1_4' => _x( 'W', 'Wednesday initial', 'aui' ), |
|
| 2109 | + 'day_s1_5' => _x( 'T', 'Friday initial', 'aui' ), |
|
| 2110 | + 'day_s1_6' => _x( 'F', 'Thursday initial', 'aui' ), |
|
| 2111 | + 'day_s1_7' => _x( 'S', 'Saturday initial', 'aui' ), |
|
| 2112 | + 'day_s2_1' => __( 'Su', 'aui' ), |
|
| 2113 | + 'day_s2_2' => __( 'Mo', 'aui' ), |
|
| 2114 | + 'day_s2_3' => __( 'Tu', 'aui' ), |
|
| 2115 | + 'day_s2_4' => __( 'We', 'aui' ), |
|
| 2116 | + 'day_s2_5' => __( 'Th', 'aui' ), |
|
| 2117 | + 'day_s2_6' => __( 'Fr', 'aui' ), |
|
| 2118 | + 'day_s2_7' => __( 'Sa', 'aui' ), |
|
| 2119 | + 'day_s3_1' => __( 'Sun', 'aui' ), |
|
| 2120 | + 'day_s3_2' => __( 'Mon', 'aui' ), |
|
| 2121 | + 'day_s3_3' => __( 'Tue', 'aui' ), |
|
| 2122 | + 'day_s3_4' => __( 'Wed', 'aui' ), |
|
| 2123 | + 'day_s3_5' => __( 'Thu', 'aui' ), |
|
| 2124 | + 'day_s3_6' => __( 'Fri', 'aui' ), |
|
| 2125 | + 'day_s3_7' => __( 'Sat', 'aui' ), |
|
| 2126 | + 'day_s5_1' => __( 'Sunday', 'aui' ), |
|
| 2127 | + 'day_s5_2' => __( 'Monday', 'aui' ), |
|
| 2128 | + 'day_s5_3' => __( 'Tuesday', 'aui' ), |
|
| 2129 | + 'day_s5_4' => __( 'Wednesday', 'aui' ), |
|
| 2130 | + 'day_s5_5' => __( 'Thursday', 'aui' ), |
|
| 2131 | + 'day_s5_6' => __( 'Friday', 'aui' ), |
|
| 2132 | + 'day_s5_7' => __( 'Saturday', 'aui' ), |
|
| 2133 | + 'am_lower' => __( 'am', 'aui' ), |
|
| 2134 | + 'pm_lower' => __( 'pm', 'aui' ), |
|
| 2135 | + 'am_upper' => __( 'AM', 'aui' ), |
|
| 2136 | + 'pm_upper' => __( 'PM', 'aui' ), |
|
| 2137 | + 'firstDayOfWeek' => (int) get_option( 'start_of_week' ), |
|
| 2138 | + 'time_24hr' => false, |
|
| 2139 | + 'year' => __( 'Year', 'aui' ), |
|
| 2140 | + 'hour' => __( 'Hour', 'aui' ), |
|
| 2141 | + 'minute' => __( 'Minute', 'aui' ), |
|
| 2142 | + 'weekAbbreviation' => __( 'Wk', 'aui' ), |
|
| 2143 | + 'rangeSeparator' => __( ' to ', 'aui' ), |
|
| 2144 | + 'scrollTitle' => __( 'Scroll to increment', 'aui' ), |
|
| 2145 | + 'toggleTitle' => __( 'Click to toggle', 'aui' ) |
|
| 2146 | + ); |
|
| 2147 | + |
|
| 2148 | + return apply_filters( 'ayecode_ui_calendar_params', $params ); |
|
| 2149 | + } |
|
| 2150 | + |
|
| 2151 | + /** |
|
| 2152 | + * Flatpickr calendar localize. |
|
| 2153 | + * |
|
| 2154 | + * @since 0.1.44 |
|
| 2155 | + * |
|
| 2156 | + * @return string Calendar locale. |
|
| 2157 | + */ |
|
| 2158 | + public static function flatpickr_locale() { |
|
| 2159 | + $params = self::calendar_params(); |
|
| 2160 | + |
|
| 2161 | + if ( is_string( $params ) ) { |
|
| 2162 | + $params = html_entity_decode( $params, ENT_QUOTES, 'UTF-8' ); |
|
| 2163 | + } else { |
|
| 2164 | + foreach ( (array) $params as $key => $value ) { |
|
| 2165 | + if ( ! is_scalar( $value ) ) { |
|
| 2166 | + continue; |
|
| 2167 | + } |
|
| 2168 | + |
|
| 2169 | + $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' ); |
|
| 2170 | + } |
|
| 2171 | + } |
|
| 2172 | + |
|
| 2173 | + $day_s3 = array(); |
|
| 2174 | + $day_s5 = array(); |
|
| 2175 | + |
|
| 2176 | + for ( $i = 1; $i <= 7; $i ++ ) { |
|
| 2177 | + $day_s3[] = addslashes( $params[ 'day_s3_' . $i ] ); |
|
| 2178 | + $day_s5[] = addslashes( $params[ 'day_s3_' . $i ] ); |
|
| 2179 | + } |
|
| 2180 | + |
|
| 2181 | + $month_s = array(); |
|
| 2182 | + $month_long = array(); |
|
| 2183 | + |
|
| 2184 | + for ( $i = 1; $i <= 12; $i ++ ) { |
|
| 2185 | + $month_s[] = addslashes( $params[ 'month_s_' . $i ] ); |
|
| 2186 | + $month_long[] = addslashes( $params[ 'month_long_' . $i ] ); |
|
| 2187 | + } |
|
| 2188 | 2188 | |
| 2189 | 2189 | ob_start(); |
| 2190 | 2190 | if ( 0 ) { ?><script><?php } ?> |
@@ -2226,189 +2226,189 @@ discard block |
||
| 2226 | 2226 | } |
| 2227 | 2227 | <?php if ( 0 ) { ?></script><?php } ?> |
| 2228 | 2228 | <?php |
| 2229 | - $locale = ob_get_clean(); |
|
| 2229 | + $locale = ob_get_clean(); |
|
| 2230 | 2230 | |
| 2231 | - return apply_filters( 'ayecode_ui_flatpickr_locale', trim( $locale ) ); |
|
| 2232 | - } |
|
| 2231 | + return apply_filters( 'ayecode_ui_flatpickr_locale', trim( $locale ) ); |
|
| 2232 | + } |
|
| 2233 | 2233 | |
| 2234 | - /** |
|
| 2235 | - * Select2 JS params. |
|
| 2236 | - * |
|
| 2237 | - * @since 0.1.44 |
|
| 2238 | - * |
|
| 2239 | - * @return array Select2 JS params. |
|
| 2240 | - */ |
|
| 2241 | - public static function select2_params() { |
|
| 2242 | - $params = array( |
|
| 2243 | - 'i18n_select_state_text' => esc_attr__( 'Select an option…', 'aui' ), |
|
| 2244 | - 'i18n_no_matches' => _x( 'No matches found', 'enhanced select', 'aui' ), |
|
| 2245 | - 'i18n_ajax_error' => _x( 'Loading failed', 'enhanced select', 'aui' ), |
|
| 2246 | - 'i18n_input_too_short_1' => _x( 'Please enter 1 or more characters', 'enhanced select', 'aui' ), |
|
| 2247 | - 'i18n_input_too_short_n' => _x( 'Please enter %item% or more characters', 'enhanced select', 'aui' ), |
|
| 2248 | - 'i18n_input_too_long_1' => _x( 'Please delete 1 character', 'enhanced select', 'aui' ), |
|
| 2249 | - 'i18n_input_too_long_n' => _x( 'Please delete %item% characters', 'enhanced select', 'aui' ), |
|
| 2250 | - 'i18n_selection_too_long_1' => _x( 'You can only select 1 item', 'enhanced select', 'aui' ), |
|
| 2251 | - 'i18n_selection_too_long_n' => _x( 'You can only select %item% items', 'enhanced select', 'aui' ), |
|
| 2252 | - 'i18n_load_more' => _x( 'Loading more results…', 'enhanced select', 'aui' ), |
|
| 2253 | - 'i18n_searching' => _x( 'Searching…', 'enhanced select', 'aui' ) |
|
| 2254 | - ); |
|
| 2255 | - |
|
| 2256 | - return apply_filters( 'ayecode_ui_select2_params', $params ); |
|
| 2257 | - } |
|
| 2234 | + /** |
|
| 2235 | + * Select2 JS params. |
|
| 2236 | + * |
|
| 2237 | + * @since 0.1.44 |
|
| 2238 | + * |
|
| 2239 | + * @return array Select2 JS params. |
|
| 2240 | + */ |
|
| 2241 | + public static function select2_params() { |
|
| 2242 | + $params = array( |
|
| 2243 | + 'i18n_select_state_text' => esc_attr__( 'Select an option…', 'aui' ), |
|
| 2244 | + 'i18n_no_matches' => _x( 'No matches found', 'enhanced select', 'aui' ), |
|
| 2245 | + 'i18n_ajax_error' => _x( 'Loading failed', 'enhanced select', 'aui' ), |
|
| 2246 | + 'i18n_input_too_short_1' => _x( 'Please enter 1 or more characters', 'enhanced select', 'aui' ), |
|
| 2247 | + 'i18n_input_too_short_n' => _x( 'Please enter %item% or more characters', 'enhanced select', 'aui' ), |
|
| 2248 | + 'i18n_input_too_long_1' => _x( 'Please delete 1 character', 'enhanced select', 'aui' ), |
|
| 2249 | + 'i18n_input_too_long_n' => _x( 'Please delete %item% characters', 'enhanced select', 'aui' ), |
|
| 2250 | + 'i18n_selection_too_long_1' => _x( 'You can only select 1 item', 'enhanced select', 'aui' ), |
|
| 2251 | + 'i18n_selection_too_long_n' => _x( 'You can only select %item% items', 'enhanced select', 'aui' ), |
|
| 2252 | + 'i18n_load_more' => _x( 'Loading more results…', 'enhanced select', 'aui' ), |
|
| 2253 | + 'i18n_searching' => _x( 'Searching…', 'enhanced select', 'aui' ) |
|
| 2254 | + ); |
|
| 2255 | + |
|
| 2256 | + return apply_filters( 'ayecode_ui_select2_params', $params ); |
|
| 2257 | + } |
|
| 2258 | 2258 | |
| 2259 | - /** |
|
| 2260 | - * Select2 JS localize. |
|
| 2261 | - * |
|
| 2262 | - * @since 0.1.44 |
|
| 2263 | - * |
|
| 2264 | - * @return string Select2 JS locale. |
|
| 2265 | - */ |
|
| 2266 | - public static function select2_locale() { |
|
| 2267 | - $params = self::select2_params(); |
|
| 2268 | - |
|
| 2269 | - foreach ( (array) $params as $key => $value ) { |
|
| 2270 | - if ( ! is_scalar( $value ) ) { |
|
| 2271 | - continue; |
|
| 2272 | - } |
|
| 2259 | + /** |
|
| 2260 | + * Select2 JS localize. |
|
| 2261 | + * |
|
| 2262 | + * @since 0.1.44 |
|
| 2263 | + * |
|
| 2264 | + * @return string Select2 JS locale. |
|
| 2265 | + */ |
|
| 2266 | + public static function select2_locale() { |
|
| 2267 | + $params = self::select2_params(); |
|
| 2268 | + |
|
| 2269 | + foreach ( (array) $params as $key => $value ) { |
|
| 2270 | + if ( ! is_scalar( $value ) ) { |
|
| 2271 | + continue; |
|
| 2272 | + } |
|
| 2273 | 2273 | |
| 2274 | - $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' ); |
|
| 2275 | - } |
|
| 2274 | + $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' ); |
|
| 2275 | + } |
|
| 2276 | 2276 | |
| 2277 | - $locale = json_encode( $params ); |
|
| 2277 | + $locale = json_encode( $params ); |
|
| 2278 | 2278 | |
| 2279 | - return apply_filters( 'ayecode_ui_select2_locale', trim( $locale ) ); |
|
| 2280 | - } |
|
| 2279 | + return apply_filters( 'ayecode_ui_select2_locale', trim( $locale ) ); |
|
| 2280 | + } |
|
| 2281 | 2281 | |
| 2282 | - /** |
|
| 2283 | - * Time ago JS localize. |
|
| 2284 | - * |
|
| 2285 | - * @since 0.1.47 |
|
| 2286 | - * |
|
| 2287 | - * @return string Time ago JS locale. |
|
| 2288 | - */ |
|
| 2289 | - public static function timeago_locale() { |
|
| 2290 | - $params = array( |
|
| 2291 | - 'prefix_ago' => '', |
|
| 2292 | - 'suffix_ago' => ' ' . _x( 'ago', 'time ago', 'aui' ), |
|
| 2293 | - 'prefix_after' => _x( 'after', 'time ago', 'aui' ) . ' ', |
|
| 2294 | - 'suffix_after' => '', |
|
| 2295 | - 'seconds' => _x( 'less than a minute', 'time ago', 'aui' ), |
|
| 2296 | - 'minute' => _x( 'about a minute', 'time ago', 'aui' ), |
|
| 2297 | - 'minutes' => _x( '%d minutes', 'time ago', 'aui' ), |
|
| 2298 | - 'hour' => _x( 'about an hour', 'time ago', 'aui' ), |
|
| 2299 | - 'hours' => _x( 'about %d hours', 'time ago', 'aui' ), |
|
| 2300 | - 'day' => _x( 'a day', 'time ago', 'aui' ), |
|
| 2301 | - 'days' => _x( '%d days', 'time ago', 'aui' ), |
|
| 2302 | - 'month' => _x( 'about a month', 'time ago', 'aui' ), |
|
| 2303 | - 'months' => _x( '%d months', 'time ago', 'aui' ), |
|
| 2304 | - 'year' => _x( 'about a year', 'time ago', 'aui' ), |
|
| 2305 | - 'years' => _x( '%d years', 'time ago', 'aui' ), |
|
| 2306 | - ); |
|
| 2307 | - |
|
| 2308 | - $params = apply_filters( 'ayecode_ui_timeago_params', $params ); |
|
| 2309 | - |
|
| 2310 | - foreach ( (array) $params as $key => $value ) { |
|
| 2311 | - if ( ! is_scalar( $value ) ) { |
|
| 2312 | - continue; |
|
| 2313 | - } |
|
| 2282 | + /** |
|
| 2283 | + * Time ago JS localize. |
|
| 2284 | + * |
|
| 2285 | + * @since 0.1.47 |
|
| 2286 | + * |
|
| 2287 | + * @return string Time ago JS locale. |
|
| 2288 | + */ |
|
| 2289 | + public static function timeago_locale() { |
|
| 2290 | + $params = array( |
|
| 2291 | + 'prefix_ago' => '', |
|
| 2292 | + 'suffix_ago' => ' ' . _x( 'ago', 'time ago', 'aui' ), |
|
| 2293 | + 'prefix_after' => _x( 'after', 'time ago', 'aui' ) . ' ', |
|
| 2294 | + 'suffix_after' => '', |
|
| 2295 | + 'seconds' => _x( 'less than a minute', 'time ago', 'aui' ), |
|
| 2296 | + 'minute' => _x( 'about a minute', 'time ago', 'aui' ), |
|
| 2297 | + 'minutes' => _x( '%d minutes', 'time ago', 'aui' ), |
|
| 2298 | + 'hour' => _x( 'about an hour', 'time ago', 'aui' ), |
|
| 2299 | + 'hours' => _x( 'about %d hours', 'time ago', 'aui' ), |
|
| 2300 | + 'day' => _x( 'a day', 'time ago', 'aui' ), |
|
| 2301 | + 'days' => _x( '%d days', 'time ago', 'aui' ), |
|
| 2302 | + 'month' => _x( 'about a month', 'time ago', 'aui' ), |
|
| 2303 | + 'months' => _x( '%d months', 'time ago', 'aui' ), |
|
| 2304 | + 'year' => _x( 'about a year', 'time ago', 'aui' ), |
|
| 2305 | + 'years' => _x( '%d years', 'time ago', 'aui' ), |
|
| 2306 | + ); |
|
| 2307 | + |
|
| 2308 | + $params = apply_filters( 'ayecode_ui_timeago_params', $params ); |
|
| 2309 | + |
|
| 2310 | + foreach ( (array) $params as $key => $value ) { |
|
| 2311 | + if ( ! is_scalar( $value ) ) { |
|
| 2312 | + continue; |
|
| 2313 | + } |
|
| 2314 | 2314 | |
| 2315 | - $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' ); |
|
| 2316 | - } |
|
| 2315 | + $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' ); |
|
| 2316 | + } |
|
| 2317 | 2317 | |
| 2318 | - $locale = json_encode( $params ); |
|
| 2318 | + $locale = json_encode( $params ); |
|
| 2319 | 2319 | |
| 2320 | - return apply_filters( 'ayecode_ui_timeago_locale', trim( $locale ) ); |
|
| 2321 | - } |
|
| 2320 | + return apply_filters( 'ayecode_ui_timeago_locale', trim( $locale ) ); |
|
| 2321 | + } |
|
| 2322 | 2322 | |
| 2323 | - /** |
|
| 2324 | - * JavaScript Minifier |
|
| 2325 | - * |
|
| 2326 | - * @param $input |
|
| 2327 | - * |
|
| 2328 | - * @return mixed |
|
| 2329 | - */ |
|
| 2330 | - public static function minify_js($input) { |
|
| 2331 | - if(trim($input) === "") return $input; |
|
| 2332 | - return preg_replace( |
|
| 2333 | - array( |
|
| 2334 | - // Remove comment(s) |
|
| 2335 | - '#\s*("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')\s*|\s*\/\*(?!\!|@cc_on)(?>[\s\S]*?\*\/)\s*|\s*(?<![\:\=])\/\/.*(?=[\n\r]|$)|^\s*|\s*$#', |
|
| 2336 | - // Remove white-space(s) outside the string and regex |
|
| 2337 | - '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/)|\/(?!\/)[^\n\r]*?\/(?=[\s.,;]|[gimuy]|$))|\s*([!%&*\(\)\-=+\[\]\{\}|;:,.<>?\/])\s*#s', |
|
| 2338 | - // Remove the last semicolon |
|
| 2339 | - '#;+\}#', |
|
| 2340 | - // Minify object attribute(s) except JSON attribute(s). From `{'foo':'bar'}` to `{foo:'bar'}` |
|
| 2341 | - '#([\{,])([\'])(\d+|[a-z_][a-z0-9_]*)\2(?=\:)#i', |
|
| 2342 | - // --ibid. From `foo['bar']` to `foo.bar` |
|
| 2343 | - '#([a-z0-9_\)\]])\[([\'"])([a-z_][a-z0-9_]*)\2\]#i' |
|
| 2344 | - ), |
|
| 2345 | - array( |
|
| 2346 | - '$1', |
|
| 2347 | - '$1$2', |
|
| 2348 | - '}', |
|
| 2349 | - '$1$3', |
|
| 2350 | - '$1.$3' |
|
| 2351 | - ), |
|
| 2352 | - $input); |
|
| 2353 | - } |
|
| 2323 | + /** |
|
| 2324 | + * JavaScript Minifier |
|
| 2325 | + * |
|
| 2326 | + * @param $input |
|
| 2327 | + * |
|
| 2328 | + * @return mixed |
|
| 2329 | + */ |
|
| 2330 | + public static function minify_js($input) { |
|
| 2331 | + if(trim($input) === "") return $input; |
|
| 2332 | + return preg_replace( |
|
| 2333 | + array( |
|
| 2334 | + // Remove comment(s) |
|
| 2335 | + '#\s*("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')\s*|\s*\/\*(?!\!|@cc_on)(?>[\s\S]*?\*\/)\s*|\s*(?<![\:\=])\/\/.*(?=[\n\r]|$)|^\s*|\s*$#', |
|
| 2336 | + // Remove white-space(s) outside the string and regex |
|
| 2337 | + '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/)|\/(?!\/)[^\n\r]*?\/(?=[\s.,;]|[gimuy]|$))|\s*([!%&*\(\)\-=+\[\]\{\}|;:,.<>?\/])\s*#s', |
|
| 2338 | + // Remove the last semicolon |
|
| 2339 | + '#;+\}#', |
|
| 2340 | + // Minify object attribute(s) except JSON attribute(s). From `{'foo':'bar'}` to `{foo:'bar'}` |
|
| 2341 | + '#([\{,])([\'])(\d+|[a-z_][a-z0-9_]*)\2(?=\:)#i', |
|
| 2342 | + // --ibid. From `foo['bar']` to `foo.bar` |
|
| 2343 | + '#([a-z0-9_\)\]])\[([\'"])([a-z_][a-z0-9_]*)\2\]#i' |
|
| 2344 | + ), |
|
| 2345 | + array( |
|
| 2346 | + '$1', |
|
| 2347 | + '$1$2', |
|
| 2348 | + '}', |
|
| 2349 | + '$1$3', |
|
| 2350 | + '$1.$3' |
|
| 2351 | + ), |
|
| 2352 | + $input); |
|
| 2353 | + } |
|
| 2354 | 2354 | |
| 2355 | - /** |
|
| 2356 | - * Minify CSS |
|
| 2357 | - * |
|
| 2358 | - * @param $input |
|
| 2359 | - * |
|
| 2360 | - * @return mixed |
|
| 2361 | - */ |
|
| 2362 | - public static function minify_css($input) { |
|
| 2363 | - if(trim($input) === "") return $input; |
|
| 2364 | - return preg_replace( |
|
| 2365 | - array( |
|
| 2366 | - // Remove comment(s) |
|
| 2367 | - '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')|\/\*(?!\!)(?>.*?\*\/)|^\s*|\s*$#s', |
|
| 2368 | - // Remove unused white-space(s) |
|
| 2369 | - '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/))|\s*+;\s*+(})\s*+|\s*+([*$~^|]?+=|[{};,>~]|\s(?![0-9\.])|!important\b)\s*+|([[(:])\s++|\s++([])])|\s++(:)\s*+(?!(?>[^{}"\']++|"(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')*+{)|^\s++|\s++\z|(\s)\s+#si', |
|
| 2370 | - // Replace `0(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)` with `0` |
|
| 2371 | - '#(?<=[\s:])(0)(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)#si', |
|
| 2372 | - // Replace `:0 0 0 0` with `:0` |
|
| 2373 | - '#:(0\s+0|0\s+0\s+0\s+0)(?=[;\}]|\!important)#i', |
|
| 2374 | - // Replace `background-position:0` with `background-position:0 0` |
|
| 2375 | - '#(background-position):0(?=[;\}])#si', |
|
| 2376 | - // Replace `0.6` with `.6`, but only when preceded by `:`, `,`, `-` or a white-space |
|
| 2377 | - '#(?<=[\s:,\-])0+\.(\d+)#s', |
|
| 2378 | - // Minify string value |
|
| 2379 | - '#(\/\*(?>.*?\*\/))|(?<!content\:)([\'"])([a-z_][a-z0-9\-_]*?)\2(?=[\s\{\}\];,])#si', |
|
| 2380 | - '#(\/\*(?>.*?\*\/))|(\burl\()([\'"])([^\s]+?)\3(\))#si', |
|
| 2381 | - // Minify HEX color code |
|
| 2382 | - '#(?<=[\s:,\-]\#)([a-f0-6]+)\1([a-f0-6]+)\2([a-f0-6]+)\3#i', |
|
| 2383 | - // Replace `(border|outline):none` with `(border|outline):0` |
|
| 2384 | - '#(?<=[\{;])(border|outline):none(?=[;\}\!])#', |
|
| 2385 | - // Remove empty selector(s) |
|
| 2386 | - '#(\/\*(?>.*?\*\/))|(^|[\{\}])(?:[^\s\{\}]+)\{\}#s' |
|
| 2387 | - ), |
|
| 2388 | - array( |
|
| 2389 | - '$1', |
|
| 2390 | - '$1$2$3$4$5$6$7', |
|
| 2391 | - '$1', |
|
| 2392 | - ':0', |
|
| 2393 | - '$1:0 0', |
|
| 2394 | - '.$1', |
|
| 2395 | - '$1$3', |
|
| 2396 | - '$1$2$4$5', |
|
| 2397 | - '$1$2$3', |
|
| 2398 | - '$1:0', |
|
| 2399 | - '$1$2' |
|
| 2400 | - ), |
|
| 2401 | - $input); |
|
| 2402 | - } |
|
| 2355 | + /** |
|
| 2356 | + * Minify CSS |
|
| 2357 | + * |
|
| 2358 | + * @param $input |
|
| 2359 | + * |
|
| 2360 | + * @return mixed |
|
| 2361 | + */ |
|
| 2362 | + public static function minify_css($input) { |
|
| 2363 | + if(trim($input) === "") return $input; |
|
| 2364 | + return preg_replace( |
|
| 2365 | + array( |
|
| 2366 | + // Remove comment(s) |
|
| 2367 | + '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')|\/\*(?!\!)(?>.*?\*\/)|^\s*|\s*$#s', |
|
| 2368 | + // Remove unused white-space(s) |
|
| 2369 | + '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/))|\s*+;\s*+(})\s*+|\s*+([*$~^|]?+=|[{};,>~]|\s(?![0-9\.])|!important\b)\s*+|([[(:])\s++|\s++([])])|\s++(:)\s*+(?!(?>[^{}"\']++|"(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')*+{)|^\s++|\s++\z|(\s)\s+#si', |
|
| 2370 | + // Replace `0(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)` with `0` |
|
| 2371 | + '#(?<=[\s:])(0)(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)#si', |
|
| 2372 | + // Replace `:0 0 0 0` with `:0` |
|
| 2373 | + '#:(0\s+0|0\s+0\s+0\s+0)(?=[;\}]|\!important)#i', |
|
| 2374 | + // Replace `background-position:0` with `background-position:0 0` |
|
| 2375 | + '#(background-position):0(?=[;\}])#si', |
|
| 2376 | + // Replace `0.6` with `.6`, but only when preceded by `:`, `,`, `-` or a white-space |
|
| 2377 | + '#(?<=[\s:,\-])0+\.(\d+)#s', |
|
| 2378 | + // Minify string value |
|
| 2379 | + '#(\/\*(?>.*?\*\/))|(?<!content\:)([\'"])([a-z_][a-z0-9\-_]*?)\2(?=[\s\{\}\];,])#si', |
|
| 2380 | + '#(\/\*(?>.*?\*\/))|(\burl\()([\'"])([^\s]+?)\3(\))#si', |
|
| 2381 | + // Minify HEX color code |
|
| 2382 | + '#(?<=[\s:,\-]\#)([a-f0-6]+)\1([a-f0-6]+)\2([a-f0-6]+)\3#i', |
|
| 2383 | + // Replace `(border|outline):none` with `(border|outline):0` |
|
| 2384 | + '#(?<=[\{;])(border|outline):none(?=[;\}\!])#', |
|
| 2385 | + // Remove empty selector(s) |
|
| 2386 | + '#(\/\*(?>.*?\*\/))|(^|[\{\}])(?:[^\s\{\}]+)\{\}#s' |
|
| 2387 | + ), |
|
| 2388 | + array( |
|
| 2389 | + '$1', |
|
| 2390 | + '$1$2$3$4$5$6$7', |
|
| 2391 | + '$1', |
|
| 2392 | + ':0', |
|
| 2393 | + '$1:0 0', |
|
| 2394 | + '.$1', |
|
| 2395 | + '$1$3', |
|
| 2396 | + '$1$2$4$5', |
|
| 2397 | + '$1$2$3', |
|
| 2398 | + '$1:0', |
|
| 2399 | + '$1$2' |
|
| 2400 | + ), |
|
| 2401 | + $input); |
|
| 2402 | + } |
|
| 2403 | 2403 | |
| 2404 | - /** |
|
| 2405 | - * Get the conditional fields JavaScript. |
|
| 2406 | - * |
|
| 2407 | - * @return mixed |
|
| 2408 | - */ |
|
| 2409 | - public function conditional_fields_js() { |
|
| 2410 | - ob_start(); |
|
| 2411 | - ?> |
|
| 2404 | + /** |
|
| 2405 | + * Get the conditional fields JavaScript. |
|
| 2406 | + * |
|
| 2407 | + * @return mixed |
|
| 2408 | + */ |
|
| 2409 | + public function conditional_fields_js() { |
|
| 2410 | + ob_start(); |
|
| 2411 | + ?> |
|
| 2412 | 2412 | <script> |
| 2413 | 2413 | /** |
| 2414 | 2414 | * Conditional Fields |
@@ -2912,14 +2912,14 @@ discard block |
||
| 2912 | 2912 | <?php do_action( 'aui_conditional_fields_js', $this ); ?> |
| 2913 | 2913 | </script> |
| 2914 | 2914 | <?php |
| 2915 | - $output = ob_get_clean(); |
|
| 2915 | + $output = ob_get_clean(); |
|
| 2916 | 2916 | |
| 2917 | - return str_replace( array( '<script>', '</script>' ), '', self::minify_js( $output ) ); |
|
| 2918 | - } |
|
| 2919 | - } |
|
| 2917 | + return str_replace( array( '<script>', '</script>' ), '', self::minify_js( $output ) ); |
|
| 2918 | + } |
|
| 2919 | + } |
|
| 2920 | 2920 | |
| 2921 | - /** |
|
| 2922 | - * Run the class if found. |
|
| 2923 | - */ |
|
| 2924 | - AyeCode_UI_Settings::instance(); |
|
| 2921 | + /** |
|
| 2922 | + * Run the class if found. |
|
| 2923 | + */ |
|
| 2924 | + AyeCode_UI_Settings::instance(); |
|
| 2925 | 2925 | } |
| 2926 | 2926 | \ No newline at end of file |
@@ -1,7 +1,7 @@ discard block |
||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | if ( ! defined( 'ABSPATH' ) ) { |
| 4 | - exit; // Exit if accessed directly |
|
| 4 | + exit; // Exit if accessed directly |
|
| 5 | 5 | } |
| 6 | 6 | |
| 7 | 7 | /** |
@@ -11,299 +11,299 @@ discard block |
||
| 11 | 11 | */ |
| 12 | 12 | class AUI { |
| 13 | 13 | |
| 14 | - /** |
|
| 15 | - * Holds the class instance. |
|
| 16 | - * |
|
| 17 | - * @since 1.0.0 |
|
| 18 | - * @var null |
|
| 19 | - */ |
|
| 20 | - private static $instance = null; |
|
| 21 | - |
|
| 22 | - /** |
|
| 23 | - * Holds the current AUI version number. |
|
| 24 | - * |
|
| 25 | - * @var string $ver The current version number. |
|
| 26 | - */ |
|
| 27 | - public static $ver = '0.1.71'; |
|
| 28 | - |
|
| 29 | - public static $options = null; |
|
| 30 | - |
|
| 31 | - /** |
|
| 32 | - * There can be only one. |
|
| 33 | - * |
|
| 34 | - * @since 1.0.0 |
|
| 35 | - * @return AUI|null |
|
| 36 | - */ |
|
| 37 | - public static function instance() { |
|
| 38 | - if ( self::$instance == null ) { |
|
| 39 | - self::$instance = new AUI(); |
|
| 40 | - } |
|
| 41 | - |
|
| 42 | - return self::$instance; |
|
| 43 | - } |
|
| 44 | - |
|
| 45 | - /** |
|
| 46 | - * AUI constructor. |
|
| 47 | - * |
|
| 48 | - * @since 1.0.0 |
|
| 49 | - */ |
|
| 50 | - private function __construct() { |
|
| 51 | - if ( function_exists( "__autoload" ) ) { |
|
| 52 | - spl_autoload_register( "__autoload" ); |
|
| 53 | - } |
|
| 54 | - spl_autoload_register( array( $this, 'autoload' ) ); |
|
| 55 | - |
|
| 56 | - // load options |
|
| 57 | - self::$options = get_option('aui_options'); |
|
| 58 | - } |
|
| 59 | - |
|
| 60 | - /** |
|
| 61 | - * Autoload any components on the fly. |
|
| 62 | - * |
|
| 63 | - * @since 1.0.0 |
|
| 64 | - * |
|
| 65 | - * @param $classname |
|
| 66 | - */ |
|
| 67 | - private function autoload( $classname ) { |
|
| 68 | - $class = str_replace( '_', '-', strtolower( $classname ) ); |
|
| 69 | - $file_path = trailingslashit( dirname( __FILE__ ) ) . "components/class-" . $class . '.php'; |
|
| 70 | - if ( $file_path && is_readable( $file_path ) ) { |
|
| 71 | - include_once( $file_path ); |
|
| 72 | - } |
|
| 73 | - } |
|
| 74 | - |
|
| 75 | - /** |
|
| 76 | - * Get the AUI options. |
|
| 77 | - * |
|
| 78 | - * @param $option |
|
| 79 | - * |
|
| 80 | - * @return string|void |
|
| 81 | - */ |
|
| 82 | - public function get_option( $option ){ |
|
| 83 | - $result = isset(self::$options[$option]) ? esc_attr(self::$options[$option]) : ''; |
|
| 84 | - |
|
| 85 | - if ( ! $result && $option) { |
|
| 86 | - if( $option == 'color_primary' ){ |
|
| 87 | - $result = AUI_PRIMARY_COLOR; |
|
| 88 | - }elseif( $option == 'color_secondary' ){ |
|
| 89 | - $result = AUI_SECONDARY_COLOR; |
|
| 90 | - } |
|
| 91 | - } |
|
| 92 | - return $result; |
|
| 93 | - } |
|
| 94 | - |
|
| 95 | - public function render( $items = array(), $echo = false ) { |
|
| 96 | - $output = ''; |
|
| 97 | - |
|
| 98 | - if ( ! empty( $items ) ) { |
|
| 99 | - foreach ( $items as $args ) { |
|
| 100 | - $render = isset( $args['render'] ) ? $args['render'] : ''; |
|
| 101 | - if ( $render && method_exists( __CLASS__, $render ) ) { |
|
| 102 | - $output .= $this->$render( $args ); |
|
| 103 | - } |
|
| 104 | - } |
|
| 105 | - } |
|
| 106 | - |
|
| 107 | - if ( $echo ) { |
|
| 108 | - echo $output; |
|
| 109 | - }else{ |
|
| 110 | - return $output; |
|
| 111 | - } |
|
| 112 | - |
|
| 113 | - } |
|
| 114 | - |
|
| 115 | - /** |
|
| 116 | - * Render and return a bootstrap alert component. |
|
| 117 | - * |
|
| 118 | - * @since 1.0.0 |
|
| 119 | - * |
|
| 120 | - * @param array $args The function arguments. |
|
| 121 | - * @param bool $echo If we should return or echo. |
|
| 122 | - * |
|
| 123 | - * @return string The rendered component. |
|
| 124 | - */ |
|
| 125 | - public function alert( $args = array(), $echo = false ) { |
|
| 126 | - $output = AUI_Component_Alert::get( $args ); |
|
| 127 | - |
|
| 128 | - if ( $echo ) { |
|
| 129 | - echo $output; |
|
| 130 | - }else{ |
|
| 131 | - return $output; |
|
| 132 | - } |
|
| 133 | - } |
|
| 134 | - |
|
| 135 | - /** |
|
| 136 | - * Render and return a bootstrap input component. |
|
| 137 | - * |
|
| 138 | - * @since 1.0.0 |
|
| 139 | - * |
|
| 140 | - * @param array $args The function arguments. |
|
| 141 | - * @param bool $echo If we should return or echo. |
|
| 142 | - * |
|
| 143 | - * @return string The rendered component. |
|
| 144 | - */ |
|
| 145 | - public function input( $args = array(), $echo = false ) { |
|
| 146 | - $output = AUI_Component_Input::input( $args ); |
|
| 147 | - |
|
| 148 | - if ( $echo ) { |
|
| 149 | - echo $output; |
|
| 150 | - }else{ |
|
| 151 | - return $output; |
|
| 152 | - } |
|
| 153 | - } |
|
| 154 | - |
|
| 155 | - /** |
|
| 156 | - * Render and return a bootstrap textarea component. |
|
| 157 | - * |
|
| 158 | - * @since 1.0.0 |
|
| 159 | - * |
|
| 160 | - * @param array $args The function arguments. |
|
| 161 | - * @param bool $echo If we should return or echo. |
|
| 162 | - * |
|
| 163 | - * @return string The rendered component. |
|
| 164 | - */ |
|
| 165 | - public function textarea( $args = array(), $echo = false ) { |
|
| 166 | - $output = AUI_Component_Input::textarea( $args ); |
|
| 167 | - |
|
| 168 | - if ( $echo ) { |
|
| 169 | - echo $output; |
|
| 170 | - }else{ |
|
| 171 | - return $output; |
|
| 172 | - } |
|
| 173 | - } |
|
| 174 | - |
|
| 175 | - /** |
|
| 176 | - * Render and return a bootstrap button component. |
|
| 177 | - * |
|
| 178 | - * @since 1.0.0 |
|
| 179 | - * |
|
| 180 | - * @param array $args The function arguments. |
|
| 181 | - * @param bool $echo If we should return or echo. |
|
| 182 | - * |
|
| 183 | - * @return string The rendered component. |
|
| 184 | - */ |
|
| 185 | - public function button( $args = array(), $echo = false ) { |
|
| 186 | - $output = AUI_Component_Button::get( $args ); |
|
| 187 | - |
|
| 188 | - if ( $echo ) { |
|
| 189 | - echo $output; |
|
| 190 | - }else{ |
|
| 191 | - return $output; |
|
| 192 | - } |
|
| 193 | - } |
|
| 194 | - |
|
| 195 | - /** |
|
| 196 | - * Render and return a bootstrap button component. |
|
| 197 | - * |
|
| 198 | - * @since 1.0.0 |
|
| 199 | - * |
|
| 200 | - * @param array $args The function arguments. |
|
| 201 | - * @param bool $echo If we should return or echo. |
|
| 202 | - * |
|
| 203 | - * @return string The rendered component. |
|
| 204 | - */ |
|
| 205 | - public function badge( $args = array(), $echo = false ) { |
|
| 206 | - $defaults = array( |
|
| 207 | - 'class' => 'badge badge-primary align-middle', |
|
| 208 | - ); |
|
| 209 | - |
|
| 210 | - // maybe set type. |
|
| 211 | - if ( empty( $args['href'] ) ) { |
|
| 212 | - $defaults['type'] = 'badge'; |
|
| 213 | - } |
|
| 214 | - |
|
| 215 | - /** |
|
| 216 | - * Parse incoming $args into an array and merge it with $defaults |
|
| 217 | - */ |
|
| 218 | - $args = wp_parse_args( $args, $defaults ); |
|
| 219 | - |
|
| 220 | - $output = AUI_Component_Button::get( $args ); |
|
| 221 | - |
|
| 222 | - if ( $echo ) { |
|
| 223 | - echo $output; |
|
| 224 | - }else{ |
|
| 225 | - return $output; |
|
| 226 | - } |
|
| 227 | - } |
|
| 228 | - |
|
| 229 | - /** |
|
| 230 | - * Render and return a bootstrap dropdown component. |
|
| 231 | - * |
|
| 232 | - * @since 1.0.0 |
|
| 233 | - * |
|
| 234 | - * @param array $args The function arguments. |
|
| 235 | - * @param bool $echo If we should return or echo. |
|
| 236 | - * |
|
| 237 | - * @return string The rendered component. |
|
| 238 | - */ |
|
| 239 | - public function dropdown( $args = array(), $echo = false ) { |
|
| 240 | - $output = AUI_Component_Dropdown::get( $args ); |
|
| 241 | - |
|
| 242 | - if ( $echo ) { |
|
| 243 | - echo $output; |
|
| 244 | - }else{ |
|
| 245 | - return $output; |
|
| 246 | - } |
|
| 247 | - } |
|
| 248 | - |
|
| 249 | - /** |
|
| 250 | - * Render and return a bootstrap select component. |
|
| 251 | - * |
|
| 252 | - * @since 1.0.0 |
|
| 253 | - * |
|
| 254 | - * @param array $args The function arguments. |
|
| 255 | - * @param bool $echo If we should return or echo. |
|
| 256 | - * |
|
| 257 | - * @return string The rendered component. |
|
| 258 | - */ |
|
| 259 | - public function select( $args = array(), $echo = false ) { |
|
| 260 | - $output = AUI_Component_Input::select( $args ); |
|
| 261 | - |
|
| 262 | - if ( $echo ) { |
|
| 263 | - echo $output; |
|
| 264 | - }else{ |
|
| 265 | - return $output; |
|
| 266 | - } |
|
| 267 | - } |
|
| 268 | - |
|
| 269 | - /** |
|
| 270 | - * Render and return a bootstrap radio component. |
|
| 271 | - * |
|
| 272 | - * @since 1.0.0 |
|
| 273 | - * |
|
| 274 | - * @param array $args The function arguments. |
|
| 275 | - * @param bool $echo If we should return or echo. |
|
| 276 | - * |
|
| 277 | - * @return string The rendered component. |
|
| 278 | - */ |
|
| 279 | - public function radio( $args = array(), $echo = false ) { |
|
| 280 | - $output = AUI_Component_Input::radio( $args ); |
|
| 281 | - |
|
| 282 | - if ( $echo ) { |
|
| 283 | - echo $output; |
|
| 284 | - }else{ |
|
| 285 | - return $output; |
|
| 286 | - } |
|
| 287 | - } |
|
| 288 | - |
|
| 289 | - /** |
|
| 290 | - * Render and return a bootstrap pagination component. |
|
| 291 | - * |
|
| 292 | - * @since 1.0.0 |
|
| 293 | - * |
|
| 294 | - * @param array $args The function arguments. |
|
| 295 | - * @param bool $echo If we should return or echo. |
|
| 296 | - * |
|
| 297 | - * @return string The rendered component. |
|
| 298 | - */ |
|
| 299 | - public function pagination( $args = array(), $echo = false ) { |
|
| 300 | - $output = AUI_Component_Pagination::get( $args ); |
|
| 301 | - |
|
| 302 | - if ( $echo ) { |
|
| 303 | - echo $output; |
|
| 304 | - }else{ |
|
| 305 | - return $output; |
|
| 306 | - } |
|
| 307 | - } |
|
| 14 | + /** |
|
| 15 | + * Holds the class instance. |
|
| 16 | + * |
|
| 17 | + * @since 1.0.0 |
|
| 18 | + * @var null |
|
| 19 | + */ |
|
| 20 | + private static $instance = null; |
|
| 21 | + |
|
| 22 | + /** |
|
| 23 | + * Holds the current AUI version number. |
|
| 24 | + * |
|
| 25 | + * @var string $ver The current version number. |
|
| 26 | + */ |
|
| 27 | + public static $ver = '0.1.71'; |
|
| 28 | + |
|
| 29 | + public static $options = null; |
|
| 30 | + |
|
| 31 | + /** |
|
| 32 | + * There can be only one. |
|
| 33 | + * |
|
| 34 | + * @since 1.0.0 |
|
| 35 | + * @return AUI|null |
|
| 36 | + */ |
|
| 37 | + public static function instance() { |
|
| 38 | + if ( self::$instance == null ) { |
|
| 39 | + self::$instance = new AUI(); |
|
| 40 | + } |
|
| 41 | + |
|
| 42 | + return self::$instance; |
|
| 43 | + } |
|
| 44 | + |
|
| 45 | + /** |
|
| 46 | + * AUI constructor. |
|
| 47 | + * |
|
| 48 | + * @since 1.0.0 |
|
| 49 | + */ |
|
| 50 | + private function __construct() { |
|
| 51 | + if ( function_exists( "__autoload" ) ) { |
|
| 52 | + spl_autoload_register( "__autoload" ); |
|
| 53 | + } |
|
| 54 | + spl_autoload_register( array( $this, 'autoload' ) ); |
|
| 55 | + |
|
| 56 | + // load options |
|
| 57 | + self::$options = get_option('aui_options'); |
|
| 58 | + } |
|
| 59 | + |
|
| 60 | + /** |
|
| 61 | + * Autoload any components on the fly. |
|
| 62 | + * |
|
| 63 | + * @since 1.0.0 |
|
| 64 | + * |
|
| 65 | + * @param $classname |
|
| 66 | + */ |
|
| 67 | + private function autoload( $classname ) { |
|
| 68 | + $class = str_replace( '_', '-', strtolower( $classname ) ); |
|
| 69 | + $file_path = trailingslashit( dirname( __FILE__ ) ) . "components/class-" . $class . '.php'; |
|
| 70 | + if ( $file_path && is_readable( $file_path ) ) { |
|
| 71 | + include_once( $file_path ); |
|
| 72 | + } |
|
| 73 | + } |
|
| 74 | + |
|
| 75 | + /** |
|
| 76 | + * Get the AUI options. |
|
| 77 | + * |
|
| 78 | + * @param $option |
|
| 79 | + * |
|
| 80 | + * @return string|void |
|
| 81 | + */ |
|
| 82 | + public function get_option( $option ){ |
|
| 83 | + $result = isset(self::$options[$option]) ? esc_attr(self::$options[$option]) : ''; |
|
| 84 | + |
|
| 85 | + if ( ! $result && $option) { |
|
| 86 | + if( $option == 'color_primary' ){ |
|
| 87 | + $result = AUI_PRIMARY_COLOR; |
|
| 88 | + }elseif( $option == 'color_secondary' ){ |
|
| 89 | + $result = AUI_SECONDARY_COLOR; |
|
| 90 | + } |
|
| 91 | + } |
|
| 92 | + return $result; |
|
| 93 | + } |
|
| 94 | + |
|
| 95 | + public function render( $items = array(), $echo = false ) { |
|
| 96 | + $output = ''; |
|
| 97 | + |
|
| 98 | + if ( ! empty( $items ) ) { |
|
| 99 | + foreach ( $items as $args ) { |
|
| 100 | + $render = isset( $args['render'] ) ? $args['render'] : ''; |
|
| 101 | + if ( $render && method_exists( __CLASS__, $render ) ) { |
|
| 102 | + $output .= $this->$render( $args ); |
|
| 103 | + } |
|
| 104 | + } |
|
| 105 | + } |
|
| 106 | + |
|
| 107 | + if ( $echo ) { |
|
| 108 | + echo $output; |
|
| 109 | + }else{ |
|
| 110 | + return $output; |
|
| 111 | + } |
|
| 112 | + |
|
| 113 | + } |
|
| 114 | + |
|
| 115 | + /** |
|
| 116 | + * Render and return a bootstrap alert component. |
|
| 117 | + * |
|
| 118 | + * @since 1.0.0 |
|
| 119 | + * |
|
| 120 | + * @param array $args The function arguments. |
|
| 121 | + * @param bool $echo If we should return or echo. |
|
| 122 | + * |
|
| 123 | + * @return string The rendered component. |
|
| 124 | + */ |
|
| 125 | + public function alert( $args = array(), $echo = false ) { |
|
| 126 | + $output = AUI_Component_Alert::get( $args ); |
|
| 127 | + |
|
| 128 | + if ( $echo ) { |
|
| 129 | + echo $output; |
|
| 130 | + }else{ |
|
| 131 | + return $output; |
|
| 132 | + } |
|
| 133 | + } |
|
| 134 | + |
|
| 135 | + /** |
|
| 136 | + * Render and return a bootstrap input component. |
|
| 137 | + * |
|
| 138 | + * @since 1.0.0 |
|
| 139 | + * |
|
| 140 | + * @param array $args The function arguments. |
|
| 141 | + * @param bool $echo If we should return or echo. |
|
| 142 | + * |
|
| 143 | + * @return string The rendered component. |
|
| 144 | + */ |
|
| 145 | + public function input( $args = array(), $echo = false ) { |
|
| 146 | + $output = AUI_Component_Input::input( $args ); |
|
| 147 | + |
|
| 148 | + if ( $echo ) { |
|
| 149 | + echo $output; |
|
| 150 | + }else{ |
|
| 151 | + return $output; |
|
| 152 | + } |
|
| 153 | + } |
|
| 154 | + |
|
| 155 | + /** |
|
| 156 | + * Render and return a bootstrap textarea component. |
|
| 157 | + * |
|
| 158 | + * @since 1.0.0 |
|
| 159 | + * |
|
| 160 | + * @param array $args The function arguments. |
|
| 161 | + * @param bool $echo If we should return or echo. |
|
| 162 | + * |
|
| 163 | + * @return string The rendered component. |
|
| 164 | + */ |
|
| 165 | + public function textarea( $args = array(), $echo = false ) { |
|
| 166 | + $output = AUI_Component_Input::textarea( $args ); |
|
| 167 | + |
|
| 168 | + if ( $echo ) { |
|
| 169 | + echo $output; |
|
| 170 | + }else{ |
|
| 171 | + return $output; |
|
| 172 | + } |
|
| 173 | + } |
|
| 174 | + |
|
| 175 | + /** |
|
| 176 | + * Render and return a bootstrap button component. |
|
| 177 | + * |
|
| 178 | + * @since 1.0.0 |
|
| 179 | + * |
|
| 180 | + * @param array $args The function arguments. |
|
| 181 | + * @param bool $echo If we should return or echo. |
|
| 182 | + * |
|
| 183 | + * @return string The rendered component. |
|
| 184 | + */ |
|
| 185 | + public function button( $args = array(), $echo = false ) { |
|
| 186 | + $output = AUI_Component_Button::get( $args ); |
|
| 187 | + |
|
| 188 | + if ( $echo ) { |
|
| 189 | + echo $output; |
|
| 190 | + }else{ |
|
| 191 | + return $output; |
|
| 192 | + } |
|
| 193 | + } |
|
| 194 | + |
|
| 195 | + /** |
|
| 196 | + * Render and return a bootstrap button component. |
|
| 197 | + * |
|
| 198 | + * @since 1.0.0 |
|
| 199 | + * |
|
| 200 | + * @param array $args The function arguments. |
|
| 201 | + * @param bool $echo If we should return or echo. |
|
| 202 | + * |
|
| 203 | + * @return string The rendered component. |
|
| 204 | + */ |
|
| 205 | + public function badge( $args = array(), $echo = false ) { |
|
| 206 | + $defaults = array( |
|
| 207 | + 'class' => 'badge badge-primary align-middle', |
|
| 208 | + ); |
|
| 209 | + |
|
| 210 | + // maybe set type. |
|
| 211 | + if ( empty( $args['href'] ) ) { |
|
| 212 | + $defaults['type'] = 'badge'; |
|
| 213 | + } |
|
| 214 | + |
|
| 215 | + /** |
|
| 216 | + * Parse incoming $args into an array and merge it with $defaults |
|
| 217 | + */ |
|
| 218 | + $args = wp_parse_args( $args, $defaults ); |
|
| 219 | + |
|
| 220 | + $output = AUI_Component_Button::get( $args ); |
|
| 221 | + |
|
| 222 | + if ( $echo ) { |
|
| 223 | + echo $output; |
|
| 224 | + }else{ |
|
| 225 | + return $output; |
|
| 226 | + } |
|
| 227 | + } |
|
| 228 | + |
|
| 229 | + /** |
|
| 230 | + * Render and return a bootstrap dropdown component. |
|
| 231 | + * |
|
| 232 | + * @since 1.0.0 |
|
| 233 | + * |
|
| 234 | + * @param array $args The function arguments. |
|
| 235 | + * @param bool $echo If we should return or echo. |
|
| 236 | + * |
|
| 237 | + * @return string The rendered component. |
|
| 238 | + */ |
|
| 239 | + public function dropdown( $args = array(), $echo = false ) { |
|
| 240 | + $output = AUI_Component_Dropdown::get( $args ); |
|
| 241 | + |
|
| 242 | + if ( $echo ) { |
|
| 243 | + echo $output; |
|
| 244 | + }else{ |
|
| 245 | + return $output; |
|
| 246 | + } |
|
| 247 | + } |
|
| 248 | + |
|
| 249 | + /** |
|
| 250 | + * Render and return a bootstrap select component. |
|
| 251 | + * |
|
| 252 | + * @since 1.0.0 |
|
| 253 | + * |
|
| 254 | + * @param array $args The function arguments. |
|
| 255 | + * @param bool $echo If we should return or echo. |
|
| 256 | + * |
|
| 257 | + * @return string The rendered component. |
|
| 258 | + */ |
|
| 259 | + public function select( $args = array(), $echo = false ) { |
|
| 260 | + $output = AUI_Component_Input::select( $args ); |
|
| 261 | + |
|
| 262 | + if ( $echo ) { |
|
| 263 | + echo $output; |
|
| 264 | + }else{ |
|
| 265 | + return $output; |
|
| 266 | + } |
|
| 267 | + } |
|
| 268 | + |
|
| 269 | + /** |
|
| 270 | + * Render and return a bootstrap radio component. |
|
| 271 | + * |
|
| 272 | + * @since 1.0.0 |
|
| 273 | + * |
|
| 274 | + * @param array $args The function arguments. |
|
| 275 | + * @param bool $echo If we should return or echo. |
|
| 276 | + * |
|
| 277 | + * @return string The rendered component. |
|
| 278 | + */ |
|
| 279 | + public function radio( $args = array(), $echo = false ) { |
|
| 280 | + $output = AUI_Component_Input::radio( $args ); |
|
| 281 | + |
|
| 282 | + if ( $echo ) { |
|
| 283 | + echo $output; |
|
| 284 | + }else{ |
|
| 285 | + return $output; |
|
| 286 | + } |
|
| 287 | + } |
|
| 288 | + |
|
| 289 | + /** |
|
| 290 | + * Render and return a bootstrap pagination component. |
|
| 291 | + * |
|
| 292 | + * @since 1.0.0 |
|
| 293 | + * |
|
| 294 | + * @param array $args The function arguments. |
|
| 295 | + * @param bool $echo If we should return or echo. |
|
| 296 | + * |
|
| 297 | + * @return string The rendered component. |
|
| 298 | + */ |
|
| 299 | + public function pagination( $args = array(), $echo = false ) { |
|
| 300 | + $output = AUI_Component_Pagination::get( $args ); |
|
| 301 | + |
|
| 302 | + if ( $echo ) { |
|
| 303 | + echo $output; |
|
| 304 | + }else{ |
|
| 305 | + return $output; |
|
| 306 | + } |
|
| 307 | + } |
|
| 308 | 308 | |
| 309 | 309 | } |
| 310 | 310 | \ No newline at end of file |
@@ -13,30 +13,30 @@ discard block |
||
| 13 | 13 | class GetPaid_Bank_Transfer_Gateway extends GetPaid_Payment_Gateway { |
| 14 | 14 | |
| 15 | 15 | /** |
| 16 | - * Payment method id. |
|
| 17 | - * |
|
| 18 | - * @var string |
|
| 19 | - */ |
|
| 16 | + * Payment method id. |
|
| 17 | + * |
|
| 18 | + * @var string |
|
| 19 | + */ |
|
| 20 | 20 | public $id = 'bank_transfer'; |
| 21 | 21 | |
| 22 | - /** |
|
| 23 | - * An array of features that this gateway supports. |
|
| 24 | - * |
|
| 25 | - * @var array |
|
| 26 | - */ |
|
| 27 | - protected $supports = array( 'subscription', 'addons', 'single_subscription_group', 'multiple_subscription_groups' ); |
|
| 22 | + /** |
|
| 23 | + * An array of features that this gateway supports. |
|
| 24 | + * |
|
| 25 | + * @var array |
|
| 26 | + */ |
|
| 27 | + protected $supports = array( 'subscription', 'addons', 'single_subscription_group', 'multiple_subscription_groups' ); |
|
| 28 | 28 | |
| 29 | 29 | /** |
| 30 | - * Payment method order. |
|
| 31 | - * |
|
| 32 | - * @var int |
|
| 33 | - */ |
|
| 34 | - public $order = 8; |
|
| 30 | + * Payment method order. |
|
| 31 | + * |
|
| 32 | + * @var int |
|
| 33 | + */ |
|
| 34 | + public $order = 8; |
|
| 35 | 35 | |
| 36 | 36 | /** |
| 37 | - * Class constructor. |
|
| 38 | - */ |
|
| 39 | - public function __construct() { |
|
| 37 | + * Class constructor. |
|
| 38 | + */ |
|
| 39 | + public function __construct() { |
|
| 40 | 40 | parent::__construct(); |
| 41 | 41 | |
| 42 | 42 | $this->title = __( 'Direct bank transfer', 'invoicing' ); |
@@ -44,24 +44,24 @@ discard block |
||
| 44 | 44 | $this->checkout_button_text = __( 'Proceed', 'invoicing' ); |
| 45 | 45 | $this->instructions = apply_filters( 'wpinv_bank_instructions', $this->get_option( 'info' ) ); |
| 46 | 46 | |
| 47 | - add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) ); |
|
| 48 | - add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 ); |
|
| 49 | - add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 ); |
|
| 50 | - add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 ); |
|
| 51 | - add_action( 'getpaid_should_renew_subscription', array( $this, 'maybe_renew_subscription' ) ); |
|
| 52 | - add_action( 'getpaid_invoice_status_publish', array( $this, 'invoice_paid' ), 20 ); |
|
| 47 | + add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) ); |
|
| 48 | + add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 ); |
|
| 49 | + add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 ); |
|
| 50 | + add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 ); |
|
| 51 | + add_action( 'getpaid_should_renew_subscription', array( $this, 'maybe_renew_subscription' ) ); |
|
| 52 | + add_action( 'getpaid_invoice_status_publish', array( $this, 'invoice_paid' ), 20 ); |
|
| 53 | 53 | |
| 54 | 54 | } |
| 55 | 55 | |
| 56 | 56 | /** |
| 57 | - * Process Payment. |
|
| 58 | - * |
|
| 59 | - * @param WPInv_Invoice $invoice Invoice. |
|
| 60 | - * @param array $submission_data Posted checkout fields. |
|
| 61 | - * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
| 62 | - * @return array |
|
| 63 | - */ |
|
| 64 | - public function process_payment( $invoice, $submission_data, $submission ) { |
|
| 57 | + * Process Payment. |
|
| 58 | + * |
|
| 59 | + * @param WPInv_Invoice $invoice Invoice. |
|
| 60 | + * @param array $submission_data Posted checkout fields. |
|
| 61 | + * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
| 62 | + * @return array |
|
| 63 | + */ |
|
| 64 | + public function process_payment( $invoice, $submission_data, $submission ) { |
|
| 65 | 65 | |
| 66 | 66 | // Add a transaction id. |
| 67 | 67 | $invoice->set_transaction_id( $invoice->generate_key( 'bt_' ) ); |
@@ -82,66 +82,66 @@ discard block |
||
| 82 | 82 | } |
| 83 | 83 | |
| 84 | 84 | /** |
| 85 | - * Output for the order received page. |
|
| 86 | - * |
|
| 87 | - * @param WPInv_Invoice $invoice Invoice. |
|
| 88 | - */ |
|
| 89 | - public function thankyou_page( $invoice ) { |
|
| 85 | + * Output for the order received page. |
|
| 86 | + * |
|
| 87 | + * @param WPInv_Invoice $invoice Invoice. |
|
| 88 | + */ |
|
| 89 | + public function thankyou_page( $invoice ) { |
|
| 90 | 90 | |
| 91 | 91 | if ( 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
| 92 | 92 | |
| 93 | - echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL; |
|
| 93 | + echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL; |
|
| 94 | 94 | |
| 95 | 95 | if ( ! empty( $this->instructions ) ) { |
| 96 | 96 | echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) ); |
| 97 | - } |
|
| 97 | + } |
|
| 98 | 98 | |
| 99 | - $this->bank_details( $invoice ); |
|
| 99 | + $this->bank_details( $invoice ); |
|
| 100 | 100 | |
| 101 | - echo '</div>'; |
|
| 101 | + echo '</div>'; |
|
| 102 | 102 | |
| 103 | 103 | } |
| 104 | 104 | |
| 105 | - } |
|
| 105 | + } |
|
| 106 | 106 | |
| 107 | 107 | /** |
| 108 | - * Add content to the WPI emails. |
|
| 109 | - * |
|
| 110 | - * @param WPInv_Invoice $invoice Invoice. |
|
| 111 | - * @param string $email_type Email format: plain text or HTML. |
|
| 112 | - * @param bool $sent_to_admin Sent to admin. |
|
| 113 | - */ |
|
| 114 | - public function email_instructions( $invoice, $email_type, $sent_to_admin ) { |
|
| 108 | + * Add content to the WPI emails. |
|
| 109 | + * |
|
| 110 | + * @param WPInv_Invoice $invoice Invoice. |
|
| 111 | + * @param string $email_type Email format: plain text or HTML. |
|
| 112 | + * @param bool $sent_to_admin Sent to admin. |
|
| 113 | + */ |
|
| 114 | + public function email_instructions( $invoice, $email_type, $sent_to_admin ) { |
|
| 115 | 115 | |
| 116 | - if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
| 116 | + if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
| 117 | 117 | |
| 118 | - echo '<div class="wpi-email-row getpaid-bank-transfer-details">'; |
|
| 118 | + echo '<div class="wpi-email-row getpaid-bank-transfer-details">'; |
|
| 119 | 119 | |
| 120 | - if ( $this->instructions ) { |
|
| 121 | - echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL ); |
|
| 120 | + if ( $this->instructions ) { |
|
| 121 | + echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL ); |
|
| 122 | 122 | } |
| 123 | 123 | |
| 124 | - $this->bank_details( $invoice ); |
|
| 124 | + $this->bank_details( $invoice ); |
|
| 125 | 125 | |
| 126 | - echo '</div>'; |
|
| 126 | + echo '</div>'; |
|
| 127 | 127 | |
| 128 | - } |
|
| 128 | + } |
|
| 129 | 129 | |
| 130 | 130 | } |
| 131 | 131 | |
| 132 | 132 | /** |
| 133 | - * Get bank details and place into a list format. |
|
| 134 | - * |
|
| 135 | - * @param WPInv_Invoice $invoice Invoice. |
|
| 136 | - */ |
|
| 137 | - protected function bank_details( $invoice ) { |
|
| 133 | + * Get bank details and place into a list format. |
|
| 134 | + * |
|
| 135 | + * @param WPInv_Invoice $invoice Invoice. |
|
| 136 | + */ |
|
| 137 | + protected function bank_details( $invoice ) { |
|
| 138 | 138 | |
| 139 | - // Get the invoice country and country $locale. |
|
| 140 | - $country = $invoice->get_country(); |
|
| 141 | - $locale = $this->get_country_locale(); |
|
| 139 | + // Get the invoice country and country $locale. |
|
| 140 | + $country = $invoice->get_country(); |
|
| 141 | + $locale = $this->get_country_locale(); |
|
| 142 | 142 | |
| 143 | - // Get sortcode label in the $locale array and use appropriate one. |
|
| 144 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
| 143 | + // Get sortcode label in the $locale array and use appropriate one. |
|
| 144 | + $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
| 145 | 145 | |
| 146 | 146 | $bank_fields = array( |
| 147 | 147 | 'ac_name' => __( 'Account Name', 'invoicing' ), |
@@ -160,11 +160,11 @@ discard block |
||
| 160 | 160 | |
| 161 | 161 | if ( ! empty( $value ) ) { |
| 162 | 162 | $bank_info[ $field ] = array( |
| 163 | - 'label' => $label, |
|
| 164 | - 'value' => $value, |
|
| 165 | - ); |
|
| 163 | + 'label' => $label, |
|
| 164 | + 'value' => $value, |
|
| 165 | + ); |
|
| 166 | 166 | } |
| 167 | - } |
|
| 167 | + } |
|
| 168 | 168 | |
| 169 | 169 | $bank_info = apply_filters( 'wpinv_bank_info', $bank_info ); |
| 170 | 170 | |
@@ -172,139 +172,139 @@ discard block |
||
| 172 | 172 | return; |
| 173 | 173 | } |
| 174 | 174 | |
| 175 | - echo '<h3 class="getpaid-bank-transfer-title"> ' . esc_html( apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) ) . '</h3>' . PHP_EOL; |
|
| 175 | + echo '<h3 class="getpaid-bank-transfer-title"> ' . esc_html( apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) ) . '</h3>' . PHP_EOL; |
|
| 176 | + |
|
| 177 | + echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
| 178 | + |
|
| 179 | + foreach ( $bank_info as $key => $data ) { |
|
| 180 | + echo "<tr class='getpaid-bank-transfer-" . esc_attr( $key ) . "'><th class='font-weight-bold'>" . wp_kses_post( $data['label'] ) . "</th><td class='w-75'>" . wp_kses_post( wptexturize( $data['value'] ) ) . '</td></tr>' . PHP_EOL; |
|
| 181 | + } |
|
| 182 | + |
|
| 183 | + echo '</table>'; |
|
| 176 | 184 | |
| 177 | - echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
| 185 | + } |
|
| 178 | 186 | |
| 179 | - foreach ( $bank_info as $key => $data ) { |
|
| 180 | - echo "<tr class='getpaid-bank-transfer-" . esc_attr( $key ) . "'><th class='font-weight-bold'>" . wp_kses_post( $data['label'] ) . "</th><td class='w-75'>" . wp_kses_post( wptexturize( $data['value'] ) ) . '</td></tr>' . PHP_EOL; |
|
| 181 | - } |
|
| 187 | + /** |
|
| 188 | + * Get country locale if localized. |
|
| 189 | + * |
|
| 190 | + * @return array |
|
| 191 | + */ |
|
| 192 | + public function get_country_locale() { |
|
| 193 | + |
|
| 194 | + if ( empty( $this->locale ) ) { |
|
| 195 | + |
|
| 196 | + // Locale information to be used - only those that are not 'Sort Code'. |
|
| 197 | + $this->locale = apply_filters( |
|
| 198 | + 'getpaid_get_bank_transfer_locale', |
|
| 199 | + array( |
|
| 200 | + 'AU' => array( |
|
| 201 | + 'sortcode' => array( |
|
| 202 | + 'label' => __( 'BSB', 'invoicing' ), |
|
| 203 | + ), |
|
| 204 | + ), |
|
| 205 | + 'CA' => array( |
|
| 206 | + 'sortcode' => array( |
|
| 207 | + 'label' => __( 'Bank transit number', 'invoicing' ), |
|
| 208 | + ), |
|
| 209 | + ), |
|
| 210 | + 'IN' => array( |
|
| 211 | + 'sortcode' => array( |
|
| 212 | + 'label' => __( 'IFSC', 'invoicing' ), |
|
| 213 | + ), |
|
| 214 | + ), |
|
| 215 | + 'IT' => array( |
|
| 216 | + 'sortcode' => array( |
|
| 217 | + 'label' => __( 'Branch sort', 'invoicing' ), |
|
| 218 | + ), |
|
| 219 | + ), |
|
| 220 | + 'NZ' => array( |
|
| 221 | + 'sortcode' => array( |
|
| 222 | + 'label' => __( 'Bank code', 'invoicing' ), |
|
| 223 | + ), |
|
| 224 | + ), |
|
| 225 | + 'SE' => array( |
|
| 226 | + 'sortcode' => array( |
|
| 227 | + 'label' => __( 'Bank code', 'invoicing' ), |
|
| 228 | + ), |
|
| 229 | + ), |
|
| 230 | + 'US' => array( |
|
| 231 | + 'sortcode' => array( |
|
| 232 | + 'label' => __( 'Routing number', 'invoicing' ), |
|
| 233 | + ), |
|
| 234 | + ), |
|
| 235 | + 'ZA' => array( |
|
| 236 | + 'sortcode' => array( |
|
| 237 | + 'label' => __( 'Branch code', 'invoicing' ), |
|
| 238 | + ), |
|
| 239 | + ), |
|
| 240 | + ) |
|
| 241 | + ); |
|
| 182 | 242 | |
| 183 | - echo '</table>'; |
|
| 243 | + } |
|
| 244 | + |
|
| 245 | + return $this->locale; |
|
| 184 | 246 | |
| 185 | 247 | } |
| 186 | 248 | |
| 187 | 249 | /** |
| 188 | - * Get country locale if localized. |
|
| 189 | - * |
|
| 190 | - * @return array |
|
| 191 | - */ |
|
| 192 | - public function get_country_locale() { |
|
| 193 | - |
|
| 194 | - if ( empty( $this->locale ) ) { |
|
| 195 | - |
|
| 196 | - // Locale information to be used - only those that are not 'Sort Code'. |
|
| 197 | - $this->locale = apply_filters( |
|
| 198 | - 'getpaid_get_bank_transfer_locale', |
|
| 199 | - array( |
|
| 200 | - 'AU' => array( |
|
| 201 | - 'sortcode' => array( |
|
| 202 | - 'label' => __( 'BSB', 'invoicing' ), |
|
| 203 | - ), |
|
| 204 | - ), |
|
| 205 | - 'CA' => array( |
|
| 206 | - 'sortcode' => array( |
|
| 207 | - 'label' => __( 'Bank transit number', 'invoicing' ), |
|
| 208 | - ), |
|
| 209 | - ), |
|
| 210 | - 'IN' => array( |
|
| 211 | - 'sortcode' => array( |
|
| 212 | - 'label' => __( 'IFSC', 'invoicing' ), |
|
| 213 | - ), |
|
| 214 | - ), |
|
| 215 | - 'IT' => array( |
|
| 216 | - 'sortcode' => array( |
|
| 217 | - 'label' => __( 'Branch sort', 'invoicing' ), |
|
| 218 | - ), |
|
| 219 | - ), |
|
| 220 | - 'NZ' => array( |
|
| 221 | - 'sortcode' => array( |
|
| 222 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
| 223 | - ), |
|
| 224 | - ), |
|
| 225 | - 'SE' => array( |
|
| 226 | - 'sortcode' => array( |
|
| 227 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
| 228 | - ), |
|
| 229 | - ), |
|
| 230 | - 'US' => array( |
|
| 231 | - 'sortcode' => array( |
|
| 232 | - 'label' => __( 'Routing number', 'invoicing' ), |
|
| 233 | - ), |
|
| 234 | - ), |
|
| 235 | - 'ZA' => array( |
|
| 236 | - 'sortcode' => array( |
|
| 237 | - 'label' => __( 'Branch code', 'invoicing' ), |
|
| 238 | - ), |
|
| 239 | - ), |
|
| 240 | - ) |
|
| 241 | - ); |
|
| 242 | - |
|
| 243 | - } |
|
| 244 | - |
|
| 245 | - return $this->locale; |
|
| 246 | - |
|
| 247 | - } |
|
| 248 | - |
|
| 249 | - /** |
|
| 250 | - * Filters the gateway settings. |
|
| 251 | - * |
|
| 252 | - * @param array $admin_settings |
|
| 253 | - */ |
|
| 254 | - public function admin_settings( $admin_settings ) { |
|
| 250 | + * Filters the gateway settings. |
|
| 251 | + * |
|
| 252 | + * @param array $admin_settings |
|
| 253 | + */ |
|
| 254 | + public function admin_settings( $admin_settings ) { |
|
| 255 | 255 | |
| 256 | 256 | $admin_settings['bank_transfer_desc']['std'] = __( "Make your payment directly into our bank account. Please use your Invoice Number as the payment reference. Your invoice won't be processed until the funds have cleared in our account.", 'invoicing' ); |
| 257 | - $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
| 257 | + $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
| 258 | 258 | |
| 259 | - $locale = $this->get_country_locale(); |
|
| 259 | + $locale = $this->get_country_locale(); |
|
| 260 | 260 | |
| 261 | - // Get sortcode label in the $locale array and use appropriate one. |
|
| 262 | - $country = wpinv_default_billing_country(); |
|
| 263 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
| 261 | + // Get sortcode label in the $locale array and use appropriate one. |
|
| 262 | + $country = wpinv_default_billing_country(); |
|
| 263 | + $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
| 264 | 264 | |
| 265 | - $admin_settings['bank_transfer_ac_name'] = array( |
|
| 265 | + $admin_settings['bank_transfer_ac_name'] = array( |
|
| 266 | 266 | 'type' => 'text', |
| 267 | 267 | 'id' => 'bank_transfer_ac_name', |
| 268 | 268 | 'name' => __( 'Account Name', 'invoicing' ), |
| 269 | - ); |
|
| 269 | + ); |
|
| 270 | 270 | |
| 271 | - $admin_settings['bank_transfer_ac_no'] = array( |
|
| 271 | + $admin_settings['bank_transfer_ac_no'] = array( |
|
| 272 | 272 | 'type' => 'text', |
| 273 | 273 | 'id' => 'bank_transfer_ac_no', |
| 274 | 274 | 'name' => __( 'Account Number', 'invoicing' ), |
| 275 | - ); |
|
| 275 | + ); |
|
| 276 | 276 | |
| 277 | - $admin_settings['bank_transfer_bank_name'] = array( |
|
| 277 | + $admin_settings['bank_transfer_bank_name'] = array( |
|
| 278 | 278 | 'type' => 'text', |
| 279 | 279 | 'id' => 'bank_transfer_bank_name', |
| 280 | 280 | 'name' => __( 'Bank Name', 'invoicing' ), |
| 281 | - ); |
|
| 281 | + ); |
|
| 282 | 282 | |
| 283 | - $admin_settings['bank_transfer_ifsc'] = array( |
|
| 283 | + $admin_settings['bank_transfer_ifsc'] = array( |
|
| 284 | 284 | 'type' => 'text', |
| 285 | 285 | 'id' => 'bank_transfer_ifsc', |
| 286 | 286 | 'name' => __( 'IFSC Code', 'invoicing' ), |
| 287 | - ); |
|
| 287 | + ); |
|
| 288 | 288 | |
| 289 | - $admin_settings['bank_transfer_iban'] = array( |
|
| 289 | + $admin_settings['bank_transfer_iban'] = array( |
|
| 290 | 290 | 'type' => 'text', |
| 291 | 291 | 'id' => 'bank_transfer_iban', |
| 292 | 292 | 'name' => __( 'IBAN', 'invoicing' ), |
| 293 | - ); |
|
| 293 | + ); |
|
| 294 | 294 | |
| 295 | - $admin_settings['bank_transfer_bic'] = array( |
|
| 295 | + $admin_settings['bank_transfer_bic'] = array( |
|
| 296 | 296 | 'type' => 'text', |
| 297 | 297 | 'id' => 'bank_transfer_bic', |
| 298 | 298 | 'name' => __( 'BIC/Swift Code', 'invoicing' ), |
| 299 | - ); |
|
| 299 | + ); |
|
| 300 | 300 | |
| 301 | - $admin_settings['bank_transfer_sort_code'] = array( |
|
| 302 | - 'type' => 'text', |
|
| 303 | - 'id' => 'bank_transfer_sort_code', |
|
| 304 | - 'name' => $sortcode, |
|
| 305 | - ); |
|
| 301 | + $admin_settings['bank_transfer_sort_code'] = array( |
|
| 302 | + 'type' => 'text', |
|
| 303 | + 'id' => 'bank_transfer_sort_code', |
|
| 304 | + 'name' => $sortcode, |
|
| 305 | + ); |
|
| 306 | 306 | |
| 307 | - $admin_settings['bank_transfer_info'] = array( |
|
| 307 | + $admin_settings['bank_transfer_info'] = array( |
|
| 308 | 308 | 'id' => 'bank_transfer_info', |
| 309 | 309 | 'name' => __( 'Instructions', 'invoicing' ), |
| 310 | 310 | 'desc' => __( 'Instructions that will be added to the thank you page and emails.', 'invoicing' ), |
@@ -314,17 +314,17 @@ discard block |
||
| 314 | 314 | 'rows' => 5, |
| 315 | 315 | ); |
| 316 | 316 | |
| 317 | - return $admin_settings; |
|
| 318 | - } |
|
| 317 | + return $admin_settings; |
|
| 318 | + } |
|
| 319 | 319 | |
| 320 | - /** |
|
| 321 | - * Processes invoice addons. |
|
| 322 | - * |
|
| 323 | - * @param WPInv_Invoice $invoice |
|
| 324 | - * @param GetPaid_Form_Item[] $items |
|
| 325 | - * @return WPInv_Invoice |
|
| 326 | - */ |
|
| 327 | - public function process_addons( $invoice, $items ) { |
|
| 320 | + /** |
|
| 321 | + * Processes invoice addons. |
|
| 322 | + * |
|
| 323 | + * @param WPInv_Invoice $invoice |
|
| 324 | + * @param GetPaid_Form_Item[] $items |
|
| 325 | + * @return WPInv_Invoice |
|
| 326 | + */ |
|
| 327 | + public function process_addons( $invoice, $items ) { |
|
| 328 | 328 | |
| 329 | 329 | foreach ( $items as $item ) { |
| 330 | 330 | $invoice->add_item( $item ); |
@@ -332,66 +332,66 @@ discard block |
||
| 332 | 332 | |
| 333 | 333 | $invoice->recalculate_total(); |
| 334 | 334 | $invoice->save(); |
| 335 | - } |
|
| 335 | + } |
|
| 336 | 336 | |
| 337 | - /** |
|
| 338 | - * (Maybe) renews a bank transfer subscription profile. |
|
| 339 | - * |
|
| 340 | - * |
|
| 337 | + /** |
|
| 338 | + * (Maybe) renews a bank transfer subscription profile. |
|
| 339 | + * |
|
| 340 | + * |
|
| 341 | 341 | * @param WPInv_Subscription $subscription |
| 342 | - */ |
|
| 343 | - public function maybe_renew_subscription( $subscription ) { |
|
| 342 | + */ |
|
| 343 | + public function maybe_renew_subscription( $subscription ) { |
|
| 344 | 344 | |
| 345 | 345 | // Ensure its our subscription && it's active. |
| 346 | 346 | if ( $this->id === $subscription->get_gateway() && $subscription->has_status( 'active trialling' ) ) { |
| 347 | - $subscription->create_payment(); |
|
| 347 | + $subscription->create_payment(); |
|
| 348 | 348 | } |
| 349 | 349 | |
| 350 | 350 | } |
| 351 | 351 | |
| 352 | - /** |
|
| 353 | - * Process a bank transfer payment. |
|
| 354 | - * |
|
| 355 | - * |
|
| 352 | + /** |
|
| 353 | + * Process a bank transfer payment. |
|
| 354 | + * |
|
| 355 | + * |
|
| 356 | 356 | * @param WPInv_Invoice $invoice |
| 357 | - */ |
|
| 358 | - public function invoice_paid( $invoice ) { |
|
| 359 | - |
|
| 360 | - // Abort if not paid by bank transfer. |
|
| 361 | - if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) { |
|
| 362 | - return; |
|
| 363 | - } |
|
| 364 | - |
|
| 365 | - // Is it a parent payment? |
|
| 366 | - if ( 0 == $invoice->get_parent_id() ) { |
|
| 367 | - |
|
| 368 | - // (Maybe) activate subscriptions. |
|
| 369 | - $subscriptions = getpaid_get_invoice_subscriptions( $invoice ); |
|
| 370 | - |
|
| 371 | - if ( ! empty( $subscriptions ) ) { |
|
| 372 | - $subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions ); |
|
| 373 | - |
|
| 374 | - foreach ( $subscriptions as $subscription ) { |
|
| 375 | - if ( $subscription->exists() ) { |
|
| 376 | - $duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() ); |
|
| 377 | - $expiry = date( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) ); |
|
| 378 | - |
|
| 379 | - $subscription->set_next_renewal_date( $expiry ); |
|
| 380 | - $subscription->set_date_created( current_time( 'mysql' ) ); |
|
| 381 | - $subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() ); |
|
| 382 | - $subscription->activate(); |
|
| 383 | - } |
|
| 384 | - } |
|
| 357 | + */ |
|
| 358 | + public function invoice_paid( $invoice ) { |
|
| 359 | + |
|
| 360 | + // Abort if not paid by bank transfer. |
|
| 361 | + if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) { |
|
| 362 | + return; |
|
| 363 | + } |
|
| 364 | + |
|
| 365 | + // Is it a parent payment? |
|
| 366 | + if ( 0 == $invoice->get_parent_id() ) { |
|
| 367 | + |
|
| 368 | + // (Maybe) activate subscriptions. |
|
| 369 | + $subscriptions = getpaid_get_invoice_subscriptions( $invoice ); |
|
| 370 | + |
|
| 371 | + if ( ! empty( $subscriptions ) ) { |
|
| 372 | + $subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions ); |
|
| 373 | + |
|
| 374 | + foreach ( $subscriptions as $subscription ) { |
|
| 375 | + if ( $subscription->exists() ) { |
|
| 376 | + $duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() ); |
|
| 377 | + $expiry = date( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) ); |
|
| 378 | + |
|
| 379 | + $subscription->set_next_renewal_date( $expiry ); |
|
| 380 | + $subscription->set_date_created( current_time( 'mysql' ) ); |
|
| 381 | + $subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() ); |
|
| 382 | + $subscription->activate(); |
|
| 383 | + } |
|
| 384 | + } |
|
| 385 | 385 | } |
| 386 | 386 | } else { |
| 387 | 387 | |
| 388 | - $subscription = getpaid_get_subscription( $invoice->get_subscription_id() ); |
|
| 388 | + $subscription = getpaid_get_subscription( $invoice->get_subscription_id() ); |
|
| 389 | 389 | |
| 390 | - // Renew the subscription. |
|
| 391 | - if ( $subscription && $subscription->exists() ) { |
|
| 392 | - $subscription->add_payment( array(), $invoice ); |
|
| 393 | - $subscription->renew(); |
|
| 394 | - } |
|
| 390 | + // Renew the subscription. |
|
| 391 | + if ( $subscription && $subscription->exists() ) { |
|
| 392 | + $subscription->add_payment( array(), $invoice ); |
|
| 393 | + $subscription->renew(); |
|
| 394 | + } |
|
| 395 | 395 | } |
| 396 | 396 | |
| 397 | 397 | } |